Skip to main content
This guide is outdated and will be removed on 1 November 2026. The up-to-date Belgium reference is on the Belgium country page.

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 combines open data with the official register service. For a given entity, base data comes from BCE Open Data and CBE Public Search adds the fields the open data does not carry (legal representatives, other key persons, share capital). Each datapoint is delivered as soon as it is ready.

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 official public search service of the Crossroads Bank for Enterprises. It provides the data not available in the open dataset: legal representatives, other key persons (auditors, supervisory board) and share capital. For companies not found in BCE Open Data (e.g., closed companies), CBE provides the complete profile in verification 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 Register: The official UBO register operated by the FPS Finance (Treasury). Provides ultimate beneficial owner data and UBO extract PDFs.
BCE Open Data only lists active entities. Companies missing from it (typically closed companies, or companies legally created but not yet active) are served from CBE Public Search in verification mode. In prefill mode, company and establishments are served from BCE Open Data only, so these companies return not found. Retry in verification mode to get the full profile.
  1. BCE Open Data: base company data (name, status, legal form, activities, address, contact info, establishments)
  2. CBE Public Search: legal representatives and other key persons (both modes), and share capital (verification mode only)
If a company is not found in BCE Open Data (e.g., closed or only legally created), CBE Public Search returns the full company profile in verification mode. In prefill mode, company and establishments return not found for these companies.Each datapoint (company, legalRepresentatives, establishments, …) is delivered as soon as it is ready. For current response times, see the Speed section of the pricing page.

Source labels in dataSources

In verification mode, fields from BCE Open Data are labelled live_from_registry (register bce_opendata) when our copy holds the register’s latest daily publication. That is checked on every request. If the copy cannot be confirmed current, verification does not use it. Company details and establishments are fetched live from CBE Public Search instead (register bce). If that live lookup fails, the datapoint fails with a retryable source_unavailable error rather than returning older data. The registration date is the one field only BCE Open Data carries, and it keeps cached_from_registry in that case. Prefill results always carry cached_from_registry for BCE Open Data fields. Share capital, legal representatives and other key persons come from CBE Public Search and are labelled live_from_registry (register bce).

Compliance Flags

Belgium covers two independent UBO compliance signals under company.complianceFlags. They describe register-reported obligations and notices; they do not change retrieval status in request.dataStatus or the company’s legal status. Request both datapoints to obtain both signals. A UBO-only request can contain a company object limited to the confirmation flag; it does not include an unrequested company profile. A document-only request does not provide these flags. The SPF Finances guidance requires annual confirmation even when ownership has not changed. A modification date, an owner’s control-start date, or a document’s creation date cannot establish overdue confirmation. Topograph returns the register’s explicit statement; an absent flag means unknown, including when access or confirmation evidence is unavailable.
An administrative striking-off notice can coexist with an active company and a normal legal situation. It does not dissolve the entity. A valid annual UBO confirmation does not clear the BCE notice: the notice remains independent until BCE reports its removal.
Each flag carries its own source (ubo_register or bce) and an observedAt timestamp. This is when the statement was observed, not a confirmation or modification date. Reused results retain that observation time. Per-flag provenance is available under dataSources.company.
The dates and identifiers in this example are placeholders. Both statements can be present together.
See Compliance signals for the shared response contract and the Belgium pricing details for current country coverage. The same country descriptions are available through the Topograph Wizard.

Company Identifiers

company.identifiers.euid is an optional European Unique Identifier. Supported for domestic company forms registered in BRIS: SA/NV, SRL/BV (and former SPRL/BVBA), SCA/Comm.VA, Societas Europaea and new-statute cooperatives (SC/CV), including their public-law and social-purpose variants. Example: BEKBOBCE.0403.170.701. It is returned as an output identifier and cannot be used as a search input. See EUID coverage and interpretation.

Query Identifiers

Belgium uses a single identifier system through the BCE/KBO (Crossroads Bank for Enterprises):
Automatic Normalization: /v2/company accepts the enterprise number in any of the three enterprise-number formats above and normalizes it to the canonical dotted format (0XXX.XXX.XXX or 1XXX.XXX.XXX). The number must pass the register’s check digit. A BE-prefixed VAT number is rejected with a 400: use search to resolve it to the enterprise number first.

Identifiers in API Response

Identifier naming: The identifier key in the API response is ondernemingsnummer (Dutch: enterprise number, issued by the Crossroads Bank for Enterprises). This is the single, universal identifier for all Belgian entities (commercial companies, sole proprietors, non-profits, and public entities alike). The legacy Numéro BCE key was retired on 1 September 2026. In verification mode, the VAT number is also returned in taxId with its VIES check (see VAT Verification).
GLEIF is the supplementary data source for this identifier. company.identifiers.lei is optional. It is returned when the enterprise number (ondernemingsnummer) matches exactly one LEI through a GLEIF registration or validation reference. The Legal Entity Identifier has 20 uppercase alphanumeric characters, ending in two check digits. Coverage varies by entity. An absent lei does not prove that the company has no LEI. Lapsed, retired or merged LEIs may be returned; annulled LEIs are excluded.

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.

Active companies only

With activeOnly=true, every result is checked against the status the register reports, and entities it reports stopped are removed, also from streamed results. An entity that is legally created but not yet active is still returned.

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: Insolvency start dates and closure dates are not provided for Belgium.

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:
BCE Open Data and CBE Public Search both provide the juridical situation code, which is 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/KBO enterprise start date. In Belgium’s BCE/KBO system, registration and legal creation happen simultaneously upon filing. The register maintains a single date per enterprise.
Both dates come from BCE Open Data. Companies missing from BCE Open Data and served from CBE Public Search are returned without registrationDate and incorporationDate.
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

Verification mode only. 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:
Only active establishments are returned for companies listed in BCE Open Data. For companies missing from BCE Open Data, in verification mode, the establishment list comes from CBE Public Search and may include closed establishments. 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.
Old codes resolve to their current form. Codes for forms abolished by the 2019 Code of Companies and Associations (for example 015, the former SPRL/BVBA) are returned under their current equivalent (Société à responsabilité limitée, 3W7E). The tables below show the values the API returns for each code.
Natural-person enterprises have no juridical form code in the register. They are returned with this legal form:
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 codes. Each is returned under its current equivalent form:
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.
The same entityId can appear in several entries when a person holds multiple roles. For example, Administrateur (Director) and Membre du comité de direction (Member of the management committee) are separate roles, but both have role.standardized: "Director". Group by entityId to identify the person while preserving each role and its appointment dates. See Person identities and role entries. Legal representatives come from CBE Public Search. 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 returned with its enterprise number and legal name. Its permanent representative (the natural person acting on behalf of the company) appears as a separate legal representative entry with the role Représentant permanent.
The complete function catalogue includes 42 codes, including historical functions whose code-table end dates are marked as discontinued. Office categories identify the appointment; they do not establish unrestricted individual signing authority.

Person Enrichment

Base person data (names, roles, start dates) comes from the register. When agenticEnrichment: true is passed in the request, the system attempts to enrich the details of individuals in legalRepresentatives, otherKeyPersons, shareholders and ultimateBeneficialOwners from eJustice publications (Moniteur Belge). This is best effort. Enrichment depends on publication availability and content. Not all fields are guaranteed for every person. Older founding acts typically contain birth date, birth place and nationality; appointment notices typically contain residence addresses. Recent founding acts print the birth details as ”(…)”, so a newly incorporated company rarely gets a birth date from its publications. Recently appointed representatives or companies with sparse publication history may have partial or no enrichment. Sole traders and co-ownership associations publish nothing in the Moniteur Belge and get no enrichment from it. What can be enriched:
  • Birth date
  • Birth place (birthAddress.city)
  • Nationality
  • Residence address (geocoded)
  • Signing powers of legal representatives (signingPowers, signingAuthority), for individuals and companies alike
How it works: founding acts and appointment notices are OCR’d and parsed with AI to extract person details, then matched to the corresponding people. Identity from the UBO register: when a person is also a beneficial owner, the birth date, nationality and residence address the UBO register holds for them are copied onto their legal representative, other key person and shareholder entries. These register values come first; publications only fill what they leave empty. They come from the ultimateBeneficialOwners of the same request, or, when the request asks for no UBOs, from the latest UBO register read your account made for the company (birth date and nationality only, since an address may have changed). Enrichment never runs a UBO lookup of its own, uses no other customer’s data, and copies nothing when UBO access is turned off for the workspace. Signing powers: the articles of association say how the company is represented towards third parties: every director alone, two directors jointly, the managing director alone within daily management, and so on. The notarial extracts published in the Moniteur Belge restate that clause. Enrichment reads the most recent publication that restates it, not the founding act, since companies change the rule over time. It then keeps, for each legal representative, the sentences that apply to their role:
  • signingPowers.localText is the publication’s own wording, verbatim, and signingPowers.englishTranslation its translation.
  • signingAuthority is an AI reading of that text: a verdict (sole, sole_within_limits, joint or unclear), one rule per scope with its mode and any required co-signers, and the verbatim excerpt each rule was read from.
  • representationMode is also set when that reading is confident and one mode covers the representative’s general representation of the company: sole when they can bind the company alone for all acts, joint (with minimumSignatories) when every way they can bind it needs a co-signer. It is absent when the authority is conditional, for example a managing director who may sign alone only within daily management. Read signingAuthority for those. For Belgium this mode is read from the published articles, not stated by the register as a field.
A representative whose role the clause does not address gets no signing powers rather than a guess. A signing rule is never derived from the role alone. Signing powers are left out when the recent publications do not restate the clause, which is common for companies with a long filing history. Billing: enrichment is billed separately, only when at least one field was enriched from the publications. Values copied from the UBO register alone are not billed. See the pricing page. While enrichment is running, affected datapoints show the enriching status. Enriched fields are attributed to ejustice in dataSources. Values copied from the UBO register are attributed field by field, under keys such as individual.birthDate and individual.nationality, to ubo_register: live_from_registry when they come from the same request, cached_from_registry when they come from an earlier read.

Other Key Persons

Other key persons include supervisory, audit, advisory and membership offices whose title does not establish general authority to bind the company. A non-administrator representative can hold a delegated representation mandate and appears among legal representatives; its scope still depends on the appointment and applicable law.

Shareholders

Belgium has no structured shareholder register. Shareholder data is reconstructed by AI from company documents: annual accounts filed with NBB CBSO and Moniteur Belge publications (constitution, capital increases). Sole traders and non-profit forms (ASBL/VZW, foundations and similar) have no share capital. For these, shareholders returns a not-applicable response.
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, the Belgian extension of the European NACE 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., 69.201). Standard NACE codes are class-level codes (e.g., 69.20), derived by truncating the 5th digit. Multiple NACE-BEL codes can map to the same NACE class and are de-duplicated. If a code is already at class level, it appears in NACE only, not in NACE_BEL. You get one NACE and one ISIC code per declared NACE-BEL code. A company with three declared activities returns three of each. Where a Belgian code has no single equivalent in NACE Rev.2.1, the shared parent class is returned rather than every candidate — see One code in, one code out.
NACE-BEL 2025 codes use their NACE Rev. 2.1 class directly; 2008 codes use the formal Rev. 2 transition. Legacy 2003 and unstamped codes retain their national wording without a fabricated standard conversion. Deterministic mappings are never AI-inferred. National descriptions use the source revision; standard descriptions use NACE Rev. 2.1. The response uses canonical NACE_BEL_2025, NACE_BEL_2008 or NACE_BEL_2003 keys for stamped national records and NACE and ISIC for standardized codes. Bare NACE_BEL contains only unstamped records. See the standardization guide.

Activity Code Versions

Within each version, activities are ordered by classification: MAIN (primary activity) first, then SECO (secondary), then ANCI (ancillary). The MAIN-classified activity (the register’s “activité principale” / “hoofdactiviteit”) carries isMainActivity: true on the NACE_BEL code, and the derived NACE and ISIC codes inherit the flag. At most one code per classification is flagged; activities without the flag are not necessarily secondary, the register may simply not classify them.

Data Availability

Data Availability Matrix

Subsidiaries

subsidiaries is available for Belgium. It returns the equity participations the queried company holds in other entities, AI-extracted from section 6.5.1 “Participating interests and other rights in other companies” of the latest annual accounts filed at the National Bank of Belgium Central Balance Sheet Office. Verify the values against the filing before relying on them for compliance. Availability follows the filing: a company that has filed no annual accounts returns no subsidiaries, and small or micro-schema filers frequently omit the participating-interests section entirely. subsidiaries is a separate data block from company, and it is available in verification mode only. See the Subsidiaries guide for the response shape.

Documents by Company Type

Articles of Association vs Official Publications. articlesOfAssociation[] is the full coordinated text of a company’s statutes, held in the Belgian notaries’ database and covering legal persons incorporated or amended before a Belgian notary since 1 May 2019 (BV/SRL, CV/SC, NV/SA). officialPublications[] holds the Moniteur Belge publications, which are short deed extracts — including statute-change extracts — and never the complete statutes. Entities whose statutes were never amended after 1 May 2019, and forms with no notarial deed (CommV/SComm, VOF/SNC, maatschap), have no coordinated version and must be ordered from the enterprise court registry.
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 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.localName carries the juridical situation label. Closed companies are not in BCE Open Data, so in verification mode all data comes from CBE Public Search, without registrationDate and incorporationDate. The pre-2019 legal form code (015, SPRL) is returned as its current equivalent. In prefill mode, company returns not found for these companies.
Note: Sole proprietors have no legal form code in the register, so the natural-person legal form (3N94) is returned instead. 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 null because the Belgian registry does not specify whether ownership is direct or indirect. null means the register stated the control but not its nature; an absent nature means the source said nothing about nature at all. Birth dates are in DD/MM/YYYY format from the API, parsed into structured components.
Documents are returned when "dataPoints": ["availableDocuments"] is requested.