CompanyFrance

API v1 · OpenAPI 3.1 · stable

Référence API

Interrogez les données des entreprises françaises (SIRENE/INSEE + RNE/INPI) depuis votre application : recherche, unités légales, établissements, dirigeants et comptes annuels. Une seule URL de base, authentification par paire de clés.

Vue d'ensemble

Une API REST sans état, JSON en entrée/sortie, versionnée. Toutes les routes sont préfixées par /v1 et renvoient l'enveloppe { success, data, timestamp }.

  • URL de basehttps://companyfrance.fr/api/v1
  • Versionv1 · OpenAPI 3.1
  • Formatapplication/json
  • AuthentificationX-API-Key + X-API-Secret

Données issues de SIRENE/INSEE (open data) enrichies du RNE/INPI. Le contrat complet est disponible au format OpenAPI 3.1.

Authentification

Chaque requête doit inclure votre paire de clés API dans les en-têtes HTTP. La clé publique identifie votre compte ; la clé secrète l'authentifie. Ne partagez jamais votre clé secrète côté navigateur.

curl "https://companyfrance.fr/api/v1/me" \
  -H "X-API-Key: pk_live_xxxxxxxxxxxx" \
  -H "X-API-Secret: sk_live_xxxxxxxxxxxxxxxxxxxxxxxx"

En-têtes requis

  • X-API-Key clé publique, format pk_live_…
  • X-API-Secret clé secrète, format sk_live_… (à garder côté serveur)

Créez et révoquez vos clés depuis /dashboard/api/keys.

Format des erreurs

Toutes les erreurs renvoient un code HTTP 4xx ou 5xx et un corps JSON avec success: false, un champ error (message lisible) et un champ code (identifiant machine).

application/json
{
  "success": false,
  "error": "No legal unit found for this SIREN.",
  "code": "NOT_FOUND",
  "timestamp": "2026-06-22T10:00:00.000Z"
}
  • MISSING_CREDENTIALSClés API absentes des en-têtes.
  • INVALID_API_KEYClé publique ou clé secrète invalide.
  • API_KEY_DISABLEDClé désactivée ou expirée.
  • MISSING_FILTERAucun filtre fourni à la recherche (q, naf, codePostal…).
  • INVALID_SIRENSIREN invalide : 9 chiffres attendus.
  • NOT_FOUNDRessource introuvable.
  • INTERNAL_ERRORErreur interne du serveur.

Pagination

Les endpoints de liste acceptent page (défaut 1) et perPage (défaut 20, max 100). La réponse inclut un objet pagination décrivant la page courante et la présence d'une page suivante.

application/json
"pagination": {
  "page": 1,
  "perPage": 20,
  "total": 137,
  "totalPages": 7,
  "hasNext": true
}

Quotas & limites

Les appels sont décomptés sur le quota mensuel de votre plan et limités par heure. Chaque réponse expose votre consommation via les en-têtes X-RateLimit-*.

  • Quota mensuel du planX-RateLimit-Limit
  • Appels restants sur la périodeX-RateLimit-Remaining
  • Horodatage (epoch) de réinitialisationX-RateLimit-Reset

Dépassement

Au-delà du quota ou de la limite horaire, l'API renvoie 429. Un abonnement inactif renvoie 402. Surveillez vos en-têtes X-RateLimit-Remaining pour anticiper.

Rechercher des sociétés par dirigeant

GET/v1/search/dirigeants

Recherche inversée : toutes les sociétés qu'une personne dirige ou a dirigées (dirigeants RNE + entrepreneurs individuels). Insensible à la casse et aux accents. Fournissez au moins nom ou prénom (2 caractères min).

Paramètres de requête

  • nomstringoptionnel

    Nom de famille (ou tout terme du nom).

  • prenomstringoptionnel

    Prénom(s).

  • strictbooleanoptionneldéfaut false

    true → correspondance verrouillée par champ (nom↔nom, prénom↔prénom) : moins d'homonymes.

  • pageintegeroptionneldéfaut 1

    Numéro de page (à partir de 1).

  • perPageintegeroptionneldéfaut 20

    Nombre de résultats par page (max 100).

Réponses

  • 200Sociétés liées à la personne (items + pagination, totalMatched, capped).
  • 400Aucun nom de dirigeant fourni.
  • 401Clés API absentes ou invalides.
  • 429Quota ou limite de débit dépassé.
cURL
curl "https://companyfrance.fr/api/v1/search/dirigeants?nom=Dupont&prenom=Jean" \
  -H "X-API-Key: pk_live_..." \
  -H "X-API-Secret: sk_live_..."
200 OK
{
  "success": true,
  "data": {
    "items": [
      {
        "siren": "552032534",
        "sirenFormatted": "552 032 534",
        "name": "RENAULT",
        "activity": { "code": "29.10Z", "label": "Construction de véhicules automobiles" },
        "active": true,
        "state": "A",
        "dateCreation": "1955-01-01T00:00:00.000Z",
        "dateRadiation": null,
        "roles": ["Président du conseil d'administration"],
        "matched": "Jean Dupont"
      }
    ],
    "pagination": { "page": 1, "perPage": 20, "total": 3, "totalPages": 1, "hasNext": false },
    "totalMatched": 3,
    "capped": false
  },
  "timestamp": "2026-06-22T10:00:00.000Z"
}

Rechercher des sociétés par adresse

GET/v1/search/adresse

Recherche inversée : toutes les sociétés domiciliées à une adresse, regroupées par SIREN (siège en premier). Le code postal est obligatoire ; affinez avec la voie et la commune.

Paramètres de requête

  • codePostalstringrequis

    Code postal — obligatoire. 5 chiffres (ou préfixe de 4 chiffres min). C'est l'ancre indexée.

  • voiestringoptionnel

    Termes de voie (numéro / type / libellé), dans n'importe quel ordre.

  • communestringoptionnel

    Nom de commune (affinage facultatif).

  • pageintegeroptionneldéfaut 1

    Numéro de page (à partir de 1).

  • perPageintegeroptionneldéfaut 20

    Nombre de résultats par page (max 100).

Réponses

  • 200Sociétés à l'adresse (items + pagination, totalMatched, capped).
  • 400Code postal manquant.
  • 401Clés API absentes ou invalides.
  • 429Quota ou limite de débit dépassé.
cURL
curl "https://companyfrance.fr/api/v1/search/adresse?codePostal=92100&voie=Quai+Le+Gallo" \
  -H "X-API-Key: pk_live_..." \
  -H "X-API-Secret: sk_live_..."
200 OK
{
  "success": true,
  "data": {
    "items": [
      {
        "siren": "552032534",
        "sirenFormatted": "552 032 534",
        "name": "RENAULT",
        "activity": { "code": "29.10Z", "label": "Construction de véhicules automobiles" },
        "active": true,
        "state": "A",
        "dateCreation": "1955-01-01T00:00:00.000Z",
        "address": "13 Quai Alphonse Le Gallo, 92100 Boulogne-Billancourt",
        "street": "13 Quai Alphonse Le Gallo",
        "postalCode": "92100",
        "commune": "Boulogne-Billancourt",
        "headOffice": true,
        "establishmentsMatched": 1
      }
    ],
    "pagination": { "page": 1, "perPage": 20, "total": 12, "totalPages": 1, "hasNext": false },
    "totalMatched": 12,
    "capped": false
  },
  "timestamp": "2026-06-22T10:00:00.000Z"
}

Récupérer une unité légale

GET/v1/unite-legale/{siren}

Fiche complète d'une entreprise : dénominations, forme juridique, activité, capital (Pro/Enterprise), effectif, n° de TVA et compteur d'établissements.

Paramètres de chemin

  • sirenstringrequis

    SIREN de l'unité légale — 9 chiffres.

Réponses

  • 200Fiche de l'unité légale.
  • 404Ressource introuvable.
cURL
curl "https://companyfrance.fr/api/v1/unite-legale/552032534" \
  -H "X-API-Key: pk_live_..." \
  -H "X-API-Secret: sk_live_..."
200 OK
{
  "success": true,
  "data": {
    "siren": "552032534",
    "sirenFormatted": "552 032 534",
    "name": "RENAULT",
    "legalForm": { "code": "5710", "label": "SA à conseil d'administration" },
    "activity": { "code": "29.10Z", "label": "Construction de véhicules automobiles" },
    "active": true,
    "state": "A",
    "vatNumber": "FR41552032534",
    "workforceRange": "53",
    "capital": { "amount": 1126701902, "currency": "EUR", "variable": false },
    "establishments": { "total": 12, "active": 9 }
  },
  "timestamp": "2026-06-22T10:00:00.000Z"
}

Lister les établissements d'une unité légale

GET/v1/unite-legale/{siren}/etablissements

Établissements (SIRET) rattachés à un SIREN, paginés. Filtrez sur l'état pour ne garder que les établissements actifs.

Paramètres de chemin

  • sirenstringrequis

    SIREN de l'unité légale — 9 chiffres.

Paramètres de requête

  • etatstringoptionnel
    AF

    État de l'établissement : A (actif) ou F (fermé).

  • pageintegeroptionneldéfaut 1

    Numéro de page (à partir de 1).

  • perPageintegeroptionneldéfaut 20

    Nombre de résultats par page (max 100).

Réponses

  • 200Établissements paginés.
  • 404Ressource introuvable.
cURL
curl "https://companyfrance.fr/api/v1/unite-legale/552032534/etablissements?etat=A" \
  -H "X-API-Key: pk_live_..." \
  -H "X-API-Secret: sk_live_..."

Lister les dirigeants d'une unité légale

GET/v1/unite-legale/{siren}/dirigeants

Dirigeants (gérant, président…) issus du RNE. Pour un entrepreneur individuel, la personne physique est synthétisée depuis l'identité de l'unité légale.

Paramètres de chemin

  • sirenstringrequis

    SIREN de l'unité légale — 9 chiffres.

Réponses

  • 200Liste des dirigeants (count + items).
  • 404Ressource introuvable.
cURL
curl "https://companyfrance.fr/api/v1/unite-legale/552032534/dirigeants" \
  -H "X-API-Key: pk_live_..." \
  -H "X-API-Secret: sk_live_..."
200 OK
{
  "success": true,
  "data": {
    "siren": "552032534",
    "count": 1,
    "items": [
      {
        "type": "person",
        "name": "Jean Dupont",
        "nom": "Dupont",
        "prenoms": "Jean",
        "denomination": null,
        "role": "Président du conseil d'administration",
        "birthYear": 1968
      }
    ]
  },
  "timestamp": "2026-06-22T10:00:00.000Z"
}

Comptes annuels d'une unité légale

GET/v1/unite-legale/{siren}/finances

Comptes annuels déposés (chiffre d'affaires, résultat net…) lorsqu'ils sont disponibles.

Paramètres de chemin

  • sirenstringrequis

    SIREN de l'unité légale — 9 chiffres.

Réponses

  • 200Comptes annuels.
  • 403Plan insuffisant — mise à niveau requise.
  • 404Ressource introuvable.

Endpoint réservé aux plans Pro et Enterprise

L'accès aux comptes annuels nécessite un abonnement Pro ou Enterprise. Avec un plan inférieur, l'API renvoie 403.
cURL
curl "https://companyfrance.fr/api/v1/unite-legale/552032534/finances" \
  -H "X-API-Key: pk_live_..." \
  -H "X-API-Secret: sk_live_..."
200 OK
{
  "success": true,
  "data": {
    "siren": "552032534",
    "count": 1,
    "items": [
      {
        "year": 2024,
        "dateCloture": "2024-12-31",
        "typeBilan": "C",
        "totalBilan": 98765432000,
        "capitauxPropres": 31200000000,
        "resultatNet": 752000000,
        "chiffreAffaires": 56601000000,
        "currency": "EUR",
        "confidential": false,
        "dateDepot": "2025-05-14"
      }
    ]
  },
  "timestamp": "2026-06-22T10:00:00.000Z"
}

Récupérer un établissement

GET/v1/etablissement/{siret}

Fiche d'un établissement par son SIRET : adresse, activité, enseigne, statut de siège et état administratif.

Paramètres de chemin

  • siretstringrequis

    SIRET de l'établissement — 14 chiffres.

Réponses

  • 200Fiche de l'établissement.
  • 404Ressource introuvable.
cURL
curl "https://companyfrance.fr/api/v1/etablissement/55203253400041" \
  -H "X-API-Key: pk_live_..." \
  -H "X-API-Secret: sk_live_..."

Nomenclature NAF

GET/v1/naf

Liste des codes NAF/APE avec leurs libellés. Filtrez avec q pour une recherche par libellé ou par code.

Paramètres de requête

  • qstringoptionnel

    Recherche par libellé ou par code NAF.

Réponses

  • 200Codes NAF.
cURL
curl "https://companyfrance.fr/api/v1/naf?q=automobile" \
  -H "X-API-Key: pk_live_..." \
  -H "X-API-Secret: sk_live_..."

Résoudre un code NAF

GET/v1/naf/{code}

Renvoie le libellé d'un code NAF/APE précis.

Paramètres de chemin

  • codestringrequis

    Code NAF/APE à résoudre (ex. 29.10Z).

Réponses

  • 200Libellé du code.
  • 404Ressource introuvable.
cURL
curl "https://companyfrance.fr/api/v1/naf/29.10Z" \
  -H "X-API-Key: pk_live_..." \
  -H "X-API-Secret: sk_live_..."

Nomenclature des catégories juridiques

GET/v1/categories-juridiques

Liste des codes de forme juridique (INSEE) avec leurs libellés. Filtrez avec q.

Paramètres de requête

  • qstringoptionnel

    Recherche par libellé ou par code.

Réponses

  • 200Catégories juridiques.
cURL
curl "https://companyfrance.fr/api/v1/categories-juridiques?q=SARL" \
  -H "X-API-Key: pk_live_..." \
  -H "X-API-Secret: sk_live_..."

Votre plan & consommation

GET/v1/me

Renvoie le compte appelant, son plan et sa consommation courante. Cet appel est lui-même décompté du quota.

Réponses

  • 200Plan + consommation.
  • 400Clé API non rattachée à une entreprise.
cURL
curl "https://companyfrance.fr/api/v1/me" \
  -H "X-API-Key: pk_live_..." \
  -H "X-API-Secret: sk_live_..."
200 OK
{
  "success": true,
  "data": {
    "keyId": "key_01J…",
    "company": { "id": "cmp_01J…" },
    "plan": {
      "code": "pro",
      "name": "Pro",
      "status": "active",
      "trialEndsAt": null,
      "currentPeriodEnd": "2027-06-22T00:00:00.000Z"
    },
    "usage": {
      "used": 1284,
      "limit": 50000,
      "remaining": 48716,
      "percentage": 3,
      "resetAt": "2026-07-01T00:00:00.000Z",
      "hourlyRateLimit": 1000
    }
  },
  "timestamp": "2026-06-22T10:00:00.000Z"
}