Données de référence KBO/BCE BNB Peppol Adresses Belgique
BÊTA

AXITAM Public API

Des données prêtes à l'emploi pour vos applications, gratuites, en JSON :

  • pays, subdivisions, devises, langues, écritures et régions, avec leurs liens, traduits dans des dizaines de langues ;
  • toutes les entreprises belges, pour remplir et vérifier vos formulaires ;
  • les comptes annuels que les entreprises belges déposent à la Banque nationale ;
  • toutes les adresses belges, pour compléter et valider vos formulaires ;
  • tout lieu ou adresse dans le monde, cherché au fil de la frappe ;
  • qui reçoit des factures électroniques sur le réseau Peppol, dans le monde entier.

ISO 3166-1 · ISO 3166-2 · ISO 3166-3 · ISO 4217 · ISO 639-3 · ISO 639-5 · ISO 15924 · UN M49BCE/KBO Open Data · NACE-BELCentrale des bilans de la BNBBeSt AddressOpenStreetMap · PhotonAnnuaire Peppolmises à jour chaque jour

Les API

Du JSON simple en HTTPS, en lecture seule, sans SDK. Chaque API a sa propre spécification OpenAPI.

Pays

ISO 3166-1 / 3166-2 / 3166-3

Les pays par code alpha-2, alpha-3 ou numérique, leurs subdivisions (régions, provinces...), les devises et langues qu'on y utilise, et les anciens pays.

GET /api/v1/countries/{code} GET /api/v1/countries/{code}/subdivisions GET /api/v1/countries/{code}/currencies GET /api/v1/countries/{code}/languages GET /api/v1/former-countries Spécification OpenAPI →

Devises

ISO 4217

Les devises en cours avec leurs décimales et l'arrondi des espèces, par code alphabétique (EUR) ou numérique (978), et les pays qui utilisent chacune.

GET /api/v1/currencies GET /api/v1/currencies/{code} GET /api/v1/currencies/{code}/countries Spécification OpenAPI →

Langues

ISO 639-3 / 639-5

Plus de 7 900 langues avec filtres (portée, type, code 639-1), recherche par code 639-1, 639-3 ou 639-2/B, les pays où chacune est parlée (statut officiel, part de la population), et les familles de langues.

GET /api/v1/languages?hasAlpha2=true GET /api/v1/languages/{code} GET /api/v1/languages/{code}/countries GET /api/v1/language-families Spécification OpenAPI →

Écritures

ISO 15924

Les systèmes d'écriture (latin, cyrillique, arabe, han...) par code à quatre lettres, quelle que soit la casse, ou par code numérique.

GET /api/v1/scripts GET /api/v1/scripts/{code} Spécification OpenAPI →

Régions

UN M49

Le monde, les continents et les sous-régions (Europe de l’Ouest, Afrique de l’Est...) sous forme d’arbre, et tous les pays d’une région.

GET /api/v1/regions GET /api/v1/regions/{code} GET /api/v1/regions/{code}/countries Spécification OpenAPI →

Belgique : entreprises

BCE/KBO Open Data · NACE-BEL

Toutes les entreprises inscrites à la Banque-Carrefour des Entreprises : recherche par numéro d’entreprise ou de TVA sous toutes ses formes, validation du numéro (chiffres de contrôle, inscrite, active), autocomplétion sur le nom, dénominations, forme juridique, adresses, contacts, activités, unités d’établissement et succursales, plus les listes de codes BCE pour vos menus déroulants. La fiche dit aussi si l’entreprise reçoit des factures électroniques Peppol.

GET /api/v1/bel/enterprises/{number} GET /api/v1/bel/enterprises/{number}/validation GET /api/v1/bel/enterprises?name={texte} GET /api/v1/bel/enterprises/{number}/establishments GET /api/v1/bel/kbo-codes/{category} GET /api/v1/bel/enterprises/{number}/peppol Spécification OpenAPI →

Belgique : comptes annuels

Centrale des bilans de la BNB

Les comptes annuels que chaque entreprise belge dépose à la Banque nationale de Belgique : la liste des dépôts (exercice, modèle, langue) des trois dernières années, l’historique complet depuis 1978 à la demande, et les documents (PDF, XBRL, JSON) relayés depuis la BNB.

GET /api/v1/bel/enterprises/{number}/annual-accounts GET /api/v1/bel/enterprises/{number}/annual-accounts?history=complete GET /api/v1/bel/annual-accounts/{reference} GET /api/v1/bel/annual-accounts/{reference}/pdf Spécification OpenAPI →

Belgique : adresses

BeSt Address · BOSA et les trois régions (CC BY 4.0)

Complétez une adresse belge en trois étapes guidées - commune (par code postal ou par nom), rue, numéro et boîte - puis lisez l’adresse complète avec son identifiant BeSt officiel, sa position WGS84 et son statut. Interrogé en direct dans les registres d’adresses fédéral et régionaux.

GET /api/v1/bel/addresses/municipalities?q={texte} GET /api/v1/bel/addresses/streets?postCode={code}&name={texte} GET /api/v1/bel/addresses/house-numbers?streetId={id}&houseNumber={chiffres} GET /api/v1/bel/addresses?id={addressId} Spécification OpenAPI →

Recherche d’adresse (monde entier)

OpenStreetMap · Photon (ODbL)

Recherche en texte libre de lieux et d’adresses partout dans le monde, au fil de la frappe : maisons, rues, villes... avec leur position WGS84, orientée vers un point ou limitée à un pays. Interrogé en direct dans les données OpenStreetMap via Photon. Une maison belge porte aussi sa correspondance dans les registres officiels BeSt (champ best).

GET /api/v1/addresses/search?q={texte}&countryCode={code}&lang={langue} GET /api/v1/addresses/search?q={texte}&lat={lat}&lon={lon} Spécification OpenAPI →

Participants Peppol

Annuaire Peppol · Identifiants ISO 6523

Qui reçoit des factures électroniques et d’autres documents sur le réseau Peppol, dans le monde entier (8 millions de participants) : recherche par nom, pays ou identifiant, lecture d’un participant avec les entités qui se trouvent derrière et les types de documents acceptés. Interrogé en direct dans l’annuaire Peppol. Les entreprises belges ont un raccourci dans le groupe Belgique, et leur fiche l’embarque déjà.

GET /api/v1/peppol/participants?name={texte}&country={code} GET /api/v1/peppol/participants/{participantId} GET /api/v1/bel/enterprises/{number}/peppol Spécification OpenAPI →

Démarrer

Sans inscription ni clé : envoyez une requête, recevez du JSON. Un compte développeur gratuit relève vos limites.

1Appelez un endpoint

Tous les endpoints sont sous https://publicapi.axitam.net/api/v1.

curl "https://publicapi.axitam.net/api/v1/countries/BE?lang=fr"

# {"alpha2":"BE","alpha3":"BEL","numeric":"056","name":"Belgique",
#  "officialName":"Royaume de Belgique","commonName":null,"flag":"🇧🇪"}
curl https://publicapi.axitam.net/api/v1/bel/enterprises/0420.254.973

# {"enterpriseNumber":"0420.254.973","vatNumber":"BE0420254973","status":{"code":"AC",...},
#  "denominations":[{"value":"AXITAM",...}],"addresses":[...],"activities":[...]}
curl https://publicapi.axitam.net/api/v1/bel/enterprises/0420.254.973/annual-accounts

# {"enterpriseNumber":"0420254973","historyComplete":false,"annualAccounts":[{"referenceNumber":"2025-00555958",
#   "depositDate":"2025-10-31","exerciseStart":"2024-01-01","exerciseEnd":"2024-12-31","modelType":"m87-f",...}]}
curl https://publicapi.axitam.net/api/v1/peppol/participants/0208:0420254973

# {"participantId":{"scheme":"iso6523-actorid-upis","value":"0208:0420254973"},
#  "entities":[{"names":[{"name":"AXITAM"}],"countryCode":"BE",...}],"documentTypes":[...]}
curl "https://publicapi.axitam.net/api/v1/bel/addresses/streets?postCode=1000&name=loi"

# [{"streetId":"https://databrussels.be/id/streetname/1679/1","name":{"nl":"Wetstraat","fr":"Rue de la Loi","de":null},
#   "municipality":{"municipalityId":"https://databrussels.be/id/municipality/21004/7","nisCode":"21004","name":{...}}},...]
curl "https://publicapi.axitam.net/api/v1/addresses/search?q=rue%20de%20la%20loi%2016%20bruxelles&countryCode=BE&lang=fr"

# {"query":"rue de la loi 16 bruxelles","language":"fr","results":[{"label":"Rue de la Loi 16, 1000 Bruxelles, Belgique",
#   "type":"house","street":"Rue de la Loi","houseNumber":"16","postCode":"1000","city":"Bruxelles","countryCode":"BE",...}]}

2Obtenez les noms dans votre langue

Ajoutez lang avec une étiquette de langue (fr, nl-BE, pt-BR, ja...). Une variante régionale se rabat sur sa langue, puis sur l'anglais.

curl "https://publicapi.axitam.net/api/v1/countries/BE?lang=nl-BE"     # "name":"België"
curl "https://publicapi.axitam.net/api/v1/countries/BE/subdivisions?lang=fr"
curl "https://publicapi.axitam.net/api/v1/currencies/978?lang=fr"      # "name":"Euro"
curl "https://publicapi.axitam.net/api/v1/languages/fr?lang=fr"        # "name":"Français"
curl "https://publicapi.axitam.net/api/v1/scripts/Latn"

3Suivez les liens

Les pays mènent à leurs devises et à leurs langues, et inversement ; les régions listent leurs pays.

curl "https://publicapi.axitam.net/api/v1/countries/PA/currencies?lang=fr"          # PAB et USD
curl "https://publicapi.axitam.net/api/v1/countries/BE/languages?official=true&lang=fr"  # nl, fr, de
curl "https://publicapi.axitam.net/api/v1/currencies/EUR/countries?lang=fr"
curl "https://publicapi.axitam.net/api/v1/regions/155/countries?lang=fr"          # Europe de l’Ouest

4Remplissez une entreprise belge

Saisissez un numéro de TVA ou d’entreprise comme le font vos utilisateurs, validez-le, ou laissez-les choisir dans une autocomplétion sur le nom ; lisez ensuite la fiche et les listes de codes BCE pour vos menus déroulants.

curl "https://publicapi.axitam.net/api/v1/bel/enterprises/BE0420254973/validation"
# {"input":"BE0420254973","normalized":"0420.254.973","vatNumber":"BE0420254973",
#  "isWellFormed":true,"isRegistered":true,"isActive":true}
curl "https://publicapi.axitam.net/api/v1/bel/enterprises/0420.254.973"      # dénominations, forme, adresses, activités...
curl "https://publicapi.axitam.net/api/v1/bel/enterprises?name=axitam"   # autocomplétion
curl "https://publicapi.axitam.net/api/v1/bel/kbo-codes/JuridicalForm"      # menu déroulant des formes juridiques

5Lisez les comptes annuels d’une entreprise belge

Listez les comptes annuels qu’elle a déposés à la Banque nationale de Belgique et ouvrez les documents. Les trois dernières années sont toujours là ; demandez une fois history=complete pour rapatrier tous les dépôts depuis 1978 (quelques secondes la première fois).

curl "https://publicapi.axitam.net/api/v1/bel/enterprises/0420.254.973/annual-accounts?history=complete"
# {"enterpriseNumber":"0420254973","historyComplete":true,"annualAccounts":[{"referenceNumber":"2025-00555958",
#   "depositDate":"2025-10-31","exerciseStart":"2024-01-01","exerciseEnd":"2024-12-31","modelType":"m87-f",
#   "language":"FR","currency":"EUR","documents":{"pdf":"/api/v1/bel/annual-accounts/2025-00555958/pdf",
#   "xbrl":"/api/v1/bel/annual-accounts/2025-00555958/xbrl","json":"/api/v1/bel/annual-accounts/2025-00555958/json"}},...]}
curl -O -J "https://publicapi.axitam.net/api/v1/bel/annual-accounts/2025-00555958/pdf"   # les comptes tels que déposés

6Complétez une adresse belge

Trois appels au fil de la frappe - commune, rue, numéro - puis un appel pour lire l’adresse validée avec son identifiant BeSt officiel et ses coordonnées. Les identifiants sont les URI régionales publiées par BeSt : renvoyez-les tels que reçus. Aucun joker n’est nécessaire (ni accepté) : le texte saisi correspond au début d’un mot ou à une partie du nom, dans n’importe quelle langue.

curl "https://publicapi.axitam.net/api/v1/bel/addresses/municipalities?q=brux"               # ou q=10 pour un début de code postal
curl "https://publicapi.axitam.net/api/v1/bel/addresses/streets?postCode=1000&name=loi"     # Rue de la Loi en premier
curl "https://publicapi.axitam.net/api/v1/bel/addresses/house-numbers?streetId=https://databrussels.be/id/streetname/1679/1&houseNumber=1"
curl "https://publicapi.axitam.net/api/v1/bel/addresses?id=https://databrussels.be/id/address/210225/1"
# {"addressId":"https://databrussels.be/id/address/210225/1","street":{"streetId":"https://databrussels.be/id/streetname/1679/1",
#   "name":{"nl":"Wetstraat","fr":"Rue de la Loi","de":null},"municipality":null},"houseNumber":"16","boxNumber":null,"postCode":"1000",
#  "municipality":{"municipalityId":"https://databrussels.be/id/municipality/21004/7","nisCode":"21004","name":{"nl":"Brussel","fr":"Bruxelles","de":null}},
#  "position":{"latitude":50.846169319921074,"longitude":4.366537635141211},"status":"current","isOfficiallyAssigned":true}

7Cherchez une adresse n’importe où dans le monde

Un seul champ libre, un appel par frappe : lieux et adresses d’OpenStreetMap, les meilleurs d’abord, avec leur type (maison, rue, ville...) et leur position. Orientez les résultats vers l’utilisateur avec lat et lon, ou limitez-les à un pays. Les noms viennent dans la langue demandée quand l’instance la connaît ; la réponse dit quelle langue a été appliquée. Une maison belge porte aussi sa correspondance best : l’identifiant BeSt officiel à lire avec l’API des adresses belges, ou un statut disant pourquoi il n’y en a pas.

curl "https://publicapi.axitam.net/api/v1/addresses/search?q=rue%20de%20la%20loi%2016%20bruxelles&countryCode=BE&lang=fr"
# {"query":"rue de la loi 16 bruxelles","language":"fr","results":[{"label":"Rue de la Loi 16, 1000 Bruxelles, Belgique","type":"house",
#   "street":"Rue de la Loi","houseNumber":"16","postCode":"1000","city":"Bruxelles","countryCode":"BE",
#   "position":{"latitude":50.8461212,"longitude":4.3663795},"osm":{"type":"N","id":11015484234,"key":"place","value":"house"},
#   "best":{"status":"OK","addressId":"https://databrussels.be/id/address/210225/1","position":{"latitude":50.846169319921074,"longitude":4.366537635141211}}}]}
curl "https://publicapi.axitam.net/api/v1/addresses/search?q=221b%20baker%20street%20london&lang=en"       # partout, pas de champ best à l’étranger
curl "https://publicapi.axitam.net/api/v1/addresses/search?q=loi%2016&lat=50.85&lon=4.35"               # orienté vers Bruxelles

8Vérifiez qui reçoit des factures Peppol

Avant d’envoyer une facture électronique, vérifiez que votre client est sur le réseau Peppol et quels documents il accepte. Pour une entreprise belge, un appel sur son numéro ; pour les autres, cherchez dans l’annuaire par nom et pays ou lisez un identifiant de participant.

curl "https://publicapi.axitam.net/api/v1/bel/enterprises/0420.254.973/peppol"
# {"enterpriseNumber":"0420.254.973","vatNumber":"BE0420254973","status":"OK","isRegistered":true,
#  "participants":[{"participantId":{"scheme":"iso6523-actorid-upis","value":"0208:0420254973"},
#    "entities":[{"names":[{"name":"AXITAM"}],"countryCode":"BE","registrationDate":"2025-04-04",...}],
#    "documentTypes":[{"scheme":"busdox-docid-qns","value":"urn:oasis:names:...:Invoice-2::Invoice##...billing:3.0::2.1"},...]}]}
curl "https://publicapi.axitam.net/api/v1/peppol/participants?name=proximus&country=BE"   # recherche dans l’annuaire
curl "https://publicapi.axitam.net/api/v1/peppol/participants/0208:0420254973"             # un participant

9Gérez les erreurs

Les erreurs utilisent les codes HTTP standard (400 pour un code invalide, 404 pour un code inconnu, 429 au-delà de votre limite d'usage) et toujours le même corps : un code d'erreur stable et un correlationId à mentionner si vous nous contactez.

curl -i https://publicapi.axitam.net/api/v1/countries/ZZ

# HTTP/2 404
# {"code":"COUNTRY_NOT_FOUND","correlationId":"54046f8d-6bc9-44bf-b4fe-ea4377737f97"}
curl -i https://publicapi.axitam.net/api/v1/bel/enterprises/123

# HTTP/2 400
# {"code":"INVALID_ENTERPRISE_NUMBER","correlationId":"54046f8d-6bc9-44bf-b4fe-ea4377737f97"}
curl -i https://publicapi.axitam.net/api/v1/peppol/participants/0208:0999999922

# HTTP/2 404
# {"code":"PEPPOL_PARTICIPANT_NOT_FOUND","correlationId":"54046f8d-6bc9-44bf-b4fe-ea4377737f97"}
curl -i "https://publicapi.axitam.net/api/v1/bel/addresses/streets?postCode=1000&name=lo*"

# HTTP/2 400
# {"code":"INVALID_REQUEST","correlationId":"54046f8d-6bc9-44bf-b4fe-ea4377737f97"}
curl -i "https://publicapi.axitam.net/api/v1/addresses/search?q=paris&lat=48.85"

# HTTP/2 400 (lat sans lon)
# {"code":"INVALID_ARGUMENT","correlationId":"54046f8d-6bc9-44bf-b4fe-ea4377737f97"}

Essayer

Choisissez une requête et envoyez-la à l'API en production.


            

Documentation

Parcourez tous les endpoints de manière interactive, ou importez une spécification OpenAPI dans vos outils pour générer un client.

Limites d'usage et un hôte par source

L'API est gratuite et sans clé. Pour qu'elle reste rapide pour tout le monde, chaque client (adresse IP) est limité : 10 requêtes par seconde avec des rafales de 20 sur tous les chemins, 2 par seconde sur les chemins Peppol (la limite de l'annuaire Peppol lui-même), 1 par seconde quand un document de comptes annuels est relayé depuis la BNB, 5 par seconde sur la recherche d’adresse mondiale (l’instance Photon publique demande un usage raisonnable). Une requête au-delà de la limite reçoit HTTP 429 avec le code d'erreur RATE_LIMITED et un en-tête Retry-After ; chaque réponse limitée porte X-RateLimit-Limit et X-RateLimit-Remaining.

Besoin de plus ? Créez un compte développeur gratuit (confirmation de l'e-mail, puis une courte approbation manuelle), souscrivez au palier gratuit et envoyez votre clé d'API dans l'en-tête X-API-Key : 30 requêtes par seconde avec des rafales de 60 sur chaque hôte, par clé plutôt que par adresse IP. Les limites par chemin ci-dessus restent d'application ; une clé inconnue ou révoquée est refusée avec 401 INVALID_API_KEY.

Obtenir une clé d'API

Chaque source est aussi servie seule sur son propre hôte, avec les mêmes chemins et formats :

HôteContenuSources de données
publicapi.axitam.netTout ce qui suit, sur un seul hôteiso-codes, cldr, kbo-open-data, nbb-cbso, peppol-directory, best-address, photon
cbe.publicapi.axitam.netEntreprises belges (BCE/KBO)kbo-open-data
nbb.publicapi.axitam.netComptes annuels belges (BNB)nbb-cbso
peppol.publicapi.axitam.netParticipants Peppol (en direct)peppol-directory
be.publicapi.axitam.netTout ce qui est belge : entreprises, comptes annuels, Peppol, adresses, recherche d’adressekbo-open-data, nbb-cbso, peppol-directory, best-address, photon
address.publicapi.axitam.netAdresses belges et recherche d’adresse mondiale (BeSt Address, Photon, en direct)best-address, photon
refdata.publicapi.axitam.netPays, devises, langues, écritures, régionsiso-codes, cldr

Bêta publique

L'AXITAM Public API est en bêta : elle est disponible et tenue à jour, mais les endpoints et les formats de réponse peuvent encore évoluer avant la version 1.0. D'autres données de référence (codes TVA d'autres pays, validation des numéros de téléphone...) sont en préparation.

Une question, une idée, un retour ? Nous serons ravis de vous lire.

Contacter AXITAM