NACE codes explained for Belgian deal sourcing
NACE is the European statistical classification of economic activities. Every member state implements its own variant; Belgium uses NACE-Bel, which adds national-level subdivisions on top of the European base. Every Belgian company declares one or more NACE-Bel codes when it registers with the Crossroads Bank, and those codes are what you filter on when you build a sector screen.
The structure of a NACE-Bel code
A NACE-Bel code is up to five digits long. The first two digits identify the section (manufacturing, wholesale trade, transport, etc.); each additional digit narrows the activity. Code 10 is the manufacture of food products; code 10.71 is the manufacture of bread, fresh pastry goods, and cakes; and the Belgian extension carries it further, distinguishing industrial bakeries from artisanal producers under 10.71.1 and 10.71.2 respectively.
Primary versus secondary activities
A company can declare any number of NACE codes, but exactly one of them is its primary activity for statistical purposes. This is supposed to be the activity that generates the most revenue. In practice, declarations are not always kept up to date: a company that started as a courier service and now derives most of its revenue from warehousing may still appear under the courier code. When you build a sector screen, expect to find some companies that should not be there and to miss some companies that should.
Why one code is rarely enough
Most useful sector definitions span multiple NACE codes. Construction, for instance, fragments across general construction, finishing trades, civil engineering, and specialised activities like roofing and insulation. Logistics splits between freight forwarding, storage and warehousing, support activities for transport, and the various modes of transport themselves. A coherent sector view typically requires you to assemble a cluster of codes rather than relying on a single one. The Datasnoop screener accepts multiple NACE codes as an OR filter precisely for this reason.
Common pitfalls
- Holding companies. A pure holding company declares NACE code 64.20 (activities of holding companies), which says nothing about what the underlying group does. Filtering only on operating codes therefore misses the holding entities of relevant groups; filtering only on holding codes misses the operating subsidiaries.
- Dormant or shell entities. Some entities declare a NACE code that reflects an intention rather than an activity. They show up in the sector but have no financials. Combining a NACE filter with a minimum revenue or headcount threshold removes most of these.
- Service vs. manufacturing.A company that designs and installs a product but contracts out the manufacturing may classify itself under either side. For a buy-side search, this means you should sketch the value chain first and then list the codes that touch it, rather than starting from a single “obvious” code.
Beyond the code: semantic search
The limitations of NACE classification are exactly the case for semantic search. A search for “industrial bakery supplying retail and food service” will pick up companies that match the description in their own self-presentation, regardless of whether they declared themselves under bakery or under wholesale food trade. NACE filters and semantic search are complementary: NACE gives you a clean, repeatable baseline; semantic search catches the entities that drift out of their declared code but actually belong in the sector.
