CBE2JSON API-documentatie
CBE2JSON geeft u toegang tot officiële Belgische ondernemingsgegevens uit de Kruispuntbank van Ondernemingen (CBE / BCE / KBO) via een eenvoudige REST API. Het interactieve naslagwerk hieronder documenteert elk endpoint, de parameters en voorbeelden van JSON-antwoorden.
Snel aan de slag
1. Vraag je API-sleutel aan
Maak een gratis account aan (50 credits per maand, geen creditcard nodig) en genereer daarna een sleutel in je dashboard. Een sleutel bestaat uit een clientId en een secretKey.
Gratis account aanmaken Ik heb al een account2. Doe je eerste request
Elk endpoint verwacht een POST met een JSON-body: je inloggegevens plus een data-object. Dit voorbeeld zoekt Proximus op via het ondernemingsnummer. Punten en het BE-voorvoegsel zijn optioneel: 0202239951 en BE0202.239.951 werken ook.
curl -X POST https://api.cbe2json.be/byCBE \
-H "Content-Type: application/json" \
-d '{"clientId": "YOUR_CLIENT_ID", "secretKey": "YOUR_SECRET_KEY", "data": {"cbe": "0202.239.951"}}'Om op naam te zoeken, stuur je een POST naar /byDenomination met "data": {"denomination": "Proximus", "limit": 10, "offset": 0}.
Om ondernemingen op te zoeken op activiteit (NACE), postcode, gemeente, straat en huisnummer, rechtsvorm of rechtstoestand, stuur je een POST naar /search met bijvoorbeeld "data": {"zipcode": "1000", "street": "Rue de la Loi", "houseNumber": "16"}. NACE- en adresfilters moeten op dezelfde zetel of dezelfde vestigingseenheid slaan. De resultaten zijn gesorteerd op oplopend ondernemingsnummer, zodat offset en limit een stabiele paginering geven. Gebruik het om bedrijven op te zoeken of te verifiëren, bijvoorbeeld wie op een bepaald adres gevestigd is, of welke activiteitscode een leverancier heeft — de KBO Open Data-licentie sluit direct marketing uit.
/search/numbers gebruikt dezelfde filters en geeft alleen ondernemingsnummers terug, tot 1000 per pagina, in dezelfde oplopende volgorde.
CBE2JSON JavaScript & TypeScript SDK
3. Verwerk het antwoord
Een geslaagde call geeft JSON terug. Vanaf API-versie 2 heeft het antwoord de vorm { data, meta }: data bevat de onderneming (of de lijst met ondernemingen), en meta geeft de datum van de geleverde KBO-dataset, de credits die de call verbruikte en de resterende credits. Controleer eerst de HTTP-status: API-fouten geven een JSON-body zoals {"errorCode": "…", "message": "…"} terug, met een van deze codes:
| HTTP-status | errorCode | Betekenis |
|---|---|---|
400
| VALIDATION_FAILED |
De request-body is ongeldig: een ontbrekend of onbekend veld, of een ongeldig ondernemingsnummer.
|
400
| QUOTA_EXHAUSTED |
Je credits voor deze maand zijn op, of dit request zou meer resultaten teruggeven dan je nog credits hebt (verlaag data.limit). Upgrade je abonnement of wacht op de maandelijkse reset.
|
401
| BAD_CLIENT_SECRET |
De clientId en secretKey horen bij geen enkele API-sleutel.
|
403
| ORIGIN_NOT_ALLOWED |
Het request komt van een website die niet bij de toegestane origins van deze sleutel staat. Browsers tonen dit als een CORS-fout; geblokkeerde origins staan in je dashboard.
|
404
| ENTERPRISE_NOT_FOUND |
Geen onderneming gevonden voor dit nummer of deze naam. In versie 1 geeft byDenomination dit ook terug voor een pagina na het laatste resultaat; in versie 2 is het antwoord een lege lijst.
|
400
| UNSUPPORTED_API_VERSION |
De header CBE2JSON-Version noemt een versie die niet bestaat.
|
byCBE verbruikt 1 credit per gevonden onderneming. byDenomination en search verbruiken 1 credit per teruggegeven onderneming. search/numbers verbruikt 1 credit per pagina met resultaten. Mislukte requests en lege resultaten verbruiken geen credits. Antwoorden vermelden je credits ook in headers: CBE2JSON-Credits-Used, -Remaining, -Limit en -Reset.
API-versies
Elke API-sleutel is gekoppeld aan een antwoordformaat, zodat de JSON die je verwerkt nooit onverwacht verandert. Nieuwe sleutels starten op de nieuwste versie; je kunt de versie van een sleutel op elk moment wijzigen in je dashboard, en weer terugzetten.
- Versie 1 — het oorspronkelijke formaat. Alle sleutels die vóór het versiebeheer zijn aangemaakt, gebruiken het.
- Versie 2 — verpakt elk antwoord in { data, meta }: data bevat de onderneming of de lijst met ondernemingen; meta geeft de datum van de dataset (dataUpdatedAt), de credits (creditsUsed, creditsRemaining, creditsLimit, creditsResetAt) en, voor byDenomination, de pagina (total, limit, offset, hasNext). byDenomination aanvaardt een limit van maximaal 100 en beantwoordt een zoekopdracht zonder resultaten met een lege lijst in plaats van een 404.
Om voor één request een andere versie te proberen, stuur je de header CBE2JSON-Version mee (bijvoorbeeld 2). Elk antwoord bevat dezelfde header, met de gebruikte versie.
Elke wijziging aan een bestaand antwoordformaat komt in een nieuwe versie. Oudere versies blijven minstens 12 maanden ondersteund na de release van een nieuwere versie, en we mailen je voordat we er een stopzetten.
API-referentie
CBE2JSON API 1.0.0
OAS3
/swagger.jsonOfficial Belgian company data from the Crossroads Bank for Enterprises (CBE / BCE / KBO) as JSON.
Authentication. Every endpoint is a POST with a JSON body holding your credentials and a data object: {"clientId": "…", "secretKey": "…", "data": { … }}. Generate a key in your dashboard.
Credits. byCBE uses 1 credit per enterprise found; byDenomination and /search use 1 credit per enterprise returned; /search/numbers uses 1 credit per non-empty page of up to 1,000 numbers. Each is refused (400 QUOTA_EXHAUSTED, nothing charged) when it would exceed the credits left. Failed requests and empty results use no credits; total is always free. Every response to an identified key carries the credits in headers: CBE2JSON-Credits-Used, CBE2JSON-Credits-Remaining, CBE2JSON-Credits-Limit and CBE2JSON-Credits-Reset (the last three are left out when they do not apply).
Errors. Check the HTTP status first. API errors return {"errorCode": "…", "message": "…"} with the status listed under each endpoint; other failures (malformed JSON, server errors) can return a different body.
Versions. Each API key is pinned to a response format: version 1 is the original format; version 2 wraps every response in { "data": …, "meta": { … } }, where meta gives the dataset date, the credits and, for searches, the page. Version 2 also caps limit at 100 for byDenomination and /search (1000 for /search/numbers) and answers an empty search with 200 and an empty list. New keys start on the latest version; switch a key in your dashboard. Send the CBE2JSON-Version header to use another version for one request; every response carries that header with the version used. Older versions stay supported for at least 12 months after a newer one ships.
Browser access (CORS). By default an API key works from any website. In your dashboard you can restrict a key to a list of origins, or block browser access entirely. Origins are matched as globs: https://app.example.com matches exactly that origin; https://*.example.com matches app.example.com and a.b.example.com but not the bare https://example.com; http://localhost:* matches any local port. A request from a disallowed origin returns 403 ORIGIN_NOT_ALLOWED and consumes no quota.
CORS is enforced by browsers only — a script, server or mobile app can still use the key, so keep your secret key secret.