Démarrer en 2 minutes
L'adresse de base de l'API est https://api.jsonpage.com/v2. Chaque appel envoie votre clé API dans l'en-tête X-API-Key. Dans cette page, les routes sont écrites avec leur chemin complet depuis api.jsonpage.com, par exemple /v2/companies/{id}.
1. Obtenez votre clé : Obtenir ma clé. Le compte gratuit est immédiat et la clé s'affiche dans votre tableau de bord.
2. Lancez un appel : cette requête lit une entreprise réelle, FR-552032534, avec son adresse et son numéro de TVA vérifié.
curl "https://api.jsonpage.com/v2/companies/FR-552032534?include=address,vat" \
-H "X-API-Key: VOTRE_CLE"
3. Lisez la réponse : la réponse complète, sans abrègement. vat.status vaut valid quand le numéro est confirmé par la vérification européenne ; pending signifie que la vérification n'a pas encore abouti, réessayez plus tard.
{
"data": {
"id": "FR-552032534",
"country": "FR",
"registry_id": "552032534",
"name": "DANONE",
"status": "active",
"legal_form": { "code": "5599", "label": "SA à conseil d'administration (s.a.i.)", "scheme": "FR-CJ" },
"activity": { "nace": "70.10", "code": "70.10Z", "label": "Activités des sièges sociaux", "scheme": "FR-NAF-REV2" },
"incorporated_on": "1955-01-01",
"closed_on": null,
"updated_at": "2026-09-10T11:14:57Z",
"address": {
"line": "59 RUE LA FAYETTE",
"postal_code": "75009",
"city": "PARIS",
"country": "FR",
"formatted": "59 RUE LA FAYETTE, 75009 PARIS"
},
"vat": { "number": "FR27552032534", "status": "valid", "checked_at": "2026-10-11T00:14:31Z", "source": "EU VAT check" }
},
"meta": {
"sources": [{ "name": "Official company register: France", "country": "FR", "kind": "register", "data_date": "2026-09-29" }],
"includes": { "address": "ok", "vat": "ok" }
}
}
Node.js (fetch)
// Node.js 18 or later, ES module. The key is read from the environment.
const response = await fetch(
"https://api.jsonpage.com/v2/companies/FR-552032534?include=address,vat",
{ headers: { "X-API-Key": process.env.JSONPAGE_API_KEY } }
);
if (!response.ok) throw new Error(`Jsonpage API: ${response.status}`);
const { data } = await response.json();
console.log(data.name, data.address?.formatted, data.vat?.status);
Python (requests)
import os
import requests
response = requests.get(
"https://api.jsonpage.com/v2/companies/FR-552032534",
params={"include": "address,vat"},
headers={"X-API-Key": os.environ["JSONPAGE_API_KEY"]},
timeout=10,
)
response.raise_for_status()
company = response.json()["data"]
print(company["name"], company["status"], company["vat"]["status"])
PHP (cURL)
<?php
$ch = curl_init('https://api.jsonpage.com/v2/companies/FR-552032534?include=address,vat');
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ['X-API-Key: ' . getenv('JSONPAGE_API_KEY')],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
]);
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($body === false || $status !== 200) {
throw new RuntimeException("Jsonpage API: $status");
}
$company = json_decode($body, true)['data'];
echo $company['name'], ' ', $company['status'], ' ', $company['vat']['status'], PHP_EOL;
Ruby (net/http)
require "json"
require "net/http"
uri = URI("https://api.jsonpage.com/v2/companies/FR-552032534?include=address,vat")
request = Net::HTTP::Get.new(uri)
request["X-API-Key"] = ENV.fetch("JSONPAGE_API_KEY")
response = Net::HTTP.start(uri.host, uri.port, use_ssl: true, read_timeout: 10) { |http| http.request(request) }
raise "Jsonpage API: #{response.code}" unless response.is_a?(Net::HTTPSuccess)
company = JSON.parse(response.body).fetch("data")
puts [company["name"], company["status"], company.dig("vat", "status")].join(" ")
Les exemples Node.js, Python, PHP et Ruby lisent la clé dans la variable d'environnement JSONPAGE_API_KEY. La réponse et la liste des blocs sont décrites dans la partie API v2.
Autocomplétion dans un formulaire : passer par votre serveur
Le navigateur appelle une route de votre serveur, qui ajoute la clé et appelle /v2/autocomplete. Exemple de route côté serveur (Node.js) :
import { createServer } from "node:http";
createServer(async (req, res) => {
const incoming = new URL(req.url, "http://localhost");
if (incoming.pathname !== "/api/companies/suggest") { res.writeHead(404).end(); return; }
const q = (incoming.searchParams.get("q") ?? "").trim();
res.setHeader("Content-Type", "application/json");
if (q.length < 2) { res.end(JSON.stringify({ data: [] })); return; }
const url = new URL("https://api.jsonpage.com/v2/autocomplete");
url.search = new URLSearchParams({ q, limit: "8" });
const response = await fetch(url, { headers: { "X-API-Key": process.env.JSONPAGE_API_KEY } });
// Too short, rate limited…: no suggestion.
res.end(response.ok ? await response.text() : JSON.stringify({ data: [] }));
}).listen(3000);
Côté navigateur, attendez environ 150 ms après la dernière frappe avant d'appeler votre route : une suggestion par pause de saisie, plutôt qu'une par touche.
const input = document.querySelector("#company");
let timer;
input.addEventListener("input", () => {
clearTimeout(timer);
timer = setTimeout(async () => {
const response = await fetch(`/api/companies/suggest?q=${encodeURIComponent(input.value)}`);
const { data } = await response.json();
// Show name, postal_code and city; keep id for the next step.
}, 150);
});
Valider les identifiants saisis
Avant d'enregistrer le formulaire, votre serveur vérifie en un appel le SIREN, le SIRET et le numéro de TVA saisis :
const params = new URLSearchParams({ id: "FR-652014051", vat: "FR14652014051" });
const response = await fetch(`https://api.jsonpage.com/v2/validate?${params}`, {
headers: { "X-API-Key": process.env.JSONPAGE_API_KEY },
});
const { data } = await response.json();
if (!data.valid) {
const failed = data.checks.filter((check) => !check.ok).map((check) => check.code);
// For example ["vat_format"]: ask the user to correct the VAT number.
}
Les routes /v2/autocomplete et /v2/validate sont décrites dans la partie Formulaires.
Un format commun à plusieurs pays
L'API v2 renvoie le même format pour chaque pays servi, avec la même clé et le même forfait. La France, la Belgique, la Suisse, la Norvège, la Finlande, la Lettonie, l'Irlande, la Suède, l'Estonie, la Lituanie, l'Australie, Singapour, le Japon et le Royaume-Uni sont disponibles.
Identifiant global
Chaque entreprise a un identifiant global : le code pays ISO 3166-1 en deux lettres, un tiret, puis le numéro du registre national, sans espace ni ponctuation. Exemples : FR-552032534 pour un SIREN français, GB-00445790 pour un company number britannique de 8 caractères, BE-0417497106 pour un numéro d'entreprise belge de 10 chiffres, CH-101374515 pour un numéro IDE suisse de 9 chiffres, sans le préfixe CHE.
Pour les dix autres pays : NO-923609016 pour un numéro d'organisation norvégien de 9 chiffres, FI-01120389 pour un Y-tunnus finlandais (les 7 chiffres et la clé, sans trait d'union ; 0112038-9 est accepté), LV-40003245752 pour un numéro d'enregistrement letton de 11 chiffres, AU-51824753556 pour un numéro ABN australien de 11 chiffres, SG-196800306E pour un UEN singapourien de 9 ou 10 caractères, JP-1180301018771 pour un numéro d'entreprise japonais de 13 chiffres, IE-104547 pour un numéro de société irlandais de 1 à 7 chiffres, SE-5560427220 pour un numéro d'organisation suédois de 10 chiffres, EE-10137025 pour un code d'enregistrement estonien de 8 chiffres et LT-110053842 pour un code de personne morale lituanien de 9 chiffres.
Le pays fait partie de l'identifiant, car les numéros nationaux se chevauchent : un SIREN français et un numéro d'organisation norvégien ont tous deux 9 chiffres. Réutilisez tel quel l'identifiant renvoyé dans data.id.
Routes disponibles
https://jsonpage.com. Envoyez votre clé API dans l'en-tête X-API-Key à chaque appel ; les exemples la lisent dans la variable JSONPAGE_API_KEY. Seules les routes de santé du service s'en passent. Cliquez sur une route pour voir ses paramètres, un exemple et ses erreurs.Entreprises
GET/v2/companies/{id}Lire la fiche d'une entreprise
Renvoie la fiche d'une entreprise à partir de son identifiant global. Sans option, elle contient les champs de base : nom, statut, forme juridique, activité et dates. Ajoutez l'adresse, la TVA ou d'autres blocs avec include.
Paramètres
idobligatoireCode pays, tiret, puis numéro du registre :
FR-552032534,BE-0417497106,CH-101374515,NO-923609016,FI-01120389,LV-40003245752,IE-104547,SE-5560427220,EE-10137025,LT-110053842,AU-51824753556,SG-196800306E,JP-1180301018771,GB-00445790.includefacultatifBlocs à ajouter, par exemple
address,vat. Aucun par défaut. Valeurs : address, establishments, local, vat, signals, legal_events, officers, owners, sanctions. Contenu de chaque bloc : Blocs à la demande.fieldsfacultatifNe garde que ces champs de base, par exemple
name,status. Tous par défaut ;idest toujours renvoyé.
Exemple
curl "https://api.jsonpage.com/v2/companies/CH-101374515?include=address" \
-H "X-API-Key: $JSONPAGE_API_KEY"
{
"data": {
"id": "CH-101374515",
"country": "CH",
"registry_id": "101374515",
"name": "The Swatch Group AG",
"status": "active",
"legal_form": { "code": "0106", "label": "Société anonyme", "...": "..." },
"address": { "postal_code": "2000", "city": "Neuchâtel", "...": "..." },
"...": "..."
},
"meta": { "includes": { "address": "ok" }, "sources": [{ "...": "..." }] }
}
Erreurs possibles
400 invalid_identifier: identifiant mal formé (attendu : code pays, tiret, numéro)400 unknown_include: bloc inconnu dansinclude404 country_not_supported: pays pas encore servi404 not_found: aucune entreprise avec cet identifiant
Erreurs communes à toutes les routes (clé, adresse IP, débit) : Erreurs et limites.
Pays France, Belgique, Suisse, Norvège, Finlande, Lettonie, Irlande, Suède, Estonie, Lituanie, Australie, Singapour, Japon et Royaume-Uni. Un bloc absent d'un pays est signalé dans meta.includes (not_available_in_country), sans erreur.
GET/v2/companies/{id}/establishmentsLister les établissements d'une entreprise
Renvoie les établissements (sites, magasins, agences) d'une entreprise, page par page. Pour la page suivante, passez la valeur next au paramètre after ; sur la dernière page, next vaut null.
Paramètres
idobligatoireIdentifiant global de l'entreprise, par exemple
FR-552032534.limitfacultatifNombre d'établissements par page : 20 par défaut, de 1 à 100.
afterfacultatifLa valeur
nextde la page précédente. Absent : première page.
Exemple
curl "https://api.jsonpage.com/v2/companies/FR-552032534/establishments?limit=2" \
-H "X-API-Key: $JSONPAGE_API_KEY"
{
"data": {
"items": [
{ "registry_id": "55203253400414", "name": "...", "head_office": false, "...": "..." },
{ "registry_id": "...", "...": "..." }
],
"next": "..."
},
"meta": { "sources": [{ "name": "Official company register: France", "country": "FR", "kind": "register", "data_date": "2026-10-01" }] }
}
Erreurs possibles
400 invalid_parameter:limithors de 1 à 100404 not_found: aucune entreprise avec cet identifiant404 not_available_in_country: pas d'établissements dans le registre de ce pays (Suisse, Finlande, Lettonie, Irlande, Suède, Estonie, Lituanie, Australie, Singapour, Japon, Royaume-Uni)
Erreurs communes à toutes les routes (clé, adresse IP, débit) : Erreurs et limites.
Pays France (SIRET de 14 chiffres) et Belgique (numéro d'unité d'établissement de 10 chiffres) seulement.
GET/v2/companies?q=…Chercher des entreprises par leur nom
Cherche des entreprises par leur nom, dans un ou plusieurs pays. Les noms exacts arrivent en premier, puis les entreprises actives. Toute la recherche compte pour une seule requête.
Paramètres
qobligatoireLe nom cherché. Chaque mot de 2 caractères ou plus doit figurer dans le nom ; le dernier peut être un début de mot (
danotrouve DANONE).countryfacultatifPays où chercher, par exemple
FR,BE. Tous par défaut. Valeurs : FR, BE, CH, NO, LV, FI, AU, SG, JP, GB, IE, SE, EE, LT.statusfacultatifactivene garde que les entreprises actives ;any(par défaut) garde tous les statuts.limitfacultatifNombre maximal de résultats : 20 par défaut, de 1 à 50.
Exemple
curl "https://api.jsonpage.com/v2/companies?q=swatch&country=CH&limit=5" \
-H "X-API-Key: $JSONPAGE_API_KEY"
{
"data": [
{ "id": "CH-101374515", "name": "The Swatch Group AG", "status": "active", "...": "..." },
{ "id": "CH-...", "...": "..." }
],
"meta": { "sources": [{ "name": "Official company register: Switzerland", "country": "CH", "kind": "register", "data_date": "2026-10-01" }] }
}
Erreurs possibles
400 query_too_short: aucun mot de 2 caractères ou plus dansq400 invalid_parameter:statusoulimitinvalide404 country_not_supported: pays sans recherche par nom
Erreurs communes à toutes les routes (clé, adresse IP, débit) : Erreurs et limites.
GET/v2/companies?registry_id=…Retrouver une entreprise par son numéro, sans connaître le pays
Cherche un numéro de registre national dans tous les pays servis et renvoie les entreprises qui le portent, le plus souvent une seule. La liste est vide si aucune ne correspond.
Paramètres
registry_idobligatoireLe numéro, sans code pays, par exemple
552032534. Les espaces sont ignorés.
Exemple
curl "https://api.jsonpage.com/v2/companies?registry_id=552032534" \
-H "X-API-Key: $JSONPAGE_API_KEY"
{
"data": [
{ "id": "FR-552032534", "country": "FR", "registry_id": "552032534", "name": "DANONE", "status": "active", "...": "..." }
],
"meta": { "sources": [{ "name": "Official company register: France", "country": "FR", "kind": "register", "data_date": "2026-10-01" }] }
}
Erreurs possibles
400 invalid_parameter: niqniregistry_iddans la requête
Erreurs communes à toutes les routes (clé, adresse IP, débit) : Erreurs et limites.
POST/v2/companies/batchLire jusqu'à 100 entreprises en un appel
Renvoie plusieurs fiches en un seul appel, dans l'ordre demandé. Chaque élément contient data, ou error si l'entreprise est introuvable. Chaque entreprise du lot compte pour une requête.
Paramètres
idsobligatoireLes identifiants globaux, de 1 à 100, par exemple
["FR-552032534", "BE-0417497106"].includefacultatifBlocs à ajouter à chaque fiche, mêmes valeurs que pour une seule entreprise. Aucun par défaut.
Exemple
curl -X POST "https://api.jsonpage.com/v2/companies/batch" \
-H "X-API-Key: $JSONPAGE_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "ids": ["FR-552032534", "BE-0417497106"], "include": ["vat"] }'
{
"data": [
{ "id": "FR-552032534", "data": { "id": "FR-552032534", "name": "DANONE", "...": "..." } },
{ "id": "BE-0417497106", "data": { "id": "BE-0417497106", "name": "Anheuser-Busch InBev", "...": "..." } }
],
"meta": { "sources": [{ "...": "..." }] }
}
Erreurs possibles
400 invalid_json: corps illisible, de plus de 64 Ko, ou avec un autre champ queidsetinclude400 invalid_parameter:idsvide ou de plus de 100 éléments400 unknown_include: bloc inconnu dansinclude429 rate_limit_exceeded: le lot dépasse les requêtes qui vous restent pour la minute
Erreurs communes à toutes les routes (clé, adresse IP, débit) : Erreurs et limites.
Formulaires
GET/v2/autocomplete?q=…Suggérer des entreprises pendant la saisie
Renvoie quelques suggestions légères (nom, ville, code postal) pour un champ de formulaire. Un numéro de registre saisi renvoie directement son entreprise. Appelez cette route depuis votre serveur, pour garder la clé secrète.
Paramètres
qobligatoireLe texte saisi : un nom, un début de nom, ou un numéro (SIREN, SIRET, numéro belge, IDE suisse, numéro d'organisation norvégien, Y-tunnus finlandais, numéro letton, numéro ABN australien, UEN singapourien, numéro d'entreprise japonais, company number britannique).
countryfacultatifPays où chercher, par exemple
FR. Tous par défaut. Valeurs : FR, BE, CH, NO, LV, FI, AU, SG, JP, GB, IE, SE, EE, LT.statusfacultatifactive(par défaut) ne propose que les entreprises actives ;anypropose tous les statuts.limitfacultatifNombre maximal de suggestions : 8 par défaut, de 1 à 20.
Exemple
curl "https://api.jsonpage.com/v2/autocomplete?q=carrefour&limit=5" \
-H "X-API-Key: $JSONPAGE_API_KEY"
{
"data": [
{ "id": "FR-652014051", "name": "CARREFOUR", "status": "active", "postal_code": "91300", "city": "MASSY", "kind": "company" },
{ "id": "FR-...", "...": "..." }
]
}
Erreurs possibles
400 query_too_short: aucun mot de 2 caractères ou plus dansq400 invalid_parameter:statusoulimitinvalide404 country_not_supported: pays sans recherche par nom
Erreurs communes à toutes les routes (clé, adresse IP, débit) : Erreurs et limites.
GET/v2/validateVérifier un identifiant, un SIRET ou un numéro de TVA
Vérifie les numéros saisis dans un formulaire : format, existence, entreprise active, et qu'ils désignent bien la même entreprise. Donnez-en au moins un. La réponse est 200 même quand une valeur est invalide : valid dit si tous les contrôles sont réussis, checks détaille chacun. Seul l'oubli de tous les paramètres donne 400 invalid_parameter.
Paramètres
idfacultatifIdentifiant global, par exemple
FR-652014051.siretfacultatifSIRET de 14 chiffres d'un établissement français. Espaces, points et tirets ignorés.
vatfacultatifNuméro de TVA français, belge, suisse, norvégien, finlandais ou letton, par exemple
FR14652014051. Espaces, points et tirets ignorés.eorifacultatifNuméro EORI, par exemple
FR55203253400646: le contrôle passe si le service officiel ne répond pas (unverifiable), il échoue si le numéro est invalide. Un EORI français estFRsuivi du SIRET.
Exemple
curl "https://api.jsonpage.com/v2/validate?id=FR-652014051&vat=FR14652014051" \
-H "X-API-Key: $JSONPAGE_API_KEY"
{
"data": {
"valid": true,
"checks": [
{ "code": "id_format", "ok": true, "value": "FR-652014051" },
{ "code": "vat_format", "ok": true, "value": "FR14652014051" },
{ "code": "identifiers_match", "ok": true, "value": "FR-652014051" },
{ "code": "company_active", "ok": true, "value": "active" },
{ "...": "..." }
],
"company": { "id": "FR-652014051", "name": "CARREFOUR", "...": "..." }
}
}
Erreurs possibles
400 invalid_parameter: niid, nisiret, nivat
Erreurs communes à toutes les routes (clé, adresse IP, débit) : Erreurs et limites.
Pays id : France, Belgique, Suisse, Norvège, Finlande, Lettonie, Irlande, Suède, Estonie, Lituanie, Australie, Singapour, Japon, Royaume-Uni. siret : France. vat : France, Belgique, Suisse, Norvège, Finlande, Lettonie, Suède, Estonie, Lituanie. Liste des contrôles : Validation.
GET/v2/eori/{number}Vérifier un numéro EORI
Vérifie un numéro EORI, l'identifiant douanier des entreprises qui importent ou exportent : le format, puis l'existence du numéro auprès des services officiels de vérification (Union européenne et Royaume-Uni). Compte pour une requête, dans tous les forfaits. La réponse est 200 avec status : valid, invalid, unverifiable (le service officiel ne répond pas : ce n'est jamais un numéro invalide, réessayez plus tard) ou not_applicable (Suisse et Norvège, où l'EORI européen ne s'applique pas). name et address ne sont présents que si l'entreprise a accepté leur publication. Chaque réponse est réutilisée 24 heures.
Paramètres
numberobligatoireCode pays de 2 lettres suivi de 15 caractères au plus, par exemple
FR55203253400646,DE1234567ouGB123456789000. Espaces, points et tirets ignorés.
Exemple
curl "https://api.jsonpage.com/v2/eori/DE1234567" \
-H "X-API-Key: $JSONPAGE_API_KEY"
{
"data": {
"eori": "DE1234567",
"country": "DE",
"status": "valid",
"valid": true,
"checked_at": "2026-10-11T12:00:00Z",
"name": "EXEMPLE GMBH",
"address": "Hauptstrasse 1, 10115, BERLIN, DE"
}
}
Erreurs possibles
400 invalid_eori: pas un code pays suivi de 15 caractères au plus400 country_not_supported: pays sans vérification EORI503 eori_unavailable: vérification EORI non activée sur ce serveur
Erreurs qui valent pour toutes les routes (clé, adresse IP, quota) : Erreurs et limites.
Surveillance
PUT/v2/monitors/{id}Surveiller une entreprise
Ajoute une entreprise à votre liste de surveillance : chaque changement détecté devient ensuite un événement. Répond 201 si elle est ajoutée, 200 si elle l'était déjà. Pas de corps de requête.
Paramètres
idobligatoireIdentifiant global de l'entreprise, par exemple
FR-552032534.
Exemple
curl -X PUT "https://api.jsonpage.com/v2/monitors/FR-552032534" \
-H "X-API-Key: $JSONPAGE_API_KEY"
{ "data": { "company_id": "FR-552032534", "created": true } }
Erreurs possibles
400 invalid_identifier: identifiant mal formé (attendu : code pays, tiret, numéro)403 monitor_limit_reached: limite d'entreprises surveillées de votre forfait atteinte404 not_found: aucune entreprise avec cet identifiant503 monitoring_unavailable: surveillance momentanément indisponible ; réessayez
Erreurs communes à toutes les routes (clé, adresse IP, débit) : Erreurs et limites.
DELETE/v2/monitors/{id}Arrêter de surveiller une entreprise
Retire une entreprise de votre liste de surveillance. Répond 204, sans corps. Les événements déjà enregistrés restent lisibles.
Paramètres
idobligatoireIdentifiant global de l'entreprise, par exemple
FR-552032534.
Exemple
curl -X DELETE "https://api.jsonpage.com/v2/monitors/FR-552032534" \
-H "X-API-Key: $JSONPAGE_API_KEY"
HTTP/2 204
Erreurs possibles
400 invalid_identifier: identifiant mal formé (attendu : code pays, tiret, numéro)404 not_monitored: l'entreprise n'est pas dans votre liste503 monitoring_unavailable: surveillance momentanément indisponible ; réessayez
Erreurs communes à toutes les routes (clé, adresse IP, débit) : Erreurs et limites.
GET/v2/monitorsLister les entreprises surveillées
Renvoie votre liste de surveillance, triée par identifiant, page par page. meta.count donne le nombre d'entreprises surveillées et meta.limit la limite de votre forfait.
Paramètres
limitfacultatifEntreprises par page : 100 par défaut, de 1 à 1 000.
afterfacultatifLa valeur
nextde la page précédente. Absent : première page.
Exemple
curl "https://api.jsonpage.com/v2/monitors?limit=100" \
-H "X-API-Key: $JSONPAGE_API_KEY"
{
"data": [
{ "company_id": "FR-552032534", "created_at": "2026-10-02T09:12:44Z", "checked_at": "2026-10-02T10:00:03Z", "...": "..." }
],
"next": null,
"meta": { "count": 1, "limit": 1000 }
}
Erreurs possibles
400 invalid_parameter:limithors de 1 à 1 000503 monitoring_unavailable: surveillance momentanément indisponible ; réessayez
Erreurs communes à toutes les routes (clé, adresse IP, débit) : Erreurs et limites.
GET/v2/eventsLire les changements détectés
Renvoie les événements de vos entreprises surveillées (changement d'adresse, de statut, nouvelle annonce…), du plus ancien au plus récent. Gardez l'identifiant du dernier événement traité et passez-le à after au prochain appel.
Paramètres
afterfacultatifNe renvoie que les événements postérieurs à celui-ci, par exemple
evt_41. Absent : depuis le plus ancien.limitfacultatifÉvénements par page : 100 par défaut, de 1 à 1 000.
company_idfacultatifNe renvoie que les événements de cette entreprise, par exemple
FR-552032534.
Exemple
curl "https://api.jsonpage.com/v2/events?after=evt_41&limit=100" \
-H "X-API-Key: $JSONPAGE_API_KEY"
{
"data": [
{
"id": "evt_42",
"type": "company.address_changed",
"company_id": "FR-552032534",
"detected_at": "2026-10-03T04:00:00Z",
"data": { "before": "75 AV DE LA GRANDE ARMEE 75116 PARIS", "after": "..." }
}
],
"next": "evt_42"
}
Erreurs possibles
400 invalid_parameter:afteroulimitinvalide400 invalid_identifier:company_idmal formé503 monitoring_unavailable: surveillance momentanément indisponible ; réessayez
Erreurs communes à toutes les routes (clé, adresse IP, débit) : Erreurs et limites.
Les webhooks, envoyés par l'API à votre serveur, sont décrits dans Webhooks.
Santé du service
GET/health/liveVérifier que le service répond
Répond 200 tant que le service tourne. Sans clé API : pratique pour une sonde de supervision.
Paramètres
Aucun paramètre.
Exemple
curl "https://api.jsonpage.com/health/live"
{ "status": "ok" }
GET/health/readyVérifier que les données sont prêtes
Répond 200 avec "status": "ready" quand le service peut servir les données, sinon 503. Sans clé API.
Paramètres
Aucun paramètre.
Exemple
curl "https://api.jsonpage.com/health/ready"
{ "status": "ready" }
Erreurs possibles
503: le service n'est pas prêt ; réessayez plus tard
GET/health/sourcesVoir l'état des données par pays
Donne, pour chaque pays, l'état des données (ok : à jour, stale : non actualisées, refreshing : actualisation en cours), comme la page État du service. Sans clé API.
Paramètres
Aucun paramètre.
Exemple
curl "https://api.jsonpage.com/health/sources"
{
"status": "ok",
"checked_at": "...",
"sources": [
{ "country": "FR", "status": "ok" },
{ "...": "..." }
]
}
Réponse de base
Sans option, la réponse fait environ 0,5 Ko et contient les mêmes champs dans tous les pays : identifiant, pays, numéro, nom, statut (active, closed ou unknown), forme juridique, activité avec son code européen NACE, dates de création, de fermeture et de mise à jour. Une valeur inconnue vaut null, et un champ de base n'est jamais omis.
curl "https://api.jsonpage.com/v2/companies/FR-552032534" \
-H "X-API-Key: VOTRE_CLE"{
"data": {
"id": "FR-552032534",
"country": "FR",
"registry_id": "552032534",
"name": "DANONE",
"status": "closed",
"legal_form": { "code": "5699", "label": "SA à directoire (s.a.i.)", "scheme": "FR-CJ" },
"activity": { "nace": "70.10", "code": "70.10Z", "label": "Activités des sièges sociaux", "scheme": "FR-NAF-REV2" },
"incorporated_on": "1955-01-01",
"closed_on": null,
"updated_at": "2024-03-22T13:26:06Z"
},
"meta": {
"sources": [{ "name": "Official company register: France", "country": "FR", "kind": "register", "data_date": "2026-10-01" }]
}
}
Blocs à la demande
Ajoutez les blocs voulus avec le paramètre include, séparés par des virgules. Un bloc non demandé n'est ni lu ni calculé, et chaque appel compte pour une requête quels que soient les blocs. Un bloc inconnu provoque l'erreur unknown_include au lieu d'être ignoré.
| Bloc | Contenu | Pays |
|---|---|---|
address | Adresse du siège : ligne, code postal, ville, pays et adresse formatée. | France, Belgique, Suisse, Norvège, Finlande, Lettonie, Irlande, Suède, Estonie, Australie, Singapour, Japon, Royaume-Uni |
establishments | Les 20 premiers établissements et le curseur de la page suivante. | France, Belgique, Norvège |
local | Champs propres au registre du pays, tels quels. | France, Belgique, Suisse, Norvège, Finlande, Lettonie, Australie, Singapour, Japon, Irlande, Suède, Estonie, Lituanie, Royaume-Uni |
vat | Numéro de TVA et résultat de sa vérification. | France, Belgique, Suisse, Norvège, Finlande, Lettonie, Suède, Estonie, Lituanie |
eori | EORI probable du siège (FR + SIRET) et résultat de sa vérification, jamais présenté comme certain. | France |
signals | Signaux calculés à partir du registre ; liste vide si aucun. | France, Belgique, Suisse, Norvège, Finlande, Lettonie, Irlande, Suède, Estonie, Lituanie, Australie, Singapour, Japon, Royaume-Uni |
legal_events | Les 20 dernières annonces légales, de la plus récente à la plus ancienne. | France |
officers | Dirigeants et mandataires. | Pas encore disponible |
owners | Personnes ayant un contrôle significatif (bénéficiaires effectifs) en cours ; liste vide si aucune. | Royaume-Uni |
sanctions | Contrôle sur les listes de sanctions. | France, Belgique, Suisse, Norvège, Finlande, Lettonie, Irlande, Suède, Estonie, Lituanie, Australie, Singapour, Japon, Royaume-Uni |
Pour chaque bloc demandé, meta.includes indique ok, ou not_available_in_country si le bloc n'est pas encore disponible dans ce pays ; le bloc est alors absent de data. C'est aujourd'hui le cas de officers dans tous les pays, et de establishments, vat et legal_events au Royaume-Uni, de legal_events et owners en Belgique, de establishments, legal_events et owners en Suisse, et de owners en France.
Norvège : legal_events et owners ne sont pas disponibles. Lituanie : address, establishments, legal_events et owners ne sont pas disponibles. Finlande, Lettonie, Irlande, Suède, Estonie, Australie, Singapour et Japon : establishments, legal_events et owners ne sont pas disponibles.
curl "https://api.jsonpage.com/v2/companies/FR-552032534?include=vat,signals,officers" \
-H "X-API-Key: VOTRE_CLE"{
"data": {
"id": "FR-552032534",
"...": "...",
"vat": { "number": "FR27552032534", "status": "valid", "checked_at": "2026-10-11T00:14:31Z", "source": "EU VAT check" },
"signals": []
},
"meta": {
"sources": [{ "name": "Official company register: France", "country": "FR", "kind": "register", "data_date": "2026-10-01" }],
"includes": { "vat": "ok", "signals": "ok", "officers": "not_available_in_country" }
}
}Réponse abrégée : les champs de base sont omis ici.
vat.status vaut valid (numéro confirmé), invalid (numéro refusé), pending (la vérification européenne n'a pas encore répondu : réessayez dans quelques secondes) ou not_verified (aucune vérification n'a été demandée ou possible).
Le paramètre fields réduit la réponse de base aux champs choisis, par exemple fields=name,status. L'identifiant id et les blocs demandés sont toujours conservés.
Particularités par pays
Le format est le même dans tous les pays ; seules la numérotation et les blocs disponibles changent. Le code d'activité national reste dans activity.code et le statut d'origine du registre dans le bloc local.
France (FR) | Belgique (BE) | Suisse (CH) | Norvège (NO) | Finlande (FI) | Lettonie (LV) | Irlande (IE) | Suède (SE) | Estonie (EE) | Lituanie (LT) | Australie (AU) | Singapour (SG) | Japon (JP) | Royaume-Uni (GB) | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Couverture | Registres officiels des entreprises françaises et annonces légales. | Registre officiel des entreprises belges : environ 2 millions d'entreprises actives et leurs unités d'établissement. | Registre du commerce suisse : environ 795 000 entités juridiques actives. | Registre des entités juridiques norvégien : environ 1,2 million d'unités actives, dont environ 465 000 entreprises individuelles, et environ 870 000 établissements. | Registre finlandais des entreprises : environ 463 000 entités (sociétés, sociétés de logement, associations, fondations…). | Registre des entreprises letton : environ 218 000 entités actives (sociétés, associations, fondations, exploitations agricoles, succursales…) et environ 237 000 entités radiées. | Registre des sociétés irlandais : environ 345 000 sociétés actives (sociétés privées par actions, sociétés à activité désignée, sociétés limitées par garantie, sociétés anonymes, sociétés étrangères…) et environ 480 000 sociétés dissoutes ou radiées. | Registres suédois des entreprises : environ 1,18 million d'organisations actives (sociétés anonymes, sociétés en nom collectif, associations de logement, coopératives, associations, fondations, entités publiques…) et environ 1,03 million d'organisations radiées. Les entrepreneurs individuels ne sont pas servis. | Registre estonien des entreprises : environ 355 000 entités juridiques inscrites (sociétés à responsabilité limitée, associations de copropriétaires, associations, sociétés en commandite, sociétés anonymes, fondations, coopératives, collectivités…), en activité, en liquidation ou en faillite. Les entrepreneurs individuels ne sont pas servis. | Registre lituanien des personnes morales : environ 233 000 personnes morales actives (sociétés à responsabilité limitée, petites sociétés, entreprises individuelles, associations, établissements publics, coopératives, collectivités…) et environ 315 000 personnes morales radiées. | Registre australien des numéros d'entreprise : environ 6,1 millions d'ABN actifs (sociétés, trusts, sociétés de personnes, fonds de pension, entrepreneurs individuels sous leur nom commercial…) et environ 6,7 millions d'ABN annulés. | Registre singapourien des sociétés et entreprises : environ 635 000 entités actives (sociétés locales, entreprises individuelles, sociétés de personnes, succursales de sociétés étrangères) et environ 1,5 million d'entités radiées, dissoutes ou cessées. | Registre japonais des numéros d'identification des personnes morales : environ 5,1 millions de sociétés et organisations actives (sociétés par actions, sociétés à responsabilité limitée, collectivités, associations, sociétés étrangères…) et environ 780 000 fermées. Les entrepreneurs individuels n'ont pas de numéro et ne sont pas inclus. | Registre britannique des sociétés : environ 5,7 millions de sociétés actives, et leurs bénéficiaires effectifs (personnes ayant un contrôle significatif). |
| Numéro | SIREN, 9 chiffres : FR-552032534. | Numéro d'entreprise, 10 chiffres commençant par 0 ou 1, dont les deux derniers sont une clé modulo 97 : BE-0417497106. Les formes 0417.497.106, BE0417497106 et l'ancien numéro à 9 chiffres (BE-417497106) sont acceptées. | Numéro IDE, 9 chiffres après CHE, dont le dernier est une clé modulo 11 : CH-105909036 pour CHE-105.909.036. Les formes CHE-105.909.036, CHE105909036 et CHE-105.909.036 MWST (ou TVA, IVA) sont acceptées. | Numéro d'organisation, 9 chiffres, dont le dernier est une clé modulo 11 : NO-923609016. Les formes 923 609 016, NO923609016 et NO923609016MVA sont acceptées après le préfixe NO-, ou seules pour la TVA. | Y-tunnus, 7 chiffres, un trait d'union et une clé modulo 11 : FI-01120389 pour 0112038-9. Les formes 0112038-9, 01120389, FI01120389 et 112038-9 sont acceptées. | Numéro d'enregistrement, 11 chiffres, sans clé de contrôle publiée : LV-40003245752. LV40003245752 est accepté. | Numéro de société, de 1 à 7 chiffres, sans clé de contrôle publiée : IE-104547. Les zéros initiaux sont ignorés et IE104547 est accepté. | Numéro d'organisation, 10 chiffres dont le dernier est une clé de Luhn : SE-5560427220. Les formes 556042-7220, SE5560427220 et le numéro de TVA SE556042722001 sont acceptées. | Code d'enregistrement, 8 chiffres dont le dernier est une clé de contrôle : EE-10137025. Les formes 10137025, EE10137025 et le numéro de TVA EE100210460 sont acceptées. | Code de la personne morale, 9 chiffres dont le dernier est une clé de contrôle : LT-110053842. Les formes 110053842 et LT110053842 (numéro de TVA) sont acceptées. | ABN, 11 chiffres dont les deux premiers forment une clé modulo 89 : AU-51824753556. Les formes 51 824 753 556, ABN 51824753556 et AU51824753556 sont acceptées. | UEN : 8 chiffres et une lettre (entreprises), 9 chiffres et une lettre (sociétés locales) ou T, S ou R, 2 chiffres, 2 lettres, 4 chiffres et une lettre (autres entités), la dernière lettre étant une clé de contrôle : SG-196800306E. Les formes en minuscules ou avec espaces et le préfixe UEN sont acceptés. | Numéro d'entreprise, 13 chiffres dont le premier est une clé de contrôle : JP-1180301018771. Les chiffres pleine largeur et les espaces sont acceptés. | Company number, 8 caractères, parfois avec un préfixe (SC, NI, OC…). Les zéros initiaux manquants sont rétablis : GB-6 devient GB-00000006. |
status | A → active, C → closed. | closed pour une situation juridique de fin (faillite clôturée, liquidation clôturée…) ; une entreprise en faillite ou en liquidation reste active. La source ne liste que les entités actives : une entreprise qui a cessé n'est plus trouvée. | closed pour une entité radiée du registre ; closed_on reste null, la source ne donnant pas de date de radiation. Une entreprise en liquidation reste active. | closed pour une unité qui a disparu du registre ; closed_on reste null, la date n'étant pas donnée. Une unité en faillite ou en liquidation reste active. | closed pour une entité dont la date de fin est passée ou qui a disparu des données (closed_on vaut alors null si la date manque). Une entité en faillite ou en liquidation reste active. | closed pour une entité radiée ; closed_on est la date de radiation. Une entité en liquidation reste active. | closed pour une société dissoute, radiée, cessée ou supprimée du registre ; closed_on est la date de dissolution. Une société en liquidation, en administration ou proposée à la radiation reste active. | closed pour une organisation radiée ; closed_on est la date de radiation. Une organisation en liquidation, en faillite ou en réorganisation reste active. | closed pour une entité qui a disparu des données ; closed_on vaut alors null, la date n'étant pas donnée. Une entité en liquidation ou en faillite reste active (statut d'origine dans local.status). | closed pour une personne morale radiée ; closed_on est la date de radiation. Une personne morale en liquidation ou en faillite reste active (statut d'origine dans local.legal_status). | closed pour un ABN annulé ; closed_on est la date d'annulation. | closed pour tout statut autre que « Live » (radiée, dissoute, cessée, convertie…) ; closed_on reste null, la date n'étant pas donnée. Une entité « Gazetted To Be Struck Off » ou en liquidation reste active. | closed quand une date de fermeture est donnée (closed_on, motif dans local.closure). incorporated_on vaut null : la date d'attribution du numéro est dans local.number_assigned_on. | closed si la société est dissoute ; une société en liquidation ou en administration reste active. |
legal_form | Catégorie juridique (FR-CJ). | Forme juridique belge (BE-JURIDICAL-FORM), libellé en français. | Forme juridique eCH-0097 (CH-LEGAL-FORM), libellé en français. | Forme d'organisation (NO-ORG-FORM), libellé en français pour les principales, sinon en norvégien. | Forme d'entreprise (FI-COMPANY-FORM), libellé en français pour les principales, sinon en anglais. | Forme juridique du registre (LV-LEGAL-FORM), libellé en français pour les principales, sinon en letton. | Type de société du registre (IE-COMPANY-TYPE), libellé en français pour les principaux, sinon en anglais. | Forme d'organisation du registre (SE-ORG-FORM), libellé en français ; pour les organisations que seul le registre statistique connaît, forme juridique à 2 chiffres (SE-LEGAL-FORM). | Forme juridique du registre (EE-LEGAL-FORM), libellé en français pour les principales, sinon en estonien. | Forme juridique du registre (LT-LEGAL-FORM), code à 3 chiffres, libellé en français pour les principales, sinon en anglais ; libellé lituanien dans local. | Type d'entité (AU-ENTITY-TYPE), libellé en français pour les principaux, sinon en anglais. | Forme de société ou d'entreprise (SG-LEGAL-FORM : EPC, PC, PCS, SOLE, PART…), libellé en français ; le type d'entité est dans local.entity_type. | Type de personne morale (JP-LEGAL-FORM : 301 société par actions, 302, 305…), libellé en français ; le libellé japonais est dans local.legal_form_label_ja. | Catégorie de société britannique (GB-COMPANY-CATEGORY). |
activity | NAF rév. 2 ; NACE = 4 premiers chiffres. | Activité principale dans la version NACE-BEL la plus récente (BE-NACEBEL-2025) ; NACE rév. 2 = classe du code NACE-BEL 2008. | null : la source ne publie pas de code d'activité (NOGA). | Code SN2025 à 5 chiffres (NO-SN2025), libellé en norvégien ; nace vaut null (nomenclature alignée sur la NACE rév. 2.1). | Code TOL 2025 à 5 chiffres (FI-TOL2025), libellé en anglais ; nace vaut null (nomenclature alignée sur la NACE rév. 2.1) ; les rares codes TOL 2008 (FI-TOL2008) donnent la classe NACE rév. 2. | null : le registre ne publie pas de code d'activité. | Classe NACE rév. 2 du registre (IE-NACE-REV2), quand elle est renseignée ; libellé en français pour la plupart des classes. | Code SNI 2025 à 5 chiffres (SE-SNI2025), sans libellé ; nace vaut null (nomenclature alignée sur la NACE rév. 2.1). Les autres codes sont dans local. | Activité principale déclarée, code EMTAK à 5 chiffres (EE-EMTAK2025 ou EE-EMTAK2008), libellé en estonien ; la classe NACE rév. 2 est donnée pour EMTAK 2008, nace vaut null pour EMTAK 2025 (aligné sur la NACE rév. 2.1). | null : le registre ne publie pas de code d'activité. | null : le registre ne publie pas de code d'activité. | Code SSIC principal (SG-SSIC) ; nace vaut null. | null : le registre ne publie pas de code d'activité. | Premier code SIC 2007 ; NACE rév. 2 quand la classe à 4 chiffres existe, sinon null. |
updated_at | Date de dernière mise à jour de la fiche. | null ; la date des données figure dans meta.sources. | null ; la date des données figure dans meta.sources. incorporated_on vaut aussi null : la source ne donne pas de date d'inscription. | null ; la date des données figure dans meta.sources. incorporated_on est la date de fondation, ou à défaut d'entrée au registre. | null ; la date des données figure dans meta.sources. incorporated_on est la date d'inscription. | null ; la date des données figure dans meta.sources. incorporated_on est la date d'immatriculation. | null ; la date des données figure dans meta.sources. incorporated_on est la date de première inscription. | null ; la date des données figure dans meta.sources. incorporated_on est la date d'immatriculation. | null ; la date des données figure dans meta.sources. incorporated_on est la date d'immatriculation. | null ; la date des données figure dans meta.sources. incorporated_on est la date d'inscription. | updated_at est la date de dernière mise à jour de l'inscription. incorporated_on est le jour où l'ABN est devenu actif (inconnu pour un ABN annulé). | null ; incorporated_on est la date d'immatriculation. | updated_at est la date de mise à jour de l'enregistrement. | null ; la date des données figure dans meta.sources. |
| Blocs disponibles | address, establishments, local, vat, signals, legal_events, sanctions. | address (siège), establishments (unités d'établissement), local (situation juridique, noms, activités), vat, signals, sanctions. | address (siège), local (IDE, numéros du registre, but, commune, canton, noms traduits, autres sièges inscrits), vat, signals, sanctions. | address (adresse d'activité), establishments (sous-unités), local (forme, secteur, effectif, capital, dates), vat (statut au registre de la TVA), signals, sanctions. | address, local (noms parallèles et auxiliaires, registre du commerce, TVA, situation), vat, signals, sanctions. | address, local (registre, motif de radiation), vat, signals, sanctions. | address, local (type et statut d'origine, comté, Eircode, dates de la déclaration annuelle et des comptes), signals, sanctions. | address (adresse postale), local (numéro formaté, procédure en cours, motif de radiation, autres codes d'activité, autres noms), vat, signals, sanctions. | address, local (statut d'origine, libellé de la forme, sous-type, communes), vat (quand le registre donne un numéro de TVA), signals, sanctions. | local (code, libellé lituanien de la forme, statut juridique et sa date), vat, signals, sanctions. | address (État et code postal seulement), local (ACN, État, noms commerciaux, état de la GST), signals, sanctions. | address (adresse complète avec bloc, rue, étage, unité et code postal), local (type d'entité, statut du registre, échéances des comptes et de la déclaration annuelle, activité secondaire, anciens noms), signals, sanctions. | address (en japonais : préfecture, commune, rue, code postal), local (lecture du nom en katakana, nom et adresse en anglais quand ils existent, codes de la préfecture et de la commune, motif de fermeture, numéro du successeur), signals, sanctions. | address (siège statutaire), local (statut, catégorie, codes SIC, échéances des comptes et de la déclaration annuelle, anciens noms), signals, owners (personnes ayant un contrôle significatif), sanctions. |
| Non disponibles | owners (le registre des bénéficiaires effectifs n'est plus public depuis le 31 juillet 2024). | legal_events, owners (la source ne les publie pas). | establishments, legal_events, owners (la source ne les publie pas). | legal_events, owners (non publiés). | establishments, legal_events, owners (non publiés). | address, establishments, legal_events, owners (non publiés). | establishments, legal_events, owners (non publiés). | establishments, legal_events, owners (non publiés). | vat (le numéro de TVA irlandais ne se déduit pas du numéro de société), establishments, legal_events, owners (non publiés). | establishments, legal_events, owners (non publiés). | establishments, legal_events, owners (non publiés) ; vat (la TVA n'est pas vérifiée pour l'Australie : l'état de la GST est dans local). | establishments, legal_events, owners (non publiés) ; vat (la TVA n'est pas vérifiée pour Singapour). | establishments, legal_events, owners (non publiés) ; vat (la TVA n'est pas vérifiée pour le Japon). | establishments (le registre britannique n'en a pas), vat (la vérification européenne de la TVA ne couvre plus le Royaume-Uni depuis le Brexit), legal_events. |
Exemple au Royaume-Uni : un bloc non disponible dans le pays est signalé dans meta.includes, sans erreur.
curl "https://api.jsonpage.com/v2/companies/GB-00445790?include=address,signals,vat" \
-H "X-API-Key: VOTRE_CLE"{
"data": {
"id": "GB-00445790",
"country": "GB",
"registry_id": "00445790",
"name": "TESCO PLC",
"status": "active",
"...": "...",
"address": { "...": "..." },
"signals": []
},
"meta": {
"sources": [{ "name": "Official company register: United Kingdom", "country": "GB", "kind": "register", "data_date": "2026-10-01" }],
"includes": { "address": "ok", "signals": "ok", "vat": "not_available_in_country" }
}
}Réponse abrégée et illustrative. La route /v2/companies/GB-00445790/establishments renvoie 404 not_available_in_country.
Belgique
Les entreprises belges proviennent du registre officiel des entreprises belges. L'identifiant global est BE- suivi du numéro d'entreprise de 10 chiffres, par exemple BE-0417497106. L'API accepte aussi BE-0417.497.106, BE-BE0417497106 et l'ancien numéro à 9 chiffres (BE-417497106), et renvoie toujours la forme à 10 chiffres dans data.id. Les deux derniers chiffres sont une clé de contrôle : 97 moins le reste de la division des huit premiers par 97. Un numéro dont la clé est fausse provoque l'erreur 400 invalid_identifier.
curl "https://api.jsonpage.com/v2/companies/BE-0417497106?include=address,vat,signals" \
-H "X-API-Key: VOTRE_CLE"{
"data": {
"id": "BE-0417497106",
"country": "BE",
"registry_id": "0417497106",
"name": "Anheuser-Busch InBev",
"status": "active",
"legal_form": { "code": "014", "label": "Société anonyme", "scheme": "BE-JURIDICAL-FORM" },
"activity": { "nace": "70.10", "code": "70100", "label": "Activités des sièges sociaux", "scheme": "BE-NACEBEL-2025" },
"incorporated_on": "1977-08-02",
"closed_on": null,
"updated_at": null,
"address": { "line": "Grand-Place 1", "postal_code": "1000", "city": "Bruxelles", "country": "BE", "formatted": "Grand-Place 1, 1000 Bruxelles" },
"vat": { "number": "BE0417497106", "status": "valid", "checked_at": "2026-10-11T00:14:31Z", "source": "EU VAT check" },
"signals": []
},
"meta": {
"sources": [{ "name": "Official company register: Belgium", "country": "BE", "kind": "register", "data_date": "2026-10-02" }],
"includes": { "address": "ok", "signals": "ok", "vat": "ok" }
}
}Le numéro de TVA belge est BE suivi du numéro d'entreprise ; il est vérifié comme en France (pending au premier appel, puis valid ou invalid). Les libellés de la forme juridique, de l'activité et de la situation juridique sont en français ; l'adresse est en français quand la source la donne, sinon en néerlandais.
Le bloc local reprend la fiche du registre belge telle quelle :
"local": {
"enterprise_number": "0417.497.106",
"status": "AC",
"juridical_situation": { "code": "000", "label": "Situation normale", "scheme": "BE-JURIDICAL-SITUATION" },
"type_of_enterprise": "2",
"juridical_form": { "code": "014", "label": "Société anonyme", "scheme": "BE-JURIDICAL-FORM" },
"start_date": "1977-08-02",
"names": [
{ "language": "fr", "type": "legal", "value": "Anheuser-Busch InBev" },
{ "language": "fr", "type": "abbreviation", "value": "AB Inbev" },
{ "language": "nl", "type": "legal", "value": "Anheuser-Busch InBev" },
"..."
],
"activities": [
{ "code": "70100", "nace_version": "2025", "group": "006", "classification": "MAIN", "label": "Activités des sièges sociaux" },
{ "code": "70100", "nace_version": "2008", "group": "001", "classification": "MAIN", "label": "Activités des sièges sociaux" },
"..."
]
}
| Champ | Contenu |
|---|---|
enterprise_number | Numéro d'entreprise sous sa forme officielle, 0417.497.106. |
status | Statut d'origine du registre (AC : active). |
juridical_situation | Situation juridique : code, libellé et schéma BE-JURIDICAL-SITUATION, par exemple 000 « Situation normale ». Elle donne les signaux insolvency_proceedings et liquidation. |
type_of_enterprise | 1 personne physique, 2 personne morale. |
juridical_form, start_date | Forme juridique (identique à legal_form) et date de début de l'entreprise. |
names | Tous les noms inscrits : language (fr, nl, de, en, ou vide si la langue est inconnue), type (legal, abbreviation ou commercial) et value. Le champ name de base est le nom légal, en français s'il existe. |
activities | Toutes les activités inscrites : code, nace_version (2003, 2008 ou 2025), group (groupe d'activités du registre, 001 pour la TVA), classification (MAIN principale, SECO secondaire, ANCI auxiliaire) et label. |
Le champ de base activity est l'activité principale dans la version NACE-BEL la plus récente, celle du groupe TVA en priorité ; activity.nace est la classe NACE rév. 2 issue du code NACE-BEL 2008.
Les établissements sont les unités d'établissement inscrites au registre belge : /v2/companies/BE-0417497106/establishments les liste page par page. registry_id est leur numéro à 10 chiffres, qui commence par 2 ; name est leur nom commercial, sinon le nom légal ; activity est leur activité principale et opened_on leur date de début. head_office vaut toujours false : le registre ne désigne pas de siège parmi les unités, et l'adresse du siège est dans le bloc address.
{
"registry_id": "2102217256",
"name": "Anheuser-Busch InBev",
"head_office": false,
"status": "active",
"activity": { "nace": "70.10", "code": "70100", "label": "Activités des sièges sociaux", "scheme": "BE-NACEBEL-2025" },
"opened_on": "1976-10-01",
"address": { "line": "Avenue Joseph-Prévers 26", "postal_code": "4020", "city": "Liège", "country": "BE", "formatted": "Avenue Joseph-Prévers 26, 4020 Liège" }
}
Signaux en Belgique : insolvency_proceedings pour une faillite ouverte, un concordat, un sursis ou une réorganisation judiciaire, et liquidation pour une dissolution ou une liquidation en cours ; leur detail est le libellé de la situation juridique. recently_created et closed suivent les mêmes règles que dans les autres pays. Seules les entités actives figurent dans la source : une entreprise qui a cessé n'est plus trouvée (404 not_found), et la surveillance la signale par l'événement company.removed_from_register.
Recherche par nom : chaque nom inscrit au registre belge est cherchable, nom légal, abréviation ou nom commercial, dans chaque langue. Par exemple, GET /v2/companies?q=ab+inbev&country=BE trouve d'abord Anheuser-Busch InBev. La validation accepte les numéros de TVA belges : GET /v2/validate?vat=BE0417497106.
Suisse
Les entreprises suisses proviennent du registre du commerce suisse : environ 795 000 entités juridiques actives, de toutes formes (sociétés anonymes, Sàrl, raisons individuelles, coopératives, associations, fondations, succursales…). L'identifiant global est CH- suivi des 9 chiffres du numéro IDE, sans le préfixe CHE : CH-105909036 pour CHE-105.909.036. L'API accepte aussi CH-105.909.036, CH-CHE-105.909.036 et CH-CHE-105.909.036 MWST, et renvoie toujours la forme à 9 chiffres dans data.id ; la recherche par numéro, l'autocomplétion, la validation et l'enrichissement acceptent le numéro IDE tel quel (CHE-105.909.036, CHE105909036, CHE-105.909.036 MWST, ou avec TVA ou IVA). Le dernier chiffre est une clé de contrôle modulo 11 (norme eCH-0097) : un numéro dont la clé est fausse provoque l'erreur 400 invalid_identifier.
curl "https://api.jsonpage.com/v2/companies/CH-101374515?include=address,vat,signals" \
-H "X-API-Key: VOTRE_CLE"{
"data": {
"id": "CH-101374515",
"country": "CH",
"registry_id": "101374515",
"name": "The Swatch Group AG",
"status": "active",
"legal_form": { "code": "0106", "label": "Société anonyme", "scheme": "CH-LEGAL-FORM" },
"activity": null,
"incorporated_on": null,
"closed_on": null,
"updated_at": null,
"address": { "line": "c/o Caisse de pensions Swatch Group, faubourg de l'Hôpital 3", "postal_code": "2000", "city": "Neuchâtel", "country": "CH", "formatted": "c/o Caisse de pensions Swatch Group, faubourg de l'Hôpital 3, 2000 Neuchâtel" },
"vat": { "number": "CHE-116.294.121 MWST", "status": "valid", "checked_at": "2026-10-03T22:39:43Z", "source": "EU VAT check" },
"signals": []
},
"meta": {
"sources": [{ "name": "Official company register: Switzerland", "country": "CH", "kind": "register", "data_date": "2026-10-03" }],
"includes": { "address": "ok", "signals": "ok", "vat": "ok" }
}
}Le numéro de TVA suisse est le numéro IDE suivi de MWST (TVA en français, IVA en italien) ; il est vérifié lui aussi. Pour une entreprise membre d'un groupe TVA, comme ici, le numéro renvoyé est celui du groupe, avec lequel elle facture. Le libellé de la forme juridique est en français ; le nom et l'adresse sont ceux du registre, dans la langue de l'inscription.
Le bloc local reprend la fiche du registre du commerce. Nestlé est une seule entité juridique avec deux sièges inscrits, à Cham et à Vevey :
curl "https://api.jsonpage.com/v2/companies/CH-105909036?include=local" \
-H "X-API-Key: VOTRE_CLE""local": {
"uid": "CHE-105.909.036",
"ehra_id": 126286,
"chid": "CH17030010013",
"legal_form": { "code": "0106", "label_fr": "Société anonyme", "label_de": "Aktiengesellschaft", "label_en": "Company limited by shares" },
"purpose": "Beteiligung an Industrie-, Dienstleistungs-, Handels- und Finanzunternehmungen, …",
"municipality": { "bfs_number": "1702", "name": "Cham" },
"canton": "ZG",
"names": [
{ "language": "", "value": "Nestlé AG" },
{ "language": "en", "value": "Nestlé Ltd." },
{ "language": "fr", "value": "Nestlé S.A." }
],
"other_registrations": [
{
"ehra_id": 126288,
"chid": "CH55000672935",
"name": "Nestlé S.A.",
"status": "active",
"municipality": { "bfs_number": "5890", "name": "Vevey" },
"canton": "VD",
"address": { "line": "Avenue Nestlé 55", "postal_code": "1800", "city": "Vevey", "country": "CH", "formatted": "Avenue Nestlé 55, 1800 Vevey" }
}
],
"last_listed_on": null
}
| Champ | Contenu |
|---|---|
uid | Numéro IDE sous sa forme officielle, CHE-105.909.036. |
ehra_id, chid | Numéro de l'entité au registre fédéral, un entier, et numéro du registre cantonal, par exemple CH17030010013. |
legal_form | Forme juridique eCH-0097 : code et libellés label_fr, label_de et label_en. |
purpose | But de l'entreprise tel qu'inscrit, dans la langue du registre. |
municipality, canton | Commune du siège (bfs_number, numéro officiel de la commune, et name) et canton en deux lettres, par exemple ZG. |
names | Nom inscrit (language vide) et ses traductions inscrites (language de, fr, it, en ou rm), avec value. Le champ name de base est le nom inscrit. |
other_registrations | Autres sièges inscrits de la même entité juridique : ehra_id, chid, name, status, municipality, canton et address ; [] s'il n'y en a pas. |
last_listed_on | Entités radiées seulement : dernier jour où le registre listait l'entité ; null sinon. |
Signaux en Suisse : liquidation quand le nom inscrit porte la mention légale « en liquidation » (« in Liquidation », « in liquidazione ») ; son detail le précise. closed désigne une entité radiée du registre. recently_created ne s'applique pas, faute de date d'inscription dans la source. Le registre suisse n'a pas d'établissements : /v2/companies/CH-101374515/establishments renvoie 404 not_available_in_country, et les blocs establishments, legal_events et owners sont signalés not_available_in_country dans meta.includes.
Recherche par nom : le nom inscrit et ses traductions (allemand, français, italien, anglais) sont cherchables. Par exemple, GET /v2/companies?q=swatch&country=CH trouve Swatch AG et The Swatch Group AG. Dans l'autocomplétion, un numéro IDE saisi (CHE-101.374.515) renvoie directement l'entreprise ; les raisons individuelles (forme 0101) ont le kind person. La validation accepte les numéros de TVA suisses : GET /v2/validate?vat=CHE-105.909.036+MWST.
Norvège
Les unités norvégiennes proviennent du registre des entités juridiques norvégien : environ 1,2 million d'unités actives de toutes formes (sociétés par actions, associations, copropriétés, entreprises individuelles…) et leurs établissements. L'identifiant global est NO- suivi des 9 chiffres du numéro d'organisation : NO-923609016. Le dernier chiffre est une clé de contrôle modulo 11 : un numéro dont la clé est fausse provoque l'erreur 400 invalid_identifier. Les entreprises individuelles sont servies sous leur nom commercial ; ni dirigeants ni coordonnées de contact ne sont fournis. Un numéro d'organisation seul, à 9 chiffres, se lit comme un SIREN dans un fichier d'enrichissement : écrivez-le NO-923609016 ou avec son numéro de TVA.
curl "https://api.jsonpage.com/v2/companies/NO-923609016?include=address,vat,signals" \
-H "X-API-Key: VOTRE_CLE"{
"data": {
"id": "NO-923609016",
"country": "NO",
"registry_id": "923609016",
"name": "EQUINOR ASA",
"status": "active",
"legal_form": { "code": "ASA", "label": "Société anonyme publique", "scheme": "NO-ORG-FORM" },
"activity": { "nace": null, "code": "06.100", "label": "Utvinning av råolje", "scheme": "NO-SN2025" },
"incorporated_on": "1972-09-18",
"closed_on": null,
"updated_at": null,
"address": { "line": "Forusbeen 50", "postal_code": "4035", "city": "STAVANGER", "country": "NO", "formatted": "Forusbeen 50, 4035 STAVANGER" },
"vat": { "number": "NO923609016MVA", "status": "valid", "checked_at": "2026-10-10T00:00:00Z", "source": "EU VAT check" },
"signals": []
},
"meta": {
"sources": [{ "name": "Official company register: Norway", "country": "NO", "kind": "register", "data_date": "2026-10-10" }],
"includes": { "address": "ok", "signals": "ok", "vat": "ok" }
}
}
La TVA norvégienne est NO, le numéro d'organisation et MVA (NO923609016MVA) ; elle est lue dans le registre officiel de la TVA, sans attente : valid si l'unité y est inscrite, invalid sinon. Les établissements sont les sous-unités du registre : /v2/companies/NO-923609016/establishments ou include=establishments. Le bloc local reprend la fiche du registre :
curl "https://api.jsonpage.com/v2/companies/NO-923609016?include=local" \
-H "X-API-Key: VOTRE_CLE""local": {
"organisation_number": "923 609 016",
"legal_form": { "code": "ASA", "label": "Société anonyme publique", "scheme": "NO-ORG-FORM" },
"legal_form_label_no": "Allmennaksjeselskap",
"registered_on": "1995-03-12",
"founded_on": "1972-09-18",
"in_business_enterprise_register": true,
"vat_registered": true,
"vat_registered_on": "1989-07-01",
"institutional_sector": { "code": "1120", "label": "Statlig eide aksjeselskaper mv.", "scheme": "NO-SECTOR" },
"employees": 21272,
"capital": { "amount": 5976872600, "currency": "NOK", "type": "Aksjekapital" },
"municipality": "STAVANGER",
"last_listed_on": null
}
Signaux en Norvège : insolvency_proceedings pour une faillite ou une procédure de restructuration (since donne la date d'ouverture), liquidation pour une dissolution ou une liquidation en cours, y compris d'office, et closed pour une unité qui a disparu du registre. Recherche par nom : GET /v2/companies?q=equinor&country=NO ; les entreprises individuelles ont le kind person à l'autocomplétion.
Finlande
Les entités finlandaises proviennent du registre finlandais des entreprises : environ 463 000 entités (sociétés, sociétés de logement, associations, fondations…). L'identifiant global est FI- suivi des 8 caractères du Y-tunnus, sans trait d'union : FI-01120389 pour 0112038-9. L'API accepte aussi FI-0112038-9 et le numéro écrit sans zéros initiaux, et renvoie toujours la forme à 8 caractères dans data.id ; la recherche par numéro, l'autocomplétion, la validation et l'enrichissement acceptent le Y-tunnus tel quel (0112038-9). Le dernier chiffre est une clé de contrôle modulo 11 : un numéro dont la clé est fausse provoque l'erreur 400 invalid_identifier. Aucune donnée de personne n'est fournie.
curl "https://api.jsonpage.com/v2/companies/FI-0112038-9?include=address,vat,signals" \
-H "X-API-Key: VOTRE_CLE"{
"data": {
"id": "FI-01120389",
"country": "FI",
"registry_id": "01120389",
"name": "Nokia Oyj",
"status": "active",
"legal_form": { "code": "17", "label": "Société anonyme publique (Oyj)", "scheme": "FI-COMPANY-FORM" },
"activity": { "nace": null, "code": "70100", "label": "Activities of head offices", "scheme": "FI-TOL2025" },
"incorporated_on": "1896-12-19",
"closed_on": null,
"updated_at": null,
"address": { "line": "Karakaari 7", "postal_code": "02610", "city": "ESPOO", "country": "FI", "formatted": "Karakaari 7, 02610 ESPOO" },
"vat": { "number": "FI01120389", "status": "valid", "checked_at": "2026-10-10T20:59:03Z", "source": "EU VAT check" },
"signals": []
},
"meta": {
"sources": [{ "name": "Official company register: Finland", "country": "FI", "kind": "register", "data_date": "2026-10-10" }],
"includes": { "address": "ok", "signals": "ok", "vat": "ok" }
}
}
La TVA finlandaise est FI suivi des 8 chiffres du Y-tunnus ; elle est vérifiée de la même façon qu'en France et en Belgique, avec les mêmes statuts. Signaux en Finlande : insolvency_proceedings pour une faillite ou un assainissement d'entreprise, liquidation pour une liquidation en cours (since donne la date de la situation), et closed pour une entité dont la date de fin est passée ou qui a disparu des données. Le bloc local donne la forme et le libellé de la forme, le statut au registre du commerce, l'inscription à la TVA et sa date, la situation, le code de commune et les noms parallèles et auxiliaires (other_names). Les établissements, les annonces légales et les bénéficiaires effectifs ne sont pas disponibles.
Lettonie
Les entités lettones proviennent du registre des entreprises letton : environ 218 000 entités actives de toutes formes (sociétés à responsabilité limitée, sociétés anonymes, commerçants individuels, associations, fondations, exploitations agricoles, succursales…) et environ 237 000 entités radiées, avec leur date de radiation dans closed_on. L'identifiant global est LV- suivi des 11 chiffres du numéro d'enregistrement : LV-40003245752. Ce numéro n'a pas de clé de contrôle publiée : seul son format est vérifié, et un numéro bien formé mais inconnu renvoie 404 not_found. L'adresse est celle du registre, la ville en est déduite. Le registre ne publie ni code d'activité ni établissements : activity vaut null.
curl "https://api.jsonpage.com/v2/companies/LV-40003245752?include=address,vat,signals" \
-H "X-API-Key: VOTRE_CLE"{
"data": {
"id": "LV-40003245752",
"country": "LV",
"registry_id": "40003245752",
"name": "Air Baltic Corporation AS",
"status": "active",
"legal_form": { "code": "AS", "label": "Société anonyme", "scheme": "LV-LEGAL-FORM" },
"activity": null,
"incorporated_on": "1995-02-08",
"closed_on": null,
"updated_at": null,
"address": { "line": "Mārupes nov., Mārupes pag., Lidosta \"Rīga\", Tehnikas iela 3", "postal_code": "LV-1053", "city": "Mārupes", "country": "LV", "formatted": "Mārupes nov., Mārupes pag., Lidosta \"Rīga\", Tehnikas iela 3, LV-1053" },
"vat": { "number": "LV40003245752", "status": "valid", "checked_at": "2026-10-10T20:59:02Z", "source": "EU VAT check" },
"signals": []
},
"meta": {
"sources": [{ "name": "Official company register: Latvia", "country": "LV", "kind": "register", "data_date": "2026-10-10" }],
"includes": { "address": "ok", "signals": "ok", "vat": "ok" }
}
}
La TVA lettone est LV suivi du numéro d'enregistrement ; elle est vérifiée de la même façon qu'en France et en Belgique, avec les mêmes statuts. Signaux en Lettonie : closed avec la date de radiation dans since, et liquidation quand le nom inscrit porte la mention de liquidation (« Likvidējamā »). Le bloc local donne le registre d'inscription (register) et, pour une entité radiée, le motif de la radiation (termination : liquidée ou réorganisée).
Irlande
Les sociétés irlandaises proviennent du registre des sociétés irlandais : environ 345 000 sociétés actives de toutes formes (sociétés privées par actions, sociétés à activité désignée, sociétés limitées par garantie, sociétés anonymes, sociétés étrangères enregistrées en Irlande…) et environ 480 000 sociétés dissoutes ou radiées, avec leur date de dissolution dans closed_on. L'identifiant global est IE- suivi du numéro de société, de 1 à 7 chiffres, sans zéros initiaux : IE-104547. Ce numéro n'a pas de clé de contrôle publiée : seul son format est vérifié, et un numéro bien formé mais inconnu renvoie 404 not_found. L'activité est la classe NACE rév. 2 du registre, quand elle est renseignée. Le registre ne publie pas d'établissements.
curl "https://api.jsonpage.com/v2/companies/IE-231235?include=address,signals" \
-H "X-API-Key: VOTRE_CLE"{
"data": {
"id": "IE-231235",
"country": "IE",
"registry_id": "231235",
"name": "BROWN BROTHERS HARRIMAN TRUSTEE SERVICES (IRELAND) LIMITED",
"status": "active",
"legal_form": { "code": "1153", "label": "Société privée par actions (LTD)", "scheme": "IE-COMPANY-TYPE" },
"activity": { "nace": "64.99", "code": "64.99", "label": "Autres activités des services financiers, hors assurance et caisses de retraite, n.c.a.", "scheme": "IE-NACE-REV2" },
"incorporated_on": "1995-03-29",
"closed_on": null,
"updated_at": null,
"address": { "line": "30 HERBERT STREET, DUBLIN 2", "postal_code": "D02 W329", "city": "DUBLIN 2", "country": "IE", "formatted": "30 HERBERT STREET, DUBLIN 2, D02 W329" },
"signals": []
},
"meta": {
"sources": [{ "name": "Official company register: Ireland", "country": "IE", "kind": "register", "data_date": "2026-10-11" }],
"includes": { "address": "ok", "signals": "ok" }
}
}
Le numéro de TVA irlandais ne se déduit pas du numéro de société : le bloc vat n'est pas disponible en Irlande et est signalé not_available_in_country. Signaux en Irlande : closed avec la date de dissolution dans since, liquidation pour une société en liquidation, insolvency_proceedings pour un examinership ou une administration, strike_off_proposed quand la radiation d'office est proposée, et confirmation_statement_overdue quand la déclaration annuelle est en retard. Le bloc local donne le type de société et le statut d'origine avec leur code, le comté, l'Eircode et les dates de la dernière déclaration annuelle, de la prochaine échéance et des derniers comptes.
Suède
Les organisations suédoises proviennent des registres officiels suédois des entreprises : environ 1,18 million d'organisations actives de toutes formes (sociétés anonymes, sociétés en nom collectif et en commandite, associations de logement, coopératives, associations, fondations, entités publiques, entités étrangères…) et environ 1,03 million d'organisations radiées, avec leur date de radiation dans closed_on. L'identifiant global est SE- suivi des 10 chiffres du numéro d'organisation : SE-5560427220. Le dernier chiffre est une clé de Luhn, vérifiée ; un numéro bien formé mais inconnu renvoie 404 not_found. Les entrepreneurs individuels et les successions, identifiés par un numéro personnel, ne sont pas servis, et la partie « aux bons soins de » (c/o) de l'adresse n'est pas reprise. L'activité est le premier code SNI 2025, sans libellé ; les autres codes figurent dans local.other_activities.
curl "https://api.jsonpage.com/v2/companies/SE-5560427220?include=address,vat,signals" \
-H "X-API-Key: VOTRE_CLE"{
"data": {
"id": "SE-5560427220",
"country": "SE",
"registry_id": "5560427220",
"name": "H & M Hennes & Mauritz AB",
"status": "active",
"legal_form": { "code": "AB", "label": "Société anonyme (aktiebolag)", "scheme": "SE-ORG-FORM" },
"activity": { "nace": null, "code": "70100", "label": null, "scheme": "SE-SNI2025" },
"incorporated_on": "1943-08-07",
"closed_on": null,
"updated_at": null,
"address": { "line": "Mäster Samuelsgatan 46 A", "postal_code": "106 38", "city": "STOCKHOLM", "country": "SE", "formatted": "Mäster Samuelsgatan 46 A, 106 38 STOCKHOLM" },
"vat": { "number": "SE556042722001", "status": "valid", "checked_at": "2026-10-11T08:12:40Z", "source": "EU VAT check" },
"signals": []
},
"meta": {
"sources": [{ "name": "Official company register: Sweden", "country": "SE", "kind": "register", "data_date": "2026-10-11" }],
"includes": { "address": "ok", "signals": "ok", "vat": "ok" }
}
}
La TVA suédoise est SE, le numéro d'organisation et 01 ; elle est vérifiée de la même façon qu'en France et en Belgique, avec les mêmes statuts. Signaux en Suède : closed avec la date de radiation dans since, liquidation pour une liquidation en cours, et insolvency_proceedings pour une faillite, une réorganisation d'entreprise, une négociation de concordat ou une résolution (since donne la date de la situation). Le bloc local donne le numéro d'organisation formaté (556042-7220), la procédure en cours, le motif de radiation, business_active (inscrite à la TVA, à l'impôt F ou comme employeur), les autres codes d'activité, les autres noms (noms commerciaux spéciaux, noms en langue étrangère) et marketing_restriction quand l'organisation a refusé la publicité.
Estonie
Les entités estoniennes proviennent du registre estonien des entreprises : environ 355 000 entités juridiques inscrites, de toutes formes (sociétés à responsabilité limitée, sociétés anonymes, sociétés en commandite et en nom collectif, associations, associations de copropriétaires, fondations, coopératives, succursales, collectivités…), en activité, en liquidation ou en faillite. L'identifiant global est EE- suivi des 8 chiffres du code d'enregistrement : EE-10137025. Le dernier chiffre est une clé de contrôle, vérifiée ; un code bien formé mais inconnu renvoie 404 not_found. Le numéro de TVA (EE100210460) est aussi accepté à la place du code. Les entrepreneurs individuels, dont le nom est celui d'une personne, ne sont pas servis. Une entité qui disparaît du registre est conservée comme closed, sans date de fin. L'activité est l'activité principale déclarée (code EMTAK, libellé en estonien).
curl "https://api.jsonpage.com/v2/companies/EE-10137025?include=address,vat,signals" \
-H "X-API-Key: VOTRE_CLE"{
"data": {
"id": "EE-10137025",
"country": "EE",
"registry_id": "10137025",
"name": "Tieto Estonia AS",
"status": "active",
"legal_form": { "code": "AS", "label": "Société anonyme (aktsiaselts)", "scheme": "EE-LEGAL-FORM" },
"activity": { "nace": null, "code": "62101", "label": "Programmeerimine", "scheme": "EE-EMTAK2025" },
"incorporated_on": "1996-12-27",
"closed_on": null,
"updated_at": null,
"address": { "line": "A. H. Tammsaare tee 47", "postal_code": "11316", "city": "Tallinn", "country": "EE", "formatted": "A. H. Tammsaare tee 47, Kristiine linnaosa, Tallinn, Harju maakond, 11316" },
"vat": { "number": "EE100210460", "status": "valid", "checked_at": "2026-10-11T08:12:40Z", "source": "EU VAT check" },
"signals": []
},
"meta": {
"sources": [{ "name": "Official company register: Estonia", "country": "EE", "kind": "register", "data_date": "2026-10-11" }],
"includes": { "address": "ok", "signals": "ok", "vat": "ok" }
}
}
Le numéro de TVA estonien (EE suivi de 9 chiffres) est lu dans le registre : il ne se déduit pas du code. Il est vérifié de la même façon qu'en France et en Belgique, avec les mêmes statuts ; le bloc vat est absent quand l'entité n'a pas de numéro de TVA. Signaux en Estonie : liquidation pour une entité en liquidation, insolvency_proceedings pour une entité en faillite, et closed pour une entité qui a disparu des données. Le bloc local donne le statut d'origine, le libellé estonien de la forme et son sous-type, et la hiérarchie des communes de l'adresse.
Lituanie
Les personnes morales lituaniennes proviennent du registre lituanien des personnes morales : environ 233 000 personnes morales actives, de toutes formes (sociétés à responsabilité limitée, sociétés anonymes, petites sociétés, entreprises individuelles, associations, établissements publics, fondations, coopératives, succursales, collectivités…) et environ 315 000 personnes morales radiées, avec leur date de radiation dans closed_on. L'identifiant global est LT- suivi des 9 chiffres du code de la personne morale : LT-110053842. Le dernier chiffre est une clé de contrôle, vérifiée ; un code bien formé mais inconnu renvoie 404 not_found. Le registre ne publie ni adresse, ni code d'activité, ni établissements : address est signalé not_available_in_country et activity vaut null. Le nom d'une entreprise individuelle est rendu anonyme par le registre lui-même.
curl "https://api.jsonpage.com/v2/companies/LT-110053842?include=vat,signals,local" \
-H "X-API-Key: VOTRE_CLE"{
"data": {
"id": "LT-110053842",
"country": "LT",
"registry_id": "110053842",
"name": "Akcinė bendrovė \"Lietuvos geležinkeliai\"",
"status": "active",
"legal_form": { "code": "320", "label": "Société anonyme (AB)", "scheme": "LT-LEGAL-FORM" },
"activity": null,
"incorporated_on": "1991-12-24",
"closed_on": null,
"updated_at": null,
"vat": { "number": "LT110053842", "status": "valid", "checked_at": "2026-10-11T08:12:40Z", "source": "EU VAT check" },
"signals": [],
"local": { "legal_entity_code": "110053842", "legal_form_label_lt": "Akcinė bendrovė", "legal_status": { "code": "0", "label": "No legal proceedings", "scheme": "LT-LEGAL-STATUS" }, "legal_status_label_lt": "Teisinis statusas neįregistruotas", "legal_status_since": "2021-12-16" }
},
"meta": {
"sources": [{ "name": "Official company register: Lithuania", "country": "LT", "kind": "register", "data_date": "2026-10-12" }],
"includes": { "vat": "ok", "signals": "ok", "local": "ok" }
}
}
La TVA lituanienne est LT suivi du code de la personne morale ; elle est vérifiée de la même façon qu'en France et en Belgique, avec les mêmes statuts. Signaux en Lituanie : closed avec la date de radiation dans since, liquidation pour une liquidation en cours, et insolvency_proceedings pour une faillite ou une restructuration (since donne la date du statut). Le bloc local donne le code de la personne morale, le libellé lituanien de la forme, le statut juridique d'origine avec son code et sa date.
Australie
Les entités australiennes proviennent du registre australien des numéros d'entreprise : environ 6,1 millions d'ABN actifs (sociétés, trusts, sociétés de personnes, fonds de pension, entrepreneurs individuels…) et environ 6,7 millions d'ABN annulés, avec la date d'annulation dans closed_on. Le nom d'une personne n'est jamais conservé : un entrepreneur individuel est servi sous son nom commercial, et un entrepreneur individuel sans nom commercial n'est pas servi. L'identifiant global est AU- suivi des 11 chiffres de l'ABN : AU-51824753556. La clé de contrôle (modulo 89) est vérifiée, et un numéro bien formé mais inconnu renvoie 404 not_found. Le registre ne publie ni rue ni code d'activité : l'adresse se limite à l'État et au code postal (formatted vaut « VIC 3000 »), et activity vaut null. Le numéro ACN des sociétés est dans le bloc local.
curl "https://api.jsonpage.com/v2/companies/AU-33051775556?include=address,local,signals" \
-H "X-API-Key: VOTRE_CLE"{
"data": {
"id": "AU-33051775556",
"country": "AU",
"registry_id": "33051775556",
"name": "TELSTRA CORPORATION LIMITED",
"status": "active",
"legal_form": { "code": "PUB", "label": "Société cotée australienne", "scheme": "AU-ENTITY-TYPE" },
"activity": null,
"incorporated_on": "1999-11-01",
"closed_on": null,
"updated_at": "2024-02-15",
"address": { "line": null, "postal_code": "3000", "city": null, "country": "AU", "formatted": "VIC 3000" },
"signals": [],
"local": {
"abn": "33 051 775 556",
"acn": "051 775 556",
"state": "VIC",
"entity_type_label": "Australian Public Company",
"gst": { "registered": true, "status": "ACT", "since": "2000-07-01" },
"other_names": [{ "type": "trading", "value": "TELSTRA" }]
}
},
"meta": {
"sources": [{ "name": "Official business register: Australia", "country": "AU", "kind": "register", "data_date": "2026-10-07" }],
"includes": { "address": "ok", "local": "ok", "signals": "ok" }
}
}
La TVA n'est pas vérifiée pour l'Australie : le bloc vat n'y est pas disponible. L'inscription à la taxe sur les biens et services (GST), équivalent australien de la TVA, est donnée telle que publiée dans le bloc local (gst.registered, gst.status et gst.since), sans vérification. Signaux en Australie : closed avec la date d'annulation dans since, et recently_created. Le bloc local donne aussi le numéro ACN, l'État et les noms commerciaux (other_names).
Singapour
Les entités singapouriennes proviennent du registre des sociétés et entreprises de Singapour : environ 635 000 entités actives (sociétés locales, entreprises individuelles, sociétés de personnes, succursales de sociétés étrangères) et environ 1,5 million d'entités radiées, dissoutes ou cessées, qui restent consultables. L'identifiant global est SG- suivi du numéro UEN : SG-196800306E pour une société locale (9 chiffres et une lettre), SG-T05LL0003J pour une autre entité (par exemple une société de personnes à responsabilité limitée) ; un numéro d'entreprise a 8 chiffres et une lettre. La lettre de contrôle est vérifiée, et un numéro bien formé mais inconnu renvoie 404 not_found. L'activité est le code SSIC principal (SG-SSIC), sans équivalent NACE. Le registre ne donne pas la date de fin : closed_on reste null pour une entité fermée. Les entreprises individuelles (forme SOLE) sont servies sous leur nom commercial.
curl "https://api.jsonpage.com/v2/companies/SG-196800306E?include=address,local,signals" \
-H "X-API-Key: VOTRE_CLE"{
"data": {
"id": "SG-196800306E",
"country": "SG",
"registry_id": "196800306E",
"name": "DBS BANK LTD.",
"status": "active",
"legal_form": { "code": "PCS", "label": "Société publique par actions", "scheme": "SG-LEGAL-FORM" },
"activity": { "nace": null, "code": "64120", "label": null, "scheme": "SG-SSIC" },
"incorporated_on": "1968-07-16",
"closed_on": null,
"updated_at": null,
"address": { "line": "12 MARINA BOULEVARD, MARINA BAY FINANCIAL CENTRE", "postal_code": "018982", "city": "Singapore", "country": "SG", "formatted": "12 MARINA BOULEVARD, MARINA BAY FINANCIAL CENTRE, Singapore 018982" },
"signals": [],
"local": {
"uen": "196800306E",
"entity_type": { "code": "LC", "label": "Société locale", "scheme": "SG-ENTITY-TYPE" },
"register_status": "Live Company",
"uen_issued_on": "1968-07-16",
"accounts_due_on": "2027-07-31",
"annual_return_on": "2026-06-03",
"secondary_activity": null,
"former_names": ["THE DEVELOPMENT BANK OF SINGAPORE"],
"sole_proprietor": false
}
},
"meta": {
"sources": [{ "name": "Official business register: Singapore", "country": "SG", "kind": "register", "data_date": "2026-10-11" }],
"includes": { "address": "ok", "local": "ok", "signals": "ok" }
}
}
La TVA n'est pas vérifiée pour Singapour : le bloc vat n'y est pas disponible, et le registre ne donne pas l'inscription à la taxe sur les biens et services (GST). Signaux à Singapour : closed (sans date), recently_created, strike_off_proposed pour une entité « Gazetted To Be Struck Off », liquidation pour une liquidation volontaire et insolvency_proceedings pour une liquidation obligatoire ou une gestion judiciaire, le statut du registre étant dans detail. Le bloc local donne le type d'entité, le statut du registre tel que publié, les dates d'échéance des comptes et de la déclaration annuelle, l'activité secondaire et les anciens noms (former_names).
Japon
Les personnes morales japonaises proviennent du registre japonais des numéros d'identification des personnes morales : environ 5,1 millions de sociétés et organisations actives (sociétés par actions, sociétés à responsabilité limitée, collectivités locales, associations, sociétés étrangères ayant un établissement au Japon…) et environ 780 000 fermées, avec leur date de fermeture dans closed_on. Les entrepreneurs individuels n'ont pas de numéro et ne sont pas servis. L'identifiant global est JP- suivi des 13 chiffres du numéro d'entreprise : JP-1180301018771. Le premier chiffre est une clé de contrôle, vérifiée ; un numéro bien formé mais inconnu renvoie 404 not_found. Le nom et l'adresse sont en japonais : la lecture du nom en katakana, le nom et l'adresse en anglais (quand la personne morale les a déclarés) sont dans le bloc local. Le registre ne publie ni code d'activité ni date de création : activity et incorporated_on valent null, la date d'attribution du numéro est dans local.number_assigned_on. La recherche par nom trouve un texte d'au moins 2 caractères n'importe où dans le nom japonais, la lecture en katakana ou le nom anglais.
curl "https://api.jsonpage.com/v2/companies/JP-1180301018771?include=address,local,signals" \
-H "X-API-Key: VOTRE_CLE"{
"data": {
"id": "JP-1180301018771",
"country": "JP",
"registry_id": "1180301018771",
"name": "トヨタ自動車株式会社",
"status": "active",
"legal_form": { "code": "301", "label": "Société par actions (kabushiki kaisha)", "scheme": "JP-LEGAL-FORM" },
"activity": null,
"incorporated_on": null,
"closed_on": null,
"updated_at": "2019-04-23",
"address": { "line": "トヨタ町1番地", "postal_code": "471-0826", "city": "豊田市", "country": "JP", "formatted": "〒471-0826 愛知県豊田市トヨタ町1番地" },
"signals": [],
"local": {
"corporate_number": "1180301018771",
"name_kana": "トヨタジドウシャ",
"name_en": null,
"address_en": null,
"prefecture": "愛知県",
"prefecture_code": "23",
"municipality_code": "23211",
"number_assigned_on": "2015-10-05",
"last_change_on": "2019-04-10",
"closure": null,
"legal_form_label_ja": "株式会社"
}
},
"meta": {
"sources": [{ "name": "Official corporate register: Japan", "country": "JP", "kind": "register", "data_date": "2026-10-11" }],
"includes": { "address": "ok", "local": "ok", "signals": "ok" }
}
}
La TVA n'est pas vérifiée pour le Japon : le bloc vat n'y est pas disponible. Signaux au Japon : closed avec la date de fermeture dans since. Le bloc local donne aussi le motif de fermeture (closure : liquidation terminée, dissolution par fusion, fermeture par le greffe) et le numéro de la personne morale qui a repris l'activité après une fusion (successor_number).
TVA
En France, le numéro de TVA intracommunautaire se calcule à partir du SIREN ; Jsonpage vérifie ensuite qu'il est valide. Aucune requête n'attend cette vérification : elle se fait en arrière-plan, et sa date figure dans checked_at.
En Belgique, le numéro de TVA est BE suivi du numéro d'entreprise, par exemple BE0417497106 ; il est vérifié de la même façon, avec les mêmes statuts.
En Suisse, le numéro de TVA est le numéro IDE suivi de MWST, par exemple CHE-101.374.515 MWST ; il est vérifié lui aussi. Les statuts sont les mêmes, avec en plus unavailable quand la vérification n'a pas pu aboutir ; elle est alors refaite plus tard. Pour une entreprise membre d'un groupe TVA, le numéro renvoyé est celui du groupe, avec lequel elle facture : Nestlé (CH-105909036) renvoie CHE-116.281.710 MWST.
En Finlande, en Lettonie et en Suède, le numéro de TVA est FI, LV ou SE suivi du numéro du registre (FI01120389, LV40003245752) ou du numéro d'organisation et de 01 (SE556042722001) ; il est vérifié de la même façon, avec les mêmes statuts. En Norvège, le numéro NO923609016MVA est lu dans le registre officiel de la TVA : le statut vaut valid ou invalid, jamais pending.
Aucune vérification de TVA n'est faite pour l'Australie, Singapour et le Japon : le bloc vat n'y est pas disponible, et le paramètre vat de GET /v2/validate n'accepte pas leurs numéros.
| Statut | Signification |
|---|---|
pending | Numéro calculé, vérification programmée : redemandez la fiche quelques secondes plus tard. |
valid | Le numéro est confirmé. |
invalid | Le numéro n'est pas reconnu. |
not_verified | Numéro calculé, mais non vérifié par ce serveur. |
unavailable | Suisse seulement : la vérification n'a pas pu aboutir ; elle est refaite plus tard. |
EORI
Le numéro EORI est l'identifiant douanier d'une entreprise qui importe ou exporte. Une entreprise française a en général pour EORI FR suivi du SIRET de son siège. Deux façons de l'utiliser : GET /v2/eori/{number} vérifie n'importe quel numéro (Union européenne, Royaume-Uni ; la Suisse et la Norvège répondent not_applicable), et le bloc eori d'une fiche française (?include=eori) teste l'EORI du siège.
Le numéro du bloc eori est dérivé du SIRET, pas lu dans un registre : il est toujours présenté comme probable (probable: true, basis: "head_office_siret"). status: "valid" dit que ce numéro existe auprès des douanes, pas que l'entreprise l'utilise. Un service officiel qui ne répond pas donne unverifiable avec valid: null, jamais invalid : réessayez plus tard.
name_match compare le nom que les douanes ont enregistré pour l'EORI avec le nom de l'entreprise : true s'ils désignent la même entreprise (casse, accents, ponctuation et formes juridiques ignorés), false sinon, par exemple pour un EORI au nom d'une filiale. Pour un EORI français, le nom de l'entreprise vient du registre ; pour un autre numéro, passez-le dans le paramètre company_name. Le champ est absent quand l'un des deux noms est inconnu.
Les réponses sont réutilisées 24 heures par numéro, et les appels vers les services officiels sont espacés : un fichier de plusieurs milliers de partenaires se traite mieux avec l'enrichissement de fichiers de l'espace client (colonnes eori_number et eori_valid), qui accepte aussi des EORI dans la colonne des identifiants. GET /v2/validate accepte le paramètre eori.
Signaux
Les signaux sont calculés à partir de la fiche du registre, avec les mêmes codes dans tous les pays. Chaque signal contient code, since (date de début de la situation, si le registre la donne) et detail. Une entreprise fermée ne reçoit que closed.
| Signal | Signification | Pays |
|---|---|---|
closed | Entreprise fermée ou dissoute. | France, Belgique, Suisse, Norvège, Finlande, Lettonie, Irlande, Suède, Estonie, Lituanie, Australie, Singapour, Japon, Royaume-Uni |
recently_created | Créée il y a moins de 12 mois. | France, Belgique, Norvège, Finlande, Lettonie, Irlande, Suède, Estonie, Lituanie, Australie, Singapour, Royaume-Uni |
insolvency_proceedings | Procédure collective en cours ; le détail donne le dernier jugement en France, la situation juridique en Belgique, le type de procédure en Norvège et en Finlande, le statut du registre en Irlande, la procédure en cours en Suède, le statut du registre en Estonie, le statut juridique en Lituanie. | France, Belgique, Norvège, Finlande, Irlande, Suède, Estonie, Lituanie, Singapour, Royaume-Uni |
strike_off_proposed | Radiation d'office proposée. | Irlande, Singapour, Royaume-Uni |
liquidation | Dissolution ou liquidation en cours, hors faillite ; le détail donne la situation juridique en Belgique, la mention du nom en Suisse et en Lettonie, la situation en Norvège et en Finlande, le statut du registre en Irlande, la procédure en cours en Suède, le statut du registre en Estonie, le statut juridique en Lituanie. | Belgique, Suisse, Norvège, Finlande, Lettonie, Irlande, Suède, Estonie, Lituanie, Singapour |
accounts_overdue | Comptes annuels en retard. | Royaume-Uni |
confirmation_statement_overdue | Déclaration annuelle en retard. | Irlande, Royaume-Uni |
dormant | Société dormante. | Royaume-Uni |
Annonces légales
Le bloc legal_events reprend les annonces légales officielles publiées depuis 2008 : procédures collectives, conciliations, rétablissements professionnels, radiations, ventes, immatriculations et annonces diverses. Les noms des personnes physiques et le texte libre des jugements ne sont jamais stockés ; le lien url mène à l'annonce officielle complète.
{
"id": "A202601892890",
"published_on": "2026-10-02",
"family": "insolvency",
"type": "initial",
"judgment": {
"family": "Jugement d'ouverture",
"nature": "Jugement d'ouverture de liquidation judiciaire",
"date": "2026-09-21"
},
"court": "Greffe du Tribunal de Commerce de Foix",
"source": "Legal notices: France",
"url": "..."
}| Champ | Contenu |
|---|---|
id | Identifiant de l'annonce. |
published_on | Date de publication. |
family | insolvency, conciliation, professional_recovery, deregistration, sale, registration ou other. |
type | initial, correction (rectificatif) ou cancellation (annulation). |
judgment | Famille, nature et date du jugement ; null pour une annonce sans jugement. |
court | Tribunal ou greffe à l'origine de l'annonce. |
source, url | Origine de l'annonce et lien vers sa version officielle. |
Le signal insolvency_proceedings lit ces jugements du plus récent au plus ancien : une clôture termine la procédure ; une ouverture, une conversion en liquidation ou un plan la maintient ouverte. Une annonce annulée est ignorée.
Bénéficiaires effectifs
Le bloc owners, disponible au Royaume-Uni, liste les bénéficiaires effectifs de la société (personnes ayant un contrôle significatif, persons with significant control) inscrits au registre britannique ; leur date figure dans meta.sources. Seules les personnes en cours sont renvoyées, jamais celles qui ont cessé leur contrôle. Les adresses ne sont jamais renvoyées, ni le jour de naissance : seuls le mois et l'année, comme au registre. Le bloc vaut [] si aucune personne n'est déclarée.
En France, owners est signalé not_available_in_country dans meta.includes : le registre des bénéficiaires effectifs n'est plus public depuis le 31 juillet 2024. Son accès est réservé aux autorités, aux professionnels assujettis et aux personnes justifiant d'un intérêt légitime.
curl "https://api.jsonpage.com/v2/companies/GB-00445790?include=owners,sanctions" \
-H "X-API-Key: VOTRE_CLE"{
"data": {
"id": "GB-00445790",
"...": "...",
"owners": [
{
"kind": "individual",
"name": "Mr John Smith",
"nationality": "British",
"country_of_residence": "England",
"birth": { "year": 1970, "month": 5 },
"control": {
"shares": { "min": 50, "max": 75 },
"voting_rights": { "min": 25, "max": 100 },
"appoints_directors": true,
"significant_influence": false,
"via": ["trust"]
},
"natures_of_control": ["ownership-of-shares-50-to-75-percent-as-trust", "voting-rights-more-than-25-percent", "right-to-appoint-and-remove-directors"],
"notified_on": "2016-04-06",
"sanctioned": false
}
],
"sanctions": { "...": "..." }
},
"meta": {
"sources": [
{ "name": "Official company register: United Kingdom", "country": "GB", "kind": "register", "data_date": "2026-10-01" },
{ "name": "Beneficial ownership register: United Kingdom", "country": "GB", "kind": "ownership", "data_date": "2026-09-30" }
],
"includes": { "owners": "ok", "sanctions": "ok" }
}
}Réponse abrégée et illustrative : la personne est fictive.
| Champ | Contenu |
|---|---|
kind | individual (personne physique), corporate_entity (société inscrite à un registre), legal_person (autre personne morale) ou super_secure (personne protégée par le registre britannique). |
name | Nom tel que publié ; null pour super_secure. |
nationality, country_of_residence, birth | Personnes physiques seulement, absents sinon. birth contient year et month, jamais le jour. |
control.shares, control.voting_rights | Tranche détenue en pourcentage, { "min", "max" } (par exemple 25 à 50, 50 à 75, 75 à 100), ou null. |
control.appoints_directors | Droit de nommer ou de révoquer la majorité des administrateurs. |
control.significant_influence | Influence ou contrôle significatif par un autre moyen. |
control.via | firm et/ou trust quand le contrôle est exercé par une société de personnes ou une fiducie ; [] sinon. |
natures_of_control | Codes bruts du registre britannique, tels qu'inscrits. |
notified_on | Date de début du contrôle déclarée au registre britannique. |
identification | Personnes morales seulement, absent sinon : registration_number, country_registered, legal_form. |
sanctioned | true quand le registre britannique indique que la personne est sanctionnée. |
Sanctions
Le bloc sanctions, disponible en France, en Belgique, en Suisse, en Norvège, en Finlande, en Lettonie, en Irlande, en Suède, en Estonie, en Lituanie, en Australie, à Singapour, au Japon et au Royaume-Uni, compare l'entreprise aux principales listes de sanctions internationales et nationales officielles : Union européenne (EU), Nations unies (UN), France (FR), Royaume-Uni (UK) et États-Unis (US). Seules les entités inscrites (personnes morales) sont comparées, jamais les personnes physiques.
curl "https://api.jsonpage.com/v2/companies/FR-552032534?include=sanctions" \
-H "X-API-Key: VOTRE_CLE"{
"data": {
"id": "FR-552032534",
"...": "...",
"sanctions": {
"status": "no_match",
"matches": [],
"lists": [
{ "list": "EU", "name": "Sanctions list: European Union", "published_at": "2026-09-22", "entities": 1776 },
{ "list": "UN", "name": "Sanctions list: United Nations", "published_at": "2026-10-01", "entities": 275 },
{ "list": "FR", "name": "Sanctions list: France", "published_at": "2026-10-02", "entities": 1924 },
{ "list": "United Kingdom", "name": "Sanctions list: United Kingdom", "published_at": "2026-10-02", "entities": 1645 },
{ "list": "US", "name": "Sanctions list: United States", "published_at": "2026-10-02", "entities": 10037 }
]
}
},
"meta": { "sources": [{ "...": "..." }], "includes": { "sanctions": "ok" } }
}Réponse abrégée et illustrative : les nombres d'entités varient avec les listes.
| Statut | Signification |
|---|---|
match | Le numéro de l'entreprise (SIREN, numéro d'entreprise belge, numéro IDE suisse, numéro norvégien, finlandais ou letton, ou company number) est inscrit comme numéro d'immatriculation du même pays. Seule la liste de l'UE indique le pays de ces numéros. |
possible_match | Le nom de l'entreprise est identique à un nom ou à un alias inscrit, une fois ignorés la casse, les accents, la ponctuation et les formes juridiques. À vérifier : un homonyme est possible. |
no_match | Aucune correspondance par numéro ni par nom. |
Chaque élément de matches contient list (EU, UN, FR, UK ou US), reference (référence de l'entité dans sa liste), name (nom principal inscrit), match_type (identifier ou name) et listed_on (date d'inscription, si la liste la donne). lists donne, pour chaque liste, son nom, sa date de publication et le nombre d'entités comparées.
Résultat indicatif. Un no_match n'est pas une garantie : une entité sanctionnée peut être inscrite sous un autre nom, sans numéro, ou contrôlée par une personne inscrite. Ce contrôle ne remplace pas vos propres obligations de vigilance (KYC, lutte contre le blanchiment), comme le précisent les CGV.
Établissements
La route /v2/companies/{id}/establishments renvoie les établissements page par page. Le paramètre limit va de 1 à 100 (20 par défaut). Chaque page contient items et next. Passez la valeur de next au paramètre after pour obtenir la page suivante. Sur la dernière page, next vaut null.
curl "https://api.jsonpage.com/v2/companies/FR-552032534/establishments?limit=50&after=55203253400414" \
-H "X-API-Key: VOTRE_CLE"Chaque établissement contient registry_id (le SIRET en France, le numéro d'unité d'établissement en Belgique, le numéro de la sous-unité en Norvège), name, head_office, status, activity, opened_on et address.
Recherche par nom
GET /v2/companies?q={nom} cherche les entreprises par leur nom. Chaque mot de 2 caractères ou plus doit figurer dans le nom ; le dernier mot peut être un début de mot de 3 lettres ou plus (« dano » trouve DANONE). La casse, les accents et la ponctuation sont ignorés.
curl "https://api.jsonpage.com/v2/companies?q=danone" \
-H "X-API-Key: VOTRE_CLE"
curl "https://api.jsonpage.com/v2/companies?q=tesco&country=GB&status=active&limit=5" \
-H "X-API-Key: VOTRE_CLE"
curl "https://api.jsonpage.com/v2/companies?q=proximus&country=BE" \
-H "X-API-Key: VOTRE_CLE"
curl "https://api.jsonpage.com/v2/companies?q=swatch&country=CH" \
-H "X-API-Key: VOTRE_CLE"{
"data": [
{ "id": "FR-552032534", "country": "FR", "registry_id": "552032534", "name": "DANONE", "status": "active", "...": "..." },
{ "id": "FR-...", "...": "..." }
],
"meta": { "sources": [{ "name": "Official company register: France", "country": "FR", "kind": "register", "data_date": "2026-10-01" }] }
}Réponse abrégée et illustrative.
Paramètres (q, country, status, limit) : nom, type, valeur par défaut et limites dans le détail de la route, parmi les routes disponibles.
Ordre des résultats : d'abord les noms exacts (les formes juridiques comme SA, SAS, SARL, LTD ou PLC sont ignorées dans la comparaison, donc « danone » trouve d'abord DANONE), puis les entreprises actives, puis les sociétés avant les entrepreneurs individuels, enfin la pertinence. Pour un mot très courant, le classement par pertinence s'arrête après 400 ms et les résultats sont servis sans lui, pour rester rapides.
Chaque résultat est une fiche de base, identique à celle de GET /v2/companies/{id} ; include et fields ne s'appliquent pas. La recherche entière compte pour une seule requête, quel que soit le nombre de résultats. Les unités protégées (statut de diffusion « P ») n'ont pas de nom et ne peuvent pas être trouvées par leur nom.
Erreurs propres à la recherche : 400 query_too_short (aucun mot de 2 caractères ou plus), 400 invalid_parameter (status ou limit invalide), 404 country_not_supported (pays sans recherche par nom), 503 search_unavailable (recherche pas encore disponible sur le serveur).
Recherche par numéro
Si vous ne connaissez que le numéro national, GET /v2/companies?registry_id=552032534 liste les entreprises de tous les pays servis qui portent ce numéro, le plus souvent une seule. La réponse est une liste vide si aucune ne correspond.
Requêtes groupées
La route POST /v2/companies/batch accepte jusqu'à 100 identifiants et les blocs voulus. Chaque entreprise du lot compte pour une requête dans la limite du forfait. La réponse garde l'ordre demandé ; chaque élément contient data, ou error si l'entreprise est introuvable ou l'identifiant invalide.
curl -X POST "https://api.jsonpage.com/v2/companies/batch" \
-H "X-API-Key: VOTRE_CLE" \
-H "Content-Type: application/json" \
-d '{ "ids": ["FR-552032534", "FR-000000001"], "include": ["vat"] }'{
"data": [
{ "id": "FR-552032534", "data": { "id": "FR-552032534", "...": "..." } },
{ "id": "FR-000000001", "data": null, "error": { "code": "not_found", "message": "No company with this identifier." } }
],
"meta": { "sources": [{ "name": "Official company register: France", "country": "FR", "kind": "register", "data_date": "2026-10-01" }] }
}
Cache et ETag
Les réponses des routes GET v2 portent un en-tête ETag. Renvoyez sa valeur dans l'en-tête If-None-Match de la requête suivante. Si la fiche n'a pas changé, l'API répond 304 sans corps.
curl -i "https://api.jsonpage.com/v2/companies/FR-552032534" \
-H "X-API-Key: VOTRE_CLE" \
-H 'If-None-Match: "3f9a0c1d2b4e5f6a7b8c9d0e"'Gérer les réponses
Toutes les erreurs v2 ont le même format, avec un code stable, un message en anglais et un lien vers cette documentation.
{
"error": {
"code": "invalid_identifier",
"message": "A French registry number is a 9-digit SIREN.",
"docs": "https://jsonpage.com/docs#erreurs"
}
}| Statut HTTP | Code d'erreur | Signification |
|---|---|---|
400 | invalid_identifier | Identifiant global mal formé ou numéro au mauvais format pour ce pays. |
400 | unknown_include | Bloc inconnu dans include. |
400 | invalid_parameter, invalid_json | Paramètre hors limites ou corps de requête groupée invalide. |
400 | query_too_short | Recherche par nom sans mot de 2 caractères ou plus. |
401 | invalid_api_key | Clé absente ou invalide. |
403 | ip_not_allowed | Requête venant d'une adresse IP absente de la liste autorisée du compte (Pro). |
403 | product_not_enabled | Produit non activé sur le compte ; activez-le depuis le tableau de bord. |
403 | monitor_limit_reached | Limite d'entreprises surveillées du forfait atteinte. |
404 | not_found | Aucune entreprise avec cet identifiant. |
404 | country_not_supported | Pays pas encore servi, ou sans recherche par nom. |
404 | not_available_in_country | Établissements absents du registre de ce pays. |
404 | not_monitored | Entreprise absente de votre liste de surveillance. |
429 | rate_limit_exceeded | Débit du forfait dépassé ; l'en-tête Retry-After donne le délai d'attente. |
429 | daily_limit_reached | Plafond quotidien du forfait Découverte (gratuit) atteint (1 000 requêtes, réinitialisées à minuit UTC). Passez au forfait Standard pour lever le plafond. |
500 | data_unavailable | Données momentanément illisibles ; réessayer. |
503 | server_busy | Service temporairement occupé ; réessayer avec temporisation. |
503 | search_unavailable | Recherche par nom pas encore disponible sur ce serveur. |
503 | monitoring_unavailable | Surveillance pas encore disponible sur ce serveur. |
Débits : Découverte 100/min, Standard 1 000/min, Pro sans plafond de forfait. Il n'y a pas de quota mensuel. Pour préserver la disponibilité, Pro a une limite d'usage raisonnable de 10 000 requêtes/min par compte.
Les limites de débit et de surveillance s'appliquent par produit. Les clés, la durée de conservation du journal, la liste d'adresses IP autorisées, le SLA et le support suivent le meilleur forfait du compte.
Le débit se recharge en continu sur une minute. L'en-tête X-RateLimit-Remaining de chaque réponse indique combien de requêtes restent disponibles. Sur 429 et 503, l'en-tête Retry-After donne le délai d'attente en secondes. Une requête groupée compte pour autant de requêtes que d'entreprises demandées. Le forfait Découverte (gratuit) a en plus un plafond de 1 000 requêtes par jour, réinitialisé à minuit UTC : au-delà, l'API répond 429 daily_limit_reached (champs message, message_en et upgrade_url) avec Retry-After jusqu'à minuit UTC. Les en-têtes X-Daily-Limit et X-Daily-Remaining indiquent le plafond et ce qu'il reste. Les forfaits payants n'ont pas de plafond quotidien.
En-têtes de limite et nouvelles tentatives
Deux en-têtes décrivent l'état de votre débit : X-RateLimit-Remaining, présent sur chaque réponse réussie, donne le nombre de requêtes encore disponibles dans la minute glissante de votre forfait ; Retry-After, envoyé avec 429 rate_limit_exceeded et 503 server_busy, donne le délai d'attente en secondes. Il n'existe pas d'en-tête X-RateLimit-Limit ni X-RateLimit-Reset : la limite de votre forfait figure dans le tableau de bord et sur la page des tarifs.
Politique de nouvelles tentatives recommandée : réessayez uniquement sur 429, 503 et les erreurs réseau, jamais sur une autre erreur 4xx (la requête est à corriger, la renvoyer ne changera rien). Attendez la valeur de Retry-After si elle est présente, sinon un délai exponentiel (1 s, 2 s, 4 s, 8 s…) avec un aléa (jitter) pour éviter que tous vos clients repartent ensemble, et abandonnez après 5 tentatives.
Node.js
async function getWithRetry(url, attempts = 5) {
for (let attempt = 0; attempt < attempts; attempt++) {
let response;
try {
response = await fetch(url, { headers: { "X-API-Key": process.env.JSONPAGE_API_KEY } });
} catch {
response = null; // network error: retry
}
if (response && response.status !== 429 && response.status !== 503) return response; // success or 4xx: no retry
const wait = Number(response?.headers.get("Retry-After")) * 1000 || 2 ** attempt * 1000;
await new Promise((resolve) => setTimeout(resolve, wait + Math.random() * 500)); // jitter
}
throw new Error("Jsonpage API: still unavailable after retries");
}
Être prévenu des changements
Ajoutez des entreprises à votre liste de surveillance : chaque entreprise surveillée est comparée aux registres officiels, aux annonces légales, aux bénéficiaires effectifs et aux listes de sanctions. Chaque différence devient un événement, que vous lisez avec GET /v2/events ou que vous recevez sur votre webhook. L'état enregistré lors de l'ajout sert de référence : aucun événement n'est créé pour le passé.
/v2/monitors/{id}Surveille une entreprise : 201 si elle est ajoutée, 200 si elle l'était déjà.
/v2/monitors/{id}Arrête la surveillance : 204 sans corps.
/v2/monitorsListe les entreprises surveillées, page par page (after, limit de 1 à 1 000, 100 par défaut).
/v2/eventsListe les événements détectés, du plus ancien au plus récent (after, limit de 1 à 1 000, 100 par défaut).
Chaque appel à ces routes compte pour une requête, comme les autres appels. Les livraisons de webhooks ne sont pas comptées.
curl -X PUT "https://api.jsonpage.com/v2/monitors/FR-552032534" \
-H "X-API-Key: VOTRE_CLE"{ "data": { "company_id": "FR-552032534", "created": true } }
curl "https://api.jsonpage.com/v2/monitors?limit=100" \
-H "X-API-Key: VOTRE_CLE"{
"data": [
{ "company_id": "FR-552032534", "created_at": "2026-10-02T09:12:44Z", "checked_at": "2026-10-02T10:00:03Z" }
],
"next": null,
"meta": { "count": 1, "limit": 1000 }
}
checked_at vaut null tant que l'entreprise n'a pas encore été comparée. meta.count est le nombre d'entreprises surveillées et meta.limit la limite de votre forfait. Quand une page est pleine, passez next au paramètre after ; sur la dernière page, next vaut null.
Limites par forfait
| Forfait | Entreprises surveillées |
|---|---|
| Découverte | 2 |
| Standard | 1 000 |
| Pro | 10 000 |
Les webhooks sont inclus dans tous les forfaits. Au-delà de la limite, PUT renvoie 403 monitor_limit_reached : limite du forfait atteinte, passez au forfait supérieur pour surveiller plus d'entreprises. Vous êtes alerté par email à 80 % et à 100 % de la limite. Les entreprises déjà surveillées continuent de fonctionner et en ajouter une à nouveau renvoie toujours 200. L'import CSV du tableau de bord ajoute des entreprises jusqu'à la limite et indique combien ont été ignorées.
Lire les événements
Les événements sont renvoyés du plus ancien au plus récent. Leurs identifiants evt_… sont croissants, sans être forcément consécutifs. Passez l'identifiant du dernier événement traité au paramètre after : next donne l'identifiant du dernier événement de la page, ou null s'il n'y a pas de nouvel événement. Dans ce cas, gardez votre propre curseur pour l'appel suivant. Les événements restent lisibles 90 jours.
curl "https://api.jsonpage.com/v2/events?after=evt_41&limit=100" \
-H "X-API-Key: VOTRE_CLE"{
"data": [
{
"id": "evt_42",
"type": "company.address_changed",
"company_id": "FR-552032534",
"detected_at": "2026-10-03T04:00:00Z",
"data": {
"before": "75 AV DE LA GRANDE ARMEE 75116 PARIS",
"after": "7 RUE HENRI SAINTE-CLAIRE DEVILLE 92500 RUEIL-MALMAISON"
}
}
],
"next": "evt_42"
}Réponse illustrative.
Types d'événements
| Type | Quand | data |
|---|---|---|
company.status_changed | Le statut change (active, closed, unknown). | before, after |
company.name_changed | Le nom change. | before, after |
company.address_changed | L'adresse formatée du siège change. | before, after |
company.activity_changed | Le code d'activité national change. | before, after |
company.legal_form_changed | Le code de forme juridique change. | before, after |
company.removed_from_register | L'entreprise n'est plus dans le registre. | {} |
signal.added | Un signal apparaît. | code, since, detail |
signal.removed | Un signal disparaît. | code |
legal_event.published | Une nouvelle annonce légale est publiée (France). | event : même objet que le bloc legal_events |
sanctions.changed | Le statut ou les correspondances du contrôle des sanctions changent. | before, after, added, removed, matches |
owner.added | Une personne ayant un contrôle significatif est ajoutée (Royaume-Uni). | kind, name |
owner.removed | Une personne ayant un contrôle significatif n'est plus déclarée (Royaume-Uni). | kind, name |
Les signaux suivis sont insolvency_proceedings, liquidation, strike_off_proposed, accounts_overdue, confirmation_statement_overdue et dormant. closed et recently_created ne créent jamais d'événement de signal : la fermeture est déjà signalée par company.status_changed. Pour sanctions.changed, before et after sont des statuts (no_match, possible_match, match), added et removed listent les correspondances sous la forme LISTE:référence, et matches reprend les correspondances actuelles, au format du bloc sanctions. Un champ que le pays ne fournit pas ne crée jamais d'événement.
{
"id": "evt_57",
"type": "sanctions.changed",
"company_id": "GB-01234567",
"detected_at": "2026-10-03T05:00:00Z",
"data": {
"before": "no_match",
"after": "match",
"added": ["US:EXAMPLE-1"],
"removed": [],
"matches": [{ "list": "US", "reference": "EXAMPLE-1", "name": "EXAMPLE TRADING LTD", "match_type": "identifier", "listed_on": "2026-10-02", "programs": ["RUSSIA-EO14024"] }]
}
}Événement fictif.
Un changement n'est détecté qu'après sa publication par la source officielle. La surveillance est fournie au mieux, sans garantie d'exhaustivité ni de délai, comme le précisent les CGV.
Webhooks
Configurez votre webhook dans le tableau de bord, section Surveillance : une adresse HTTPS par compte, sur un hôte public. Les adresses privées, de bouclage (loopback) et lien-local sont refusées, et les redirections ne sont pas suivies. Le tableau de bord affiche le secret de signature whsec_…, que vous pouvez régénérer, et permet d'envoyer un événement de test test signé. Cet événement de test n'apparaît pas dans GET /v2/events ; le bouton « Envoyer un événement de test » affiche le statut HTTP, la durée et l'erreur éventuelle, et l'envoi est limité à 10 par heure.
Chaque événement est envoyé par une requête POST dont le corps JSON est l'objet événement, avec ces en-têtes :
POST /webhooks/jsonpage HTTP/1.1
Content-Type: application/json
Jsonpage-Event-Id: evt_42
Jsonpage-Signature: t=1791000000,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd
{"id":"evt_42","type":"company.address_changed","company_id":"FR-552032534","detected_at":"2026-10-03T04:00:00Z","data":{"before":"…","after":"…"}}
Vérifier la signature
Chaque requête est signée avec le secret whsec_… de votre webhook. Ne traitez un événement qu'après avoir vérifié sa signature. Le format de l'en-tête est Jsonpage-Signature: t=<secondes Unix>,v1=<hex> ; l'algorithme est HMAC-SHA256, calculé avec votre secret sur la chaîne <t>.<corps brut> (l'heure t, un point, puis les octets reçus tels quels), et encodé en hexadécimal.
Étapes : lisez le corps brut avant tout décodage JSON, extrayez t et v1, recalculez le HMAC, comparez-le à v1 en temps constant, puis refusez la requête si t s'écarte de plus de 5 minutes (300 secondes) de votre horloge, pour bloquer le rejeu. Répondez 400 si la signature est invalide.
Node.js
import { createHmac, timingSafeEqual } from "node:crypto";
// rawBody: the request body as received (Buffer or string), header: the Jsonpage-Signature value.
export function verify(rawBody, header = "", secret = process.env.JSONPAGE_WEBHOOK_SECRET) {
const parts = Object.fromEntries(header.split(",").map((p) => p.split("=")));
const t = Number(parts.t);
if (!t || !parts.v1 || Math.abs(Date.now() / 1000 - t) > 300) return false;
const expected = createHmac("sha256", secret).update(`${parts.t}.`).update(rawBody).digest("hex");
return parts.v1.length === expected.length && timingSafeEqual(Buffer.from(parts.v1), Buffer.from(expected));
}
Python
import hashlib
import hmac
import os
import time
SECRET = os.environ["JSONPAGE_WEBHOOK_SECRET"].encode() # whsec_…
def verify(raw_body: bytes, header: str) -> bool:
parts = dict(p.split("=", 1) for p in header.split(",") if "=" in p)
try:
t = int(parts["t"])
except (KeyError, ValueError):
return False
if abs(time.time() - t) > 300:
return False
signed = parts["t"].encode() + b"." + raw_body
expected = hmac.new(SECRET, signed, hashlib.sha256).hexdigest()
return hmac.compare_digest(expected, parts.get("v1", ""))
PHP
<?php
function verify(string $rawBody, string $header, string $secret): bool {
$parts = [];
foreach (explode(',', $header) as $part) {
[$key, $value] = array_pad(explode('=', $part, 2), 2, '');
$parts[$key] = $value;
}
$t = (int) ($parts['t'] ?? 0);
if ($t === 0 || empty($parts['v1']) || abs(time() - $t) > 300) {
return false;
}
$expected = hash_hmac('sha256', $t . '.' . $rawBody, $secret);
return hash_equals($expected, $parts['v1']);
}
// $rawBody = file_get_contents('php://input');
// $header = $_SERVER['HTTP_JSONPAGE_SIGNATURE'] ?? '';
Ruby
require "openssl"
# raw_body: the request body as received, header: the Jsonpage-Signature value.
def verify(raw_body, header, secret)
parts = header.to_s.split(",").map { |part| part.split("=", 2) }.to_h
t = parts["t"].to_i
return false if t.zero? || parts["v1"].nil? || (Time.now.to_i - t).abs > 300
expected = OpenSSL::HMAC.hexdigest("SHA256", secret, "#{t}.#{raw_body}")
expected.bytesize == parts["v1"].bytesize && OpenSSL.fixed_length_secure_compare(expected, parts["v1"])
end
Livraisons et nouvelles tentatives
Une réponse 2xx dans les 15 secondes vaut succès. Sinon (autre code, délai dépassé, connexion impossible), la livraison est retentée après 1 min, 5 min, 30 min, 2 h, 6 h, 12 h et 24 h, puis marquée en échec. Un événement en échec reste lisible avec GET /v2/events. Une livraison peut arriver plusieurs fois ou dans le désordre : dédupliquez sur l'identifiant de l'événement (id ou en-tête Jsonpage-Event-Id) et répondez vite, en traitant l'événement après la réponse si besoin.
Erreurs de la surveillance
400 invalid_identifier (identifiant global mal formé), 400 invalid_parameter (limit ou after invalide), 403 monitor_limit_reached (limite du forfait atteinte), 404 not_found (PUT d'une entreprise absente du registre), 404 not_monitored (DELETE d'une entreprise que vous ne surveillez pas), 503 monitoring_unavailable (surveillance pas encore disponible sur le serveur).
Compléter et vérifier une saisie
Deux routes pour les formulaires d'inscription de clients ou de fournisseurs, les factures (SIRET et TVA du fournisseur) et les contrôles d'identité d'entreprise simples : /v2/autocomplete propose des entreprises pendant la saisie, /v2/validate vérifie les identifiants saisis. Chaque appel compte pour une requête.
Sans coder : les plugins pour WooCommerce, WordPress, Shopify et PrestaShop utilisent ces deux routes et ajoutent l'autocomplétion d'entreprise et la TVA vérifiée à votre boutique.
/v2/autocomplete?q=…Suggère des entreprises pendant la saisie, à partir de l'index des noms.
GET/v2/validate?id=…&siret=…&vat=…Vérifie en un appel un identifiant, un SIRET et un numéro de TVA.
Autocomplétion
GET /v2/autocomplete répond à partir de l'index des noms seulement, sans lire la fiche complète, en quelques millisecondes côté serveur. Les mots suivent les règles de la recherche par nom : chaque mot de 2 caractères ou plus doit figurer dans le nom, le dernier peut être un début de mot. Si le texte saisi est un numéro de registre (SIREN, SIRET, numéro d'entreprise belge, numéro IDE suisse, numéro d'organisation norvégien, Y-tunnus finlandais, numéro d'enregistrement letton, numéro ABN australien, UEN singapourien, numéro d'entreprise japonais ou company number britannique), l'entreprise correspondante est renvoyée directement ; un SIRET renvoie son entreprise.
curl "https://api.jsonpage.com/v2/autocomplete?q=carrefour&limit=5" \
-H "X-API-Key: VOTRE_CLE"{
"data": [
{ "id": "FR-652014051", "name": "CARREFOUR", "status": "active", "postal_code": "91300", "city": "MASSY", "kind": "company" },
{ "id": "FR-...", "...": "..." }
]
}Réponse abrégée et illustrative.
Paramètres (q, country, status, limit) : nom, type, valeur par défaut et limites dans le détail de la route, parmi les routes disponibles.
Chaque suggestion contient id (l'identifiant global à réutiliser), name, status, postal_code et city (null si inconnus) et kind : company pour une société, person pour un entrepreneur individuel. L'ordre est celui de la recherche par nom : noms exacts, puis entreprises actives, puis sociétés avant entrepreneurs individuels. Pour la fiche complète, appelez ensuite GET /v2/companies/{id} avec l'id choisi.
Erreurs : 400 query_too_short (aucun mot de 2 caractères ou plus), 400 invalid_parameter (status ou limit invalide), 404 country_not_supported (pays sans recherche par nom). Les réponses portent un ETag, comme les autres routes GET v2.
Validation
GET /v2/validate accepte id (identifiant global, par exemple FR-552032534), siret et vat, dans n'importe quelle combinaison, avec au moins l'un des trois. Les espaces, points et tirets du SIRET et du numéro de TVA sont ignorés. La réponse dit si tout est valide, détaille chaque contrôle et renvoie la fiche de base de l'entreprise avec son adresse.
curl "https://api.jsonpage.com/v2/validate?id=FR-652014051&vat=FR14652014051" \
-H "X-API-Key: VOTRE_CLE"{
"data": {
"valid": true,
"checks": [
{ "code": "id_format", "ok": true, "value": "FR-652014051" },
{ "code": "siren_key", "ok": true, "value": "652014051" },
{ "code": "vat_format", "ok": true, "value": "FR14652014051" },
{ "code": "identifiers_match", "ok": true, "value": "FR-652014051" },
{ "code": "company_exists", "ok": true, "value": "FR-652014051" },
{ "code": "company_active", "ok": true, "value": "active" },
{ "code": "vat_registered", "ok": true, "value": "valid" }
],
"company": {
"id": "FR-652014051",
"country": "FR",
"registry_id": "652014051",
"name": "CARREFOUR",
"status": "active",
"...": "...",
"address": { "...": "...", "postal_code": "91300", "city": "MASSY" },
"vat": { "number": "FR14652014051", "status": "valid", "checked_at": "...", "source": "EU VAT check" }
}
}
}Réponse abrégée : les champs de base sont omis ici.
| Contrôle | Vérifie |
|---|---|
id_format | L'identifiant global est bien formé pour un pays servi ; en Suisse, en Norvège et en Finlande, la clé de contrôle modulo 11 du numéro IDE, du numéro d'organisation ou du Y-tunnus est vérifiée. En Australie, la clé de contrôle modulo 89 de l'ABN est vérifiée aussi. À Singapour, la lettre de contrôle de l'UEN est vérifiée aussi. Au Japon, le chiffre de contrôle du numéro d'entreprise est vérifié aussi. |
siren_key | La clé de contrôle (Luhn) du SIREN est correcte (France). |
siret_format | Le SIRET a 14 chiffres. |
siret_key | La clé de contrôle (Luhn) du SIRET est correcte ; les établissements de La Poste suivent leur propre règle. |
siret_exists | L'établissement existe au registre. |
siret_active | L'établissement est actif. |
vat_format | Le numéro de TVA est bien formé : en France, celui calculé à partir du SIREN ; en Belgique, BE suivi d'un numéro d'entreprise dont la clé est correcte ; en Suisse, le numéro IDE dont la clé est correcte, suivi de MWST, TVA ou IVA ; en Norvège, NO, un numéro d'organisation dont la clé est correcte et MVA ; en Finlande, FI suivi des 8 caractères d'un Y-tunnus dont la clé est correcte ; en Lettonie, LV suivi de 11 chiffres ; en Suède, SE, un numéro d'organisation dont la clé est correcte et 01 ; en Estonie, EE suivi de 9 chiffres ; en Lituanie, LT suivi des 9 chiffres du code. |
vat_country_supported | Le pays du numéro de TVA est pris en charge (France, Belgique, Suisse, Norvège, Finlande, Lettonie, Suède, Estonie ou Lituanie) ; toujours en échec pour un autre pays. |
identifiers_match | Tous les identifiants désignent la même entreprise. |
company_exists | L'entreprise existe dans le registre. |
company_active | L'entreprise est active. |
vat_registered | Statut de vérification du numéro de TVA : valid, pending (vérification en cours, réessayez quelques secondes plus tard), not_verified et unavailable (vérification non aboutie) passent ; invalid échoue. |
valid vaut true seulement si tous les contrôles renvoyés sont réussis. Seuls les contrôles utiles sont renvoyés : un contrôle qui dépend d'un autre en échec est omis (un SIRET mal formé n'est pas cherché). company est renvoyé même quand l'établissement ou l'entreprise est fermé, pour dire ce que désignent les identifiants ; il vaut null si les identifiants ne désignent pas la même entreprise ou si l'entreprise est introuvable. La réponse n'est pas mise en cache plus de 60 secondes (Cache-Control: private, max-age=60).
Exemple en Belgique : un numéro de TVA belge suffit, l'API en déduit l'entreprise. Les points sont ignorés, donc BE0417.497.106 est accepté.
curl "https://api.jsonpage.com/v2/validate?vat=BE0417497106" \
-H "X-API-Key: VOTRE_CLE"{
"data": {
"valid": true,
"checks": [
{ "code": "vat_country_supported", "ok": true, "value": "BE0417497106" },
{ "code": "vat_format", "ok": true, "value": "BE0417497106" },
{ "code": "company_exists", "ok": true, "value": "BE-0417497106" },
{ "code": "company_active", "ok": true, "value": "active" },
{ "code": "vat_registered", "ok": true, "value": "valid" }
],
"company": {
"id": "BE-0417497106",
"country": "BE",
"registry_id": "0417497106",
"name": "Anheuser-Busch InBev",
"status": "active",
"...": "...",
"address": { "...": "...", "postal_code": "1000", "city": "Bruxelles" },
"vat": { "number": "BE0417497106", "status": "valid", "checked_at": "...", "source": "EU VAT check" }
}
}
}
Exemple en Suisse : un numéro de TVA suisse suffit aussi, avec ou sans points, espaces et mention MWST, TVA ou IVA.
curl "https://api.jsonpage.com/v2/validate?vat=CHE-105.909.036+MWST" \
-H "X-API-Key: VOTRE_CLE"{
"data": {
"valid": true,
"checks": [
{ "code": "vat_country_supported", "ok": true, "value": "CHE105909036MWST" },
{ "code": "vat_format", "ok": true, "value": "CHE105909036MWST" },
{ "code": "company_exists", "ok": true, "value": "CH-105909036" },
{ "code": "company_active", "ok": true, "value": "active" },
{ "code": "vat_registered", "ok": true, "value": "valid" }
],
"company": {
"id": "CH-105909036",
"country": "CH",
"registry_id": "105909036",
"name": "Nestlé AG",
"status": "active",
"...": "...",
"address": { "...": "...", "postal_code": "6330", "city": "Cham" },
"vat": { "number": "CHE-116.281.710 MWST", "status": "valid", "checked_at": "...", "source": "EU VAT check" }
}
}
}Nestlé est membre d'un groupe TVA : le numéro saisi désigne bien l'entreprise, et le bloc vat donne le numéro du groupe, avec lequel elle facture.
Exemple en Norvège, en Finlande, en Lettonie, en Suède, en Estonie ou en Lituanie : un numéro de TVA suffit aussi, NO923609016MVA (avec ou sans espaces), FI01120389 ou LV40003245752. Pour un numéro norvégien, vat_registered vaut valid si l'unité est inscrite à la TVA et échoue sinon.
curl "https://api.jsonpage.com/v2/validate?vat=NO923609016MVA" \
-H "X-API-Key: VOTRE_CLE"
curl "https://api.jsonpage.com/v2/validate?id=FR-652014051&siret=55203253400414" \
-H "X-API-Key: VOTRE_CLE"{
"data": {
"valid": false,
"checks": [
{ "code": "id_format", "ok": true, "value": "FR-652014051" },
{ "code": "siren_key", "ok": true, "value": "652014051" },
{ "code": "siret_format", "ok": true, "value": "55203253400414" },
{ "code": "siret_key", "ok": true, "value": "55203253400414" },
{ "code": "identifiers_match", "ok": false, "value": "FR-552032534" }
],
"company": null
}
}Le SIRET appartient à une autre entreprise (FR-552032534) : les identifiants ne concordent pas.
Erreur : 400 invalid_parameter si aucun des trois paramètres n'est donné. Un identifiant mal formé n'est pas une erreur : il donne id_format en échec.
Gérer son compte dans le tableau de bord
Ces fonctions s'utilisent dans le tableau de bord, connecté à votre compte : ce ne sont pas des routes de l'API publique et elles ne demandent pas de clé API.
Clés API
Vous pouvez avoir jusqu'à 1, 3 ou 10 clés actives en même temps selon le forfait (Découverte (gratuit), Standard, Pro), chacune avec un nom. Renouveler une clé crée une nouvelle clé du même nom : l'ancienne reste valable 24 heures, le temps de la remplacer sur vos serveurs, puis elle est désactivée. Une clé révoquée est refusée aussitôt avec 401 invalid_api_key.
Adresses IP autorisées (Pro)
Avec Pro, limitez l'usage de vos clés à 20 adresses IP ou plages CIDR au plus, en IPv4 ou en IPv6 (par exemple 203.0.113.10 ou 2001:db8::/32). La liste s'applique à toutes les clés du compte ; une requête venant d'une autre adresse reçoit 403 ip_not_allowed. Une liste vide accepte toutes les adresses.
Journal des requêtes
Le journal liste chaque appel à l'API (date, méthode, chemin avec ses paramètres, code de statut et durée) sur 7 jours en Découverte, 30 jours en Standard et 90 jours en Pro. Le contenu des réponses n'est pas conservé.
Enrichir un fichier
Déposez un fichier CSV et choisissez la colonne des identifiants : SIREN, SIRET, numéro de TVA ou identifiant global. Seule cette colonne est envoyée. Le fichier complété, en CSV séparé par des points-virgules, contient input, id, found, name, status, legal_form, activity_code, activity_label, nace, address, postal_code, city, country, vat_number, vat_status, incorporated_on, closed_on, signals, insolvency, sanctions, error. Un fichier compte jusqu'à 10 000 lignes en Standard et 100 000 en Pro ; le forfait Découverte permet d'enrichir 100 lignes par mois. Chaque ligne compte pour une requête. Un fichier est traité à la fois par compte ; le résultat reste téléchargeable 7 jours.
Listes d'entreprises (Standard et Pro)
Filtrez les entreprises françaises par activité (code NAF comme 62.01Z ou division comme 62), département (69, 2A, 974), catégorie juridique et période de création. L'aperçu donne le nombre d'entreprises et dix exemples ; le fichier CSV contient siren, id, name, naf, naf_label, legal_category, legal_category_label, created_at, address, postal_code, city, department. Quota : 1 000 lignes par mois civil en Standard, 50 000 en Pro. Seules les entreprises actives à diffusion publique sont incluses, jamais les entrepreneurs individuels. Vous restez responsable du respect du RGPD et des règles de prospection (voir les CGV).
Exports de vos données (Standard et Pro)
Vos entreprises surveillées, vos événements et votre journal des requêtes se téléchargent en CSV, lisibles directement par les tableurs.
Une intégration fiable
- Enregistrez l'identifiant global renvoyé dans
data.id(FR-552032534,BE-0417497106,CH-101374515,NO-923609016,FI-01120389,LV-40003245752,IE-104547,SE-5560427220,EE-10137025,LT-110053842,AU-51824753556,SG-196800306E,JP-1180301018771,GB-00445790) et réutilisez-le tel quel. Vérifiez d'abord un numéro saisi par un utilisateur avec/v2/validate. - Ne demandez dans
includeque les blocs utiles : un bloc non demandé n'est ni lu ni calculé, et la réponse reste légère. - Conservez la clé API côté serveur. Pour la changer, renouvelez-la : l'ancienne reste valable 24 heures.
- Sur
429ou503, attendez le délaiRetry-After, puis réessayez avec une attente progressive. - Renvoyez l'
ETagdansIf-None-Matchpour ne pas relire une fiche inchangée, et lisez plusieurs entreprises d'un coup avecPOST /v2/companies/batch. - Pour suivre des clients ou des fournisseurs, préférez la surveillance (webhooks ou
GET /v2/events) à la relecture régulière de leurs fiches. - Respectez le statut de diffusion partielle
Pdes entreprises françaises (local.diffusion_status) et les conditions d'utilisation des données.
Voir aussi la page SLA pour l'engagement de disponibilité du forfait Pro.
Source des données
Jsonpage s'appuie sur les registres officiels des entreprises des pays couverts et sur des informations réglementaires publiques : procédures collectives, listes de sanctions internationales, statut des numéros de TVA. Jsonpage rassemble, contrôle, harmonise et enrichit ces informations pour offrir un format unique quel que soit le pays, avec des identifiants vérifiés et des statuts lisibles.
Chaque réponse indique dans meta.sources la date des données utilisées, et l'état du service est consultable à tout moment.