Skip to main content

Start here

This guide contains public integration notes for Belgium. Use it for identifier formats, search behavior, and country-specific caveats. The live source of truth for coverage, pricing, data sources, documents, legal forms, roles, and status values is the pricing page.

Belgium coverage, pricing, and sources

Open the current catalog for supported datapoints, documents, sources, identifiers, and availability.
Country details below are preserved as integration notes. If a table or example conflicts with the live pricing page, use the pricing page as the source of truth and contact support.

Table of Contents

Data Sources

Belgium uses a dual-source strategy combining open data with live registry enrichment. For a given entity, base data comes from BCE Open Data (fast, pre-loaded) and is enriched in parallel by CBE Public Search (slower, extracted from the public portal) for fields not available in the open data. Both sources run in parallel and their results are streamed progressively to the client.

All entity types

  • BCE Open Data (Banque-Carrefour des Entreprises / Kruispuntbank van Ondernemingen): The Belgian open data portal operated by the FPS Economy. Updated regularly, this dataset covers ~2.5 million enterprises and provides base company data: legal name (multilingual), status, legal form, registration date, NACE activity codes, registered address, contact information (phone, website), and establishments. This is the primary source for fast company profiles.
  • CBE Public Search (kbopub.economie.fgov.be): The public web interface of the Crossroads Bank for Enterprises. Used as an enrichment source running in parallel with BCE Open Data, providing data not available in the open dataset: legal representatives, other key persons (auditors, supervisory board), share capital, and additional establishment details. For companies not found in BCE Open Data (e.g., recently closed companies), CBE provides the complete profile in full mode.

Documents

  • NBB CBSO (National Bank of Belgium, Central Balance Sheet Office). Official API (consult.cbso.nbb.be) operated by the National Bank of Belgium. Provides financial statements (annual accounts, consolidated accounts, holding company accounts) filed by Belgian companies. Documents are available in PDF, XBRL, and CSV formats depending on how they were submitted.
  • eJustice / Moniteur Belge (Belgian Official Gazette): The official publication portal (ejustice.just.fgov.be) operated by the FPS Justice. Provides legal publications including articles of association, appointments/resignations, capital changes, registered office changes, and other official company modifications. All publications are in PDF format.
  • Belgian UBO Registry: The official UBO register operated by the FPS Finance (Treasury). Provides ultimate beneficial owner data and UBO extract PDFs. No public API exists; data is extracted from the registry’s web interface.
BCE Open Data is periodically synchronized from the FPS Economy because this is the only available access method for the full open dataset. The CBE Public Search portal provides live data but no structured API exists, so data must be extracted from the web interface. This is a Belgian government infrastructure limitation.
The system runs both sources in parallel for maximum speed:
  1. BCE Open Data (fast, ~1s): Returns base company data immediately: name, status, legal form, activities, address, contact info, establishments
  2. CBE Public Search (slower, ~5-10s): Returns enrichment data: legal representatives, other key persons, share capital
If a company is not found in BCE Open Data (e.g., recently closed or recently created), CBE switches to full mode and returns all company data including base fields.Key Principle: Both sources are streamed progressively. The client receives base data almost immediately, then enrichment data arrives as CBE completes.

Company Identifiers

Query Identifiers

Belgium uses a single identifier system through the BCE/KBO (Crossroads Bank for Enterprises):
Automatic Normalization: The API accepts enterprise numbers in any of the above formats. All inputs are automatically normalized to the canonical format 0XXX.XXX.XXX (with dots) before querying.

Identifiers in API Response

Identifier naming: The identifier key in the API response is Numero BCE (French: Crossroads Bank for Enterprises number). This is the single, universal identifier for all Belgian entities (commercial companies, sole proprietors, non-profits, and public entities alike).

Search Capabilities

Search uses both a pre-built index and live registry lookups. Name searches query an index built from BCE Open Data for fast results. Identifier searches also perform live CBE Public Search lookups as a fallback to ensure the most up-to-date data.
Multilingual names: Belgian companies have names in up to four languages (French, Dutch, German, English). Search matches across all language variants. The API returns the English name when available, falling back to French, then Dutch, then German.

Quirks & Gotchas

Mappings

Company Status

Company status is determined deterministically from BCE Open Data and CBE Public Search. No AI inference is involved. The BCE status field provides a binary active flag (AC / ST). The juridicalSituation code adds a richer layer, surfaced in the status.statusDetails object:

Juridical Situation Codes

The KBO/CBE assigns each enterprise a juridical situation code from the official A152 code list. The mapping to standardised values is:
The BCE Open Data uses the juridical situation code directly. The CBE Public Search portal displays the French label (e.g. “Ouverture de faillite”) which is reverse-mapped to the same standardised values. Both paths converge on status.statusDetails.

Registration & Incorporation Dates

Both registrationDate and incorporationDate return the same value, the BCE start_date field. In Belgium’s BCE/KBO system, registration and legal creation happen simultaneously upon filing. The registry maintains a single date per enterprise.
This is distinct from establishment creation dates (establishments[].creationDate), which represent when individual branch locations were opened, and these can differ from the enterprise start date.

VAT Verification

The Belgian VAT number equals the enterprise number prefixed with BE (e.g. BE0403227515). VAT verification is performed against the EU VIES registry (VAT Information Exchange System) using a qualified check that includes a requester VAT number.
Legal proof: The consultationNumber returned by VIES serves as official proof that the VAT number was verified at the given time. This is the same identifier you would get from the EU VIES web portal.

Establishments

Establishments represent physical branch locations where a company operates (offices, warehouses, retail locations), separate from the company’s registered office. A company can have multiple establishments. Each establishment includes:
BCE Open Data only includes active establishments. Inactive/closed establishments are only available through CBE Public Search. If a sole proprietor has no registered office address but has exactly one establishment, that establishment’s address is used as the legalAddress.
Belgium uses the KBO/BCE juridical form codelist maintained by the FPS Economy. The mapping to standardized forms and ISO 20275 (ELF) codes is deterministic: a formal lookup table maps each code to its French name, English translation, standardized category, and ISO 20275 code.
These are the modern legal forms introduced by the 2019 Code of Companies and Associations (CSA/WVV), which replaced most older forms:
Companies incorporated before the 2019 reform may still carry these legal forms:
Codes 370 to 392 are historical ministry forms, replaced by Federal Public Services (301 to 303) following the 2002 Copernicus reform. They remain in the KBO to preserve historical records.
Legal representatives are extracted from the CBE Public Search portal. Role classification is deterministic: a formal lookup table maps each official CBE function code to its French name, English translation, and whether it constitutes a legal representative role. Both individuals and companies can hold legal representative roles. When a company is a legal representative, it is displayed with its enterprise number, and its permanent representative (the natural person acting on behalf of the company) is linked via the representedBy field.
Base legal representative data (names, roles, start dates) comes from the CBE portal. When agenticEnrichment: true is passed in the request, the system attempts to enrich person details from eJustice publications (Moniteur Belge). This is best effort. Enrichment depends on publication availability and content. Not all fields are guaranteed for every legal representative. Founding acts typically contain birth date and nationality; appointment notices typically contain residence addresses. Recently appointed representatives or companies with sparse publication history may have partial or no enrichment. What can be enriched:
  • Birth date
  • Nationality
  • Residence address (geocoded)
How it works: founding acts and appointment notices are OCR’d and parsed with AI to extract person details, then matched to the corresponding legal representatives. Pricing: fixed 50 cents per enrichment request. Only charged if at least one field was enriched. While enrichment is running, affected datapoints show the enriching status. Enriched fields are attributed to ejustice in the dataSources array.

Other Key Persons

Other key persons include supervisory, audit, and advisory roles that do not carry statutory authority to bind the company.

Shareholders

Belgium has no structured shareholder registry. Shareholder data is reconstructed by AI from financial documents (annual accounts filed with NBB CBSO).
AI-extracted data: Shareholders are inferred by AI from PDF documents. The quality and completeness depends on document availability and readability. This is not structured registry data.

Activity Code Mapping

Belgium uses the NACE-BEL classification, which is the Belgian extension of the European NACE Rev. 2 standard. BCE Open Data provides three versions of NACE codes (2003, 2008, 2025); the system automatically selects the most recent version available.
NACE-BEL codes are 5-digit national extensions (e.g., 84.309). Standard NACE codes are 4-digit class-level codes (e.g., 84.30), derived by truncating the 5th digit. Multiple NACE-BEL codes can map to the same NACE class. If a code is already at class level (4 digits), it appears in NACE only, not in NACE_BEL.
All mappings use formal lookup tables and are never AI-inferred for Belgium. Descriptions are looked up from the NACE Rev. 2 mapping table. CBE also provides English descriptions from the source HTML.

Activity Code Versions

Within each version, activities are ordered by classification: MAIN (primary activity) first, then SECO (secondary), then ANCI (ancillary).

Data Availability

Data Availability Matrix

Documents by Company Type

Financial statement formats: Statements filed electronically (XBRL/ZIP submission) are available in PDF, XBRL, and CSV formats. Statements originally filed on paper or microfilm are not downloadable.
Publication types from eJustice include: Articles of Association, Appointments, Resignations, Capital changes, Shares, Company Name changes, Registered Office changes, Corporate Purpose changes, General Assembly decisions, Legal Form changes, Restructuring, Formation, Dissolution, Annual Accounts, and more. Each publication is categorized by type and available as a free PDF download.

Example API Responses

All examples use placeholder data. Query: POST /v2/company with { "id": "<id>", "countryCode": "BE", "dataPoints": ["company", "legalRepresentatives"] }
Note: Closed companies have active: false and status Cesse. When the company no longer exists in BCE Open Data, all data comes from CBE Public Search in full mode.
Note: Sole proprietors have no legal form code in BCE. The legalName is the individual’s name. The founder role (00001) is mapped as the legal representative.
Query with "dataPoints": ["ultimateBeneficialOwners"]:
Note: UBO data comes from the Belgian UBO Registry. The nature field is always "unknown" because the Belgian registry does not specify whether ownership is direct or indirect. Birth dates are in DD/MM/YYYY format from the API, parsed into structured components.
Documents are returned when "dataPoints": ["availableDocuments"] is requested.