API Documentation

KBO Connect API

Everything you need to integrate with the KBO Connect API.

Response language:

Batch API

Enterprise

Look 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.

JavaScript
// POST /v1/companies/batch
const 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.

JavaScript
// Authentication header
const 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
curl -X GET "https://api.kboconnect.be/v1/enterprises/0123456789" \
-H "Authorization: Bearer your_api_key" \
-H "Accept-Language: nl"
JavaScript + Response
// GET /v1/enterprises/0123456789
const 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.

GET/v1/enterprises/{enterprise_number}Retrieve company data by enterprise number
GET/v1/enterprises/searchSearch companies by name, address or NACE code
GET/v1/establishments/{establishment_number}Retrieve establishment data by establishment number
GET/v1/enterprises/{enterprise_number}/branchesList all establishments of an enterprise
GET/v1/nace-codesList all available NACE codes with descriptions
POST/v1/companies/batchBatch API
POST/v1/establishments/batchBatch API

Search and Filtering

The search endpoint supports various query parameters to filter results.

ParameterTypeDescription
qstringSearch term for company name
citystringFilter by city
postal_codestringFilter by postal code
nace_codestringFilter by NACE activity code
statusstringactive, inactive, all
pageintegerPage number (default: 1)
limitintegerResults per page (max: 100)
Search Example

Monitoring your quota programmatically

Every authenticated API response includes four response headers you can read programmatically — no dashboard visit required.

HeaderDescription
X-Monthly-LimitYour total monthly API call limit for the current subscription
X-Monthly-UsedNumber of API calls consumed in the current billing period
X-Monthly-RemainingRemaining calls — max(0, limit − used)
X-Quota-WarningSet to "true" when you are approaching your monthly limit
Reading quota headers
// Reading quota headers from any API response
const 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.

Frequently asked questions