France Company Data — SIREN, Directors & Financials avatar

France Company Data — SIREN, Directors & Financials

Pricing

from $4.00 / 1,000 results

Go to Apify Store
France Company Data — SIREN, Directors & Financials

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

Berkan Kaplan

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

7 days ago

Last modified

Share

France Company Data — SIREN, Directors & Financials

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. ~95% of companies & sole traders carry at least one officer; ~75% across a mixed browse, which also returns associations & public bodies (they register none) — measured 2026-07-28, n=2,095
  • 💶 Real financials — revenue & net result per filed year, the latest given raw, compact (€311M) and exact (311,448,000). Present for ~58% of commercial companies (SAS/SARL/SA, n=1,362); French micro-firms may keep their accounts confidential
  • 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:

FieldTypeDescription
sirenstring9-digit SIREN — the unique company identifier
name / legalNamestringFull name (nom complet) / registered legal name (raison sociale)
acronymstringAcronym (sigle), where registered
statusstringActive or Ceased (état administratif)
legalFormCodestringINSEE legal-form code (nature juridique), e.g. 5710 = SAS
legalFormLabelstringOfficial INSEE label for that code, e.g. SAS, société par actions simplifiée — the French original, verbatim (not a translation), so it can be checked word-for-word against the register
companyCategorystringINSEE size class — PME, ETI or GE
nafCodestringNAF/APE activity code, e.g. 62.01Z
industrySectionstringReadable NACE section, e.g. Information & communication
employeeRangestringReadable workforce band, e.g. 1,000–1,999 employees (not a raw code)
dateCreatedstringCompany creation date (YYYY-MM-DD)
establishmentsCountnumberNumber of establishments (établissements)
addressstringFull head-office (siège) address
street / postalCodestringAddress parts
citystringCommune. Paris/Lyon/Marseille arrondissement suffixes are normalised away (PARIS 04, MARSEILLE 15EME, LYON 1ERPARIS, MARSEILLE, LYON) so grouping by city doesn't split into phantom buckets — the arrondissement stays in postalCode and in the verbatim address
department / regionstringDepartment number (e.g. 92) / INSEE region code (e.g. 11)
latitude / longitudenumberHead-office geocoordinates
directorsarrayOfficers and auditors — see shape below
directorsCountnumberCount of officers/auditors
latestRevenuenumberLatest filed revenue (chiffre d'affaires), EUR
latestRevenueCurrencystringEUR when revenue is present
latestRevenueFormattedstringCompact revenue, e.g. €311M
latestRevenueExactstringExact revenue with separators, e.g. 311,448,000
latestNetResultnumberLatest filed net result (résultat net), EUR — can be negative
latestFinancialYearstringYear of the latest filed accounts, e.g. 2024
financialsarrayPer year: { year, revenue, netResult }
isNonprofit / isESS / isMissionCompanybool / nullAssociation / social-&-solidarity-economy / société-à-mission flags
vatNumberstringIntra-EU VAT (TVA), e.g. FR14794598813
source / sourceUrlstringAttribution string / link to the official annuaire-entreprises page
scrapedAtstringISO 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",
"legalFormLabel": "SAS, société par actions simplifiée",
"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 — companies headquartered there, siège-based) and/or size (companyCategoryPME / ETI / GE). Ideal for building targeted local 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 ApifyClient
client = 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.

How these numbers were measured. 2,095 records pulled on 2026-07-28 from five live browse slices — dept 69 Lyon (500 rows), dept 13 Marseille (295), dept 75 Paris (500), NAF 62.01Z nationwide (500), and dept 13 + NAF 56.10A (300) — plus a separately-reported 20-company known-brand SIREN lookup. A percentage is the share of returned rows carrying a non-empty value.

Field groupMeasured coverage
Core identity (SIREN, name, status, legal form, NAF/APE, workforce band, creation date, address)100% — the base Sirene register fields
City / postcode / geocoordinates99.0% / 99.0% / 98.0%
Directors / auditors74.8% of all returned rows — and that splits hard by entity type: 94.7% for companies & sole traders (legal-form codes 1000–6901, n=1,654) vs 0.5% for associations, unions & public bodies (codes 7xxx–9xxx, n=441), which register no officers at all
Financials (revenue + net result)37.9% of all returned rows; 57.9% of commercial companies (SAS/SARL/SA, n=1,362); 0% for sole traders, associations and public bodies, which file no annual accounts
Financials by size, companies onlyPME 47.6% · ETI 90.8% · GE 97.2%
Financial freshness61.1% of the rows that do have accounts show 2024 or 2025 as the latest filed year; 79.1% show 2022 or later (n=794)
VAT number61.2%

Coverage swings with what you browse — plan for it. Across the five slices, directors ran from 17.6% (a Marseille location-only browse that happened to return 64% associations) to 97.7% (a Marseille restaurant-sector browse), and financials from 4.4% to 48.4%. A sector browse (nafCode) returns registered businesses and scores high; a location-only browse also surfaces associations, unions and public bodies, which have no officers and file no accounts, so the averages drop. If you want trading companies only, browse with a nafCode (or filter on legalFormCode starting 5). For reference, a 20-company known-brand SIREN lookup scored 100% directors / 95% financials — the practical ceiling for exact lookups of large, well-known firms.

When financials are present, revenue and net result are both filled (794 of 794 measured rows). 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. Measured on 2026-07-28 over 794 rows that have accounts: 61% had 2024 or 2025 as their latest filed year and 79% had 2022 or later — filing lag varies a lot by company, and some publish only sporadically.

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? Because that entity type doesn't file them. Associations, unions and public bodies register no officers in the INPI RNE (measured: 0.5% of 441 such rows had any) and file no annual accounts; sole traders have no officer list either; and micro/small companies may keep their accounts confidential. Companies & sole traders carry directors ~95% of the time. Missing values are null, never fabricated.

Why does my location browse return lots of associations? A department browse with no nafCode searches the department name, so entities whose name contains it — "…des Bouches-du-Rhône" federations, committees, associations — rank high. Add a nafCode (or keep only rows whose legalFormCode starts with 5) to get trading companies.

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 department or companyCategory filter 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.
  • 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 in source.
  • 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 = head office (siège). The department filter returns companies headquartered in that department (registered office / siège), not merely those with a branch there — the collector pages the source API and keeps only siège matches. A department browse without a nafCode matches on the department name, so it skews toward entities carrying that name (associations, federations, public bodies) and its reach is bounded by how many records mention it — a Bouches-du-Rhône (13) location-only browse exhausted at 295 companies. Pair the department with a NAF sector for depth and for a trading-company mix.
  • City labels are normalised. INSEE returns the same commune as PARIS, PARIS 04, MARSEILLE 15EME or LYON 1ER depending on the record (33 of 2,115 measured rows carried a suffix). We normalise city to the bare commune name — the form ~97% of records already use — so grouping by city doesn't split into phantom buckets. Nothing is lost: the arrondissement stays in postalCode and in the verbatim address. This is the only field we rewrite; everything else is passed through as the register returns it.
  • legalFormLabel is a lookup, not a translation. The API returns only the 4-digit code; we attach the official INSEE catégories juridiques (niveau III) label for it — 260 codes, the same nomenclature the government's own annuaire-entreprises front-end uses for this API. All 2,115 measured rows resolved to a label; any code outside the list yields null and the raw code is always kept in legalFormCode.
  • 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.1 — 2026-07-28 — Coverage percentages recalibrated to measured values

  • Percentages recalibrated to measured values. The previous figures were too optimistic. Re-measured over 2,095 rows from five live browse slices (Lyon, Marseille, Paris, NAF 62.01Z nationwide, Marseille restaurants) on 2026-07-28: directors 92% → 74.8% overall (94.7% for companies & sole traders), financials 68–74% → 37.9% overall (57.9% for commercial companies), freshness 80% → 61.1% of rows that have accounts. Every figure in the README now carries its sample size and method, and the per-slice variance (directors 17.6%–97.7%) is documented instead of averaged away. No data or code behaviour changed with this entry — only the claims, which now match what the Actor actually returns.
  • New field legalFormLabel. legalFormCode was a bare 4-digit code (5710) with no label. Records now also carry the official INSEE catégories juridiques label (SAS, société par actions simplifiée) — 260 codes, the nomenclature the government's own annuaire-entreprises site uses. All 2,115 measured rows resolved; unknown codes stay null.
  • Consistent city labels. INSEE returns the same commune as PARIS, PARIS 04, MARSEILLE 15EME or LYON 1ER depending on the record, which quietly split "group by city" into phantom buckets. city is now normalised to the bare commune name; the arrondissement remains in postalCode and address.

2026-07 — Faster bulk paging

  • Pages are now fetched in rate-capped concurrent batches instead of one at a time — large browse/name runs finish several times faster, while staying safely within the source API's request limits. Same records, same completeness, less waiting.

2026-07 — Siège-based department browse

  • The department filter now returns companies headquartered (siège) in the department, not just those with a branch there — the collector pages the source API and keeps siège matches until the result cap fills. Fixes the old behaviour where e.g. "Corse-du-Sud (2A)" surfaced Paris-headquartered giants that merely had a Corsica branch.

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.