CompanyFrance

API v1 · OpenAPI 3.1 · stabiel

API-referentie

Bevraag Franse bedrijfsgegevens (SIRENE/INSEE + RNE/INPI) vanuit uw applicatie: zoeken, rechtspersonen, vestigingen, bestuurders en jaarrekeningen. Eén basis-URL, authenticatie met een sleutelpaar.

Overzicht

Een stateless REST-API, JSON in/uit, geversioneerd. Elke route heeft het prefix /v1 en geeft de envelop { success, data, timestamp } terug.

  • Basis-URLhttps://companyfrance.fr/api/v1
  • Versiev1 · OpenAPI 3.1
  • Formaatapplication/json
  • AuthenticatieX-API-Key + X-API-Secret

Gegevens uit SIRENE/INSEE (open data) verrijkt met RNE/INPI. Het volledige contract is beschikbaar als OpenAPI 3.1.

Authenticatie

Elke aanvraag moet uw API-sleutelpaar in de HTTP-headers bevatten. De openbare sleutel identificeert uw account; de geheime sleutel authenticeert het. Stel uw geheime sleutel nooit bloot in de browser.

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

Vereiste headers

  • X-API-Key openbare sleutel, formaat pk_live_…
  • X-API-Secret geheime sleutel, formaat sk_live_… (server-side bewaren)

Maak en trek uw sleutels in via /dashboard/api/keys.

Foutformaat

Elke fout geeft een 4xx- of 5xx-HTTP-status terug en een JSON-body met success: false, een error-veld (leesbaar) en een code-veld (machine-identificatie).

application/json
{
  "success": false,
  "error": "No legal unit found for this SIREN.",
  "code": "NOT_FOUND",
  "timestamp": "2026-06-22T10:00:00.000Z"
}
  • MISSING_CREDENTIALSAPI-sleutels ontbreken in de headers.
  • INVALID_API_KEYOngeldige openbare of geheime sleutel.
  • API_KEY_DISABLEDSleutel uitgeschakeld of verlopen.
  • MISSING_FILTERGeen zoekfilter opgegeven (q, naf, codePostal…).
  • INVALID_SIRENOngeldige SIREN: 9 cijfers verwacht.
  • NOT_FOUNDBron niet gevonden.
  • INTERNAL_ERRORInterne serverfout.

Paginering

Lijst-endpoints accepteren page (standaard 1) en perPage (standaard 20, max 100). Het antwoord bevat een pagination-object dat de huidige pagina beschrijft en of er een volgende pagina is.

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

Quota & limieten

Aanroepen tellen mee voor het maandquotum van uw abonnement en zijn per uur beperkt. Elk antwoord toont uw verbruik via X-RateLimit-*-headers.

  • Maandquotum van het abonnementX-RateLimit-Limit
  • Resterende aanroepen in de periodeX-RateLimit-Remaining
  • Reset-tijdstempel (epoch)X-RateLimit-Reset

Overschrijding

Boven het quotum of de uurlimiet geeft de API 429 terug. Een inactief abonnement geeft 402 terug. Houd uw X-RateLimit-Remaining-header in de gaten om te anticiperen.

Bedrijven zoeken op bestuurder

GET/v1/search/dirigeants

Omgekeerde zoekopdracht: alle bedrijven die een persoon bestuurt of heeft bestuurd (RNE-bestuurders + eenmanszaken). Niet hoofdletter- en accentgevoelig. Geef ten minste nom of prenom op (min. 2 tekens).

Queryparameters

  • nomstringoptioneel

    Achternaam (of een naamterm).

  • prenomstringoptioneel

    Voornaam/voornamen.

  • strictbooleanoptioneelstandaard false

    true → veldgebonden matching (nom↔nom, prénom↔prénom): minder naamgenoten.

  • pageintegeroptioneelstandaard 1

    Paginanummer (vanaf 1).

  • perPageintegeroptioneelstandaard 20

    Resultaten per pagina (max 100).

Antwoorden

  • 200Bedrijven gekoppeld aan de persoon (items + pagination, totalMatched, capped).
  • 400Geen bestuurdersnaam opgegeven.
  • 401API-sleutels ontbreken of zijn ongeldig.
  • 429Quotum of snelheidslimiet overschreden.
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"
}

Bedrijven zoeken op adres

GET/v1/search/adresse

Omgekeerde zoekopdracht: alle bedrijven gevestigd op een adres, gegroepeerd per SIREN (hoofdkantoor eerst). De postcode is verplicht; verfijn met straat en gemeente.

Queryparameters

  • codePostalstringvereist

    Postcode — verplicht. 5 cijfers (of een prefix van min. 4 cijfers). Dit is het geïndexeerde anker.

  • voiestringoptioneel

    Straattermen (nummer / type / naam), in willekeurige volgorde.

  • communestringoptioneel

    Gemeentenaam (optionele verfijning).

  • pageintegeroptioneelstandaard 1

    Paginanummer (vanaf 1).

  • perPageintegeroptioneelstandaard 20

    Resultaten per pagina (max 100).

Antwoorden

  • 200Bedrijven op het adres (items + pagination, totalMatched, capped).
  • 400Postcode ontbreekt.
  • 401API-sleutels ontbreken of zijn ongeldig.
  • 429Quotum of snelheidslimiet overschreden.
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"
}

Een rechtspersoon ophalen

GET/v1/unite-legale/{siren}

Volledig bedrijfsdossier: namen, rechtsvorm, activiteit, kapitaal (Pro/Enterprise), personeel, btw-nummer en aantal vestigingen.

Padparameters

  • sirenstringvereist

    SIREN van de rechtspersoon — 9 cijfers.

Antwoorden

  • 200Dossier van de rechtspersoon.
  • 404Bron niet gevonden.
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"
}

Vestigingen van een rechtspersoon opsommen

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

Vestigingen (SIRET) gekoppeld aan een SIREN, gepagineerd. Filter op status om alleen actieve vestigingen te behouden.

Padparameters

  • sirenstringvereist

    SIREN van de rechtspersoon — 9 cijfers.

Queryparameters

  • etatstringoptioneel
    AF

    Vestigingsstatus: A (actief) of F (gesloten).

  • pageintegeroptioneelstandaard 1

    Paginanummer (vanaf 1).

  • perPageintegeroptioneelstandaard 20

    Resultaten per pagina (max 100).

Antwoorden

  • 200Gepagineerde vestigingen.
  • 404Bron niet gevonden.
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_..."

Bestuurders van een rechtspersoon opsommen

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

Bestuurders (zaakvoerder, voorzitter…) uit het RNE. Voor een eenmanszaak wordt de natuurlijke persoon afgeleid uit de identiteit van de rechtspersoon.

Padparameters

  • sirenstringvereist

    SIREN van de rechtspersoon — 9 cijfers.

Antwoorden

  • 200Lijst van bestuurders (count + items).
  • 404Bron niet gevonden.
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"
}

Jaarrekeningen van een rechtspersoon

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

Neergelegde jaarrekeningen (omzet, nettoresultaat…) indien beschikbaar.

Padparameters

  • sirenstringvereist

    SIREN van de rechtspersoon — 9 cijfers.

Antwoorden

  • 200Jaarrekeningen.
  • 403Ontoereikend abonnement — upgrade vereist.
  • 404Bron niet gevonden.

Endpoint voorbehouden voor Pro- en Enterprise-abonnementen

Toegang tot jaarrekeningen vereist een Pro- of Enterprise-abonnement. Met een lager abonnement geeft de API 403 terug.
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"
}

Een vestiging ophalen

GET/v1/etablissement/{siret}

Vestigingsdossier op SIRET: adres, activiteit, handelsnaam, hoofdkantoor-vlag en administratieve status.

Padparameters

  • siretstringvereist

    SIRET van de vestiging — 14 cijfers.

Antwoorden

  • 200Dossier van de vestiging.
  • 404Bron niet gevonden.
cURL
curl "https://companyfrance.fr/api/v1/etablissement/55203253400041" \
  -H "X-API-Key: pk_live_..." \
  -H "X-API-Secret: sk_live_..."

NAF-nomenclatuur

GET/v1/naf

Lijst van NAF/APE-codes met hun labels. Filter met q om te zoeken op label of code.

Queryparameters

  • qstringoptioneel

    Zoeken op label of NAF-code.

Antwoorden

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

Een NAF-code oplossen

GET/v1/naf/{code}

Geeft het label van een specifieke NAF/APE-code terug.

Padparameters

  • codestringvereist

    Op te lossen NAF/APE-code (bijv. 29.10Z).

Antwoorden

  • 200Codelabel.
  • 404Bron niet gevonden.
cURL
curl "https://companyfrance.fr/api/v1/naf/29.10Z" \
  -H "X-API-Key: pk_live_..." \
  -H "X-API-Secret: sk_live_..."

Nomenclatuur van rechtsvormen

GET/v1/categories-juridiques

Lijst van rechtsvormcodes (INSEE) met hun labels. Filter met q.

Queryparameters

  • qstringoptioneel

    Zoeken op label of code.

Antwoorden

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

Uw abonnement & verbruik

GET/v1/me

Geeft het aanroepende account, zijn abonnement en huidig verbruik terug. Deze aanroep telt zelf mee voor het quotum.

Antwoorden

  • 200Abonnement + verbruik.
  • 400API-sleutel niet gekoppeld aan een bedrijf.
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"
}