Belgian Crossroads Bank for Enterprises (BCE/KBO) API: complete English developer documentation
English developer documentation for the Belgian Crossroads Bank for Enterprises API. Overview of the BCE/KBO registry, legal context, access options, quick start with cURL examples, and integration patterns for international developers.
In brief
The Belgian Crossroads Bank for Enterprises (BCE/KBO) is the official central registry for all Belgian legal entities, managed by the SPF Economie. Company Belgium provides the fastest REST/JSON access to its 2 million companies, with enrichments for UBO, Peppol and real-time webhooks — plus SDKs for Python and TypeScript.
What is the Belgian Crossroads Bank for Enterprises?
The Belgian Crossroads Bank for Enterprises (abbreviated BCE in French — *Banque-Carrefour des Entreprises* — and KBO in Dutch — *Kruispuntbank van Ondernemingen*) is the official central registry of every legal entity active in Belgium: companies, self-employed individuals, non-profit associations, foundations and public bodies.
It is managed by the Belgian Federal Public Service for Economy (SPF Economie / FOD Economie). All data are public except those legally protected (e.g. private addresses of natural persons).
Key figures (2026)
- ~2 million active legal entities
- ~1.7 million establishments (physical locations attached to entities)
- ~34 million NACE activity assignments
- ~3.3 million company denominations across FR, NL, EN
- Updated daily via incremental delta files
Why integrate the BCE/KBO
Use cases that justify accessing the BCE:
- KYC / AML compliance under the Belgian Act of 18 September 2017 — see our AML compliance guide
- Supplier verification (existence, legal status, address, ID)
- Auto-fill of business signup forms by VAT number
- Sales prospecting by sector (NACE code), city or company size
- Peppol invoicing (linking the BCE number to an electronic invoicing endpoint)
- Beneficial ownership transparency via the UBO register — see our UBO article
Identifier formats
The BCE uses two main identifier types:
Enterprise number
10-digit identifier for legal entities. Format: NNNN.NNN.NNN (with dots) or NNNNNNNNNN (without). The Belgian VAT number is the enterprise number prefixed with BE.
Example: 0200.065.765 → VAT: BE0200065765
Establishment number
10-digit identifier for physical sites. Format: NNNN.NNN.NNN starting with 2. An entity can have multiple establishments.
Example: 2.100.000.123
Official access options
The Belgian government provides three official channels:
1. KBOPublicSearch (SOAP)
The official SOAP web service at kbopub.economie.fgov.be. Free, no API key required for public reads. Returns XML envelopes. No REST, no JSON.
Documentation in French/Dutch only. Best suited to enterprise integrations with existing SOAP tooling.
2. EnterpriseRegister (SOAP, authenticated)
A second SOAP service for accredited actors only: notaries, court clerks, banks, government partners. Requires an explicit agreement with the SPF Economie.
3. Open Data (FTP)
A daily FTP drop of ZIP files containing the full registry as CSV. Two variants:
- Full: complete snapshot (~500 MB compressed)
- Update: daily delta (insert + delete pairs)
Suitable for bulk processing and data warehouses. Not suitable for real-time lookups.
Third-party REST APIs
Because the official SOAP API is unwieldy in 2026 stacks, several third-party REST APIs have emerged. We cover them in detail in our comparison article and discuss the limits of the official API. The main ones:
- CBEAPI (cbeapi.be) — free community project
- Banque Carrefour Entreprises (banquecarrefourentreprises.fr) — French paid service
- Kruispuntdatabank (kruispuntdatabank.be) — Dutch paid service
- Company Belgium (companybelgium.be) — multilingual freemium with UBO, Peppol and webhooks
Quick start with Company Belgium
The fastest path for a developer with no Belgian-context expertise.
Get API credentials
First call
1 2 3 4
curl -X GET "https://api.companybelgium.be/v1/companies/0200065765" \
-H "X-API-Key: pk_live_xxxxxxxxxxxx" \
-H "X-API-Secret: sk_live_xxxxxxxxxxxx" \
-H "Accept: application/json"
Response:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
{
"success": true,
"data": {
"enterpriseNumber": "0200065765",
"vatNumber": "BE0200065765",
"name": "Espero-Soft Informatiques SRL",
"legalForm": "Limited liability company",
"status": "AC",
"address": {
"fullAddress": "Example Street 12, 1000 Brussels"
},
"mainActivity": {
"code": "62.010",
"label": "Computer programming",
"version": "2008"
}
},
"timestamp": "2026-05-14T10:32:18.421Z"
}
Search by name
1 2 3
curl -X GET "https://api.companybelgium.be/v1/companies/search?q=espero&limit=10" \
-H "X-API-Key: pk_live_xxxxxxxxxxxx" \
-H "X-API-Secret: sk_live_xxxxxxxxxxxx"
Check UBO cascade
1 2 3
curl -X GET "https://api.companybelgium.be/v1/companies/0200065765/ubo" \
-H "X-API-Key: pk_live_xxxxxxxxxxxx" \
-H "X-API-Secret: sk_live_xxxxxxxxxxxx"
Full endpoint list: see the endpoints reference.
Data model essentials for non-Belgian developers
A few specifics that surprise newcomers:
Enterprise status
AC— Active (operational)
ST— Ceased (struck off the registry)
A ceased entity still appears in the BCE with all historical data preserved.
Legal forms
Belgium has dozens of legal forms, often with distinct French/Dutch names. The most common:
- SA / NV — Public limited company
- SRL / BV — Limited liability company (since 2019 reform)
- SC / CV — Cooperative company
- ASBL / VZW — Non-profit association
- Self-employed — Independent natural person with VAT
NACE codes
The BCE assigns one main NACE code (mandatory) and zero or more secondary ones. NACE versions used:
- NACE 2003 — legacy data
- NACE 2008 — current default
- NACE 2025 — new revision
When integrating, always check the version field of activity records.
Multilingual denominations
A company can have denominations in French, Dutch and English — sometimes different names per language. Always fetch the language matching your user.
Compliance considerations
If you process BCE data, be aware of:
GDPR
BCE data on legal persons (companies) is not personal data under GDPR. But:
- BCE data on natural persons (self-employed) is personal data
- Director information (linked to companies) is personal data
- Beneficial owners (UBO) are natural persons → strict access rules
The UBO register itself has had its access rules tightened by the CJEU judgment of 22 November 2022 (cases C-37/20 and C-601/20). Public access is no longer free; only authorities and parties with legitimate interest can query it.
Belgian AML obligations
If you operate in a regulated profession in Belgium (lawyer, accountant, real-estate agent, company service provider, etc.), you are subject to the Act of 18 September 2017. See our compliance guide and KYC obligations.
Data freshness
Even daily-updated BCE data can be 24-48 hours stale relative to the underlying ledger. For real-time decisions (signing a contract, releasing a payment), cross-check with the entity directly.
Scaling considerations
Pre-built guidance for production traffic — caching, retry, webhooks, observability — is covered in our reference architecture article.
In short:
- Use webhooks for change tracking instead of polling
- Cache static data (NACE labels, legal forms) for hours
- Cache company records for 5-30 minutes depending on volatility
- Maintain a local snapshot of companies you actively track
SDKs and tooling
For Company Belgium specifically:
- Python SDK (
pip install companybelgium) — see Python tutorial
- TypeScript SDK (
npm install @companybelgium/sdk) — see Node.js tutorial
- OpenAPI 3.1 spec at
https://api.companybelgium.be/v1/docs/openapi.json— generate clients in any language
- Sandbox at
https://sandbox.api.companybelgium.bewith test data
Support
If you hit issues:
- Open a ticket via the dashboard
- Status page at
https://status.companybelgium.be(uptime, incidents)
- Documentation portal:
https://companybelgium.be/en/api-docs
For Belgian-specific legal questions, the SPF Economie helpdesk is the authoritative source.
How Company Belgium serves international developers
We have first-class support for non-French/Dutch speakers:
- English documentation for every endpoint
- Pricing in EUR with VAT handling for EU/non-EU customers
- API responses in English when requested via
Accept-Language: en
- Webhooks with multilingual payloads (the
namefield returns the language requested)
- Support in English via email and chat
- VAT-compliant invoicing in 3 languages with Peppol delivery — see how this fits with the Peppol verification endpoint
For an international developer, this removes the friction of integrating a Belgian-only registry into a global product.
Bottom line
The Belgian Crossroads Bank for Enterprises is one of the most complete, freshest and most accessible company registries in Europe. The official API is SOAP-only, but multiple modern REST alternatives exist, with Company Belgium offering the most enriched stack (UBO cascade, Peppol verification, webhooks).
For an international developer, the recommended path is:
You can be live in production within a day.
Frequently asked questions
What is the Belgian Crossroads Bank for Enterprises (BCE/KBO) ?
The Belgian Crossroads Bank for Enterprises (abbreviated BCE in French and KBO in Dutch) is the official central Belgian registry of all legal entities: companies, self-employed individuals, non-profits, foundations and public bodies. It is managed by the SPF Economie and contains approximately 2 million active entities updated daily.
How can an international developer access Belgian BCE/KBO data ?
An international developer has three access channels: the free official SOAP API (kbopub.economie.fgov.be), the FTP download of Open Data files (full plus daily delta), or a third-party REST API like Company Belgium which offers a free plan with no credit card, English documentation and Python and TypeScript SDKs.
What identifiers are used in the Belgian BCE/KBO database ?
The BCE uses two main identifiers. The enterprise number is a 10-digit code in the format NNNN.NNN.NNN that identifies legal entities; the Belgian VAT number is the enterprise number prefixed with BE. The establishment number, also 10 digits starting with 2, identifies the physical sites (branches, offices) of an entity.
Does GDPR compliance apply when using the BCE API ?
Data on legal persons (companies) is not personal data under GDPR. However, information on self-employed natural persons, director data and UBO beneficial owners is personal data subject to GDPR and the strict access rules resulting from the CJEU judgment of 22 November 2022 (cases C-37/20 and C-601/20).
Comments
Related articles

Rate limits, quotas and caching to scale a BCE/KBO application: reference architecture
Your app queries the BCE/KBO API at volume — how to avoid 429s, control costs and guarantee latency? Reference architecture with multi-layer cache, request queue, observability and webhooks. Concrete patterns and target numbers.

BCE/KBO API endpoints reference: complete list of REST routes (companies, addresses, NACE, UBO, establishments, Peppol)
Comprehensive technical reference of the Company Belgium REST API endpoints: search, company record, addresses, NACE activities, establishments, directors, UBO, Peppol verification. With response schemas, parameters and error codes.

Official KBO API vs third-party APIs: limitations of the public BCE service and why move to a modern API
The official SPF Economie API is free — but it's SOAP, without webhooks, without UBO or Peppol enrichment, and without SLA. Here is why 80% of serious projects end up migrating to a third-party API, and how to evaluate if it's your case.
