French company data: search SIRENE by NAF code or look up SIREN numbers in bulk

Every French company has a 9-digit SIREN number and an entry in the INSEE Sirene register: legal form, NAF activity code, headcount bracket, head office, establishments (SIRET), and for many companies published revenue. The French government serves all of it for free through the API Recherche d'entreprises. This guide shows how to query it yourself, the two traps that skew lead lists, and France Company Search: SIREN/SIRET Data (SIRENE), an Apify actor that turns any search or SIREN list into clean rows, company data only, with no directors' names.

Run it on Apify Opens the actor's page on apify.com. A free Apify account is needed to run it.

Where French company data comes from

  • INSEE Sirene is the official register of companies (unités légales, SIREN) and their establishments (SIRET). It has the NAF/APE activity code, legal form, headcount bracket, creation date and addresses.
  • INPI's RNE (national business register) adds directors and filed accounts.
  • The API Recherche d'entreprises, run by DINUM, combines both with public label lists (RGE, Qualiopi, organic, ESS) and powers annuaire-entreprises.data.gouv.fr. It needs no key, allows 7 requests per second per IP, and the data is published under the Licence Ouverte 2.0, which allows commercial reuse with attribution.

Paid alternatives (Pappers, Societe.com, data brokers) add scores and contacts on top of the same register. For lists of companies by sector and place, the free API covers most needs.

Query the free API yourself

A search for active software companies (NAF 62.01Z) in Paris, tested on 2026-10-12 with curl and jq:

curl -s "https://recherche-entreprises.api.gouv.fr/search?activite_principale=62.01Z&departement=75&etat_administratif=A&per_page=3&page=1" \
  | jq -c '.total_results, (.results[] | [.siren, .nom_complet, .tranche_effectif_salarie, .siege.code_postal])'
10000
["380474494","EURO INFORMATION DEVELOPPEMENTS (EID)","51","67000"]
["394026934","EXPERIS FRANCE (EXPERIS)","51","44300"]
["849239587","SNAPDESK (SNAPDESK)","11","75010"]

Two things in that answer catch most people out:

  • The location filter matches any establishment. The first two "Paris" companies have their head offices in Strasbourg (67000) and Saint-Herblain (44300); they just have a site in Paris. For a list of Paris-based companies you have to check siege.code_postal or the department yourself.
  • 10,000 is a ceiling, not a count. total_results stops at 10,000 and the API serves at most 400 pages of 25. Bigger searches must be split (by NAF code, department or headcount) and de-duplicated.

A single lookup by SIREN works through the same endpoint:

curl -s "https://recherche-entreprises.api.gouv.fr/search?q=529991119" \
  | jq -c '.results[0] | {siren, nom_complet, nature_juridique, activite_principale, adresse: .siege.adresse, finances}'
{"siren":"529991119","nom_complet":"LEDGER","nature_juridique":"5710","activite_principale":"62.01Z",
 "adresse":"106 RUE DU TEMPLE 75003 PARIS","finances":{"2016":{"ca":868690,"resultat_net":-397198}}}

Watch out for personal data: the same answers include dirigeants (directors with names and birth month), and a sole trader's SIREN (legal form 1000) returns the owner's name and address. If you store results, filter those out. Codes such as 5710 (SAS) and headcount bracket 51 (2,000–4,999 employees) need INSEE's nomenclatures to be readable.

Search or look up companies without code

  1. Open France Company Search: SIREN/SIRET Data (SIRENE) on Apify.
  2. Pick a Mode: search with filters, look up a list of SIREN/SIRET numbers, or search near a GPS point.
  3. Set filters in plain terms: NAF code or prefix (43.22 covers plumbing and heating), department or region by name or code, headcount brackets, PME/ETI/GE, legal form (SAS), labels such as RGE or Qualiopi, revenue range.
  4. Click Start and export the Companies, Head office and location or Finances and labels view as CSV or Excel.

The actor applies the head-office rule for you (companies whose head office is in your area; "Any establishment" is an option), splits searches above 10,000 results automatically, checks SIREN and SIRET numbers (length and Luhn) before sending them, and translates codes into labels. A row from a real run on 2026-10-12, shortened:

{
  "status": "ok",
  "siren": "529991119",
  "name": "LEDGER",
  "legalForm": "SAS, société par actions simplifiée",
  "nafCode": "62.01Z",
  "nafLabel": "Programmation informatique",
  "companyCategory": "ETI",
  "headcountLabel": "250-499 employees",
  "vatNumber": "FR03529991119",
  "headOfficeSiret": "52999111900098",
  "address": "106 RUE DU TEMPLE 75003 PARIS",
  "latitude": 48.862592,
  "longitude": 2.358607,
  "financeYear": 2016,
  "revenueEur": 868690,
  "netIncomeEur": -397198,
  "corporateOfficers": [{"siren": "344366315", "name": "ERNST & YOUNG AUDIT", "role": "Commissaire aux comptes titulaire"}],
  "annuaireUrl": "https://annuaire-entreprises.data.gouv.fr/entreprise/529991119"
}

Worked examples from our test runs

Search (2026-10-12)Result
Active software companies (62.01Z) headquartered in Paris, first 5050 companies: 39 PME, 9 ETI, 2 GE; 45 with a VAT number, 34 with published accounts
RGE-certified heating and plumbing installers (43.22) in Gironde, 10–99 employees, with their sites52 companies in 32 towns (34 heating, 18 plumbing); 37 have 10–19 employees; 21 publish revenue, median €2.4 million
Restaurants (56.10A) within 2 km of Lyon city centre40 companies, median distance 0.95 km; 17 have their head office outside the Rhône, so chains appear because of a local restaurant
Lookup of 13 mixed numbers7 companies found; 3 invalid numbers, 2 sole traders and 1 unknown number returned as free rows
All active software companies in France10,200 unique companies from 36 split queries, 446 requests in 112 seconds, no rate limiting
New software companies in Creuse, weeklyFirst run 12, second run 0, after 2 simulated new companies exactly those 2

The national export is where splitting matters: a single query stops at 10,000 companies, so the actor split it by NAF code, then department, then headcount bracket, and removed the duplicates for free.

What each row contains

FieldWhat it holds
statusok, or why a lookup returned nothing: invalid_input, not_found, natural_person_withheld, error (all free)
siren, name, tradeNames, legalForm, vatNumberIdentity, with the intra-EU VAT number computed from the SIREN
nafCode, nafLabel, naf25Code, activitySectionActivity, including the new NAF 2025 code
companyCategory, headcountLabel, headcountYearPME, ETI or GE, and INSEE's headcount bracket
headOfficeSiret, address, departmentName, regionName, latitude, longitudeHead office location
financeYear, revenueEur, netIncomeEurLatest published accounts
labels, isRge, isQualiopi, isEss, collectiveAgreementsCertifications and collective agreements (IDCC)
matchingEstablishments, distanceKmOptional sites that match the search, and distances in near-a-point mode
corporateOfficersOfficers that are companies only (auditors, parent companies)

Honest limits

  • Company data only. Sole traders are never output, and directors who are natural persons are dropped. If you need named decision makers, this is the wrong tool.
  • Revenue is often missing or old. Only companies that publish accounts have figures, financeYear can be years back, and a revenue of 0 with a non-zero net income usually means the income statement was not published (our reading of the data).
  • Headcounts are brackets and estimates, updated yearly by INSEE.
  • Non-diffusible companies (which opted out of public listing) are not in the API and come back as not_found.
  • Shared rate limit. The API allows 30 requests per second per network; on busy cloud networks the actor slows down and waits.

All input fields

Generated from the actor's live input schema (build 1.0.1).

FieldTypeDefaultWhat it does
Mode
mode
stringsearchSearch = find companies with filters (NAF code, place, size, legal form, labels, revenue). Lookup = enrich a list of SIREN or SIRET numbers. Near a point = companies with an establishment within a radius of a GPS position.
Options: search, lookup, nearPoint
Search filters
Search text
query
stringOptional words matched against the company name and address, for example "boulangerie" or "transport Lyon". Leave empty to search with filters only.
NAF / APE activity codes
nafCodes
arrayMain activity of the company (NAF rev. 2). Accepts 62.01Z, 6201Z, or a short prefix: 62 = all of division 62 (IT services), 43.2 = building installation. Several codes are combined with OR.
Activity sections
activitySections
arrayBroad sectors (NAF sections). Use NAF codes above for finer filters.
Options: A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U
Departments
departments
arrayFrench departments by code or name: 75, 13, 69, 2A, 971, Paris, Gironde. Several are combined with OR.
Regions
regions
arrayRegions by name or INSEE code: Île-de-France (11), Auvergne-Rhône-Alpes (84), Provence-Alpes-Côte d'Azur (93), Occitanie (76), Nouvelle-Aquitaine (75), Hauts-de-France (32), Grand Est (44), Bretagne (53), Normandie (28), Pays de la Loire (52), Centre-Val de Loire (24), Bourgogne-Franche-Comté (27), Corse (94) and overseas regions.
Postal codes
postalCodes
array5-digit postal codes, for example 75011 or 69002.
INSEE commune codes
communeCodes
array5-character INSEE commune codes (not postal codes), for example 75111 (Paris 11e) or 33063 (Bordeaux).
Location filters apply to
locationMatch
stringheadOfficeHead office = the company's registered head office is in the chosen place (best for local lead lists). Any establishment = the company has at least one establishment (branch, shop, site) there, which also returns national companies with a local branch.
Options: headOffice, anyEstablishment
Company status
status
stringactiveActive companies only (default), closed (ceased) companies only, or both.
Options: active, closed, any
Company profile
Company size category
companyCategories
arrayINSEE category: PME = small and medium-sized (under 250 staff), ETI = intermediate-sized (250-4,999), GE = large enterprise.
Options: PME, ETI, GE
Headcount brackets
headcountBrackets
arrayNumber of employees (INSEE bracket of the company).
Options: NN, 00, 01, 02, 03, 11, 12, 21, 22, 31, 32, 41, 42, 51, 52, 53
Legal forms
legalForms
arrayINSEE legal form codes (5710 = SAS/SASU, 5499 = SARL/EURL, 6540 = SCI, 92 = all associations) or shortcuts: SAS, SASU, SARL, EURL, SELARL, SA, SNC, SCI, Association. Sole traders (1000) are not available.
Labels and certifications (all must match)
labels
arrayKeep companies that hold every selected label.
Options: rge, qualiopi, bio, ess, societeMission, association, trainingOrganisation, siae, administration, localAuthority, liveEntertainment, patrimoineVivant, responsiblePurchasing, alimConfiance, finess, uai, egapro, collectiveAgreement
Collective agreement (IDCC)
collectiveAgreementId
string4-digit IDCC code, for example 1486 (Syntec) or 1596 (building workers).
Finances
Minimum revenue (EUR)
minRevenueEur
integerLatest published revenue (chiffre d'affaires). Only companies that publish accounts can match.
Maximum revenue (EUR)
maxRevenueEur
integerLatest published revenue.
Minimum net income (EUR)
minNetIncomeEur
integerLatest published net income (can be negative).
Maximum net income (EUR)
maxNetIncomeEur
integerLatest published net income (can be negative).
Sort by size
sortBySize
booleanfalseReturn companies with the most establishments first.
Lookup
SIREN / SIRET numbers
identifiers
arrayFor Lookup mode: SIREN (9 digits) or SIRET (14 digits), spaces allowed. Each company gets one row; SIRETs add the requested establishment. Invalid numbers and unknown companies get a row with an error status and are not charged.
Near a point
Latitude
latitude
stringFor Near-a-point mode, for example 48.8566.
Longitude
longitude
stringFor Near-a-point mode, for example 2.3522.
Radius (km)
radiusKm
stringSearch radius around the point, up to 50 km. Default 5. Only NAF codes and activity sections can be combined with this mode.
Output
Include matching establishments
includeEstablishments
booleanfalseAdd the company's establishments that match the search (address, SIRET, activity, headcount, GPS), capped per company.
Max establishments per company
maxEstablishmentsPerCompany
integer5Cap for the establishments list.
Include corporate officers (companies only)
includeCorporateOfficers
booleantrueOfficers that are themselves companies, for example statutory auditors or a parent company acting as president. Directors who are natural persons are never included.
Max companies
maxItems
integer100Stop after this many companies (search and near-a-point modes). 0 = up to 100,000.
Split large searches automatically
autoSplit
booleantrueThe API returns at most 10,000 companies per search. When you ask for more, the actor splits the search by NAF code, department and headcount bracket and removes duplicates.
Monitoring
Only companies not returned before (monitoring)
onlyNew
booleanfalseRemember the companies already output for this exact search and skip them next time. Schedule the run to get newly registered companies matching your filters. The first run outputs all matches.
Monitoring memory store name
stateStoreName
stringfrance-companies-stateNamed key-value store that remembers output companies for "Only new" mode. Each different search keeps its own memory inside it.
Advanced
Requests per second
requestsPerSecond
integer4The API allows at most 7 requests per second per IP address (and 30 per network). The default of 4 stays well below; the actor slows down further when asked to.
Request timeout (seconds)
requestTimeoutSecs
integer30Timeout for one API request.
Max retries
maxRetries
integer5Retries for network errors, rate limits (HTTP 429, honouring Retry-After) and server errors.

Call it from code

Start a run and get the results in one HTTP request with the Apify API (your token is under Console, Settings, API & Integrations):

curl -X POST "https://api.apify.com/v2/acts/adamhaleworks~france-company-search-sirene-api/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"nafCodes":["62.01Z"],"departments":["75"],"status":"active","maxItems":100}'

The run's Output tab offers 3 ready-made views; every view exports to CSV, Excel, JSON or XML:

  • Companies: status, siren, name, legalForm, nafCode, nafLabel, headcountLabel, companyCategory, creationDate, city, postalCode, revenueEur, financeYear, isActive, annuaireUrl
  • Head office and location: siren, name, headOfficeSiret, address, postalCode, city, departmentName, regionName, latitude, longitude, establishmentsOpen, vatNumber
  • Finances and labels: siren, name, financeYear, revenueEur, netIncomeEur, headcountLabel, companyCategory, labels, collectiveAgreements, isEss, isSocieteMission

What it costs

Free to run right now. The actor charges no fee of its own today. Apify bills only the compute a run uses against your account's platform credit, and the free Apify plan includes $5 of usage every month. For scale: building all five of our actors and test-running each once on its default input used $0.03 of credit in total (2026-10-12).

Planned: pay-per-event pricing of $0.002 per company in the output ($2 per 1,000) once the account's payout setup is finished. This page and the Apify page will show the change, and Apify notifies existing users before a price change takes effect.

At the planned price, the 50 Paris software companies would cost $0.10 and the 13-number lookup $0.014 (only the 7 companies found). Invalid numbers, unknown numbers, withheld sole traders and companies already delivered in "Only new" runs would be free.

FAQ

Is there a free API for French company data?

Yes. The API Recherche d'entreprises (recherche-entreprises.api.gouv.fr) is free, needs no key and covers every company in the Sirene register with RNE and label data, under the Licence Ouverte 2.0. It allows 7 requests per second per IP.

What is the difference between SIREN and SIRET?

SIREN is the 9-digit number of the company. SIRET is 14 digits: the SIREN plus 5 digits for one establishment (site). A company has one SIREN and one SIRET per establishment, one of which is the head office.

Why does my search return more than 10,000 companies only with the actor?

The API never pages past 10,000 results for one search. The actor splits large searches into smaller ones by NAF code, department and headcount bracket and removes duplicates, so national exports work.

Can I get directors' names or emails?

No. The actor deliberately outputs company-level data only: no sole traders, no natural-person directors, no birth dates. Corporate officers that are companies, such as auditors, are kept.

How do I get only newly registered companies?

Turn on Only new with a saved search name and schedule the actor weekly. Each run returns companies you have not received for that search before.

Try it on your own data

Search French companies in the official SIRENE register by NAF code, department, region, legal form, headcount, revenue and labels (RGE, Qualiopi, ESS), or look up SIREN/SIRET lists. Head office address, GPS, finances, VAT number, establishments. Company-level data only, no director names.

Open France Company Search: SIREN/SIRET Data (SIRENE) Opens the actor's page on apify.com. A free Apify account is needed to run it.