If you rely on company data for onboarding, payments or compliance, "where does this field come from?" is not a detail. It's the question your auditor, your risk committee or your own engineers will ask. This page sets out how Fuentio builds a French company record: which official source we read, how each field is mapped, which rules we apply, and what we deliberately refuse to infer.
It describes the method as of 10 October 2026. External facts link to their official source.
Short answer: for France, Fuentio reads the State's company search API (Annuaire des Entreprises), which serves INSEE's Sirene directory and officer data from INPI's national company register (RNE). We keep the register's own wording, add normalised codes and English labels next to it, never infer a status the source doesn't state, and attach the source, its licence and the check times to every record.
What you'll learn
- Which official source we read, and under which licences
- How each field of the record is mapped
- The status rules, and what we never infer
- How we handle VAT numbers, officers and non-public companies
- How freshness and outages show in every answer
Which source do we read for France?
We read API Recherche d'entreprises, the State's free company search API that powers the Annuaire des Entreprises. Its upstream data is INSEE's Sirene directory (identity, status, activity, headcount band, address) and INPI's RNE (officers).
Two licences apply, and we name both on every record:
- Licence Ouverte / Etalab 2.0 for the Annuaire's data.
- INPI's RNE reuse licence for officer data, which allows commercial and non-commercial reuse and asks reusers to cite the source and the date of last update, and to respect personal data law.
That's why each French record's provenance.license reads: "Licence Ouverte / Etalab 2.0 (Annuaire des Entreprises, INSEE Sirene); officers: INPI RNE reuse licence".
How is each field mapped?
A lookup by SIREN calls the source's search with the number, then checks that the first result's SIREN equals the requested one. A near match is never returned as an exact answer. Then each field is mapped:
| Our field | From the source | Rule |
|---|---|---|
identifiers | SIREN, head-office SIRET, VAT | SIREN is primary; Luhn check digit verified |
name.original | Legal name (nom_raison_sociale) | Not the display name, which appends an acronym |
trade_names | Acronym, signs, trade names | As published |
legal_form | INSEE legal category (4 digits) | Kept as published, plus its ISO 20275 ELF code and a category |
status | A or C | active or inactive, with the source's label and date |
incorporation_date | Creation date | As published |
registered_address | Head-office address | original kept verbatim, plus parsed parts |
activity | NAF code (e.g. 64.20Z) | NACE Rev.2 and ISIC Rev.4 equivalents, English label |
employees | INSEE headcount band and year | Mapped to a labelled band |
officers | Officers from the RNE | Names and roles only (see below) |
Here's part of a real record, as the API returns it for Renault:
{
"id": "FR-SIREN-441639465",
"name": {"original": "RENAULT"},
"legal_form": {"original_code": "5510", "original_label": "SA nationale à conseil d'administration", "elf_code": "1NF1", "category": "public_limited_company"},
"status": {"value": "active", "original_label": "Active", "as_of": "2025-12-06"},
"activity": {"original_code": "64.20Z", "nace_rev2": "64.20", "isic_rev4": "6420", "label_en": "Activities of holding companies"}
}
The original code and label always travel with the normalised value. If you disagree with our mapping, you still have the register's own words. For more on the mapping rules, see how we normalise company data.
What are the status rules?
The French source distinguishes only two states: A (active) and C (ceased, "cessée"). So:
Abecomesactive;Cbecomesinactive, dated with the closure date.- We don't map "cessée" to "dissolved": in Sirene, ceased means the activity ended, not necessarily a legal dissolution. Our
dissolution_datestays empty for this source. - We never infer liquidation or a strike-off from this source. Its fields don't carry collective proceedings; those are published in the BODACC. When a question needs them, we say the source doesn't cover it rather than answer "none found".
This matters in compliance work. "Active" from Sirene is a statement about the administrative state; it isn't a statement that no proceedings are open. See how to check whether a French company is still active.
How do we handle the VAT number?
When the source provides the company's intra-community VAT number, we use it and mark vat_computed: false. Only when it's absent do we compute the expected number from the SIREN with the French formula, and mark vat_computed: true. The flag tells you which one you're looking at. A computed number shows what the VAT number would be; whether the company is registered for VAT is VIES's answer. See checking a VAT number with VIES.
What do we keep about people?
Officers come from the RNE. We keep names and roles only, marked personal_data: "officially_public". We drop birth dates, birth years and nationality even when the source has them. Sole proprietorships get no officer entries: the person's name is already the business name. And we don't offer search by person. See what personal data we keep.
What happens when a company isn't public?
The State's API doesn't return non-diffusible companies. So when a well-formed SIREN returns nothing, our answer is not_found with a message saying the company may not exist or may have opted out of public diffusion. We never fill the gap from another source, and we never present "not found" as "doesn't exist". See why some French companies are missing from public searches.
How fresh is the answer, and what if the source is down?
Every record we fetch is stored. A record younger than 7 days is served from our store; an older one is fetched again. If the source fails, we serve our last copy with meta.stale: true and its real check time. You always know which you got. See provenance on every answer.
Upstream limits shape this design: the State's API documents at most 7 requests per second per IP and 30 per network, and we stay well below them.
Fuentio's API isn't open yet. Become an early tester to see these records on your own companies before launch.
See what we cover in France and Spain.
Limits. This page describes Fuentio's method on 10 October 2026; we'll update it when the method changes. Upstream rules come from the API Recherche d'entreprises documentation and INPI's RNE reuse licence. Sirene's "ceased" is an administrative state, not a legal finding.
Frequently asked questions
Where does Fuentio's French company data come from?
From API Recherche d'entreprises, which serves INSEE's Sirene directory and officer data from INPI's RNE, under Licence Ouverte / Etalab 2.0 and the RNE reuse licence.
Does "inactive" mean the company was dissolved?
No. It means Sirene marks the company as ceased. We never turn that into a legal dissolution, liquidation or strike-off.
Is the VAT number computed or official?
Official when the source gives it (vat_computed: false); computed from the SIREN only when it doesn't (vat_computed: true).
What does "not found" mean for a French SIREN?
No public record: the company may not exist, or may have opted out of public diffusion.
Sources
- API Recherche d'entreprises, documentation (read on 10 October 2026): recherche-entreprises.api.gouv.fr
- Data behind the Annuaire des Entreprises, Licence Ouverte 2.0: data.gouv.fr
- INPI, RNE reuse licence: inpi.fr
- INSEE, definition of the SIREN number: insee.fr
