Guide · France · Lookup, BODACC events and insolvency
Sirene API: French company data by SIREN, with BODACC
A customer types a SIREN, a SIRET or the first letters of a name; your onboarding form fills in the legal name, legal form, status and registered address from the French registers, and the same key reads the officers, the BODACC announcements and the insolvency notices behind the record. One response shape, the same as every other country the API covers.
France at a glance
Register: BODACC and INPI (RNE)
Identifiers SIREN, SIRET
- Company recordsYes
- OfficersYes
- Insolvency noticesYes
- Corporate eventsGazette notices
- MonitoringNo
- Financial statementsAnnual accounts
- VAT numberBuilt from the number
- NACE classYes
- UpdatedDaily
The guide below states the limits of every row. Financial statements are on the Scale plan and above; the other plans and the free trial get 10 calls a month.
Price From EUR 9.99 a month (Starter plan)
In other languagesFrançais
Sign upTry France live
Look up a company in France with the shared demo key. No sign-up.
The demo key is shared and capped per page view; your own key has the limits of your plan.
Is there an official French company registry API?
As at 5 Nov 2026, France has several official interfaces. INSEE API Sirene serves the company (SIREN) and establishment (SIRET) records of the Sirene directory since 1973, closed units included; it is open with an account, at 30 requests a minute for open data use, and the personal data of people who asked for partial diffusion must not be redistributed or used for prospecting. The BODACC gazette is published as open data under the Etalab 2.0 licence, with an API section on its site. One API across the live countries adds a company record in the same response shape as every other country, keyed on the SIREN, with gazette events. Scope limits for France: no monitoring watchlists, no registry-compliance signal, no beneficial owners (that register is access-restricted) and no credit scores; non-diffusible companies carry no name or address; sole proprietorships (EI) are included as the register publishes them. Compare register access in every country we checked.
Sirene API and Prometiam, field by field
The official API Sirene is INSEE's service for the Sirene directory (as at 5 Nov 2026, see above). This table sets what this page states about it beside what this API serves for France.
| Field | Official INSEE Sirene API | Prometiam |
|---|---|---|
| Company (SIREN) and establishment (SIRET) records | Yes, the Sirene directory since 1973, closed units included. | The company record keyed on the SIREN, with one siret field, not a list of every establishment. |
| Every establishment of a company | Yes: the establishment (SIRET) records. | No: one siret field on the record. |
| Partial diffusion | The personal data of people who asked for partial diffusion must not be redistributed or used for prospecting. | A non-diffusible company carries no name or address (company_name null, registry_details.non_diffusible true). |
| Officers | Not among the records read on 5 Nov 2026 (companies and establishments). | Yes, appointments on the record and GET /people/search?country=FR. |
| BODACC announcements | A separate source: the BODACC gazette is open data under the Etalab 2.0 licence. | Typed corporate events with the raw code in act_type. |
| Insolvency notices | Not among the records read on 5 Nov 2026 (companies and establishments). | Yes, corporate only, GET /insolvency/search. |
| Other countries | The French directory only. | The same call and response shape for every live country. |
| Access and rate | Open with an account, 30 requests a minute for open data use. | An API key; rate limits per key by plan. |
| Monitoring watchlists | Not stated on the pages read. | No, not for France. |
Sirene API: what to know before you build on it
From the official pages, as read on 5 Nov 2026:
- It needs an account before the first call.
- Open data use is limited to 30 requests a minute.
- Its records are the company (SIREN) and its establishments (SIRET); the BODACC gazette is a separate open-data source with an API section of its own.
- The personal data of people who asked for partial diffusion must not be redistributed or used for prospecting.
- It is the French directory alone: a second country is a second integration.
What you get, and what you do not
France is one of the fuller countries in the API: the company record keyed on the SIREN, its officers, the BODACC announcements as a corporate-event stream, corporate insolvency notices, public-procurement awards from the DECP and, in beta, buyer-risk scores for French contracting bodies. It has no monitoring watchlists, no registry-compliance signal and no beneficial owners.
| Feature | For France | Where |
|---|---|---|
| Company record | Yes, keyed on the SIREN. | GET /companies/search, GET /companies/{id} |
| Officers | Yes: the current directors and representatives, plus officer changes announced in the BODACC. | appointments on the record, GET /people/search?country=FR |
| Corporate events | Yes: the BODACC announcements, typed into a fixed list of event types. | GET /company-events/search, /company-events/timeline |
| Insolvency notices | Yes. France is one of the sixteen insolvency markets (FR, DE, GB, AT, CH, NO, FI, US, NL, DK, HR, SE, ES, LV, EE, SG). Corporate only. | GET /insolvency/search, POST /insolvency/check |
| Public procurement | Yes: awards from the consolidated DECP. | GET /procurement/awards?country=FR |
| Procurement buyer risk | Beta, Spain and France. A score about the contracting body, never about a supplier or a tender. | GET /procurement/buyers?country=FR |
| Monitoring | No. The monitor endpoint covers every live country except France and Chile. | — |
| Registry-compliance signal | No. France publishes no equivalent pre-signal; removals from the register are served as status. | — |
| Beneficial owners | No. | — |
Searching officers by name and reading corporate events need a Starter plan or above; a trial key has 25 calls a month on each. If you want to know what the gazette itself is, start with What is the BODACC? (also en français) and SIREN vs SIRET.
What the French record gives your product
- Exact match on the SIREN.
siren=552032534withcountry=FR;company_numberis an alias. The match is exact, and a mistyped SIREN comes back as no match, which looks the same as an unknown company. Check the digits first. - The SIRET.
siret=takes the 14 digits and matches the SIRET the record holds. For any other establishment, pass its first nine digits as the SIREN: the record is keyed on the legal unit. - Autocomplete by name.
?name=is a normalised, partial match ranked by a match score. Each call is one request. A name search returns one ranked page, so narrow the name to refine it. - The register's own state. For France,
local_status: "dissolved"means the company still exists pending liquidation (status: "in_dissolution"). A company whose owner asked INSEE to restrict publication comes back asnon_diffusible(status: "withheld") withcompany_namenull andregistry_details.non_diffusibletrue: treat it as unknown, not inactive. The name search never returns it; a SIREN or SIRET lookup does. Sole proprietorships (EI) are included as the register publishes them, but none of their contacts is served. - A new-company feed.
founded_after=2026-09-01withcountry=FRlists companies by incorporation date, newest first, paged withnext_cursor. - One schema for every country. The same response shape whichever
countryyou pass, so a multi-country flow needs one integration.
| Field | What it holds for France |
|---|---|
company_number, siren | The nine-digit SIREN of the legal unit: 552032534. |
identifiers, registry_details.greffe | The SIREN, the SIRET and the RCS registration the record holds, as entries of identifiers, and the registry court in registry_details.greffe, where the register has them. |
company_name | The registered name in capitals; null for a non-diffusible unit (see registry_details.non_diffusible). |
legal_form, local_legal_form, local_legal_form_name | The standard abbreviation, the register's legal-form code and its full label, with legal_form_family for comparing across countries. |
status, stage, local_status | The standard status and lifecycle stage, where the value is recognised, beside the register's own status. |
address, postal_code, city, province | The registered seat where the register holds one; province is the département. |
activity_code | The NAF code, with the statutory purpose (objet social) in activity_description. |
capital_amount, capital_currency | Share capital where a BODACC notice printed one. |
employee_bracket, founding_date | The employee-size bracket and the start date, where published. |
Validate before you call
A SIREN is nine digits and a SIRET is fourteen, and both end in a Luhn check digit. La Poste SIRETs are a documented exception: their digits sum to a multiple of five instead. That makes both identifiers ones you can reject offline, in your own code, before they cost a call. The identifier validator runs the same arithmetic in the browser; this is the version to paste into a form handler:
// French SIREN (9 digits) and SIRET (14 digits): both end in a Luhn check digit
function luhnOk(digits) {
let sum = 0
for (let i = 0; i < digits.length; i++) {
let d = Number(digits[digits.length - 1 - i])
if (i % 2 === 1) { d *= 2; if (d > 9) d -= 9 }
sum += d
}
return sum % 10 === 0
}
export function checkFrId(input) {
const d = String(input).replace(/[\s.]/g, '')
if (/^\d{9}$/.test(d)) return luhnOk(d) ? { siren: d, siret: null } : null
if (/^\d{14}$/.test(d)) {
const ok = d.startsWith('356000000') // La Poste: digit sum is a multiple of 5
? [...d].reduce((a, c) => a + Number(c), 0) % 5 === 0
: luhnOk(d)
return ok ? { siren: d.slice(0, 9), siret: d } : null
}
return null
}
checkFrId('552032534') // { siren: '552032534', siret: null }
checkFrId('552 032 534') // the same: spaces are ignored
checkFrId('552032535') // null: the check digit should be 4A passing check says the number is well-formed, never that the company exists or is still registered. That is what the lookup is for.
Four calls
# 1. By SIREN curl -H "Authorization: Bearer $PROMETIAM_API_KEY" \ "https://api.prometiam.com/functions/v1/risk-api/companies/search?siren=552032534&country=FR" # 2. By name, for a type-ahead field curl -H "Authorization: Bearer $PROMETIAM_API_KEY" \ "https://api.prometiam.com/functions/v1/risk-api/companies/search?name=danone&country=FR&limit=5" # 3. The full record by the id the search returned (officers in appointments, recent BODACC events in recent_events) curl -H "Authorization: Bearer $PROMETIAM_API_KEY" \ "https://api.prometiam.com/functions/v1/risk-api/companies/$COMPANY_ID?country=FR" # 4. Companies incorporated since a date, newest first curl -H "Authorization: Bearer $PROMETIAM_API_KEY" \ "https://api.prometiam.com/functions/v1/risk-api/companies/search?founded_after=2026-09-01&country=FR&limit=100"
To resolve a list, POST /companies/lookup takes up to 100 items in one call, each one counted as one request:
curl -X POST "https://api.prometiam.com/functions/v1/risk-api/companies/lookup" \
-H "Authorization: Bearer $PROMETIAM_API_KEY" \
-H "Content-Type: application/json" \
-d '{"items":[{"country":"FR","siren":"552032534"},{"country":"FR","name":"Renault"}]}'The search returns the record's id; pass it to GET /companies/{id} with country=FR for the detail.
Beyond the record: officers, BODACC events and insolvency
Officers
The company record carries appointments: the current directors and representatives, plus officer changes announced in the BODACC. Each has a canonical role next to the register's own wording in role_type, an action, its dates and the person. To find an officer by name, GET /people/search?name=...&country=FR needs a Starter plan or above.
BODACC events
# The announcements of one company, by SIREN curl -H "Authorization: Bearer $PROMETIAM_API_KEY" \ "https://api.prometiam.com/functions/v1/risk-api/company-events/timeline?country=FR&company_number=552032534&limit=10" # Only the insolvency-typed events of that company curl -H "Authorization: Bearer $PROMETIAM_API_KEY" \ "https://api.prometiam.com/functions/v1/risk-api/company-events/search?country=FR&company_number=552032534&event_type=insolvency&limit=20"
Each event has an event_type from a fixed list (new_incorporation, director_change, capital_change, address_change, name_change, merger, demerger, dissolution, liquidation, insolvency, status_change, filing, correction, object_change, bylaws_change, legal_form_change, ownership_change, power_of_attorney, sale_of_business, debt_default, registry_closure, registry_reopening, reactivation, litigation, securities_issue, branch, charge, resolution, website, other; 9 Oct 2026: 19 finer types served, status_change now only the status changes no finer type describes), the raw BODACC code it was derived from in act_type, the event_date and a notice_url where the announcement has one.
Insolvency notices
# Notices filed under one SIREN
curl -H "Authorization: Bearer $PROMETIAM_API_KEY" \
"https://api.prometiam.com/functions/v1/risk-api/insolvency/search?country=FR&company_number=552032534"
# A list of counterparties in one call
curl -X POST "https://api.prometiam.com/functions/v1/risk-api/insolvency/check" \
-H "Authorization: Bearer $PROMETIAM_API_KEY" \
-H "Content-Type: application/json" \
-d '{"items":[{"country":"FR","company_number":"552032534"},{"country":"FR","company_number":"632012100"}]}'Notices are corporate only, from sixteen markets (FR, DE, GB, AT, CH, NO, FI, US, NL, DK, HR, SE, ES, LV, EE, SG). An empty result means no notice was found, not that the company is solvent. The batch call counts every item as one request.
Public procurement
# Awards to one supplier, by the SIRET it published curl -H "Authorization: Bearer $PROMETIAM_API_KEY" \ "https://api.prometiam.com/functions/v1/risk-api/procurement/awards?country=FR&nif=SUPPLIER_SIRET&limit=20" # Beta: contracting bodies ranked by the competition score curl -H "Authorization: Bearer $PROMETIAM_API_KEY" \ "https://api.prometiam.com/functions/v1/risk-api/procurement/buyers?country=FR&model=competition&min_score=8"
One row is one award to one supplier, from the consolidated DECP. amount_eur is that supplier's share as published; a framework ceiling is flagged amount_is_ceiling. Awards to natural persons are never returned. The buyer-risk scores are in beta, cover Spain and France, and describe the contracting body: a score is a prompt to look, not a finding of wrongdoing.
An autocomplete endpoint in Node
Your server keeps the key and proxies the search; the form calls your server. A full-length, well-formed SIREN or SIRET goes to the exact filter, anything else is a name, and a full-length number that fails its check digit is rejected before it costs a call:
// server: /api/fr-company?q=... (keep the key out of the browser)
app.get('/api/fr-company', async (req, res) => {
const q = String(req.query.q || '').trim()
const compact = q.replace(/[\s.]/g, '')
const looksLikeId = /^(\d{9}|\d{14})$/.test(compact) // a full-length SIREN or SIRET; anything shorter is still a name
const id = looksLikeId ? checkFrId(compact) : null
if (looksLikeId && !id) return res.status(422).json({ error: 'That is not a valid SIREN or SIRET' })
const params = new URLSearchParams({ country: 'FR', limit: '6', ...(id ? { siren: id.siren } : { name: q }) })
const r = await fetch('https://api.prometiam.com/functions/v1/risk-api/companies/search?' + params,
{ headers: { Authorization: 'Bearer ' + process.env.PROMETIAM_API_KEY } })
if (!r.ok) return res.status(502).json({ error: 'Lookup failed' })
const { data } = await r.json()
res.json(data.map(c => ({ id: c.id, name: c.company_name, siren: c.siren, siret: c.siret,
form: c.local_legal_form_name || c.legal_form, status: c.status, city: c.city, postal_code: c.postal_code })))
})Sirene API questions
Sirene API documentation
The official documentation is INSEE's, on its API portal at portail-api.insee.fr. Ours is the Prometiam API documentation.
Sirene API example
One call to the Prometiam API for a French company, by SIREN:
curl -H "Authorization: Bearer $PROMETIAM_API_KEY" \ "https://api.prometiam.com/functions/v1/risk-api/companies/search?siren=552032534&country=FR"
Sirene API in Python
The same call with requests:
import os
import requests
r = requests.get(
"https://api.prometiam.com/functions/v1/risk-api/companies/search",
params={"siren": "552032534", "country": "FR"},
headers={"Authorization": "Bearer " + os.environ["PROMETIAM_API_KEY"]},
)
print(r.json())Sirene API key
As stated above, the official API is open with an account. The Prometiam API needs a key. To try it without an account, use the demo key in the docs or the free SIREN lookup.
Sirene API price
This page does not state a price for the official API; check INSEE's portal. Prometiam: Starter is EUR 9.99 a month for 1,000 credits, and a company search or a company record costs 1 credit. The 14-day trial has 500 credits; a card is required and nothing is charged during it.
If you are comparing it with the INSEE API Sirene
SIREN and SIRET are issued by INSEE through the Sirene register, and they are the keys this API uses. What it adds is what sits around the identifier: the BODACC events, the officers, the insolvency notices and the procurement awards behind a company, in the same call shape as every other country, so a multi-country onboarding flow needs one integration and one key. What it does not replace is the Sirene service itself where you need every establishment of a company: the record carries one siret field, not a list. See the Pappers, Societe.com and Infogreffe comparisons for the commercial French data sites.
What France does not carry
- Monitoring watchlists. The monitor endpoint covers every live country except France and Chile. For France, poll the events timeline of a company or send your counterparties through
POST /insolvency/check. - A registry-compliance signal. France publishes no equivalent pre-signal; a removal from the register is served as
status. - Beneficial owners. Not served for France: the French register of beneficial owners is access-restricted.
- Every establishment. One
sireton the record, not a list of a company's establishments. - Credit scores. Not served.
- Financial statements. Annual accounts as filed are served from the Scale plan, but not for companies that declare their accounts confidential (about 45% of French filers).
Pricing
France is included in every tier at no upcharge. Starter begins with a 14-day trial: 500 credits in total, 10 requests/minute, card required, nothing charged for 14 days. Subscribing keeps the same key working. Then Starter at €9.99/month (1,000 credits, 60 requests/minute), Professional at €29.99/month (10,000 credits, 120 requests/minute) and Scale at €99.99/month (50,000 credits, 300 requests/minute), monthly or annual; annual is ten months' price for twelve. A company record costs 1 credit, an autocomplete keystroke costs 1 credit, and error responses cost nothing. Officers by name and corporate events are Starter-tier scopes, with 25 calls a month on a trial key.
FAQ
How do I look up a French company by SIREN from an API?
Call GET /companies/search?siren=552032534&country=FR. The match is exact, so validate the Luhn check digit in your own code first; a mistyped SIREN comes back as no match, which looks the same as an unknown company.
Can I look up a company by SIRET?
Yes: siret= takes the 14 digits and matches the SIRET the record holds. To resolve any other establishment, pass its first nine digits as the SIREN. The record is keyed on the legal unit and carries one siret field, not a list of every establishment.
Does the API carry BODACC announcements?
Yes. They are served as corporate events with a typed event_type, the raw BODACC code in act_type and the event date, through GET /company-events/search and GET /company-events/timeline. Reading events needs a Starter plan or above; a trial key has 25 calls a month.
Does it list French insolvency proceedings?
Yes. France is one of the sixteen insolvency markets (FR, DE, GB, AT, CH, NO, FI, US, NL, DK, HR, SE, ES, LV, EE, SG), corporate only. GET /insolvency/search matches the SIREN printed on the notice, and POST /insolvency/check screens up to 100 counterparties in one call. An empty result is not proof of solvency.
Can I monitor French companies?
Not with the monitor endpoint, which covers every live country except France and Chile. For France you poll: the events timeline for one company, or POST /insolvency/check for a list of counterparties.
How much does the France company data API cost?
France is included in every tier at no upcharge. Free is a 14-day trial with 500 credits in total and card required, nothing charged for 14 days; subscribing keeps the same key working. Paid tiers run from EUR 9.99 to EUR 99.99 a month, monthly or annual.
Can I call the API from the browser?
You can, but a key in the browser is public. Proxy the search through your server, as in the sample above. Rate limits are per key.
Is there a way to try it before signing up?
Yes: the free SIREN lookup (en français) runs the same call with a shared key.
Everything about France
Guides
Free tools
Comparisons
In other languages
Français 35
- Qu'est-ce que le BODACC
- SIREN, SIRET et numéro de TVA : les différences
- Recherche d'un numéro SIREN
- Numéro de TVA intracommunautaire
- Extrait Kbis par API
- Valider un SIREN pour la facture électronique
- API des procédures collectives
- Procédures collectives par mois en France
- Alternative à Pappers
- Alternative à l'API Sirene
- API TVA intracommunautaire (VIES)
- API données entreprises, KYB et comptes annuels
- Alternative à Altares
- Alternative à Creditsafe
- Alternative à Ellisphere
- Alternative à Infogreffe
- Alternative à Societe.com
- API KYB : vérifier une entreprise dans 36 pays
- API comptes annuels et bilans d’entreprises
- API de criblage de sanctions (bêta)
- API de diligence fournisseurs
- API marchés publics
- API d’onboarding KYB
- API risque acheteur public
- Surveillance insolvabilité client
- API de vigilance continue
- L'API BODACC en Node.js
- KYB : définition, étapes et obligations
- Facture électronique
- API Entreprise (gouv)
- API RNE (INPI)
- Risque client
- Nouvelles entreprises créées
- Veille concurrentielle marchés publics
- France : format de l’identifiant d’entreprise (SIREN / SIRET)
More countries: Western Europe
SpainUnited KingdomIrelandBelgiumSwitzerlandGermanyNetherlandsAll data by country and type
Contains data from BODACC (DILA) and the INPI national company register (RNE), France.