v1 · stable

API publique OpenSirene

Le registre des entreprises françaises, accessible en JSON. Gratuit, sans clé API, sans limite quotidienne. Construit sur les mêmes données ouvertes que le site.

$curlhttps://api.opensirene.fr/v1/search?q=L%27Oreal

Démarrage rapide

une requête, trois langages

L'exemple ci-dessous récupère la fiche complète de L'Oréal (SIREN 552 081 317) — identité, siège, établissements actifs et dirigeants en exercice. Aucune authentification n'est nécessaire.

curl -s "https://api.opensirene.fr/v1/companies/552081317" \
  -H "Accept: application/json" | jq

Endpoints disponibles

Toutes les routes sont préfixées par /v1. Documentation interactive complète sur Swagger UI.

GET/v1/companies/{siren}

Fiche d'une entreprise

Identité, forme juridique résolue, NAF, tranche d'effectif, siège, jusqu'à 100 établissements actifs et mandataires en exercice.

GET/v1/establishments/{siret}

Fiche d'un établissement

Adresse complète, géolocalisation BAN, conventions collectives applicables (IDCC) et mini-objet société de rattachement.

GET/v1/search?q=…

Recherche full-text

Texte libre tolérant aux fautes (full-text français + ILIKE) ou SIREN exact. Paginé (jusqu’à 100 résultats par page).

GET/v1/naf-codes

Référentiel NAF

~700 codes NAF rév.2 (INSEE) avec libellé. Filtre optionnel par préfixe de code ou ILIKE sur le libellé.

GET/v1/formes-juridiques

Référentiel formes juridiques

~350 catégories juridiques INSEE (SAS, SARL, SA, etc.) avec libellé. Même mode de filtrage que les codes NAF.

Caractéristiques

100% gratuit

Aucune clé API, aucune inscription. Open data sous Licence Ouverte Etalab 2.0.

Read-only

Uniquement des verbes GET. Pas de POST/PUT/DELETE — vos appels ne modifient jamais rien.

JSON moderne

Réponses toujours JSON. Listes enveloppées en {data, meta}. Erreurs uniformisées en {error, message}.

CORS ouvert

Access-Control-Allow-Origin: * pour les méthodes GET. Appelable directement depuis un navigateur.

Rate limit raisonnable

60 requêtes par minute et par IP. Plus si vous nous écrivez avec un usage justifié.

OpenAPI 3.1

Spec téléchargeable, génération de clients dans n’importe quel langage via openapi-generator.

Format des réponses

Liste paginée

{
  "data": [
    { "siren": "552081317", "denomination": "L'OREAL", … }
  ],
  "meta": {
    "page": 1,
    "per_page": 25,
    "total": 1943,
    "total_pages": 78
  }
}

Erreur uniforme

{
  "error": "company_not_found",
  "message": "Aucune entreprise avec le SIREN 999999999"
}
Codes stables
company_not_foundestablishment_not_foundvalidation_errorinternal_error

Limites & bonnes pratiques

  • Rate limit — environ 60 requêtes par minute et par IP. En cas de dépassement, vous recevez un 429. Un backoff exponentiel suffit dans 99% des cas.
  • Statement timeout 5s — chaque requête côté DB est bornée à 5 secondes. Les recherches très larges (ex: q="société") peuvent timeout. Affinez votre requête avec un préfixe de SIREN ou un mot-clé plus discriminant.
  • 📦Établissements bornés à 100 — la fiche entreprise renvoie au maximum les 100 établissements actifs les plus récents. Le total est exposé dans etablissements_actifs_count. Un endpoint paginé dédié arrivera si le besoin se confirme.
  • 🔓Pas d'auth, mais traçable — vos requêtes ne nécessitent pas de clé. En revanche, les logs d'accès (IP, path) sont conservés pour la sécurité. N'automatisez pas un scraping massif sans nous prévenir.

Pour aller plus loin