SIRENE API
There are three free routes to French company data. DINUM’s recherche-entreprises API is keyless and aggregates INSEE Sirene identity with INPI RNE directors. The INSEE Sirene API itself and INPI RNE are also free but each need a registered key. All are keyed on the 9-digit SIREN.
Free. The DINUM aggregation needs no key at all; the upstream INSEE Sirene API and INPI RNE are also free but require a free account. Licence Ouverte / Etalab 2.0 - free reuse with attribution. Official docs: DINUM Recherche d’entreprises (aggregates INSEE Sirene + INPI RNE).
npx skills add Nolpak14/getregdata -g -y
Teaches your agent the endpoints, the auth pattern and the failure modes below - so it runs the check correctly rather than guessing. Read SKILL.md
What you get, for free
- Identity
- siren, nom_complet, nom_raison_sociale, sigle, nature_juridique, categorie_entreprise, date_creation, and etat_administratif of A for active or C for ceased.
- Registered office
- The siege with its 14-digit siret, full address, code_postal, libelle_commune, departement, coordinates, and the office activite_principale as a NAF/APE code.
- Directors
- A dirigeants array of nom, prenoms, qualite (role), annee_de_naissance and type_dirigeant, sourced from INPI RNE.
- Scale signals
- nombre_etablissements and tranche_effectif_salarie, plus est_ flags for ESS, RGE, bio and association status.
Getting an API key
- For the DINUM aggregation: nothing at all. No key, no registration, no token.
- Rate limit is 7 requests per second per IP with no burst allowance; exceeding it returns 429.
- For the upstream feeds: the INSEE Sirene API at api.insee.fr needs a free key, and INPI RNE at registre-national-entreprises.inpi.fr needs a free account.
# name -> candidates (no auth header at all) curl "https://recherche-entreprises.api.gouv.fr/search?q=DINUM" # SIREN -> the canonical record curl "https://recherche-entreprises.api.gouv.fr/search?q=siren:130025265"
A SIREN is 9 digits and identifies the legal unit. A SIRET is 14 - the SIREN plus a 5-digit NIC identifying one establishment.
Endpoints
| Purpose | Call |
|---|---|
| Full-text search | GET /search?q={terms} |
| By SIREN | GET /search?q=siren:{siren} |
| Filtered search | GET /search?q={terms}&code_postal=&activite_principale=&departement= |
| By director name | GET /search?nom_personne={name}&departement= |
| Geographic radius | GET /near_point?lat=&long=&radius=&activite_principale= |
Running a KYB check end to end
- 1 Resolve identity
Search by name and take the siren from the match, or query directly with q=siren: if you already hold one.
- 2 Confirm it is active
etat_administratif must read A. C means ceased or radiée and the entity cannot trade. Record date_creation, nature_juridique and categorie_entreprise.
- 3 Where it operates
Read the siege for siret, address and commune, and activite_principale for the NAF/APE sector code.
- 4 Who runs it
Read dirigeants. A type_dirigeant of personne morale means the director is itself a company, which you resolve separately.
- 5 Scale and reach
nombre_etablissements and tranche_effectif_salarie tell you whether this is a single-site micro business or a multi-site group.
What bites people
It is a search API, not a dossier API
You get identity, office and directors, and then it stops. There are no full financial statements, no balance sheet, no associés or shareholder structure, no beneficial-ownership chain and no court or insolvency filings. Missing depth means not covered, not absent.
dirigeants can be partial or stale
Directors come from INPI RNE and may lag reality or be incomplete for some legal forms. An empty dirigeants array is a gap to record, not a finding that the company has no directors.
Diffusion-restricted records come back blanked
Individuals and some entities can opt out of open diffusion. Their name and address fields are blank by choice - that is a privacy restriction, not missing data.
per_page is hard-capped at 25
There is no way to pull more than 25 results per call. Deep result sets need paging, and establishments within one company use a separate page_etablissements parameter.
You share 7 requests per second with your whole IP
There is no burst allowance. For batch work, throttle client-side and back off on 429 rather than hammer-retrying.
This is the aggregation, not Sirene itself
The keyless DINUM API is a convenience layer over INSEE Sirene and INPI RNE. If you need authoritative establishment-level data or INPI’s filed actes and beneficial-owner records, go to those upstream APIs directly - both free, both needing a free account.
The jurisdictions with no free equivalent
The UK is the outlier. Most European registers publish through portals built for people, not a general-purpose API - so the next jurisdiction you need probably has no free option. These read the official source live and return the same shape of structured record.
Is the SIRENE API free?
Yes. The INSEE Sirene API is free with a registered key, and DINUM’s recherche-entreprises API - which aggregates Sirene identity with INPI RNE directors - is free with no key at all. Both are under the Licence Ouverte.
What is the difference between SIREN and SIRET?
SIREN is the 9-digit identifier for the legal unit and stays with it for life. SIRET is 14 digits: the SIREN plus a 5-digit NIC identifying a specific establishment. One company has one SIREN and one SIRET per site.
Can I get French company financials for free?
Only partially. A finances object exists but carries limited turnover and net result for the minority of entities that publish accounts. Full statements, shareholders and insolvency filings are not in the open API - that is what the paid Societe.com actor covers.
How do I find a French company by director name?
The DINUM API supports a nom_personne parameter, optionally narrowed by departement. Bear in mind the director data comes from INPI RNE and can be incomplete for some legal forms.