France Company Data — SIREN, Directors & Financials
Pricing
from $4.00 / 1,000 results
France Company Data — SIREN, Directors & Financials
Look up French companies by name or SIREN, or browse by industry (NAF) & department. Returns directors, financials (revenue, net result), workforce, address, legal form & status from official open data (INSEE/INPI) — no API key. KYC, due diligence, lead lists.
Pricing
from $4.00 / 1,000 results
Rating
0.0
(0)
Developer
Berkan Kaplan
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 hours ago
Last modified
Categories
Share
France Company Data — SIREN, Directors & Financials
Turn France's official company register into structured, ready-to-use intelligence. Look up any French company — or a whole sector — and get one clean JSON record with identity, directors, annual financials, workforce, activity and registered address, straight from the French government's open data. No API key, no login, no fragile HTML scraping — so it doesn't break when a website changes.
Built on the official Recherche d'entreprises API (recherche-entreprises.api.gouv.fr), which merges INSEE Sirene firmographics, INPI RNE directors and published annual accounts into one source, released under Licence Ouverte / Etalab 2.0 — free to reuse and resell, with attribution.
- 🇫🇷 Whole official register — any French company by name, SIREN/SIRET, or a no-name sector browse (NAF + department + size)
- 👤 Directors & auditors — every officer with role, birth year and nationality; auditors (commissaires aux comptes) too — ~92% coverage (measured)
- 💶 Real financials — revenue & net result per filed year, the latest given raw, compact (
€311M) and exact (311,448,000) - ⚡ Official open data, no key — Licence Ouverte / Etalab 2.0: commercial reuse and resale allowed; direct connection, no proxies to manage
Quick start (API)
Build a list of active small/medium software companies (NAF 62.01Z) in Paris (dept 75) in one call:
curl -X POST "https://api.apify.com/v2/acts/foxlabs~france-company-data/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{ "nafCode": "62.01Z", "department": "75", "companyCategory": "PME", "maxResults": 100 }'
Prefer no code? Open the Input tab, type a company name (or set a browse filter), and click Start — then download the results.
What you get
One clean, flat record per company:
| Field | Type | Description |
|---|---|---|
siren | string | 9-digit SIREN — the unique company identifier |
name / legalName | string | Full name (nom complet) / registered legal name (raison sociale) |
acronym | string | Acronym (sigle), where registered |
status | string | Active or Ceased (état administratif) |
legalFormCode | string | INSEE legal-form code (nature juridique), e.g. 5710 = SAS |
companyCategory | string | INSEE size class — PME, ETI or GE |
nafCode | string | NAF/APE activity code, e.g. 62.01Z |
industrySection | string | Readable NACE section, e.g. Information & communication |
employeeRange | string | Readable workforce band, e.g. 1,000–1,999 employees (not a raw code) |
dateCreated | string | Company creation date (YYYY-MM-DD) |
establishmentsCount | number | Number of establishments (établissements) |
address | string | Full head-office (siège) address |
street / postalCode / city | string | Address parts |
department / region | string | Department number (e.g. 92) / INSEE region code (e.g. 11) |
latitude / longitude | number | Head-office geocoordinates |
directors | array | Officers and auditors — see shape below |
directorsCount | number | Count of officers/auditors |
latestRevenue | number | Latest filed revenue (chiffre d'affaires), EUR |
latestRevenueCurrency | string | EUR when revenue is present |
latestRevenueFormatted | string | Compact revenue, e.g. €311M |
latestRevenueExact | string | Exact revenue with separators, e.g. 311,448,000 |
latestNetResult | number | Latest filed net result (résultat net), EUR — can be negative |
latestFinancialYear | string | Year of the latest filed accounts, e.g. 2024 |
financials | array | Per year: { year, revenue, netResult } |
isNonprofit / isESS / isMissionCompany | bool / null | Association / social-&-solidarity-economy / société-à-mission flags |
vatNumber | string | Intra-EU VAT (TVA), e.g. FR14794598813 |
source / sourceUrl | string | Attribution string / link to the official annuaire-entreprises page |
scrapedAt | string | ISO timestamp of the run |
Each entry in directors is either a person — { type: "person", name, role, birthYear, nationality } — or a legal-person / auditor — { type: "organisation", name, siren, role }. Missing values are null, never a guess.
Sample output
A real record pulled live from the source API (scrapedAt shown illustratively):
{"siren": "794598813","name": "DOCTOLIB","legalName": "DOCTOLIB","acronym": null,"status": "Active","legalFormCode": "5710","companyCategory": "ETI","nafCode": "62.01Z","industrySection": "Information & communication","employeeRange": "1,000–1,999 employees","dateCreated": "2013-07-15","establishmentsCount": 9,"address": "54 QUAI CHARLES PASQUA, 92300, LEVALLOIS-PERRET","street": "54 QUAI CHARLES PASQUA","postalCode": "92300","city": "LEVALLOIS-PERRET","department": "92","region": "11","latitude": 48.900771302,"longitude": 2.2849148026,"directors": [{ "type": "person", "name": "STANISLAS NIOX-CHATEAU", "role": "Président de SAS", "birthYear": "1987", "nationality": null },{ "type": "organisation", "name": "GRANT THORNTON", "siren": "632013843", "role": "Commissaire aux comptes titulaire" },{ "type": "organisation", "name": "KPMG S.A", "siren": "775726417", "role": "Commissaire aux comptes titulaire" }],"directorsCount": 3,"latestRevenue": 311448000,"latestRevenueCurrency": "EUR","latestRevenueFormatted": "€311M","latestRevenueExact": "311,448,000","latestNetResult": -127499000,"latestFinancialYear": "2024","financials": [{ "year": "2024", "revenue": 311448000, "netResult": -127499000 }],"isNonprofit": null,"isESS": null,"isMissionCompany": null,"vatNumber": "FR14794598813","source": "INSEE Sirene + INPI RNE via recherche-entreprises.api.gouv.fr — Licence Ouverte / Etalab 2.0","sourceUrl": "https://annuaire-entreprises.data.gouv.fr/entreprise/794598813","scrapedAt": "2026-07-05T09:12:44.130Z"}
Input & filters
Three ways to search — mix and match:
- By SIREN / SIRET (
sirenNumbers) — exact company lookup, 9- or 14-digit. The most precise input. - By name (
companyNames) — full-text search, e.g.Doctolib,BlaBlaCar. - Browse & filter — no name needed: by NAF code (
nafCode, e.g.62.01Z), department (department, e.g.75= Paris) and/or size (companyCategory—PME/ETI/GE). Ideal for building targeted sector lists. - Include ceased companies (
includeInactive) — off by default (active only); enable to widen to ceased (cessée) entities. - Max results (
maxResults) — 1–10,000 (the source API's hard window per query).
Example inputs (copy & paste)
// 1) Exact lookup by SIREN and/or SIRET — full profiles{ "sirenNumbers": ["794598813", "79459881300077"] }// 2) Name search — find companies by name{ "companyNames": ["Doctolib", "BlaBlaCar"], "maxResults": 50 }// 3) Browse a sector — active software SMEs in Paris{ "nafCode": "62.01Z", "department": "75", "companyCategory": "PME", "maxResults": 1000 }// 4) Whole sector nationwide — every company under a NAF code{ "nafCode": "62.01Z", "maxResults": 5000 }// 5) Large enterprises (GE) in a department (Rhône / Lyon){ "department": "69", "companyCategory": "GE", "maxResults": 500 }// 6) Include ceased companies in a sector (history / M&A screening){ "nafCode": "62.02A", "department": "75", "includeInactive": true, "maxResults": 2000 }// 7) Mid-market firms (ETI) in a sector nationwide (wholesale trade){ "nafCode": "46.90Z", "companyCategory": "ETI", "maxResults": 3000 }
Use cases
- KYC / KYB onboarding. Pass a counterparty's
sirenNumbers→ verified legal identity, status, legal form, VAT, size class, and the full directors & auditors list — the firmographic core of a compliance file, in one call. - Supplier & counterparty due diligence. Before you sign, read a company's directors, its financial trajectory (revenue + net result per filed year) and whether it's still active.
- Market sizing & sector mapping. Browse a NAF code across a department → count the players, see the size distribution (
companyCategory) and rank leaders by revenue. - ICP / account targeting lists. Build a firmographic list by industry + region + size to feed your CRM, then enrich contacts with your own tooling. (This dataset is firmographic — it doesn't include company contact emails or phones.)
- Credit & risk screening. Rank a portfolio by latest revenue and net result, and flag ceased entities before extending terms.
- CRM enrichment & M&A screening. Feed existing SIRENs or names → append NAF, size band, address, geocoordinates, directors and financials; missing fields return
null, never a guess. Filter a sector by size to spot targets and see who controls each company.
Performance & throughput
Each search pages the official API at 25 records per page with a short, polite delay between pages — so a single SIREN or name returns in seconds, and larger browses scale with the result count. There are no external API keys, proxies or rate limits to manage. The source API caps any single query at 10,000 records — use the NAF, department and size filters to slice large sectors into sub-10k pulls. Direct connection is used by default (the open-data API rejects the shared datacenter proxy pool).
Integrations
JavaScript (apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('foxlabs/france-company-data').call({nafCode: '62.01Z', department: '75', companyCategory: 'PME', maxResults: 500,});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Python (apify-client):
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("foxlabs/france-company-data").call(run_input={"nafCode": "62.01Z", "department": "75", "companyCategory": "PME", "maxResults": 500,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["name"], item.get("latestRevenueFormatted"))
Also works with Make / n8n / Zapier (Apify app → run this Actor, map the input), scheduled runs, webhooks, and the Apify MCP server so AI agents can call it as a tool.
Data quality
Coverage is read live from the official register on every run — nothing is cached or fabricated, and missing values are null.
| Field group | Coverage |
|---|---|
| Core identity (SIREN, name, status, NAF/APE, head-office address) | Present for every company — these are the base Sirene register fields |
| Directors / auditors | ~92% (live-verified, July 2026) — sole proprietors and some entities have no registered officers |
| Financials (revenue + net result) | ~68–74% overall (400-company sample, July 2026); ~56% for small firms (PME), ~76–83% for mid-caps & large groups (ETI/GE) |
| Financial freshness | ~80% of companies with published accounts have 2024 or 2025 as their latest filed year (July 2026 sample) |
When financials are present, revenue and net result are both filled. French micro/small firms may keep their accounts confidential, which is why small-company coverage is lower.
Pricing
Pay per result — you are billed only for the company records returned. No subscription, no seat fees; a name that matches nothing, or a filtered browse that returns fewer rows, costs less. There's an Apify free tier to evaluate the full feature set before you scale, and no proxy or third-party costs to add.
FAQ
Do I need an API key or an account with INSEE/INPI? No — no key, no login. The Actor calls the official open-data API for you.
Can I use this data commercially / resell it? Yes — the source is Licence Ouverte / Etalab 2.0, which permits commercial reuse and redistribution with attribution. Each record carries the attribution string in source. (See the prospecting note under Notes & limits.)
How do I look up one specific company? Put its 9-digit SIREN or 14-digit SIRET in sirenNumbers, or its name in companyNames.
Can I build a list without knowing any names? Yes — set a browse filter: nafCode and/or department and/or companyCategory.
Does it include contact emails or phone numbers? No. This is a firmographic dataset (identity, directors, financials, address) — the open register doesn't expose company contact emails/phones. Use it to build and qualify target lists, then enrich contacts with your own tools.
Are beneficial owners (bénéficiaires effectifs) included? No — public access to the beneficial-owner register was legally restricted in France in 2024, so no open source can provide them.
How fresh are the financials? They're read live from the official API on each run; in a July 2026 sample, ~80% of companies with published accounts had 2024 or 2025 as their latest filed year.
What export formats are available? JSON, CSV, Excel, or via the Apify API / integrations.
How many companies can I get in one run? Up to 10,000 per query (the source API's hard window). Narrow with NAF/department/size to page through larger sectors.
Why is a company missing directors or financials? Sole proprietors and some entities have no registered officers, and micro/small firms may keep accounts confidential. Missing values are null, never fabricated.
Troubleshooting
- 0 results → filters are too narrow or a code is malformed. Check the NAF format (
62.01Z) and department (75), and if you're looking for a closed company, enable Include ceased companies. - "Provide companyNames, sirenNumbers, or a browse filter" → the run had no input. Add at least one name, number, or browse filter.
- A big sector stops at 10,000 rows → that's the source API's hard window, not a bug. Add a
departmentorcompanyCategoryfilter to split the sector into sub-10k slices. - Enabling a proxy causes HTTP 503 / empty runs → leave Proxy off (the default). The open-data API accepts direct connections but rejects the shared datacenter proxy pool.
Notes, limits & legal (honest)
- Source & licence. INSEE Sirene + INPI RNE via
recherche-entreprises.api.gouv.fr, released under Licence Ouverte / Etalab 2.0 (commercial reuse & redistribution permitted, attribution required). Records carry the attribution string insource. - Director personal data. Director/auditor names are public registry information. Under French/EU rules, reuse for unsolicited commercial prospecting is restricted — use this data for KYC, due diligence, research and B2B intelligence, and honour opt-outs. You are the data controller for your use.
- Beneficial owners not included. Public access to the bénéficiaires effectifs register was legally restricted in France in 2024.
- Department filter caveat. The filter follows the source API and may match companies with an establishment (not only their head office) in that department; the address returned is always the head office (siège). (A siège-strict option is planned.)
- 10,000 records per query is the source API's hard limit — full-database export via the INSEE Sirene bulk file is planned.
- Firmographic, not contact. No company emails or phone numbers are included.
- Not affiliated with INSEE, INPI or the French government; this Actor redistributes their public open data.
Support
Questions, a field you'd like added, or a custom build? Open the Issues tab on this Actor, or email info@foxlabs.com.tr. We reply fast.
If this Actor saves you time, a ⭐ review really helps.
Changelog
0.2 — 2026-07-05
- Reworked docs: API quick-start, full field table, real sample output, JS/Python/Make/MCP integration snippets, use cases, data-quality summary, FAQ & troubleshooting.
0.1
- Initial release. Three search modes (SIREN, name, browse), directors + annual financials, readable workforce/industry labels, formatted money, active-default. Official Recherche d'entreprises API, no key.
- Direct connection by default: the source API rejects shared datacenter proxies (HTTP 503), so no proxy is used unless you explicitly enable one.
Part of the foXLabs data platform — public-data company, procurement, financial & AI-search intelligence scrapers. Browse the full suite and free how-to guides at data.foxlabs.com.tr.
