France Company Search: SIRENE Companies by NAF, SIREN
Pricing
$4.00 / 1,000 french company records
France Company Search: SIRENE Companies by NAF, SIREN
Search French companies in the official SIRENE register (INSEE data via recherche-entreprises.api.gouv.fr). Filter by name, NAF/APE code, region, department, headcount, legal form or revenue, or look up SIREN/SIRET. NAF labels, finances, establishments. JSON, CSV or Excel. No API key.
Pricing
$4.00 / 1,000 french company records
Rating
0.0
(0)
Developer
Nexus Scrapers
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
16 hours ago
Last modified
Categories
Security
Limited permissionsShare
France Company Search - SIRENE Companies by NAF Code, Region, Size or SIREN
Search and export French companies from the official SIRENE-based company register as clean JSON, CSV or Excel. Filter by name, NAF/APE activity code, department, region, postal code, company size (PME / ETI / GE), workforce band, legal form, revenue and labels (RGE, organic, ESS, mission company), or look up lists of SIREN / SIRET numbers. Every NAF code comes with its official INSEE label, in both NAF rev. 2 and the new NAF 2025. No API key, no proxy, no browser and no login.
The Actor reads the official French government API Recherche d'entreprises (recherche-entreprises.api.gouv.fr), which serves INSEE SIRENE and other public registers under the Licence Ouverte (Etalab 2.0).
Privacy by design (GDPR)
Built by an EU-based developer, with these defaults:
- Natural-person directors are NOT returned by default (no names, no birth dates). Company-type officers (parent companies, auditors) are kept in
corporateDirectors. - An opt-in
includeDirectorsswitch adds directors' names, roles, birth month and nationality. If you tick it, you are the data controller of that personal data and need your own lawful basis, purpose and information duties. - Partial diffusion respected: when INSEE hides a business's address (typically sole traders who restricted diffusion), the hidden fields come back as
nullanddiffusionStatusispartial. The Actor never reconstructs hidden data, and returns no natural-person directors for such companies even withincludeDirectors. - Every record carries
commercialUseOpposition: INSEE lets businesses object to the use of their data for commercial prospecting. Tick Exclude companies that opposed commercial use if you will use the results for marketing.
Who is it for
- Sales and marketing teams building B2B lists of French companies by sector (NAF), region, size and revenue.
- Market researchers and analysts counting and profiling companies by activity, territory and size band.
- Compliance, procurement and KYC teams checking a list of SIREN/SIRET numbers: status (active/ceased), legal form, head-office address, VAT number, labels.
- ESG and public-policy teams finding RGE, organic, ESS, mission-company or SIAE structures.
- AI agents and MCP users: the dataset schema describes every field (see API, MCP and AI agents).
What you get
One dataset item per company (legal unit):
- SIREN, name, legal form (code and label), creation and closure dates, active/ceased status
- main activity: NAF rev. 2 code and official label, NAF 2025 code and official label, activity section
- head office: full address, postal code, commune, department, region, latitude/longitude, head-office SIRET
- workforce band and year, size category (PME / ETI / GE), number of establishments (all and open)
- finances when public: revenue and net result by year, plus the latest figures
- labels: ESS, RGE, organic, mission company, public-service mission, Qualiopi, SIAE, EPV, association and more
- VAT number, collective-agreement codes, company-type directors, link to the annuaire-entreprises.data.gouv.fr page
- optional: the list of matching establishments (SIRET, address, coordinates, activity, workforce band)
The full field reference is in ./SCHEMA.md and in the Actor's dataset schema.
Input
All filters are optional and combined with AND. With no filter at all the Actor returns a small demo sample (large active companies in Paris).
| Field | Description |
|---|---|
query | Name, brand or address text (3 characters minimum) |
identifiers | List of SIREN (9 digits) or SIRET (14 digits) to look up. Filters are not applied to lookups |
nafCodes | NAF codes or prefixes: 62 = all IT, 62.0, 62.01Z. NAF 2025 codes are accepted too |
departments, regions, postalCodes, communeCodes | Location filters. They match companies with at least one establishment there, not only the head office |
companyCategories | PME, ETI, GE |
employeeBands | INSEE workforce bands (11 = 10-19 employees, 12 = 20-49, ...) |
legalForms | INSEE legal category codes: 5710 SAS, 5499 SARL, 5599 SA, 1000 sole trader |
labels | Only companies with these labels (ess, rge, bio, societe-mission, qualiopi, ...) |
minRevenue, maxRevenue, minNetResult, maxNetResult | Latest published figures, in EUR |
activeOnly | Default true; applies to searches |
excludeSoleTraders, excludeCommercialOpposition, sortBySize | Filters and sorting |
includeEstablishments, maxEstablishmentsPerCompany | Add the establishments that match your filters (up to 100 per company) |
includeDirectors | Opt-in, off by default. Adds natural-person directors (you become the data controller) |
maxItems | Maximum companies (default 20, maximum 10,000) |
Example: IT-services SMEs in Lyon with their local establishments
{"nafCodes": ["62"],"departments": ["69"],"companyCategories": ["PME"],"includeEstablishments": true,"excludeCommercialOpposition": true,"maxItems": 100}
Example: RGE-certified companies in Occitanie
{ "regions": ["76"], "labels": ["rge"], "maxItems": 200 }
Example: check a list of SIREN / SIRET
{ "identifiers": ["552081317", "44460844215578", "444 608 442"] }
Example: large companies (revenue above 100 M EUR) in retail
{ "nafCodes": ["47"], "minRevenue": 100000000, "sortBySize": true, "maxItems": 50 }
Output example
Real record (cloud run of 4 November 2026), shortened:
{"schemaVersion": "1.0","siren": "479144438","name": "INCOMM","legalFormCode": "5710","legalForm": "SAS, société par actions simplifiée","nafCode": "62.01Z","nafLabel": "Programmation informatique","naf2025Code": "62.10Y","naf2025Label": "Activités de programmation informatique","creationDate": "2004-10-19","status": "active","employeeBand": "50 à 99 salariés","category": "PME","establishmentsCount": 48,"openEstablishmentsCount": 15,"headOffice": {"siret": "47914443800161","address": "PARC AQUILAE IMM CELADON ETAGE 2 2 RUE DE LA BLANCHERIE 33370 ARTIGUES-PRES-BORDEAUX","postalCode": "33370", "city": "ARTIGUES-PRES-BORDEAUX", "department": "33", "departmentName": "Gironde","regionName": "Nouvelle-Aquitaine", "latitude": 44.853342, "longitude": -0.503041406},"financials": [{ "year": 2025, "revenue": 0, "netIncome": -360004 }],"labels": ["EGAPRO"],"isSoleTrader": false,"vatNumber": "FR26479144438","diffusionStatus": "full","commercialUseOpposition": true,"corporateDirectors": [{ "siren": "808804413", "name": "BDM AUDIT", "role": "Commissaire aux comptes titulaire" }],"sourceUrl": "https://annuaire-entreprises.data.gouv.fr/entreprise/479144438","scrapedAt": "2026-11-04T22:25:40+00:00"}
Pricing
Pay only for the results you get. Set Maximum results (and the run's maximum cost) to control spending: the Actor stops as soon as either limit is reached. Searches without matches and unknown SIREN numbers return nothing and charge nothing. See the Pricing tab of this Actor for the current price.
API, MCP and AI agents
Apify API (Python)
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("nexus-scrapers/france-company-search").call(run_input={"nafCodes": ["62"], "departments": ["75"], "companyCategories": ["PME"], "maxItems": 50,})for company in client.dataset(run["defaultDatasetId"]).iterate_items():print(company["siren"], company["name"], company["nafLabel"], company["latestRevenue"])
Apify API (JavaScript)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('nexus-scrapers/france-company-search').call({ identifiers: ['552081317'] });const { items } = await client.dataset(run.defaultDatasetId).listItems();
MCP and AI agents. Add https://mcp.apify.com (with ?actors=nexus-scrapers/france-company-search) to Claude, Cursor, VS Code or any MCP client, authorize with your Apify account and ask in plain language, for example: "List 50 RGE-certified companies in Occitanie with more than 20 employees" or "Is SIREN 552081317 still active and what is its head-office address?". The input and dataset schemas tell the agent every parameter and field.
FAQ
Do I need an API key? No. The French government API is open and keyless.
Is the data official? Yes: INSEE SIRENE and other public registers, served by the Annuaire des Entreprises team (DINUM). Every record links to its official page.
What is the difference between SIREN and SIRET? SIREN identifies the company (9 digits), SIRET an establishment (SIREN + 5 digits). A SIRET lookup returns the company that owns it.
NAF rev. 2 or NAF 2025? Both are returned. The register filters on NAF rev. 2 codes; you may type NAF 2025 codes too and the Actor translates them with INSEE's correspondence table (a NAF 2025 code can map to several rev. 2 codes).
Why does a department filter return companies headquartered elsewhere? Location filters match any establishment of the company. Use includeEstablishments to see which ones matched, and compare headOffice.department.
Why are some addresses null? The business restricted the diffusion of its data (partial diffusion). The register hides the address; so does the Actor. Fully non-diffusible businesses are not served at all.
Why are directors missing? By default the Actor returns no natural-person directors, for privacy. See Privacy by design. Company-type officers are in corporateDirectors.
Can I find newly created companies? The register API has no creation-date filter, so this Actor cannot search "created since". creationDate is returned for each company.
How many results can I get? Up to 10,000 per search (a hard limit of the official API). Split bigger extractions by department or NAF code.
How fresh is the data? The API is queried live; updatedAt shows when each record was last updated in the register database.
Are finances always present? Only when the company's accounts are public. In a test sample of 500 medium and large companies, 90% had figures; many small units and sole traders have none.
Data source, attribution and terms
Data: INSEE SIRENE, RNE (INPI) and other public registers, via recherche-entreprises.api.gouv.fr, published under the Licence Ouverte / Open Licence 2.0 (Etalab). Reuse, including commercial, is allowed with attribution of the source, as given here. The NAF, legal-category and workforce-band labels are INSEE nomenclatures bundled unmodified except for whitespace normalisation. The Actor honours INSEE's diffusion restrictions and exposes the commercial-prospecting objection flag. This Actor is an independent tool and is not affiliated with or endorsed by INSEE or the French government. It accesses the API politely (descriptive User-Agent, about 4 requests per second against a documented limit of 7, back-off on HTTP 429). The Actor is not legal advice: you are responsible for your own use of the data under the GDPR, French rules on commercial prospecting and any other law that applies to you.
Limitations
- At most 10,000 results per search (API limit). Use
maxItemsand split large extractions by department or NAF code. - The API provides company search data, not the complete SIRENE database: no historical changes, no annual accounts documents, no beneficial owners. For full bulk data, use the INSEE files on data.gouv.fr.
- NAF filtering is by the company's main activity, not by its establishments' activities.
- No filter on creation date; sorting is by relevance (or by number of establishments with
sortBySize). - Finances exist only for companies whose accounts are public; revenue figures may be several years old.
includeEstablishmentsreturns at most 100 establishments per company.