KBO Connect API
Everything you need to integrate with the KBO Connect API.
Batch API
EnterpriseLook up up to 50 companies or establishments in a single POST request. Designed for bulk CRM enrichment, KYC pipelines, and nightly data sync. Unknown numbers are silently omitted — you always receive a partial result.
// POST /v1/companies/batchconst response = await fetch('https://api.kboconnect.be/v1/companies/batch',{method: 'POST',headers,body: JSON.stringify(["0123456789","0987654321","0456789123"])});const companies = await response.json();// Response: array of matching companies[{"enterprise_number": "0123.456.789","denomination": { "nl": "Voorbeeld NV" },"status": "active","address": { "city": "Brussel" }}// ... meer resultaten]
POST /establishments/batch works the same way with establishment numbers.
Authentication
The KBO Connect API uses Bearer token authentication. Add your API key to the Authorization header of each request.
// Authentication headerconst headers = {'Authorization': 'Bearer your_api_key','Content-Type': 'application/json','Accept-Language': 'nl'};
First Request
Make your first API call to retrieve company data using an enterprise number. The format can be with or without dots.
curl -X GET "https://api.kboconnect.be/v1/enterprises/0123456789" \-H "Authorization: Bearer your_api_key" \-H "Accept-Language: nl"
// GET /v1/enterprises/0123456789const response = await fetch('https://api.kboconnect.be/v1/enterprises/0123456789',{ headers });const company = await response.json();// Response:{"enterprise_number": "0123.456.789","denomination": {"nl": "Voorbeeld NV"},"status": "active","juridical_form": {"code": "014","description": "Naamloze vennootschap"},"address": {"street": "Koningsstraat","house_number": "123","postal_code": "1000","city": "Brussel"},"activities": [{"nace_code": "62010","description": "Computerprogrammering"}]}
Endpoints
Overview of all available API endpoints. Click an endpoint for more details.
/v1/enterprises/{enterprise_number}Retrieve company data by enterprise number/v1/enterprises/searchSearch companies by name, address or NACE code/v1/establishments/{establishment_number}Retrieve establishment data by establishment number/v1/enterprises/{enterprise_number}/branchesList all establishments of an enterprise/v1/nace-codesList all available NACE codes with descriptions/v1/companies/batchBatch API/v1/establishments/batchBatch APISearch and Filtering
The search endpoint supports various query parameters to filter results.
| Parameter | Type | Description |
|---|---|---|
| q | string | Search term for company name |
| city | string | Filter by city |
| postal_code | string | Filter by postal code |
| nace_code | string | Filter by NACE activity code |
| status | string | active, inactive, all |
| page | integer | Page number (default: 1) |
| limit | integer | Results per page (max: 100) |
// GET /v1/enterprises/search?q=software&city=Brusselconst response = await fetch('https://api.kboconnect.be/v1/enterprises/search?' +'q=software&city=Brussel&limit=10',{ headers });const results = await response.json();// Response:{"total": 245,"page": 1,"limit": 10,"enterprises": [{"enterprise_number": "0123.456.789","denomination": "Voorbeeld Software NV","city": "Brussel","nace_code": "62010"},// ... meer resultaten]}
Monitoring your quota programmatically
Every authenticated API response includes four response headers you can read programmatically — no dashboard visit required.
| Header | Description |
|---|---|
| X-Monthly-Limit | Your total monthly API call limit for the current subscription |
| X-Monthly-Used | Number of API calls consumed in the current billing period |
| X-Monthly-Remaining | Remaining calls — max(0, limit − used) |
| X-Quota-Warning | Set to "true" when you are approaching your monthly limit |
// Reading quota headers from any API responseconst res = await fetch('https://api.kboconnect.be/v1/enterprises/0123456789',{ headers });const limit = parseInt(res.headers.get('X-Monthly-Limit'));const used = parseInt(res.headers.get('X-Monthly-Used'));const remaining = parseInt(res.headers.get('X-Monthly-Remaining'));const warning = res.headers.get('X-Quota-Warning') === 'true';if (warning) {console.warn(`⚠ Low quota: ${remaining} of ${limit} calls remaining`);}
API Playground
Try the KBO Connect API directly from your browser using your own API key.