KVKBase

How to Look Up Dutch Company Data from Outside the Netherlands

A complete guide to accessing KVK (Chamber of Commerce) data, validating Dutch VAT numbers, and integrating Dutch business data into your international application.

kvkapiinternationalguide

How to Look Up Dutch Company Data from Outside the Netherlands

If you are building an application that does business with Dutch companies, you will need to verify and retrieve their registration data at some point. The Netherlands maintains a centralized business registry through the KVK (Kamer van Koophandel, or Chamber of Commerce), and every registered company has a unique 8-digit KVK number.

Getting access to this data from outside the country used to be painful. This guide covers your options and shows you how to integrate Dutch company lookups into your application, wherever you are based.

What Is the KVK and Why Does It Matter?

The KVK is the Dutch equivalent of Companies House in the UK or the Secretary of State in the US. Every business operating in the Netherlands — whether it is a one-person freelance operation or a multinational corporation — must register with the KVK.

The registry stores key information about each company:

  • Legal name and trade names — the official registered name and any commercial names the company operates under
  • KVK number — a unique 8-digit identifier
  • RSIN — a 9-digit identification number used for government and tax interactions
  • Registered address — the official address on file
  • Legal form — BV (private limited), NV (public limited), eenmanszaak (sole proprietorship), VOF (partnership), and others
  • SBI codes — industry classification codes that describe the company’s activities
  • Active status — whether the company is currently active or has been dissolved

This data is used across invoicing, compliance, onboarding, and due diligence workflows throughout Europe.

The Challenge for International Developers

If you are based outside the Netherlands, you will run into a few hurdles when trying to access KVK data:

  1. The official KVK API requires a Dutch PKIoverheid certificate for authentication. Obtaining one as a foreign entity is impractical for most teams.
  2. The KVK website is primarily in Dutch. Navigating it and parsing the results programmatically is unreliable.
  3. VIES (VAT Information Exchange System) can validate Dutch VAT numbers, but it does not return the full company profile you typically need.

These barriers are exactly why third-party APIs like KVKBase exist. They provide a clean REST interface to the same underlying data, authenticated with a simple API key.

Looking Up a Company by KVK Number

The most direct lookup is by KVK number. If a Dutch customer gives you their KVK number during onboarding, you can pull their full company profile in one request:

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.kvkbase.nl/api/v1/lookup/12345678"

The response includes the company’s legal name, trade names, address, legal form, SBI codes, and active status. Here is what a typical response looks like:

{
  "kvkNumber": "12345678",
  "tradeName": "Voorbeeld BV",
  "legalForm": "Besloten Vennootschap",
  "address": {
    "street": "Herengracht",
    "houseNumber": "500",
    "postalCode": "1017CB",
    "city": "Amsterdam"
  },
  "sbiCodes": [
    { "code": "6201", "description": "Ontwikkelen en produceren van software" }
  ],
  "isActive": true
}

Searching by Company Name

When you do not have the KVK number, you can search by name. This is useful for autocomplete fields where a user starts typing a company name:

const response = await fetch(
  'https://api.kvkbase.nl/api/v1/search?q=bol.com&limit=5',
  {
    headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
  }
);

const results = await response.json();

The search endpoint returns a list of matching companies with their KVK numbers, so the user can pick the right one and you can then do a full lookup.

Validating Dutch VAT Numbers

Dutch VAT numbers (BTW-nummers) follow the format NL + 9 digits + B + 2 digits (for example, NL123456789B01). If you need to verify that a VAT number is valid and currently active, you can use the VIES system or the KVKBase API:

import requests

api_key = "YOUR_API_KEY"
vat_number = "NL123456789B01"

response = requests.get(
    f"https://api.kvkbase.nl/api/v1/vat/{vat_number}",
    headers={"Authorization": f"Bearer {api_key}"}
)

data = response.json()
print(f"Valid: {data['valid']}")
print(f"Company: {data['tradeName']}")

This is particularly useful for invoicing workflows where EU regulations require you to verify the VAT status of your business customers.

KVKBase API vs. Direct KVK API Access

Here is a practical comparison:

KVKBase APIOfficial KVK API
AuthenticationAPI keyPKIoverheid certificate
Access from abroadYes, standard HTTPSRequires Dutch certificate
Response formatClean JSONVaries by endpoint
Search by nameYesLimited
Rate limitsGenerous, plan-basedStrict
VAT validationIncludedSeparate system
PricingPay-per-use plansFree but complex setup

For most international teams, the KVKBase API is the faster path to production. You sign up, get an API key, and start making requests within minutes.

Integration Tips

A few things to keep in mind when integrating Dutch company data:

  • Cache aggressively. Company registration data changes infrequently. A 24-hour TTL on cached results will save you API calls and improve response times.
  • Handle inactive companies. The isActive field tells you whether a company is still operating. Depending on your use case, you may want to flag or reject inactive companies.
  • Normalize addresses. Dutch postal codes follow a strict 1234AB format (four digits, two letters, no space). Some systems insert a space. Normalize before storing.
  • Store the KVK number as a string. Leading zeros are significant. The KVK number 01234567 is not the same as 1234567.

Getting Started

Sign up for a free KVKBase account at kvkbase.nl to get your API key. The free tier gives you enough requests to build and test your integration. When you are ready for production, upgrade to a plan that matches your volume.

The API documentation covers every endpoint, parameter, and response field in detail.