Skip to main content

Start here

This guide contains public integration notes for Netherlands. Use it for identifier formats, search behavior, and country-specific caveats. The live source of truth for coverage, pricing, data sources, documents, legal forms, roles, and status values is the pricing page.

Netherlands coverage, pricing, and sources

Open the current catalog for supported datapoints, documents, sources, identifiers, and availability.
Country details below are preserved as integration notes. If a table or example conflicts with the live pricing page, use the pricing page as the source of truth and contact support.

Data Sources

The Netherlands uses a single official registry — the KVK (Kamer van Koophandel / Chamber of Commerce) — accessed through multiple channels. Data retrieval follows a two-phase model: basic structured data from the KVK Search API, and detailed data (legal representatives, shareholders, capital, RSIN) from the HTML trade register extract via AI parsing.
  • KVK Search API (web-api.kvk.nl/zoeken) — Provides basic company data in structured JSON: legal name, legal form, status, address, activity description, and trade names. This is a free, fast API that returns data immediately. Used for search results and base company profile data.
  • KVK Trade Register Extract (Uittreksel Handelsregister) — The official HTML extract from the KVK online trade register. Contains detailed data including legal representatives (Bestuurders, Gevolmachtigden), shareholders (Aandeelhouders, Vennoten), SBI activity codes, RSIN, share capital, and employee count. This HTML is AI-parsed to extract structured data.
Two-phase data retrieval: Basic company data comes from the KVK Search API (fast, structured JSON). Detailed data (legal representatives, shareholders, capital, RSIN, SBI codes) requires fetching and AI-parsing the HTML trade register extract, which takes longer but provides comprehensive information. The trade register HTML is fetched once and reused by multiple data sources (company enrichment, legal representatives, shareholders) via document factorization.

Company Identifiers

Query Identifiers

KVK Number Format: The KVK number is always exactly 8 digits. The system validates this with the regex pattern ^\d{8}$. There is no prefix, no check digit algorithm exposed to the API consumer — just 8 numeric characters.

Identifiers in API Response

Once you retrieve company data, the identifiers object contains all available identifiers for that entity:
Identifier Casing: The system uses consistent uppercase KVK for the identifier key — not kvk or KvK. Always reference identifiers using this casing in API requests and responses.

Search Capabilities

Search Performance: Use KVK number searches for exact matching and best performance. Name searches query the KVK Search API and return multiple results. Both search types have built-in retry handling for reliability. Name search results are filtered to main establishments only (Hoofdvestiging).

Quirks & Gotchas

Company Status

Company status is determined deterministically from the KVK actief boolean field. No AI inference is involved in status determination.
The KVK provides only a binary active/inactive status. There are no detailed closure reasons (bankruptcy, liquidation, etc.) or insolvency statuses available from the structured API. More detailed status information may occasionally be available in the trade register extract via AI parsing, but it is not systematically extracted.
The Netherlands has a two-tier legal form model. The level of detail you receive depends on the mode you request.
  • Onboarding mode returns 23 base legal forms from the KVK search API. These are the values in the rechtsvorm field (e.g. “Besloten Vennootschap”, “Naamloze Vennootschap”, “Publiekrechtelijke Rechtspersoon”). This is a deterministic mapping with no AI involved.
  • Verification mode returns 48 detailed legal forms extracted from the trade register document. These are the uitgebreideRechtsvorm values (e.g. “Besloten Vennootschap (blijkens statuten structuurvennootschap)”, “Naamloze Vennootschap (beleggingsmaatschappij met veranderlijk kapitaal)”, “Publiekrechtelijke Rechtspersoon: Gemeente”). A dedicated AI parser constrained to the 48-value enum extracts the detailed form from the document.
Both tiers map to the same standardized categories and ISO 20275 codes. The difference is granularity: onboarding collapses variants into their parent form, while verification resolves the specific subtype. Source: KVK official reference document “Lijst van output: uitgebreide rechtsvormen” (June 2025).

Onboarding mode (23 base forms)

Verification mode (48 detailed forms)

In verification mode, the legal form is extracted from the trade register document and resolved to one of 48 specific values. The 23 base forms above still appear when the base and detailed form are the same (e.g. “Eenmanszaak” stays “Eenmanszaak”). The additional 25 detailed variants only appear in verification mode.
In onboarding mode, both appear as “Vereniging”.
In onboarding mode, all appear as “Overige Privaatrechtelijke Rechtspersoon”.
Foreign entities registered in the Netherlands. The KVK profile API returns a dynamic uitgebreideRechtsvorm with the foreign legal form name and country of establishment (e.g. “Société à responsabilité limitée (Frankrijk)”). The API response normalizes these to one of the 4 base forms below.
In onboarding mode, all appear as “Publiekrechtelijke Rechtspersoon”.
Legal representatives come from the KVK trade register extract. You get a person’s name, birth date, start date, and a role that always comes from a fixed list.

A closed role list

We use a closed list of canonical roles for the Netherlands. Every role.localName you receive in the API response is guaranteed to be one of these values. The list is built on top of ISO 5009, the international standard for official organizational roles published by ISO and maintained by GLEIF. ISO 5009 covers the statutory roles defined in the Dutch Civil Code (directors, supervisory board members, liquidators, and so on). We took the Dutch entries from the ISO 5009 code list and deduplicated them into canonical roles. On top of that, we added four roles that appear on Dutch trade register extracts but are out of scope for ISO 5009 because they are based on power of attorney (volmacht) rather than corporate governance:
  • Gevolmachtigde and Gevolmachtigd handelsagent, registered via KVK Form 13
  • Procuratiehouder, a historical commercial volmacht role
  • Bewindvoerder, a trustee appointed during suspension of retrievals
Shareholder roles (Aandeelhouder, Vennoot, Eigenaar) are not part of this list. They live in the shareholders field of the API response.

Full role enum

The 20 canonical role values you may receive in the role.localName field. Each ISO 5009 role can map to multiple OOR codes because the code depends on the legal form of the company. For example, “Bestuurder” is KHNVNO for a BV, TK4BXG for an NV, and PPIUMW for a Stichting.

Role normalization

Dutch trade register extracts sometimes use informal variants or add authority scope to a role name. We normalize these to the canonical value so you always get a predictable result. Signing authority (sole or joint) is kept as a separate representationMode field on the response, not mixed into the role.

Other Key Persons

Two roles appear on Dutch trade register extracts but are not legal representatives. They are returned separately:

Shareholders

Shareholders are extracted from the KVK trade register extract HTML via AI parsing, using the same HTML document as legal representatives (fetched once via document factorization).

Dutch Terms for Shareholders

Extraction Logic

Ownership Fields

Critical: Ownership PercentagesShare percentages are only extracted when explicitly stated in the trade register extract (e.g., “50%”, “33,33%”). The system does not infer or calculate percentages. If no percentage is mentioned, sharePercentage is null. Do not assign 100% to each shareholder. Nationality is also null unless explicitly stated — the system does not assume Dutch nationality.
Shareholder data is available for BV/NV companies, VOF/CV partnerships (as partners), and Eenmanszaak (as owner). Stichtingen (foundations) and Verenigingen (associations) do not have shareholders.

Reading an empty shareholders list

Dutch law only obliges a company to register its shareholder when there is exactly one holding 100% of the shares (Enig aandeelhouder, art. 2:194 BW). A BV or NV with two or more shareholders registers nothing — the Handelsregister simply has no shareholder record for it, and neither does the Uittreksel. So for the Netherlands:
An empty shareholders list is not a terminal node in an ownership chain. It means the Dutch register does not publish this company’s ownership, not that the chain ends. Measured across 4,322 real KVK extracts: 2,435 carry a sole shareholder and only 2 carry a multi-holder list.
When the list is empty and you need to continue the traversal:
  • legalRepresentatives — a Dutch holding structure is very often managed by its own parent, so a corporate Bestuurder with its own KVK number is usually the next entity up.
  • Trade Register History (Uittreksel Handelsregister Historie) — shows any sole-shareholder registration the company has had in the past, with start and end dates. If the history has none either, the company has never had a registered sole shareholder.
  • Financial Statements (Jaarrekeningen) — consolidated accounts frequently name the parent in the notes.
  • Deed of incorporation / statutory amendment (Akte van oprichting / Statutenwijziging) — the notarial deed names the subscribing shareholders at the time it was executed.

Activity Code Mapping

The Netherlands uses the SBI (Standaard Bedrijfsindeling) classification. SBI 2008 codes (5-digit) are extracted from the trade register extract via AI parsing. From these, NACE Rev 2 and ISIC Rev 4 codes are derived deterministically (no AI), and SBI 2025 codes are derived via the official CBS crosswalk (with LLM disambiguation for ambiguous mappings).

Company Profile (with Trade Register Extract)

Onboarding Profile (Search API only, no TRE)

Deterministic vs. AI-inferred: When the trade register extract is available (company profile), NACE and ISIC are derived deterministically from SBI 2008 codes (isAIInferred: false). SBI 2025 codes use the CBS crosswalk — 1:1 mappings are resolved automatically, ambiguous mappings (multiple SBI 2025 candidates for one NACE code) are disambiguated by an LLM using the company’s activity description. When only the search API is available (onboarding profile), all codes are AI-inferred from the activity description text.

Data Availability Matrix

Legend: ✅ Available | ❌ Not Available | ⚠️ Conditionally Available | Async = Asynchronous processing

Documents by Company Type

All Companies

Trade Register Extract: The Uittreksel is an HTML document fetched from the KVK website and converted to PDF for delivery. The HTML content is AI-parsed to extract structured data.
Document Delivery Methods: The trade register extract uses a direct online flow (fast, ~30 sec). Financial statements and statutes use a mail flow: the document is ordered from KVK, delivered via email, then downloaded and saved. This adds latency but is the only retrieval method available for these document types.
Document Listing: Documents are listed via three parallel KVK API calls: (1) trade register extract availability, (2) financial statements, (3) statutes. If one source fails, partial results are still returned. Only if all three fail is an error thrown.

Example API Responses

All examples use placeholder data. Query: POST /v2/company with { "id": "<id>", "countryCode": "NL", "dataPoints": ["company", "legalRepresentatives"] }
Note: Closed companies have active: false and status Uitgeschreven (Deregistered). No detailed closure reason is available from the KVK.
Note: VOF partners (Vennoten) appear as both legal representatives and shareholders. Ownership percentages are typically not stated for partnerships, so sharePercentage is null.
Note: For sole proprietorships, the owner (Eigenaar) appears as a shareholder. The entrepreneur is the company itself.
Note: Foundations (Stichtingen) have no shareholders — they are non-profit entities with a board of directors (Bestuurders). No UBOs are available from the KVK.
Documents are returned when "dataPoints": ["availableDocuments"] is requested.