- ISIC Rev. 5, the global standard maintained by the United Nations Statistics Division
- NACE Rev. 2.1, the European standard maintained by Eurostat, in force for EU statistics from 2025
Three layers, always
Wherever a declared activity can be placed in the international standards, the response carries bothISIC and NACE. If a register publishes only one of the two, we derive the other. The
register’s own code keeps its own key, in the register’s own format, untouched, and is always
published.
ISIC and NACE can be missing when the source register exposes no activity data for the company,
when a declared code has no NACE Rev. 2.1 successor or its candidates span unrelated divisions, or
when no confident match exists.
Why the revision matters
This is the single most common source of confusion, so it is worth being precise. NACE Rev. 2.1 replaced NACE Rev. 2 for EU statistics from 2025. It is not a renaming: a substantial number of four-digit codes were reused for a different activity.
A register that has not yet migrated still reports Rev. 2. We transition those codes to Rev. 2.1
using the official Eurostat correspondence before publishing them under
activities.NACE, so
everything on that key is Rev. 2.1 regardless of where it came from.
ISIC and NACE do not share their four-digit codes
NACE Rev. 2.1 is built on ISIC Rev. 5, but the two are only identical down to the two-digit division. Below that they diverge: NACE subdivides more finely (651 classes against ISIC’s 463) and numbers its classes independently. The practical consequence: never assume an ISIC code and a NACE code with the same four digits mean the same thing. ISIC4671 is wholesale of fuels; NACE 46.71 is wholesale of motor
vehicles. If you segment your portfolio on the two-digit division, the two standards agree exactly,
and that is the safest cross-standard key.
No official NACE Rev. 2.1 to ISIC Rev. 5 correspondence table is published by either Eurostat or
the UNSD. Ours is derived from the two official structures, matching classes on their official
headings and falling back to the guaranteed division containment. Every published pair sits
inside the division both standards share.
One code in, one code out
We never publish an activity the register did not declare. You get one standardized class per declared code, never a list of candidates we could not choose between. Classification systems do not line up one-to-one. When a declared class corresponds to several classes in the target standard, the true one is unknowable from the code alone. Rather than return all of them, we return the most precise code the correspondence actually supports:A shorter code is not missing data.
64.2 means the register told us the company is a holding
company but not which kind, and that is the most specific statement the source supports. The
register’s own code is always published in full alongside it.Deterministic first, AI only as a fallback
Most of the work is a table lookup, not a model. The AI step runs only when a register publishes a classification we hold no formal correspondence for (a national scheme such as ATECO or SIC), or only a free-text description of the business. It also runs when a declared NACE Rev. 2 code splits across several Rev. 2.1 classes and the register gives a description of the business: the model picks the class from that description. Without a description, we publish the group or division the candidates share, when they share one. The model chooses from the 463 ISIC Rev. 5 classes and nothing else: it cannot invent a code, and it cannot return a coarse section or division. When it is not confident, it returns nothing rather than guessing.isAIInferred
Every activity code carries this flag, so you can always tell how it was produced.
A derived code inherits the flag of the code it came from: an ISIC class matched by AI produces a
NACE code that is also marked
true.
If your compliance process requires register-sourced classification only, filter on
isAIInferred: false.National classifications
Where a register publishes its own national scheme, you get its code in its declared format alongside the standardized codes. Each classification and revision has one canonical response key.ISIC is Rev. 5 and NACE is Rev. 2.1 in current responses. These revisions apply to both deterministic and AI-inferred codes; historical responses can predate the transition.
Revisions of unversioned keys
When the register stamps each record with an edition, we publish that record under its revision key. A bare key such asTOL or NACE_BEL contains only records whose edition could not be resolved; it does not repeat codes already returned under revision keys.
The standardization guide lists the other classifications. Declared country-specific classification keys are listed in
/v2/catalog under activityCodes.responseKeys. That field does not enumerate every possible response key, including unstamped and association-purpose classifications.
Alternate spellings
Current responses use only the canonical spelling. When source records or cached data contain aliases, their distinct codes are merged into that key and repeated codes are deduplicated.
The bare
NAF key does not fix a revision and is not an alias of NAF_REV2.
RNA association purposes
RNA refers to the French Répertoire National des Associations’ nomenclature des objets sociaux. These codes describe an association’s purpose, such as sport or culture. They are a separate classification from NAF and NACE, and are not association registration numbers.
We publish the declared purpose code and its label without a revision identifier. Display it as “RNA, association purpose” without adding a year.
Authorized response keys
The complete list below matches the allowed keys in our published OpenAPI schema. Each key holds an array of activity objects. Additional keys and source-alias spellings are excluded from that response schema. A revision is fixed only where stated. “Not stated by the key” means the key alone cannot establish the edition; “Unresolved per record” applies only to records without a resolved revision. Distinct editions retain separate keys.Example response
A Polish company whose register entry declares one PKD activity:62.10 is the Rev. 2.1 class the
Rev. 2 code 62.01 transitions to. ISIC 621 is a group rather than a class because NACE 62.10
covers the whole of ISIC group 621, and naming one of its children would claim a precision the
register never gave.
Working with the data
Segmenting a portfolio by industry
Segmenting a portfolio by industry
Use the two-digit division. It is identical in ISIC Rev. 5 and NACE Rev. 2.1, present on every
standardized code we publish, and stable across the Rev. 2 to Rev. 2.1 transition for most
divisions. Take the first two characters of either
activities.NACE[].code or
activities.ISIC[].code.Matching a specific activity
Matching a specific activity
Match on the full code, and handle codes shorter than four digits. Treat a three-digit ISIC
group or two-digit division as “within this family, precision not available”, not as a
non-match. Never pad or truncate a code to force a comparison.
Comparing against your own register extract
Comparing against your own register extract
Compare descriptions rather than digits, and check which revision your extract uses. A register
export that predates the 2025 transition is NACE Rev. 2, and its four-digit codes will disagree
with ours for a substantial number of activities.
Auditing classification provenance
Auditing classification provenance
Filter on
isAIInferred. false means register-declared or derived through an official
correspondence, and is reproducible. The register’s own code under its national key is always
false.