How to Scrape France's Company Registry (SIREN) in 2026
Export French companies from the official SIREN/SIRET registry — name, NAF code, address, directors — filtered by activity or department. No API key needed.
France is unusually generous with company data. The government publishes the entire company registry — the Annuaire des Entreprises, built on the official SIRENE database — through a fully open, keyless JSON API. That means you can pull every active bakery in Paris, every software company in Lyon, or every mid-cap manufacturer in a region, with SIREN identifiers, addresses, and director names, without signing up for anything. The catch is that the raw recherche-entreprises.api.gouv.fr API returns deeply nested JSON, caps deep pagination, and expects you to handle paging and deduplication yourself. This guide walks through what the registry exposes, how to query it, and where the friction is.
What’s worth extracting
Each company record from the SIREN registry flattens into 25+ tabular fields. They cluster into identity, activity, geography, and leadership:
- Identifiers —
siren(the 9-digit company identifier),siret(the head-office establishment identifier), and the directurlto the company on annuaire-entreprises.data.gouv.fr. - Names —
name(nom complet),legalName(raison sociale), andacronym(sigle) where present. - Activity —
nafCode(the NAF/APE activity code, e.g.62.01Zfor software) andnafSection(the A–U section letter). - Legal & size —
legalFormCode(nature juridique, e.g.5710for SAS),companyCategory(PME/ETI/GE),employeeRange(a bracket code), andemployeeYear. - Status & scale —
status(Aactive,Cceased),establishmentsandopenEstablishmentscounts, andcreatedDate. - Address & geo —
address,zip,city,departement,region, pluslatitude/longitude. - Leadership —
directors(the dirigeants: président, gérant, directeur général, corporate officers), each with their role, and adirectorCount.
One thing the open registry does not publish: company email addresses and phone numbers. You get official identity, address, activity, size, and directors — a strong base to enrich with a contact-finder, but not a ready-made call list.
How the source works
The scraper is a filterable front end over the government’s open API. Instead of walking HTML, it sends direct HTTP JSON queries and flattens the nested response into columns. You express your segment through structured filters rather than free-text alone.
A targeted query — bakeries in Paris, active only — looks like this:
{
"naf": "10.71C",
"departement": "75",
"etatAdministratif": "A",
"maxResults": 1000
}
The filter fields map directly onto registry concepts:
naf— the NAF/APE activity code innn.nnXformat (62.01Zsoftware,10.71Cbakery,56.10Arestaurants). Comma-separate several.section— the broader activity section letter (A–U):Cmanufacturing,Fconstruction,Jinformation & communication.departement/region/codePostal— geographic filters. Departments are codes like75(Paris),13(Bouches-du-Rhône),2A(Corse-du-Sud); regions are INSEE 2-digit codes like11(Île-de-France),84(Auvergne-Rhône-Alpes).natureJuridique— legal form code (5710SAS,5499SARL,1000sole trader).categorieEntreprise— company size:PME,ETI, orGE.etatAdministratif—A(active, best for leads) orC(ceased).
There’s also an extraParams object that passes any other supported recherche-entreprises query parameter through as raw key/value — an escape hatch for filters the form doesn’t expose. Because the API is open, a datacenter proxy is plenty; there’s no captcha and no login.
The access reality
The friction with the SIREN registry isn’t anti-bot defense — the data is deliberately open under the Licence Ouverte / Etalab. The constraints are structural:
- The 10,000-record pagination cap. This is the big one. The recherche-entreprises API hard-caps deep pagination at 10,000 records per query. For any segment larger than that — say, all restaurants in France — you must split the run by department, postcode, or activity code and combine the datasets afterward. The scraper respects
maxResults, but the underlying ceiling is the API’s, not the tool’s. - Nested JSON that needs flattening. The raw API returns companies with nested establishment and director arrays. If you build this yourself, you’ll write flattening logic to turn
dirigeantsinto adirectorsstring with roles, and to pull the head-office establishment out of the nested structure. The scraper does this for you. - Deduplication by SIREN. Paginated results can repeat companies across pages. The scraper de-dupes by
siren; roll your own and you’ll need the same. - No contact data at the source. Worth repeating because it’s a common surprise: the registry has no email or phone fields. If your workflow assumes those, you’ll need a separate enrichment step.
Working around the 10K cap
The pagination ceiling is the constraint most people underestimate, so it’s worth a concrete plan. If your target segment is under 10,000 companies, a single query with a high maxResults captures all of it. If it’s larger — a common national vertical like “all restaurants in France” easily exceeds the cap — split the run along a dimension that partitions the segment cleanly:
- By
departement— France has 101 departments, so “all restaurants” becomes 101 queries (naffixed,departementiterated), each well under the cap. - By
codePostal— for dense urban areas where a single department still overflows, drop down to postcode granularity. - By
naf— if you’re pulling a wholesection(say all of manufacturing), split by individual NAF codes within it.
Then concatenate the per-query datasets and de-dupe on siren. Each partition is independent, so the runs can proceed in parallel. The point is that the 10K cap is a per-query limit, not a per-account one — the total data available is far larger, you just have to slice the query space to reach it.
Example output
A real, trimmed record — the Blachère bakery group — looks like this:
{
"siren": "478455793",
"name": "BOULANGERIES BG (B B G)",
"legalName": "BOULANGERIES BG",
"nafCode": "10.71C",
"nafSection": "C",
"legalFormCode": "5710",
"companyCategory": "GE",
"employeeRange": "22",
"status": "A",
"establishments": 596,
"openEstablishments": 574,
"createdDate": "2004-08-25",
"siret": "47845579305205",
"address": "615 AVENUE DE LA CHAFFINE 13160 CHATEAURENARD",
"city": "CHATEAURENARD",
"departement": "13",
"region": "93",
"directors": "BERNARD BLACHERE (Président de SAS); MARIE BLACHERE (Directeur Général)",
"directorCount": 3,
"url": "https://annuaire-entreprises.data.gouv.fr/entreprise/478455793",
"scrapedAt": "2026-07-06T00:00:00.000Z"
}
Each row describes the company and its head office (siège); secondary establishments are summarized as counts, not listed individually.
Use cases
- B2B lead generation — build a French prospect list by combining an activity code with a department, complete with company name, address, and directors to target.
- Sales prospecting — filter active firms by NAF code and company size, then reach the right officer (président, gérant, directeur général) by name.
- Market research — count and profile companies by NAF/APE code, region, size category, and creation date to map a vertical.
- KYC and due diligence — verify a counterparty’s SIREN/SIRET, legal form, and active-vs-ceased status against the official source.
- Competitor mapping — survey every company in a vertical or town and benchmark size and status.
- CRM enrichment — look companies up by name or SIREN and append official registry identity, address, and leadership fields.
Cost and effort: build vs. managed
Because the API is open and free, the build-vs-buy math here is purely about engineering time, not proxy bills:
- Building from scratch — a day to learn the API’s filter parameters and its nested response shape, write the flattening logic, handle pagination up to the 10K cap, and de-dupe by SIREN. Then ongoing upkeep as the API evolves and as you build the split-by-department logic for large segments.
- Using the managed actor — set filters in a form, run, and download. Pricing is pay-per-result: a fraction of a cent per company, plus a trivial per-run start fee. A 1,000-company segment costs a few cents.
The API being free doesn’t mean the integration is free — the flattening, pagination, and dedup work is real. A managed actor collapses that into a form.
Common pitfalls
Things specific to the French registry that catch people out:
- The 10,000-cap silently truncates big segments. If you query “all companies in Île-de-France,” you’ll get 10,000 and a false sense of completeness. Always split large segments by
departement,codePostal, ornafand combine — the cap is per query. - NAF code format matters. Codes are
nn.nnX(62.01Z, not6201Zor62.01). Get the format wrong and the filter returns nothing. If you’re unsure of a code, run aqueryname search first and read thenafCodecolumn from the output. statusfilters lead quality. Ceased companies (C) still appear in the registry. For lead lists, always setetatAdministratiftoA— a ceased company is a dead lead.- No contact fields — plan for enrichment. The registry gives you identity and directors, not emails or phones. Budget a second enrichment step if your outreach needs contact details.
- Employee data is a bracket, not a headcount.
employeeRangeis a bracket code with a reference year, not a precise employee count. Treat it as a size band, and pair it withcompanyCategory(PME/ETI/GE) for coarse segmentation. - GDPR covers director names. The dirigeants are named individuals. You’re using official open data, but you remain responsible for GDPR compliance when you store or contact them.
Wrapping up
France’s open SIREN registry is one of the best free company-data sources in Europe — the data is authoritative and the licence is permissive. The work isn’t access; it’s the nested JSON, the pagination cap, and the flattening. If you need a one-time slice and enjoy API plumbing, build it. If you want a repeatable, filtered export of French companies — by activity, geography, and size, with directors attached — a managed actor handles the plumbing so you can focus on the segment.
▶ Open the France Company Registry Scraper on Apify — one run exports filtered French companies with SIREN/SIRET, NAF code, address, and directors from the official open registry; no API key or login. Export to CSV, JSON, or Excel, and start on Apify’s free monthly credit.
Related guides
EU Company Registry Data Export — Germany, France, Netherlands
How to extract company-registry records from Handelsregister, INPI, and KvK in a unified schema — for KYC, B2B lead generation, and compliance workflows.
How to Scrape Allabolag.se Sweden Company Leads in 2026
Extract Swedish company data from allabolag.se — org number, revenue, CEO, phone and email — without an API key. A guide to bulk firmographics and B2B leads.
How to Scrape the Australia Business Register (ABN/ABR)
Bulk-export Australian business names, ABNs, status and registration dates from the official data.gov.au CKAN register — no API key, no browser, no captcha.