🇳🇱 Netherlands — Kamer van Koophandel (KVK) — Handelsregister, Open Dataset APIs (opendata.kvk.nl, HVDS, CC-BY 4.0)

Access Netherlands's official company register in real time via the OpenRegistry MCP endpoint. Unified schema, source-linked, live passthrough (no caching).

Quick facts

Netherlands' official company register via the free high-value open-data tier. 8-digit KVK-number lookup only; no name search on the free tier. Profile's company_name is empty by design (PII stripped upstream); only BV + NV legal forms are covered.

Company ID format

Nederlands KVK-nummer: 8 digits. Values with fewer digits are left-padded with zeros. Whitespace / dots / dashes are stripped.

Examples: 59581883, 33014286, 17085815

Supported tools (3)

Status values

Native values upstream reports: actief, niet-actief, FAIL, SSAN, SURS

Mapping to the unified four-value enum:

UnifiedNative values
activeactief
inactiveFAIL, SSAN, SURS
dissolvedniet-actief
unknown(none)

Known quirks

Available jurisdiction_data fields

Every tool response carries a jurisdiction_data object with the raw upstream fields (names unchanged). The full field set per record type:

profile (8 fields)
  • datumAanvang (YYYYMMDD — start-of-activity date)
  • actief ('J' active / 'N' dissolved)
  • insolventieCode ('FAIL' faillissement / 'SSAN' schuldsanering / 'SURS' surseance van betaling)
  • rechtsvormCode ('BV' besloten vennootschap / 'NV' naamloze vennootschap — HVDS covers only these two forms)
  • postcodeRegio (integer — first two digits of bezoekadres postcode; HVDS-anonymised, full postcode and street are NOT exposed)
  • activiteiten[] ({ sbiCode (max 6 digits per CBS SBI classificatie), soortActiviteit: 'Hoofdactiviteit'|'Nevenactiviteit' })
  • lidstaat ('NL')
  • NOT exposed by HVDS (by legal design): company name / handelsnamen / statutaire naam / full address / RSIN / vestigingsnummer / officers / shareholders / UBO / capital / jaarrekeningen body. For those, use the paid Digitaal uittreksel or the €6.40/mo + €0.02/call Handelsregister REST subscription.
filing (7 fields)
  • opendataFields[] — nested key→value tree of one ADOPTED annual accounts filing. Each node is { key: string, value?: string, opendataFields?: [...] }.
  • Top-level keys always include: SbiBusinessCode (primary SBI activity code of the reporting entity), DocumentAdoptionDate (vaststellingsdatum — date the accounts were adopted by the shareholders), FinancialYear (boekjaar, e.g. '2024').
  • Top-level section subtrees when present: BalanceSheet (balans), IncomeStatement (winst-en-verliesrekening), CashFlowStatement (kasstroomoverzicht). Consolidated variants (ConsolidatedBalanceSheet / ConsolidatedIncomeStatement / ConsolidatedCashFlowStatement) appear only when the entity filed a consolidated account.
  • Inside each section the tree descends through XBRL section titles (BalanceSheetTitle, AssetsTitle, EquityAndLiabilitiesTitle, GrossMarginTitle, CashFlowOperatingActivitiesTitle, …) into leaf { key, value } concepts (EquityAndLiabilities, Assets, Equity, NetResultAfterTax, IntangibleAssets, PropertyPlantEquipment, FinancialAssets, Inventories, Receivables, CashAndCashEquivalents, OperatingResult, ResultBeforeTax, IncomeTaxExpense, CashFlowInvestingActivities, CashFlowFinancingActivities, NetCashFlows, …).
  • Coverage depth varies by business class — micro BVs may expose only EquityAndLiabilities; mid-sized filers expose the full balance sheet + P&L; a small subset adds consolidated.
  • The endpoint returns ONLY the latest adopted filing per KVK (no historical feed). get_financials / list_filings therefore return 0 or 1 item; entities without vastgestelde XBRL return 404 IPD7002 → empty list (handled internally).
  • openregistry does NOT parse the XBRL — the full tree is preserved verbatim in jurisdiction_data.opendataFields so the AI client extracts concepts directly.