BCE/KBO API endpoints reference: volledige lijst van REST-routes (companies, addresses, NACE, UBO, vestigingen, Peppol)
Technische referentie van de REST-endpoints van de Company Belgium-API: zoeken, bedrijfsfiche, adressen, NACE-activiteiten, vestigingen, bestuurders, UBO, Peppol-verificatie. Met responsschema's, parameters en foutcodes.
In het kort
De KBO/BCE-API van Company Belgium biedt toegang tot een tiental functionele domeinen via versie-vaste REST-routes (/v1/): zoeken en bedrijfsfiche, adressen, vestigingen, NACE-codes, bestuurders, UBO-begunstigden, Peppol-verificatie, benamingen en webhooks. Alle responses volgen hetzelfde JSON-contract met standaard rate-limiting headers.
Over deze referentie
Uitgebreid referentiedocument voor developers die de KBO/BCE-API integreren. Alle publieke endpoints staan erin, met parameters, responsschema's en mogelijke fouten.
Basis-URL: https://api.companybelgium.be/v1
Formaat: JSON (request + response)
Authenticatie: X-API-Key + X-API-Secret in de headers
Structuur van een respons
Alle responses volgen hetzelfde contract:
1 2 3 4 5
{
"success": true,
"data": { ... },
"timestamp": "2026-05-10T14:32:01.523Z"
}
Bij fout:
1 2 3 4 5
{
"success": false,
"error": "Company not found",
"timestamp": "2026-05-10T14:32:01.523Z"
}
Endpoints — Ondernemingen
GET /companies/:enterpriseNumber
Haalt de volledige fiche van een onderneming op.
Parameter: KBO-nummer (met of zonder punten, bv. 0200.065.765 of 0200065765)
Respons:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
{
"data": {
"enterpriseNumber": "0200065765",
"vatNumber": "BE0200065765",
"name": "Espero-Soft Informatiques BV",
"legalForm": "Besloten vennootschap",
"status": "AC",
"startDate": "1989-05-12",
"endDate": null,
"address": {
"street": "Voorbeeldstraat",
"number": "12",
"postalCode": "1000",
"municipality": "Brussel",
"country": "BE",
"fullAddress": "Voorbeeldstraat 12, 1000 Brussel"
},
"mainActivity": {
"code": "62.010",
"label": "Computerprogrammering",
"version": "2008"
},
"establishmentsCount": 3
}
}
Fouten: 404 (niet gevonden), 429 (rate limit), 401 (auth).
GET /companies/search
Full-text zoekopdracht van ondernemingen.
Query-parameters:
| Param | Type | Beschrijving |
|---|---|---|
q | string | Zoekopdracht (naam, deel naam, nummer) |
limit | int | Max resultaten (default 20, max 100) |
offset | int | Paginering (default 0) |
status | string | Filter (AC actief, ST gestopt, all) |
postalCode | string | Filter op postcode |
naceCode | string | Filter op NACE-code |
Voorbeeld:
1
GET /companies/search?q=espero&limit=10&status=AC
Respons:
1 2 3 4 5 6 7 8 9 10 11
{
"data": [
{
"enterpriseNumber": "0200065765",
"name": "Espero-Soft Informatiques BV",
"status": "AC",
"municipality": "Brussel"
}
],
"pagination": { "total": 1, "limit": 10, "offset": 0 }
}
Endpoints — Adressen
GET /companies/:enterpriseNumber/addresses
Haalt alle adressen van een onderneming op (zetel, post, exploitatie).
Respons:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
{
"data": [
{
"type": "REGO",
"typeLabel": "Maatschappelijke zetel",
"street": "Voorbeeldstraat",
"number": "12",
"postalCode": "1000",
"municipality": "Brussel",
"country": "BE",
"validFrom": "2018-01-01",
"validTo": null
}
]
}
Adrestypes: REGO (zetel), PMRG (privéwoning bestuurder), COBR (correspondentie), EXPL (exploitatie).
Endpoints — Vestigingen
GET /companies/:enterpriseNumber/establishments
Lijst van vestigingseenheden van een onderneming (verbonden fysieke locaties).
Respons:
1 2 3 4 5 6 7 8 9 10 11 12
{
"data": [
{
"establishmentNumber": "2100000123",
"name": "Espero-Soft - Antenne Luik",
"startDate": "2020-09-01",
"endDate": null,
"address": { ... },
"mainActivity": { ... }
}
]
}
GET /establishments/:establishmentNumber
Haalt een vestigingseenheid op via haar nummer.
Endpoints — NACE-activiteiten
GET /companies/:enterpriseNumber/activities
Lijst van aangegeven NACE-codes (hoofd + secundair, per versie 2003/2008/2025).
Respons:
1 2 3 4 5 6 7 8 9 10 11
{
"data": [
{
"code": "62.010",
"label": "Computerprogrammering",
"version": "2008",
"type": "MAIN",
"validFrom": "2018-01-01"
}
]
}
GET /nace-codes
Volledig referentielijst NACE-codes.
Query-parameters:
| Param | Type | Beschrijving |
|---|---|---|
version | string | 2003, 2008 of 2025 (default 2008) |
q | string | Zoeken in de labels |
lang | string | Taal van het label (fr, nl, en) |
Endpoints — Bestuurders
GET /companies/:enterpriseNumber/directors
Lijst van uitgeoefende functies (bestuurders, zaakvoerders, permanente vertegenwoordigers).
Respons:
1 2 3 4 5 6 7 8 9 10 11 12 13
{
"data": [
{
"functionCode": "AD",
"functionLabel": "Gedelegeerd bestuurder",
"person": {
"name": "Espero AKPOLI",
"type": "NATURAL"
},
"startDate": "2018-01-01"
}
]
}
Endpoints — Uiteindelijk begunstigden (UBO)
GET /companies/:enterpriseNumber/ubo
Haalt de volledige UBO-cascade op, gekruist met het Belgische register.
Voor de wettelijke details van het UBO-register, zie het toegewijde artikel.
Respons:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
{
"data": {
"lastConfirmation": "2025-12-15",
"level1": [
{
"name": "Jan Dupont",
"birthDate": "1975-03-21",
"nationality": "BE",
"controlPercentage": 60.0,
"category": "DIRECT"
}
],
"level2Cascade": [
{
"personName": "Maria Martin",
"effectivePercentage": 48.0,
"chain": [
{ "company": "Holding ABC BV", "ownership": 80.0 },
{ "company": "Espero-Soft BV", "ownership": 60.0 }
]
}
],
"discrepanciesWithRegister": []
}
}
Endpoints — Peppol-verificatie
GET /peppol/check/:identifier
Verifieert of een onderneming geregistreerd is op Peppol (netwerk voor elektronische facturatie).
Parameter: identifier in Peppol-formaat 0208:0200065765 (schema voor KBO) of gewoon het KBO-nummer.
Respons:
1 2 3 4 5 6 7 8 9 10 11
{
"data": {
"registered": true,
"smpUrl": "https://smp.example.com",
"capabilities": [
"urn:peppol:invoice:billing:3.0",
"urn:peppol:invoice:creditnote:3.0"
],
"lastSeen": "2026-05-09T08:12:00Z"
}
}
Endpoints — Benamingen
GET /companies/:enterpriseNumber/denominations
Volledige historiek van namen en commerciële benamingen (FR/NL/EN).
Respons:
1 2 3 4 5 6 7 8 9 10
{
"data": [
{
"type": "SOCIAL",
"language": "nl",
"value": "Espero-Soft Informatiques",
"validFrom": "2018-01-01"
}
]
}
Endpoints — Webhooks
POST /webhooks
Maak een webhook-abonnement.
Body:
1 2 3 4 5 6 7 8 9 10 11
{
"url": "https://uw-app.example.com/webhooks/kbo",
"events": [
"company.updated",
"company.director.added",
"company.ubo.changed",
"company.accounts.filed",
"company.peppol.registered"
],
"enterpriseNumbers": ["0200065765", "0400123456"]
}
GET /webhooks
Lijst uw abonnementen.
DELETE /webhooks/:id
Deactiveert een abonnement.
Standaard HTTP-codes
| Code | Betekenis | Te doen |
|---|---|---|
| 200 | OK | Lees data |
| 400 | Bad Request | Verifieer de parameters |
| 401 | Unauthorized | Verifieer API key/secret |
| 403 | Forbidden | Endpoint niet toegestaan op uw plan |
| 404 | Not Found | Onderneming/vestiging bestaat niet |
| 429 | Too Many Requests | Respecteer Retry-After |
| 500 / 502 / 503 | Server Error | Exponentiële retry |
Nuttige headers
| Header | Betekenis |
|---|---|
X-RateLimit-Limit | Totaal quotum over het venster |
X-RateLimit-Remaining | Resterend quotum |
X-RateLimit-Reset | Reset-tijdstempel |
Retry-After | Seconden te wachten vóór retry (bij 429) |
X-Request-ID | Uniek verzoek-ID (voor support) |
Goede praktijken
- HTTP-client-instantie hergebruiken (keep-alive)
- Exponentiële retry op 429/5xx implementeren
- Cachen van ondernemingsfiches (TTL 5-30 min)
X-RateLimit-Remainingloggen
- Webhooks verkiezen boven polling
Hoe Company Belgium zijn endpoints documenteert
De Company Belgium-API biedt:
- Volledige OpenAPI 3.1-spec op
/docs/openapi.json
- Sandbox op
https://sandbox.api.companybelgium.bemet testgegevens
- Python- en TypeScript-SDK's gegenereerd vanuit de spec
- Publieke statuspagina (incidenten, onderhoud)
Om te starten: zie de Python-tutorial of de Node.js/TypeScript-tutorial.
Om te begrijpen hoe te scalen: zie de rate-limit/caching-architectuur.
Om met alternatieven te vergelijken: vergelijking van de 5 KBO-API's.
Samenvatting
Een moderne KBO/BCE-API toont ongeveer tien functionele domeinen: ondernemingen, adressen, vestigingen, NACE, bestuurders, UBO, Peppol, benamingen, webhooks. Het uniforme responscontract ({success, data, error, timestamp}) en de gestandaardiseerde rate-limit headers maken de integratie voorspelbaar.
Bookmark deze pagina als referentie. Alle routes zijn stabiel en versie-vast (/v1/) — toekomstige evoluties zullen via /v2/ lopen zonder bestaande integraties te breken.
Veelgestelde vragen
Wat zijn de belangrijkste endpoints van de KBO API Company Belgium ?
De KBO API biedt de volgende routes: GET /companies/search voor full-text zoeken, GET /companies/:number voor de volledige fiche, GET /companies/:number/addresses voor adressen, GET /companies/:number/establishments voor vestigingen, GET /companies/:number/activities voor NACE-codes, GET /companies/:number/ubo voor de UBO-cascade en GET /peppol/check/:identifier voor Peppol-verificatie.
Hoe authenticeert u verzoeken aan de KBO API ?
Elk verzoek moet twee headers bevatten: X-API-Key met uw publieke sleutel (pk_live_...) en X-API-Secret met uw geheime sleutel (sk_live_...). Deze sleutels worden gegenereerd in de sectie API-sleutels van uw dashboard op companybelgium.be. De geheime sleutel wordt gehasht in SHA-256 en wordt slechts eenmaal getoond bij het aanmaken.
Hoe beheert u rate limiting (fout 429) bij KBO API-aanroepen ?
Wanneer de API een HTTP 429 retourneert, leest u de Retry-After header die het aantal seconden aangeeft om te wachten voor het opnieuw proberen. Implementeer een retry met exponentieel backoff: wacht Retry-After * 2^poging seconden tussen elke poging. Bewaak ook X-RateLimit-Remaining in uw logs om overschrijdingen te anticiperen.
Ondersteunt de KBO API webhooks voor het opvolgen van bedrijfswijzigingen ?
Ja, het endpoint POST /webhooks maakt het mogelijk te abonneren op bedrijfswijzigingsgebeurtenissen: company.updated, company.director.added, company.ubo.changed, company.accounts.filed en company.peppol.registered. U ontvangt realtime een HTTP-melding op uw URL zodra een gebeurtenis zich voordoet, waardoor u de API niet meer elk uur hoeft te pollen.
Reacties
Gerelateerde artikelen

Belgian Crossroads Bank for Enterprises (KBO) API: volledige Engelstalige developer-documentatie
Engelstalige developer-documentatie voor de API van de Belgische Kruispuntbank van Ondernemingen. Overzicht van het KBO/BCE-register, wettelijke context, toegangsopties, snelle start met cURL-voorbeelden en integratiepatronen voor internationale developers.

Rate limits, quota en caching om een KBO/BCE-applicatie te schalen: referentie-architectuur
Uw app bevraagt de KBO/BCE-API in volume — hoe 429's vermijden, kosten beheersen en latency garanderen? Referentie-architectuur met meerlaags cache, requestwachtrij, observability en webhooks. Concrete patronen en streefcijfers.

Officiële KBO-API vs API's van derden: beperkingen van de openbare BCE-dienst en waarom overstappen op een moderne API
De officiële FOD Economie-API is gratis — maar ze is SOAP, zonder webhooks, zonder UBO- of Peppol-verrijking en zonder SLA. Hier in detail waarom 80% van de ernstige projecten uiteindelijk migreert naar een API van derden, en hoe te evalueren of dat ook voor u geldt.
