France SIRENE Company Registry Scraper
Pricing
Pay per event
France SIRENE Company Registry Scraper
Export French registered-company records from the official SIRENE/recherche-entreprises open-data API — SIREN, legal name, NAF/APE code, legal form, workforce range, status, head-office address — filtered by name, NAF code, department, commune or workforce range, as JSON, CSV or Excel.
Pricing
Pay per event
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 hours ago
Last modified
Categories
Share
🎯 What this scrapes
France's recherche-entreprises API is the state's own keyless, public SIRENE company registry — no auth, no API key — but its JSON nests head-office address, workforce range, VAT numbers and officer data several levels deep inside each SIREN entity. This Actor flattens every matching company into one clean, English-labelled row, keeps running through malformed entries and genuine zero-match searches, and prices at $4.20 per 1,000 results at scale.
🔥 What we handle for you
- 🧊 Flattens SIRENE's nested JSON — head-office address, workforce range, VAT and size-category data flattened into one clean, English-labelled row per company.
- 🧱 Honest zero-match handling — a narrow filter combination that matches nothing still finishes SUCCEEDED with a clear status message, never billed as a failed run.
- 🩹 Per-row fault isolation — one malformed registry entry is logged and skipped; it never crashes the rest of the page.
- 🔁 Retries transient 429/5xx responses with exponential backoff instead of failing the whole run.
- 🎯 Typed, validated dataset rows — Pydantic-checked, stable SIREN identifiers, JSON / CSV / Excel export straight from the Apify Console.
- 💰 Pay-Per-Event pricing — you only pay for results that hit your dataset. No data, no charge.
💡 Use cases
- Build a French B2B prospect list filtered by NAF industry code, department or commune.
- Run a KYC/AML supplier or counterparty check against France's authoritative SIRENE registry.
- Screen a partner list for ceased companies before contracting.
- Support market-entry research by pulling every registered company in a department, commune or industry line.
⚙️ How to use it
- Click Try for free at the top of the page.
- Fill in the input form — most fields have sensible defaults.
- Click Start. Output streams into the run's dataset.
- Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.
📥 Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
nameQuery | string | no | '—' | Match companies whose name, SIREN or SIRET contains this text. |
nafCode | string | no | '—' | French NAF/APE industry code, format NN.NNL, e.g. 56.10C. Leave empty for all industries. |
departmentCode | string | no | '—' | INSEE department code, e.g. 13, 75, 2A. Leave empty to search all of France. |
communeCode | string | no | '—' | INSEE commune code, e.g. 13027. Leave empty to skip this filter. |
workforceRange | string | no | '—' | INSEE workforce-range code, e.g. 22. Leave empty to skip this filter. |
administrativeStatus | string | no | 'A' | A = active, C = ceased. Defaults to active companies only. |
maxResults | integer | no | 100 | Stop after this many companies. Each company is one billed result row. |
proxyConfiguration | object | no | {'useApifyProxy': False} | This is a public French government API and does not need a proxy. |
Example input
{"administrativeStatus": "A","maxResults": 3,"proxyConfiguration": {"useApifyProxy": false}}
📤 Output
Every row is one dataset item.
| Field | Type | Notes |
|---|---|---|
siren | string | French SIREN (9-digit company identifier). |
siret_headquarters | string | SIRET of the head-office establishment. |
company_name | string | Full display name (nom_complet). |
legal_name | string | Registered legal name (nom_raison_sociale). |
acronym | string | Company acronym/sigle, when registered. |
legal_form_code | string | INSEE legal-form numeric code (nature_juridique). |
company_size_category | string | INSEE size category: GE/ETI/PME/TPE. |
company_size_label | string | Decoded company size category. |
naf_code | string | NAF/APE activity code, e.g. 56.10C. |
naf_section_code | string | Single-letter NACE Rev.2 section, e.g. I. |
naf_section_label | string | Decoded NACE Rev.2 section name. |
workforce_range_code | string | INSEE workforce-range code. |
workforce_range_year | string | Reference year for the workforce range. |
administrative_status | string | A (active) or C (ceased). |
is_active | boolean | True when administrative_status == 'A'. |
creation_date | string | Company creation date (YYYY-MM-DD). |
closure_date | string | Cessation date (YYYY-MM-DD), if ceased. |
last_updated | string | Registry last-update timestamp. |
street_address | string | Head-office street address. |
postal_code | string | Head-office postal code. |
city | string | Head-office commune name. |
department_code | string | Head-office INSEE department code. |
establishment_count | integer | Total establishments for this SIREN. |
open_establishment_count | integer | Currently-open establishment count. |
vat_number | string | First registered VAT number, when available. |
url | string | Public annuaire-entreprises.data.gouv.fr lookup URL. |
Example output
{"siren": "552100554","siret_headquarters": "55210055400015","company_name": "TOTALENERGIES SE","legal_name": "TOTALENERGIES SE","acronym": null,"legal_form_code": "5710","company_size_category": "GE","company_size_label": "Grande entreprise (large enterprise)","naf_code": "70.10Z","naf_section_code": "M","naf_section_label": "Professional, scientific and technical activities","workforce_range_code": "53","workforce_range_year": "2023","administrative_status": "A","is_active": true,"creation_date": "1924-03-28","closure_date": null,"last_updated": "2026-08-20T04:12:00","street_address": "2 PLACE JEAN MILLIER","postal_code": "92400","city": "COURBEVOIE","department_code": "92","establishment_count": 412,"open_establishment_count": 287,"vat_number": "FR69542051180","url": "https://annuaire-entreprises.data.gouv.fr/entreprise/552100554"}
💰 Pricing
Pay-Per-Event — you pay only when these events fire:
| Event | USD | What it is |
|---|---|---|
actor-start | $0.2 | One-off warm-up charge per run |
result | $0.004 | Per dataset item |
Example: 1 000 results at the rates above ≈ $4.20. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.
🚧 Limitations
- Returns current registry data only — no financials, shareholders, beneficial owners or historical name/address change logs.
- Company size category and NACE section labels are decoded from bounded, standard INSEE/NACE Rev.2 tables — not a full free-text industry description.
- The
urlfield links to the public annuaire-entreprises.data.gouv.fr lookup page, which renders client-side and cannot be verified per-SIREN without a browser.
❓ FAQ
Do I need an API key?
No. The SIRENE recherche-entreprises API is open French government data and needs no credentials — leave the proxy setting off too.
What happens if my filters match nothing?
The run finishes successfully with zero rows and a status message naming the filters you searched — you're never billed for a failed run just because a search was narrow.
Can I pull every company in an industry or department?
Yes — set a NAF code, department or commune and raise Maximum companies (up to 1,000 per run); the Actor pages until the registry runs out or your cap is reached.
Why do I need at least one filter?
The underlying API itself refuses a completely unfiltered search. Administrative status defaults to Active, which already satisfies this — you only need to add another filter if you clear that field too.
💬 Your feedback
Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.