France Company Search avatar

France Company Search

Pricing

from $3.00 / 1,000 company results

Go to Apify Store
France Company Search

France Company Search

Search French companies by name, SIREN/SIRET, NAF code, place, legal form and size. Uses the official open API Recherche d'entreprises (SIRENE / RNE). Unofficial.

Pricing

from $3.00 / 1,000 company results

Rating

0.0

(0)

Developer

Olalekan Johnson

Olalekan Johnson

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Search French companies, associations, and public bodies through the official API Recherche d'entreprises. The Actor returns one normalized row per company: SIREN, headquarters SIRET, name, legal form, NAF code and label, headquarters address, creation date, status, headcount band, published executives, and establishment counts.

This Actor is unofficial. It is not affiliated with DINUM, INSEE, data.gouv.fr, or the Annuaire des entreprises.

The default run searches for boulangerie, keeps active companies, and saves 5 rows. That run is one API call and finishes well inside a minute.

Why this source

The API is open, needs no account or key, and is limited to 7 requests per second per IP. It brings together open data from the Sirene register (INSEE) and the Registre national des entreprises. This Actor calls that API directly. It stays at 5 requests per second, sets a descriptive User-Agent, and backs off when the API answers HTTP 429.

Input

FieldRequiredDefaultWhat it does
queryNoboulangerieCompany name, address, or a director's name. At least 3 characters. A single SIREN or SIRET typed here is looked up directly.
identifiersNoemptySIREN (9 digits) or SIRET (14 digits). Spaces are ignored. Up to 1,000 values.
nafCodesNoemptyNAF rév. 2 subclass of the legal unit, such as 10.71C or 62.01Z.
departmentsNoemptyDepartment of an establishment: 75, 13, 2A, 974.
postalCodesNoempty5-digit postcode of an establishment.
legalFormsNoemptyINSEE catégorie juridique. Common codes: 5710 SAS, 5499 SARL, 5599 SA, 1000 entrepreneur individuel, 6540 SCI, 9220 association déclarée.
companySizeNoemptyPME, ETI, or GE.
headcountBandsNoemptyINSEE workforce bracket: NN, 00, 01, 02, 03, 11, 12, 21, 22, 31, 32, 41, 42, 51, 52, 53.
activeOnlyNotrueKeep companies whose administrative status is active (A). Set false to include ceased companies.
createdFrom / createdToNoemptyInclusive creation dates, YYYY-MM-DD.
maxResultsNo5How many companies to save. From 1 to 1,000.

An empty run uses the same default as the input form: boulangerie, active companies, 5 results.

Several values in one field are combined with OR. Different fields are combined with AND. A department or postcode matches an establishment, so the headquarters address on the row can be in another department. Results follow the API's relevance order. The API reports at most 10,000 hits for a search.

A SIREN or SIRET lookup is exact. The API ignores other parameters on that call, and this Actor applies your filters to the company it returns. On that direct lookup the payload usually contains only the headquarters, so a department or postcode is compared with the headquarters.

createdFrom and createdTo are applied after each page. The API has no creation-date parameter. With a date window the Actor examines at most 1,000 companies, then stops. Narrow the query or the other filters when you need a date slice.

INSEE retired legal-form codes 5498 (EURL) and 5720 (SASU) in July 2020. Use 5499 and 5710. The API rejects the retired codes.

Output

Each dataset item is one legal unit. siret is the headquarters establishment. queriedIdentifier is set when the row came from your SIREN/SIRET list.

Executives are the dirigeants the registry publishes for that company. The array is empty when none are published. For a person, birthDate is the year and month the registry publishes (YYYY-MM), and birthYear is the year. The headcount band is the INSEE bracket of the legal unit, which can differ from the number of establishments.

This row is a real result of the default boulangerie search on 23 October 2026:

{
"siren": "442843942",
"siret": "44284394200115",
"name": "LES BOULANGERIES WATRIN",
"legalName": "LES BOULANGERIES WATRIN",
"acronym": null,
"legalFormCode": "5710",
"legalForm": "SAS, société par actions simplifiée",
"nafCode": "10.71C",
"nafLabel": "Boulangerie et boulangerie-pâtisserie",
"nafSection": "C",
"nafSectionLabel": "Industrie manufacturière",
"address": {
"full": "ZAC BELLE FONTAINE 57185 CLOUANGE",
"streetNumber": null,
"streetType": null,
"streetName": "ZAC BELLE FONTAINE",
"postalCode": "57185",
"city": "CLOUANGE",
"department": "57",
"region": "44",
"country": "France"
},
"postalCode": "57185",
"city": "CLOUANGE",
"department": "57",
"creationDate": "2002-02-01",
"closureDate": null,
"status": "active",
"statusCode": "A",
"companyCategory": "PME",
"companyCategoryLabel": "Petite ou moyenne entreprise",
"companyCategoryYear": "2024",
"headcountBand": "NN",
"headcountBandLabel": "Unité non employeuse",
"headcountYear": null,
"executives": [
{
"type": "individual",
"role": "Directeur Général",
"name": "PAUL JOSEPH ROLAND WATRIN",
"lastName": "WATRIN",
"firstNames": "PAUL JOSEPH ROLAND",
"siren": null,
"birthYear": "1994",
"birthDate": "1994-12",
"nationality": null
},
{
"type": "individual",
"role": "Président de SAS",
"name": "YVON WATRIN (WATRIN)",
"lastName": "WATRIN (WATRIN)",
"firstNames": "YVON",
"siren": null,
"birthYear": "1954",
"birthDate": "1954-11",
"nationality": null
}
],
"establishmentCount": 20,
"openEstablishmentCount": 11,
"queriedIdentifier": null,
"registryUrl": "https://annuaire-entreprises.data.gouv.fr/entreprise/442843942",
"sourceUpdatedAt": "2026-10-22T08:35:38",
"source": "API Recherche d'entreprises (DINUM) — Sirene (INSEE) and the Registre national des entreprises",
"dataLicence": "Licence Ouverte 2.0"
}

postalCode, city, and department repeat the headquarters address so the dataset table can show them beside the nested address object. status is active, ceased, or unknown. statusCode is the registry value A or C.

NAF labels are NAF rév. 2. Legal-form labels are the current INSEE catégories juridiques. A code the nomenclature does not list is still returned, with a null label.

Pricing

Pay per event. Configure these events in the Apify console:

EventWhen it is chargedSuggested price
apify-actor-startOnce per run, by the platform (memory is capped at 1 GB, so once). The Actor does not call Actor.charge for it.$0.005
company-resultOne company row saved to the dataset$0.003

A run that saves 100 companies costs about $0.305 ($0.005 start + 100 × $0.003). Platform compute is not billed to you. Leave the default dataset-item event out of the pricing configuration, so each company is billed once. The Actor stops saving rows when a charge tells it the run's spending limit is reached. Rows that were charged are saved. The run still succeeds when the search itself matches nothing.

Limits

  • Upstream ceiling: 7 requests per second per IP, plus a shared limit per network. This Actor sends at most 5 per second. HTTP 429 and 5xx responses are retried with Retry-After or an exponential backoff, up to 5 attempts. A shared cloud address can still receive 429s because other clients share it.
  • Page size is 25. The API exposes the first 10,000 hits of a search and reports that number when there are more.
  • maxResults is 1 to 1,000. A SIREN/SIRET list is capped at 1,000 values. One thousand exact lookups take a few minutes at 5 requests per second.
  • A creation-date window examines at most 1,000 companies from the relevance ranking. It is a filter on those hits, and it is not a registry-wide date index.
  • Companies marked non-diffusible are absent from this API, as are entities whose RCS registration was refused.
  • Executive records exist only when the registry publishes them. Birth information stops at year, or year and month.
  • The Sirene and RNE extracts behind the API are updated daily. sourceUpdatedAt is the update time returned for that company.
  • NAF filters use NAF rév. 2 subclasses (62.01Z). NAF 2025 codes are a different list and are rejected by the API's activity filter.

Data licence

Company records come from the API Recherche d'entreprises, operated by the Direction interministérielle du numérique (DINUM):

The API aggregates open administrative data, in particular the Sirene register published by INSEE and the Registre national des entreprises. Reuse is allowed under the Licence Ouverte 2.0. Each dataset row repeats the source and the licence name so the attribution stays with the data.

NAF rév. 2 labels, NAF section labels, and catégorie juridique labels are the INSEE nomenclatures, also under the Licence Ouverte. Headcount bands are the INSEE tranches d'effectifs salariés.

Run locally

Python 3.12.

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python -m src

With no input file, the Actor runs the default boulangerie search. To pass input, create INPUT.json in the working directory:

{
"query": "boulangerie",
"nafCodes": ["10.71C"],
"departments": ["75"],
"maxResults": 20
}

Local pay-per-event checks use the SDK test switch. Nothing is billed. Charges are written to storage/datasets/charging-log/:

$ACTOR_TEST_PAY_PER_EVENT=true python -m src

On the platform, deploy with apify push from this directory. The image is apify/actor-python:3.12. Default memory is 512 MB.

Tests

Unit tests mock HTTP. They do not call the API.

pip install -r requirements-dev.txt
python -m pytest