A KVK API functions as an interface between your software applications and the KVK Trade Register. It allows the two to communicate with each other. An API key gives you access to information in the Trade Register.
You can use the Zoeken API to retrieve the KVK number of a registration.
Look up basic information of registrations with the KVK number. For example, social activity, details of owner/main location, and a list of locations.
Look up specific information of registrations with the location number. For example basic information, business activities and physical and postal address.
Use the KVK number to retrieve trade names from a registration. For example statutory name, trade names and non-commercial name.
Only the KVK Zoeken API delivers multiple results, the other APIs all return a single result. If a search with Basisprofiel, Vestigingsprofiel or Naamgeving results in multiple registrations, the first result will be shown. Therefore, we recommend using a combination of fields to make your search in the Zoeken API as specific as possible. For instance you could combine
For free format search, the other input parameters (e.g. trade name, street name, etc.) can be used.
The Zoeken API contains 2 separate entities that differ in their property "type":
{
"pagina": 1,
"resultatenPerPagina": 10,
"totaal": 1,
"resultaten": [
{
"kvkNummer": "69599068",
"naam": "Test Stichting Bolderbast",
"adres": {
"binnenlandsAdres": {
"type": "bezoekadres",
"straatnaam": "Oosterwal",
"plaats": "Lochem"
}
},
"type": "rechtspersoon",
"links": [
{
"rel": "basisprofiel",
"href": "https://api.kvk.nl/test/api/v1/basisprofielen/69599068"
}
]
}
],
"links": [
{
"rel": "self",
"href": "https://api.kvk.nl/test/api/v2/zoeken?kvknummer=69599068&pagina=1&resultatenperpagina=10"
}
]
}
{
"pagina": 1,
"resultatenPerPagina": 10,
"totaal": 1,
"resultaten": [
{
"kvkNummer": "68750110",
"vestigingsnummer": "000037178598",
"naam": "Test BV Donald",
"adres": {
"binnenlandsAdres": {
"type": "bezoekadres",
"straatnaam": "Hizzaarderlaan",
"plaats": "Lollum"
}
},
"type": "hoofdvestiging",
"links": [
{
"rel": "basisprofiel",
"href": "https://api.kvk.nl/test/api/v1/basisprofielen/68750110"
},
{
"rel": "vestigingsprofiel",
"href": "https://api.kvk.nl/test/api/v1/vestigingsprofielen/000037178598"
}
]
}
],
"links": [
{
"rel": "self",
"href": "https://api.kvk.nl/test/api/v2/zoeken?kvknummer=68750110&pagina=1&resultatenperpagina=10"
}
]
}
The Zoeken API offers the possibility to search for company data, location data and/or legal entities. The Basispofiel and Vestigingsprofiel APIs are linked to the Zoeken API. Search results contain URLs to the related Basisprofiel en Vestigingsprofiel resources. Within REST this is also known as HATEOAS. We used the HAL standard for these APIs to implement HATEOAS.
An http GET-request is the only allowed http request. The KVK APIs use the standard JSON object (JavaScript Object Notation) as output. This facilitates generic results for the API output. It also contains a number of metadata elements that are included with every JSON output (page, count, total, next and previous). We use the specifications prescribed by JSON.org. However, there are 2 very specific features related to the KVK API JSON output:
The date registered in the Trade Register can contain zeros as the date is unknown. If the full date is known then the format is: YYYYMMDD (year/month/day). Only numeric values are allowed (including 0 for unknown parts of the date).
For example:
GEO data is geographic data used to determine the location of addresses and buildings to indicate. Using the BAG IDs (addressableObjectId and numberIndicationId) can be entered in the BAG (Basic Registration Addresses and Buildings) are searched for, among other things, surface area and purpose of use.
Geo-data is retrieved by including an extra parameter “?geoData=true” in the call to location profiles. By default, this parameter is set to false. The coordinates are only provided if they are known (for PO boxes for example, this will be empty).
Example of GEO-data as part of an address:
{
"adressen":[
{
"type":"bezoekadres",
"indicatieAfgeschermd":"Nee",
"volledigAdres":"Watermolenlaan 1 3447GT Woerden",
"straatnaam":"Watermolenlaan",
"huisnummer":1,
"postcode":"3447GT",
"plaats":"Woerden",
"land":"Nederland",
"geoData":{
"addresseerbaarObjectId":"0632010000010090",
"nummerAanduidingId":"0632200000010090",
"gpsLatitude":52.08151653230184,
"gpsLongitude":4.890048011859921,
"rijksdriehoekX":120921.45,
"rijksdriehoekY":454921.47,
"rijksdriehoekZ":0
}
}
]
}
If there is an error message and/or error handling occurs, normal http status codes and messages used. Error messages and error handling use the following non-exhaustive list of error codes:
Code | Description | Http status |
---|---|---|
IPD0001 | The requested product {0} does not exist. | 404 |
IPD0004 | The KVK number {0} is not valid | 400 |
IPD0005 | The product cannot be delivered based on the KVK number {0}. | 404 |
IPD0006 | The vestigingsnummer (branch number) {0} is not valid. | 400 |
IPD0007 | The product cannot be delivered based on vestigingsnummer {0}. | 404 |
IPD0010 | The RSIN number {0} is not valid. | 400 |
IPD1002 | The data is temporarily unavailable because it is being processed. Please try again later. | 404 |
IPD1998 | General input parameter error. | 400 |
IPD1999 | The following specified parameter(s) is(are) invalid: {0} | 400 |
IPD5200 | No data was found that matches the specified search parameters. | 404 |
IPD5203 | The specified type is not valid. | 404 |
IPD9999 | General technical error. | 500 |
The PDF below contains the information that a search for legal forms yields. Information is in Dutch.
The PDF below contains values that can occur with the attribute 'omschrijvingRechtsvorm'. Information is in Dutch.
The PDF below contains the possible values for a country, indicated according to the BRP country table (also known as Table 34). Information is in Dutch.