Le format du SIREN et du SIRET
Le SIREN identifie une entreprise (l'unité légale) avec 9 chiffres. Le SIRET identifie un de ses établissements avec 14 chiffres : le SIREN suivi d'un numéro interne de 5 chiffres (NIC). Les deux se terminent par une clé de contrôle calculée avec l'algorithme de Luhn, ce qui permet de repérer une faute de frappe sans interroger de base.
| Numéro | Longueur | Désigne | Exemple |
|---|---|---|---|
| SIREN | 9 chiffres | L'entreprise (unité légale) | 552032534 |
| SIRET | 14 chiffres | Un établissement : SIREN + NIC (5 chiffres) | 55203253400646 |
L'API accepte les numéros tels que vos utilisateurs les saisissent, avec espaces, points ou tirets. Dans les réponses, chaque entreprise porte un identifiant global : le code pays, un tiret, puis le numéro national (FR-552032534). Pour le détail du format, voir la différence entre SIREN et SIRET et le numéro SIREN.
Lire la fiche d'une entreprise par son SIREN
Une requête GET /v2/companies/FR-{siren} renvoie la fiche. Les blocs supplémentaires (adresse, TVA, signaux, annonces légales, établissements) se demandent avec le paramètre include, pour ne payer en temps de réponse que ce que vous lisez.
curl "https://api.jsonpage.com/v2/companies/FR-552032534?include=address" \
-H "X-API-Key: $JSONPAGE_API_KEY"
{
"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.)" },
"activity": { "nace": "70.10", "code": "70.10Z", "label": "Activités des sièges sociaux" },
"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"
}
},
"meta": {
"sources": [{ "name": "Official company register: France", "country": "FR", "kind": "register", "data_date": "2026-09-29" }],
"includes": { "address": "ok" }
}
}
Réponse abrégée : les identifiants de nomenclature (scheme) des blocs legal_form et activity sont omis ici.
Pour un établissement, GET /v2/companies/FR-{siren}/establishments liste ceux de l'entreprise, page par page . Toutes les routes sont décrites dans la documentation et dans la spécification OpenAPI.
Rechercher par nom et compléter un formulaire
GET /v2/companies?q=danone recherche les entreprises par nom, et GET /v2/companies?registry_id=552032534 retrouve une entreprise à partir de son seul numéro national. Pour un champ de formulaire, GET /v2/autocomplete renvoie des suggestions légères (nom, ville, code postal) pendant la frappe ; appelez-la depuis votre serveur pour garder la clé secrète.
curl "https://api.jsonpage.com/v2/autocomplete?q=carrefour&limit=1" \
-H "X-API-Key: $JSONPAGE_API_KEY"
{
"data": [
{ "id": "FR-652014051", "name": "CARREFOUR", "status": "active", "postal_code": "91300", "city": "MASSY", "kind": "company" }
]
}
Vérifier un SIREN ou un SIRET saisi
GET /v2/validate contrôle en un appel les numéros d'un formulaire : format, clé de contrôle, existence, entreprise active, et concordance entre le SIREN, le SIRET et le numéro de TVA. La réponse est 200 même quand une valeur est invalide : valid indique si tous les contrôles sont réussis, checks détaille chacun.
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": "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", "name": "CARREFOUR", "status": "active", "...": "..." }
}
}
Un identifiant mal formé renvoie l'erreur 400 invalid_identifier, un identifiant inconnu 404 not_found. Pour vérifier un numéro de TVA, voir la page API de vérification de TVA intracommunautaire.
Exemples dans votre langage
La clé est lue dans l'environnement ; elle reste sur votre serveur.
JavaScript
const res = await fetch("https://api.jsonpage.com/v2/companies/FR-552032534", {
headers: { "X-API-Key": process.env.JSONPAGE_API_KEY },
});
const { data } = await res.json();
console.log(data.name, data.status);
Python
import os, requests
res = requests.get(
"https://api.jsonpage.com/v2/companies/FR-552032534",
headers={"X-API-Key": os.environ["JSONPAGE_API_KEY"]},
)
data = res.json()["data"]
print(data["name"], data["status"])
PHP
<?php
$ch = curl_init("https://api.jsonpage.com/v2/companies/FR-552032534");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["X-API-Key: " . getenv("JSONPAGE_API_KEY")],
]);
$data = json_decode(curl_exec($ch), true)["data"];
echo $data["name"], " ", $data["status"];
Ruby
require "net/http"
require "json"
uri = URI("https://api.jsonpage.com/v2/companies/FR-552032534")
req = Net::HTTP::Get.new(uri, "X-API-Key" => ENV["JSONPAGE_API_KEY"])
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)["data"]
puts "#{data["name"]} #{data["status"]}"
Limites et prix
Les forfaits sont à prix fixe : Découverte à 0 €, Standard à 19 € HT par mois et Pro à 129 € HT par mois. Le débit est de 100, 1 000 et 10 000 requêtes par minute, sans quota mensuel ; le forfait Découverte (gratuit) est en plus plafonné à 1 000 requêtes par jour. Prix fixe, pas de crédits, pas de dépassement facturé. Le détail est sur la page Tarifs.
Questions fréquentes
Quelle est la différence entre un SIREN et un SIRET ?+
Le SIREN a 9 chiffres et identifie l'entreprise. Le SIRET a 14 chiffres et identifie un de ses établissements : c'est le SIREN suivi d'un numéro interne de 5 chiffres.
L'API accepte-t-elle un SIREN saisi avec des espaces ?+
Oui. Les espaces, points et tirets du SIREN et du SIRET sont ignorés ; un numéro mal formé renvoie l'erreur invalid_identifier.
Comment retrouver un SIREN à partir d'un nom d'entreprise ?+
Avec la recherche par nom, GET /v2/companies?q=, ou avec l'autocomplétion, GET /v2/autocomplete, pensée pour les champs de formulaire.
L'API signale-t-elle une entreprise fermée ?+
Oui. Chaque fiche porte son statut (active ou closed) et sa date de fermeture lorsqu'elle existe, et la route de validation indique si l'entreprise est active.
Y a-t-il un quota mensuel de requêtes ?+
Non. Les limites portent sur le débit par minute : 100 requêtes avec le forfait Découverte (gratuit), 1 000 avec Standard et 10 000 avec Pro. Prix fixe, pas de crédits, pas de dépassement facturé. Seul le forfait Découverte (gratuit) est en plus plafonné à 1 000 requêtes par jour, réinitialisées à minuit UTC.
Pour aller plus loin
- DOCUMENTATIONDocumentation de l'APIToutes les routes, leurs paramètres, leurs réponses et leurs erreurs.
- TVAAPI de vérification de TVA intracommunautaireFormats par pays, statut valide ou invalide et exemple de réponse.
- COMPARERChoisir une API de données entreprisesCouverture, prix fixe ou crédits, fraîcheur, webhooks et documentation.