Skip to main content

Start here

This guide contains public integration notes for France. Use it for identifier formats, search behavior, and country-specific caveats. The live source of truth for coverage, pricing, data sources, documents, legal forms, roles, and status values is the pricing page.

France coverage, pricing, and sources

Open the current catalog for supported datapoints, documents, sources, identifiers, and availability.
Country details below are preserved as integration notes. If a table or example conflicts with the live pricing page, use the pricing page as the source of truth and contact support.

Table of Contents

Data Sources

France uses multiple official registries. For a given entity, data comes from a single primary source — the system does not merge attributes across registries. It follows a deterministic priority chain and returns data from the first matching source.

Commercial companies & sole entrepreneurs

  • RNE (Registre National des Entreprises) — Operated by the INPI since January 1, 2023, the RNE replaced and unified three former registries: the RNCS (Registre National du Commerce et des Societes), the Repertoire des Metiers, and the Registre des Actifs Agricoles. This is our primary source for the vast majority of French entities. When a company is found in the RNE, all structured attributes come from the RNE: company name, legal form, status, incorporation date, registered address, share capital, activity codes, legal representatives, shareholders, UBOs, and establishments.
  • SIRENE (INSEE) — The SIRENE repertoire, managed by the INSEE since 1973, covers ~25 million enterprises. Used in two ways: (1) as a supplement to RNE for employee count range (expressed in tranches, e.g. “50 to 99 employees” — note: figures can be 2-3 years old per INSEE methodology); (2) as a standalone fallback for entities that exist in INSEE but are not yet in the RNE, providing a limited dataset only (company name, legal form, activity code, status, employee count — no legal representatives, shareholders, or UBOs).
  • BODACC (Bulletin Officiel des Annonces Civiles et Commerciales) — Free API operated by the DILA. Used as an exceptional last resort only, when an entity appears in none of the above registries (not in RNE, not in SIRENE, not in RNA). This represents a negligible fraction of queries. When used, company data and legal representatives are extracted from legal announcement text.
  • Infogreffe — Used exclusively for KBIS document retrieval (certified trade register extract PDFs). It is not a structured data source for company attributes.

Non-profits

  • RNA Waldec — Non-profits (associations declarees) that have been created or have declared a modification since 2009. Our primary source for non-profits. Enriched with SIRENE data when a SIREN is available.
  • RNA Import — Historical non-profits created since 1901 that have not declared any change since 2009. Fallback when not found in RNA Waldec.
  • RNA Alsace-Moselle — Non-profits (associations de droit local) in departments 57 (Moselle), 67 (Bas-Rhin), and 68 (Haut-Rhin), which operate under local law and are excluded from the national RNA.
RNA data is periodically synchronized (monthly from data.gouv.fr) because no live API exists for the RNA registries. This is the only available access method provided by the French government for non-profit data.
  • RNA: All non-profits are automatically registered when declared at the prefecture (RNA number: W + 9 digits)
  • SIRENE: Non-profits must register if they seek public subsidies, employ staff, or are subject to VAT/corporate tax (SIREN: 9 digits)
  • RNE: Non-profits with SIRENE registration and business-like activities may also appear in INPI’s unified register, which provides comprehensive data including UBOs
Key Takeaway: All non-profits are in RNA, but only those with economic activities may also appear in RNE. Always use the RNA number (W-prefixed) as the API identifier.

Data Source Priority & Routing

For a given entity, data comes from a single primary source — the system does not merge attributes from multiple registries (all-or-nothing model). The only exception is employee count, which is always sourced separately from SIRENE.
Source Priority for Commercial Companies & Sole Entrepreneurs (SIREN lookup):
  1. RNE (INPI) — Query to the INPI registry (with automatic fallback if the live API is temporarily unavailable)
  2. SIRENE-only — For entities in INSEE but not in RNE (limited dataset: name, legal form, activity, status, employee count)
  3. RNA tables — Waldec, Import, and Alsace-Moselle (first match wins)
  4. BODACC — Last resort, for entities with legal announcements but no registry data (data extracted from announcement text)
Source Priority for Non-profits (RNA lookup):
  1. Check if the RNA number has a SIREN in SIRENE. If yes, check if that SIREN exists in RNE. If yes, use RNE data
  2. RNA Waldec — Non-profits created or modified since 2009
  3. RNA Import — Historical non-profits (no changes declared since 2009)
  4. RNA Alsace-Moselle — Local law non-profits (departments 57, 67, 68)
Important: The system enforces that non-profits with RNA numbers in RNE must be queried by their RNA number, not by SIREN. Queries using SIREN for RNA-registered non-profits will return null.

Attribute-Level Source Mapping

When data comes from the RNE (the vast majority of commercial companies and sole entrepreneurs), the following table shows the source for each attribute: When the primary source is SIRENE-only or BODACC, the available attributes are significantly more limited (see Data Availability Matrix below).

UBO Data Handling

Live UBO Fetching: When UBO data is not yet available for a company, the system automatically fetches it live from the INPI registry. This ensures UBO data is always current, even for newly registered companies.
Data Lineage (Upcoming): We are planning to add explicit source traceability to our data model, so that each attribute group in the API response will carry metadata indicating the source registry name and retrieval timestamp.

Enriched UBO data with customer INPI credentials

By default, Topograph queries INPI with a service account that returns UBO data with personal fields (date of birth, full address, nationality, place of birth) redacted per RGPD. If your organisation has one or more INPI accounts that carry the ROLE_RBE_BENEFICIAL_OWNERS and ROLE_RBE_BENEFICIAL_OWNERS_PDF roles (granted by INPI to obliged entities), you can provide those credentials to unlock the full UBO dataset and a richer synthesis PDF (ubo_extract document) for your own requests. You can register several INPI accounts. Requests are spread across them and fail over automatically if one account expires, is locked, or hits its rate limit, so your enriched UBO access stays available. When customer credentials are provisioned:
  • The ultimateBeneficialOwners datapoint is fetched under your INPI account and carries the un-redacted personal fields.
  • The ubo_extract document (synthesis PDF) is fetched under your INPI account and contains the richer content that INPI reserves for RBE-authorised accounts.
  • Both the datapoint result and the downloaded PDF are isolated to your account. No other customer can observe or read your enriched response.
When no customer credentials are provisioned, Topograph returns the default redacted INPI response. Switching from the default path to customer credentials, or rotating them, always produces a fresh INPI fetch; no stale cross-regime data is ever served. The inpi_extract (uncertified trade register extract) document always uses the default service account, even when customer credentials are provisioned. RBE enrichment only affects the UBO-focused synthesis PDF.
You add your INPI accounts yourself, on the workspace that should use them: in the dashboard under Workspaces → Vault, or with PUT /v2/workspaces/{name}/vault/fr_inpi. Credentials are encrypted on write, are never returned back, and can be rotated at any time without data loss. See Register Credentials for the payload shape and how a workspace inherits credentials. If you are not sure which RBE roles your INPI account carries, contact support@topograph.co.

Company Identifiers

Query Identifiers

Alsace-Moselle Format Breakdown: A2002THI000075 = A (prefix) + 2002 (year) + THI (court code: THI=Thionville, MET=Metz, SAG=Sarreguemines) + 000075 (sequence)
Strict format validation on /v2/companyThe formats above are the only ones accepted as the id of a company request. Any other shape (a 14-digit SIRET, a VAT number as FRXX + SIREN or 11 bare digits, or anything else) is rejected immediately with HTTP 400 (invalid_request), before any request is created or billed. This is distinct from resource_not_found, which means the identifier was well-formed but no entity exists behind it.SIRET and VAT numbers are supported in /v2/search, which resolves them to the canonical SIREN. Pass that SIREN to /v2/company. For a SIRET you can also simply take its first 9 digits.
Critical: RNA vs SIREN for Non-profitsNon-profits may have both an RNA number (W prefix) and a SIREN number. Always use the RNA number (W-prefixed) as the API ID for the most accurate and complete data retrieval. The system enforces this: querying by SIREN when an RNA number exists will return null.

Identifiers in API Response

Once you retrieve company data, the identifiers object contains all available identifiers for that entity:

Search Capabilities

Search Source Priority

Search queries are dispatched across five sources in priority order:
  1. Index lookup by ID — Pre-built search index for identifier-based searches (SIREN, SIRET, VAT, RNA, Alsace-Moselle)
  2. RNE by ID — Live INPI API lookup for identifier-based searches
  3. Index search by Name — Pre-built search index for name-based fuzzy searches
  4. RNE by Name — Live INPI API for name-based searches
  5. BODACC by ID — Last resort, SIREN/SIRET only
Search Performance: Use identifier-based searches (SIREN, RNA, VAT) for best performance and exact matching. Name searches may return multiple results from different registers (RNE, RNA Waldec, RNA Import, Alsace-Moselle).
Search uses both pre-built indexes and live lookups. Name searches query a pre-built index for fast results. Identifier searches (SIREN, RNA, VAT) also perform live registry lookups to ensure the most up-to-date data.

Quirks & Gotchas

Mappings

Company Status

Company status is determined deterministically from RNE and SIRENE data — no AI inference is involved.

RNE (primary source)

Status is derived from historical events, cessation indicators, and dormancy flags:
A dormancy declaration (“en sommeil”) does not always get updated when the company resumes activity. To avoid reporting a resumed company as inactive, dormancy is only treated as Closed when no other closure indicator is present and SIRENE’s independent administrative status does not also confirm the company as active. If SIRENE confirms activity, the standardized status is Active. Any stronger closure signal (radiation, liquidation, insolvency, an explicit dissolution event) always takes precedence over this check.
Closure reasons (when status is Closed or Under Insolvency Proceeding):

SIRENE (fallback source)

SIRENE provides only a binary active/ceased status with no closure reasons or detailed dates. When RNE is the primary source (vast majority of cases), the richer RNE status logic is used.

RNA Waldec / RNA Import

RNA Alsace-Moselle

France uses the INSEE catégorie juridique nomenclature (4-digit codes covering all entity types). Every code is mapped deterministically to a standardized legal form, English translation, and ISO 20275 (ELF) code via a static lookup table — no AI is involved at runtime. The mapping was generated from the full RNE nomenclature (450 codes) using AI enrichment + ISO 20275 embedding lookup, then frozen as a static file.
Legal form mapping is fully deterministic. The local French legal form name (from the INSEE nomenclature) is always preserved verbatim alongside the standardized classification and ISO 20275 code.

Key Business Forms

Sole Entrepreneurs

Cooperatives

Civil Companies

Non-Profits

RNA legal form mapping is stable and deterministic — no AI parsers. It is based on the nature field (D, R, U, A, B, G, I, L) and the groupement field (S=Simple, U=Union, F=Federation).

Public Entities

Foreign Entities

Other Private Structures

Social Security & Mutual Organizations

The full INSEE nomenclature is available at INSEE. All 450 codes from the RNE nomenclature are statically mapped with English translations, standardized categories, and ISO 20275 (ELF) codes in legal-form-mapping.ts.
Legal representatives are extracted from the RNE composition.pouvoirs data. The classification of a role as legal representative vs. other key person is fully deterministic — a static mapping covers all 71 RNE role codes, each with a standardized role, English translation, and isLegalRepresentative flag based on French corporate law. No AI is involved.

Complete RNE Role Mapping (71 roles)

The classification of each role as legal representative or other key person is deterministic and based on French corporate law. For example, a “Gérant” (code 30) is always a legal representative, while an “Administrateur” (code 65) is always an other key person. For individual entrepreneurs (typePersonne = 'P'), the entrepreneur is always mapped as the sole legal representative with role “Entrepreneur Individuel.”
All 71 codes from the RNE role nomenclature are statically mapped in role.util.ts with standardized roles, English translations, and legal representative classification. No code is missing and no AI is involved.

Shareholders

Shareholders are extracted from the RNE for commercial companies only. Non-profits and BODACC/SIRENE-only entities do not provide shareholder data.

Extraction Logic

Shareholders come from two RNE data sources, combined and deduplicated: Special case — SCI (Societe Civile Immobiliere, code 6540): All pouvoirs entries are treated as shareholders regardless of whether they have ownership percentage data. This reflects SCI’s structure where all partners are inherently shareholders. Both individual and corporate shareholders are supported.

Ownership Fields

Shareholder data is only available for companies in the RNE. Entities sourced from SIRENE-only, BODACC, or RNA do not include shareholders. Both individual and corporate shareholders are supported.

Activity Code Mapping

France uses the NAFREV2 (Nomenclature d’Activites Francaise, Revision 2) classification, which extends the European NACE Rev. 2 standard with a trailing letter suffix. The system maps activity codes across three levels:
One code in, one code out. You get one NACE and one ISIC code per declared NAF/APE code. Where a NAF/APE code has no single equivalent in the target revision, the shared parent class is returned rather than every candidate — see One code in, one code out.
Your NACE class is the one INSEE assigned the company, not a conversion of its old code. INSEE has published NAF 2025, the French implementation of NACE Rev. 2.1: « la structure de la NAF 2025 s’emboîte strictement dans celle de la nomenclature européenne NACE Rev.2.1 ; jusqu’au niveau le plus détaillé de la NACE (niveau des classes ; codes à 4 chiffres), les deux nomenclatures coïncident rigoureusement » (INSEE, Structure de la NAF 2025). A NAF 2025 code is therefore a NACE Rev. 2.1 class followed by one French letter (Y when the class has no French subdivision, G/H/J… when it has), and INSEE already assigns every active company its NAF 2025 code in Sirene, « à titre informatif » until NAF 2025 becomes the reference nomenclature for APE codes on 1 January 2027 (INSEE, Sirene open data).We read that assignment directly. For a company INSEE recorded as 86.90F (NAF rev. 2) and assigned 86.93Y (NAF 2025):
This is more precise than any conversion of the old code can be, because INSEE recodes each company on its actual activity: a consultancy filed as 62.02A can come back as 73.12Y (media representation). In a live sample of 598 units (2026-09-03), 99.5 % of active companies carried a NAF 2025 code; the ones that don’t are units still coded in a pre-2008 nomenclature, almost all ceased, and for those the correspondence rules below apply.
The APE sub-class letter is used, not discarded. The letter on an APE code is a French subdivision of the NACE class, and it often pins the NACE Rev. 2.1 class that the bare class cannot. We resolve it through INSEE’s own Table de correspondances NAF rev.2 -> NAF 2025 (NAF 2025 sits strictly inside NACE Rev. 2.1), which names a single Rev. 2.1 class for 541 of the 732 French sub-classes:Where the sub-class straddles several Rev. 2.1 classes the class-level answer stands, so this is never less precise than the code alone. The register’s own 5-character APE code is always published in full under NAFREV2, with INSEE’s official French label.
Need a 4-digit class on every company, including units INSEE has not assigned a NAF 2025 code? Read NACE_REV2. NAF rev. 2 is the French implementation of NACE Rev. 2, so an APE code’s first four digits are a NACE Rev. 2 class. We publish that class verbatim under NACE_REV2 whenever we hold an APE code — no conversion, no guessing:
This is the key to read when your parser needs a 4-digit class for every company. It also answers for the classes NACE Rev. 2.1 dropped entirely — 41.20A (construction de maisons individuelles), 45.11Z (car sales), 96.01A/B (laundry) and others have no honest Rev. 2.1 code, so NACE is absent for them while NACE_REV2 is not.The two are different revisions of the same classification: 86.90 is not a NACE Rev. 2.1 code, and 86.9 is not a Rev. 2 class. Do not mix them in one field.
Main activity: the APE code is the company’s declared main activity (“activite principale exercee”): the register publishes exactly one per company. The NAFREV2 entry carries isMainActivity: true, and the NACE and ISIC codes derived from it inherit the flag.
AI Enrichment: When ISIC codes cannot be derived from NACE via formal mapping tables, the system uses AI to match activity descriptions to ISIC Rev. 5 codes. Every activity item includes an isAIInferred flag to distinguish official vs. AI-derived codes. NAFREV2 and NACE codes are never AI-inferred for France.
Establishment-level activity: in France each establishment (SIRET) can have its own activity, which may differ from the company-level activity. When the register records it, every establishment in company.establishments[] carries its own activities object (NAFREV2 + NACE + ISIC), in the same shape as the company-level activities.

Activity Codes by Source

Data Availability

Data Availability Matrix

Legend: ✅ Available | ❌ Not Available | ⚠️ Conditionally Available

Other Key Persons

otherKeyPersons carries the board, supervisory and other roles that cannot bind the company. It comes from the RNE role mapping, so it is populated for trade-registered entities only. SIRENE-only entities, BODACC-only entities and RNA associations return an empty list. The full role split is in the Complete RNE Role Mapping above.

Subsidiaries

subsidiaries is available for France. It returns the equity participations the queried company holds in other entities, AI-extracted from the “Filiales et participations” annex of the latest annual financial statement (bilan) filed at INPI. Verify the values against the filing before relying on them for compliance. Availability depends on the filing, not on our coverage: a company that has filed no bilan returns no subsidiaries, and associations (loi 1901) do not file bilans at all. subsidiaries is a separate data block from company, and it is available in verification mode only. See the Subsidiaries guide for the response shape.

Employee Count Tranches (SIRENE)

Documents by Company Type

Commercial companies & sole entrepreneurs (SIREN)

Non-profits (RNA Waldec, RNA Import, Alsace-Moselle)

K-Bis Availability: The certified K-Bis extract (certifiedTradeRegisterExtract) requires three conditions: company is active, is in RNE, and is available on Infogreffe (verified via Infogreffe API). Inactive, dissolved, or liquidated companies can only access the uncertified INPI extract (tradeRegisterExtract).
Avis de situation INSEE: Available for any active company registered in the SIRENE directory, regardless of K-Bis availability or RNE registration. This includes non-profits that are not registered in RNE: an active association always has at least this document, even when it has no trade register extract and no JOAF publication on file. Returned in otherDocuments[]. It contains registration details, activity code, and address from the SIRENE directory.
JOAF Documents: The Journal Officiel des Associations et Fondations (JOAF) publishes official documents for non-profits. These documents are conditionally available — not all non-profits publish to JOAF, and a non-profit that has never filed a modification or published annual accounts can legitimately have none. When available, they appear under officialPublications and financialStatements categories and stay there for as long as the non-profit exists: a later administrative name change on the same registration number does not remove an earlier publication. JOAF documents are paid (see pricing) and include two sources: JOAFE (gazette publications) and DCA (annual accounts).

Example API Responses

All examples use placeholder data. Query: POST /v2/company with { "id": "<id>", "countryCode": "FR", "dataPoints": ["company", "legalRepresentatives"] }
Note: Closed companies have active: false, status Radiation, and endDate on establishments. K-Bis (certified extract) is not available for closed companies.
Sole entrepreneurs (personnes physiques) are often non-diffusible in SIRENE, returning minimal data. Below is a diffusible example.
Note: No legal representatives (the entrepreneur is the company), no shareholders, no UBOs. legalName is the individual’s name.
Note: No legal representatives, shareholders, UBOs, or establishments. Activity codes use RNA nomenclature + AI-inferred NACE/ISIC.
Note: Uses ALSACE_MOSELLE classification instead of RNA nomenclature. Status Inscrite (not Active). Court codes: THI (Thionville), MET (Metz), SAG (Sarreguemines).
Query with "dataPoints": ["ultimateBeneficialOwners"]:
Note: UBOs are only available for commercial companies in the RNE. Fetched live from INPI API if not already available. Includes ownership/voting percentages and modalities in French.
Documents are returned when "dataPoints": ["availableDocuments"] is requested.Commercial companies & sole entrepreneurs (SIREN):Non-profits (RNA):