CompanyBelgium

BCE/KBO API endpoints reference: volledige lijst van REST-routes (companies, addresses, NACE, UBO, vestigingen, Peppol)

Technische referentie van de REST-endpoints van de Company Belgium-API: zoeken, bedrijfsfiche, adressen, NACE-activiteiten, vestigingen, bestuurders, UBO, Peppol-verificatie. Met responsschema's, parameters en foutcodes.

10 mei 202610 min leestijd

In het kort

De KBO/BCE-API van Company Belgium biedt toegang tot een tiental functionele domeinen via versie-vaste REST-routes (/v1/): zoeken en bedrijfsfiche, adressen, vestigingen, NACE-codes, bestuurders, UBO-begunstigden, Peppol-verificatie, benamingen en webhooks. Alle responses volgen hetzelfde JSON-contract met standaard rate-limiting headers.

Over deze referentie

Uitgebreid referentiedocument voor developers die de KBO/BCE-API integreren. Alle publieke endpoints staan erin, met parameters, responsschema's en mogelijke fouten.

Basis-URL: https://api.companybelgium.be/v1

Formaat: JSON (request + response)

Authenticatie: X-API-Key + X-API-Secret in de headers

Structuur van een respons

Alle responses volgen hetzelfde contract:

JSON
1
2
3
4
5
{
  "success": true,
  "data": { ... },
  "timestamp": "2026-05-10T14:32:01.523Z"
}

Bij fout:

JSON
1
2
3
4
5
{
  "success": false,
  "error": "Company not found",
  "timestamp": "2026-05-10T14:32:01.523Z"
}

Endpoints — Ondernemingen

GET /companies/:enterpriseNumber

Haalt de volledige fiche van een onderneming op.

Parameter: KBO-nummer (met of zonder punten, bv. 0200.065.765 of 0200065765)

Respons:

JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
  "data": {
    "enterpriseNumber": "0200065765",
    "vatNumber": "BE0200065765",
    "name": "Espero-Soft Informatiques BV",
    "legalForm": "Besloten vennootschap",
    "status": "AC",
    "startDate": "1989-05-12",
    "endDate": null,
    "address": {
      "street": "Voorbeeldstraat",
      "number": "12",
      "postalCode": "1000",
      "municipality": "Brussel",
      "country": "BE",
      "fullAddress": "Voorbeeldstraat 12, 1000 Brussel"
    },
    "mainActivity": {
      "code": "62.010",
      "label": "Computerprogrammering",
      "version": "2008"
    },
    "establishmentsCount": 3
  }
}

Fouten: 404 (niet gevonden), 429 (rate limit), 401 (auth).

GET /companies/search

Full-text zoekopdracht van ondernemingen.

Query-parameters:

ParamTypeBeschrijving
qstringZoekopdracht (naam, deel naam, nummer)
limitintMax resultaten (default 20, max 100)
offsetintPaginering (default 0)
statusstringFilter (AC actief, ST gestopt, all)
postalCodestringFilter op postcode
naceCodestringFilter op NACE-code

Voorbeeld:

http
1
GET /companies/search?q=espero&limit=10&status=AC

Respons:

JSON
1
2
3
4
5
6
7
8
9
10
11
{
  "data": [
    {
      "enterpriseNumber": "0200065765",
      "name": "Espero-Soft Informatiques BV",
      "status": "AC",
      "municipality": "Brussel"
    }
  ],
  "pagination": { "total": 1, "limit": 10, "offset": 0 }
}

Endpoints — Adressen

GET /companies/:enterpriseNumber/addresses

Haalt alle adressen van een onderneming op (zetel, post, exploitatie).

Respons:

JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
  "data": [
    {
      "type": "REGO",
      "typeLabel": "Maatschappelijke zetel",
      "street": "Voorbeeldstraat",
      "number": "12",
      "postalCode": "1000",
      "municipality": "Brussel",
      "country": "BE",
      "validFrom": "2018-01-01",
      "validTo": null
    }
  ]
}

Adrestypes: REGO (zetel), PMRG (privéwoning bestuurder), COBR (correspondentie), EXPL (exploitatie).

Endpoints — Vestigingen

GET /companies/:enterpriseNumber/establishments

Lijst van vestigingseenheden van een onderneming (verbonden fysieke locaties).

Respons:

JSON
1
2
3
4
5
6
7
8
9
10
11
12
{
  "data": [
    {
      "establishmentNumber": "2100000123",
      "name": "Espero-Soft - Antenne Luik",
      "startDate": "2020-09-01",
      "endDate": null,
      "address": { ... },
      "mainActivity": { ... }
    }
  ]
}

GET /establishments/:establishmentNumber

Haalt een vestigingseenheid op via haar nummer.

Endpoints — NACE-activiteiten

GET /companies/:enterpriseNumber/activities

Lijst van aangegeven NACE-codes (hoofd + secundair, per versie 2003/2008/2025).

Respons:

JSON
1
2
3
4
5
6
7
8
9
10
11
{
  "data": [
    {
      "code": "62.010",
      "label": "Computerprogrammering",
      "version": "2008",
      "type": "MAIN",
      "validFrom": "2018-01-01"
    }
  ]
}

GET /nace-codes

Volledig referentielijst NACE-codes.

Query-parameters:

ParamTypeBeschrijving
versionstring2003, 2008 of 2025 (default 2008)
qstringZoeken in de labels
langstringTaal van het label (fr, nl, en)

Endpoints — Bestuurders

GET /companies/:enterpriseNumber/directors

Lijst van uitgeoefende functies (bestuurders, zaakvoerders, permanente vertegenwoordigers).

Respons:

JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
{
  "data": [
    {
      "functionCode": "AD",
      "functionLabel": "Gedelegeerd bestuurder",
      "person": {
        "name": "Espero AKPOLI",
        "type": "NATURAL"
      },
      "startDate": "2018-01-01"
    }
  ]
}

Endpoints — Uiteindelijk begunstigden (UBO)

GET /companies/:enterpriseNumber/ubo

Haalt de volledige UBO-cascade op, gekruist met het Belgische register.

Voor de wettelijke details van het UBO-register, zie het toegewijde artikel.

Respons:

JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
  "data": {
    "lastConfirmation": "2025-12-15",
    "level1": [
      {
        "name": "Jan Dupont",
        "birthDate": "1975-03-21",
        "nationality": "BE",
        "controlPercentage": 60.0,
        "category": "DIRECT"
      }
    ],
    "level2Cascade": [
      {
        "personName": "Maria Martin",
        "effectivePercentage": 48.0,
        "chain": [
          { "company": "Holding ABC BV", "ownership": 80.0 },
          { "company": "Espero-Soft BV", "ownership": 60.0 }
        ]
      }
    ],
    "discrepanciesWithRegister": []
  }
}

Endpoints — Peppol-verificatie

GET /peppol/check/:identifier

Verifieert of een onderneming geregistreerd is op Peppol (netwerk voor elektronische facturatie).

Parameter: identifier in Peppol-formaat 0208:0200065765 (schema voor KBO) of gewoon het KBO-nummer.

Respons:

JSON
1
2
3
4
5
6
7
8
9
10
11
{
  "data": {
    "registered": true,
    "smpUrl": "https://smp.example.com",
    "capabilities": [
      "urn:peppol:invoice:billing:3.0",
      "urn:peppol:invoice:creditnote:3.0"
    ],
    "lastSeen": "2026-05-09T08:12:00Z"
  }
}

Endpoints — Benamingen

GET /companies/:enterpriseNumber/denominations

Volledige historiek van namen en commerciële benamingen (FR/NL/EN).

Respons:

JSON
1
2
3
4
5
6
7
8
9
10
{
  "data": [
    {
      "type": "SOCIAL",
      "language": "nl",
      "value": "Espero-Soft Informatiques",
      "validFrom": "2018-01-01"
    }
  ]
}

Endpoints — Webhooks

POST /webhooks

Maak een webhook-abonnement.

Body:

JSON
1
2
3
4
5
6
7
8
9
10
11
{
  "url": "https://uw-app.example.com/webhooks/kbo",
  "events": [
    "company.updated",
    "company.director.added",
    "company.ubo.changed",
    "company.accounts.filed",
    "company.peppol.registered"
  ],
  "enterpriseNumbers": ["0200065765", "0400123456"]
}

GET /webhooks

Lijst uw abonnementen.

DELETE /webhooks/:id

Deactiveert een abonnement.

Standaard HTTP-codes

CodeBetekenisTe doen
200OKLees data
400Bad RequestVerifieer de parameters
401UnauthorizedVerifieer API key/secret
403ForbiddenEndpoint niet toegestaan op uw plan
404Not FoundOnderneming/vestiging bestaat niet
429Too Many RequestsRespecteer Retry-After
500 / 502 / 503Server ErrorExponentiële retry

Nuttige headers

HeaderBetekenis
X-RateLimit-LimitTotaal quotum over het venster
X-RateLimit-RemainingResterend quotum
X-RateLimit-ResetReset-tijdstempel
Retry-AfterSeconden te wachten vóór retry (bij 429)
X-Request-IDUniek verzoek-ID (voor support)

Goede praktijken

  • HTTP-client-instantie hergebruiken (keep-alive)
  • Exponentiële retry op 429/5xx implementeren
  • Cachen van ondernemingsfiches (TTL 5-30 min)
  • X-RateLimit-Remaining loggen
  • Webhooks verkiezen boven polling

Hoe Company Belgium zijn endpoints documenteert

De Company Belgium-API biedt:

  • Volledige OpenAPI 3.1-spec op /docs/openapi.json
  • Sandbox op https://sandbox.api.companybelgium.be met testgegevens
  • Python- en TypeScript-SDK's gegenereerd vanuit de spec
  • Publieke statuspagina (incidenten, onderhoud)

Om te starten: zie de Python-tutorial of de Node.js/TypeScript-tutorial.

Om te begrijpen hoe te scalen: zie de rate-limit/caching-architectuur.

Om met alternatieven te vergelijken: vergelijking van de 5 KBO-API's.

Samenvatting

Een moderne KBO/BCE-API toont ongeveer tien functionele domeinen: ondernemingen, adressen, vestigingen, NACE, bestuurders, UBO, Peppol, benamingen, webhooks. Het uniforme responscontract ({success, data, error, timestamp}) en de gestandaardiseerde rate-limit headers maken de integratie voorspelbaar.

Bookmark deze pagina als referentie. Alle routes zijn stabiel en versie-vast (/v1/) — toekomstige evoluties zullen via /v2/ lopen zonder bestaande integraties te breken.

Veelgestelde vragen

Wat zijn de belangrijkste endpoints van de KBO API Company Belgium ?

De KBO API biedt de volgende routes: GET /companies/search voor full-text zoeken, GET /companies/:number voor de volledige fiche, GET /companies/:number/addresses voor adressen, GET /companies/:number/establishments voor vestigingen, GET /companies/:number/activities voor NACE-codes, GET /companies/:number/ubo voor de UBO-cascade en GET /peppol/check/:identifier voor Peppol-verificatie.

Hoe authenticeert u verzoeken aan de KBO API ?

Elk verzoek moet twee headers bevatten: X-API-Key met uw publieke sleutel (pk_live_...) en X-API-Secret met uw geheime sleutel (sk_live_...). Deze sleutels worden gegenereerd in de sectie API-sleutels van uw dashboard op companybelgium.be. De geheime sleutel wordt gehasht in SHA-256 en wordt slechts eenmaal getoond bij het aanmaken.

Hoe beheert u rate limiting (fout 429) bij KBO API-aanroepen ?

Wanneer de API een HTTP 429 retourneert, leest u de Retry-After header die het aantal seconden aangeeft om te wachten voor het opnieuw proberen. Implementeer een retry met exponentieel backoff: wacht Retry-After * 2^poging seconden tussen elke poging. Bewaak ook X-RateLimit-Remaining in uw logs om overschrijdingen te anticiperen.

Ondersteunt de KBO API webhooks voor het opvolgen van bedrijfswijzigingen ?

Ja, het endpoint POST /webhooks maakt het mogelijk te abonneren op bedrijfswijzigingsgebeurtenissen: company.updated, company.director.added, company.ubo.changed, company.accounts.filed en company.peppol.registered. U ontvangt realtime een HTTP-melding op uw URL zodra een gebeurtenis zich voordoet, waardoor u de API niet meer elk uur hoeft te pollen.

Klaar om te beginnen?

Maak gratis een account aan en ontvang uw API-sleutels in enkele minuten.

Reacties

Reacties laden…

Laat een reactie achter

Niet gepubliceerd — alleen om u te verwittigen.

Reacties worden gemodereerd voor publicatie.

Gerelateerde artikelen