# France Company Registry Scraper (`crawlerbros/france-entreprises-scraper`) Actor

Scrape the official French government company registry (SIRENE / Recherche d'entreprises). Search by name or SIREN/SIRET, look up exact SIREN numbers, or find companies near a location. Returns legal name, address, activity code, executives, and financial data.

- **URL**: https://apify.com/crawlerbros/france-entreprises-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Automation, Lead generation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## France Company Registry Scraper

Scrape **France's official government company registry** (SIRENE / "Recherche d'entreprises", run by DINUM). Search companies by name, brand, or SIREN/SIRET number, look up an exact SIREN, or find companies near a geographic location. Returns legal name, registered address, activity code, executives, size category, and financial data (revenue, net income) sourced directly from official INSEE and business-court filings. HTTP-only via the public government REST API. No auth, no proxy, no cost.

### What this actor does

- **Three modes:** `search`, `byIds`, `nearPoint`
- **Rich filters:** activity code (NAF/APE), industry sector, company size category, employee headcount band, active/closed status, department, region, EPCI (intermunicipal grouping), postal code, INSEE commune code, local government body code, legal form code, revenue range, net income range, employer/association/sole-proprietor flags
- **Certifications & official labels:** filter by Qualiopi, RGE, organic (Agence Bio), social & solidarity economy, food-safety inspection (Alim'confiance), responsible purchasing (RFAR), Living Heritage Company (EPV), work-integration social enterprise (SIAE), training organization, live-entertainment license, mission-driven company status, public administration, local government, educational institution (UAI), healthcare facility (FINESS), gender-equality index disclosure, collective-agreement disclosure, lawyer directory listing, carbon-footprint report disclosure (Bilan GES), de minimis state aid, and ADEME environmental aid
- **Identifier lookups:** find the company/institution behind an exact FINESS (healthcare), RGE (energy works), UAI (education), or IDCC (collective agreement) identifier
- **Executive/officer search:** find companies by a director's, manager's, or elected official's name, first name, role type, or birth-date range
- **Executives / elected officials:** directors, managers, and statutory auditors per company; mayors and municipal/departmental/regional councillors for local government bodies
- **Financials:** latest and historical annual revenue and net income where disclosed
- **Geographic search:** find companies within a radius of any point in France, fully paginated
- **Empty fields are omitted**

### Output per company

- `siren` — 9-digit French company identifier
- `name`, `legalName`, `brandName`
- `legalFormCode` — INSEE legal-form code
- `sizeCategory`, `sizeCategoryCode`, `sizeCategoryYear` — PME / ETI / GE, and the year that classification was last confirmed
- `status` — `active` or `ceased`
- `activityCode`, `activityCodeNAF2025`, `activitySection` — NAF/APE activity classification (current nomenclature and the upcoming 2025 revision, where disclosed)
- `employeeRange`, `employeeRangeCode`, `employeeRangeYear` — headcount bracket (e.g. `50-99 employees` / `21`), and the year that bracket was last confirmed
- `dateCreation`, `dateClosed`, `lastUpdated`, `lastUpdatedINSEE`, `lastUpdatedRNE` — creation/closure dates, and last-refreshed timestamps from INSEE (statistics office) and RNE (national business registry)
- `numberOfEstablishments`, `numberOfOpenEstablishments`
- `siret` — headquarters establishment ID
- `address`, `postalCode`, `communeCode`, `city`, `department`, `region`
- `registeredCountry`, `registeredCountryCode`, `foreignCity` — for French branches of foreign companies (e.g. "SUCCURSALE FRANCE" entities), the foreign country and locality the headquarters is registered in
- `latitude`, `longitude`
- `headquartersActivityStartDate` — date the headquarters establishment began trading (may differ from its creation date)
- `headquartersAddressComplement` — free-text address addition for the headquarters (building, floor, internal department, etc.), when disclosed
- `commercialName` — trade/shop name of the headquarters, if different from the legal name
- `storeSignage[]` — retail signage/banner names operated at the headquarters
- `epciCode` — intermunicipal grouping (EPCI) SIREN code of the headquarters
- `craftsRegistryActivityCode` — trade/craft activity code at the Répertoire des Métiers (artisan businesses, headquarters only)
- `isHeadquarters` — `true`/`false`, only present when a location filter or `nearPoint` search matched a specific establishment: whether that matched establishment is the company's registered headquarters
- `wasFormerHeadquarters` — `true` if the matched establishment (a location filter or `nearPoint` search matched a non-headquarters address) used to be the company's registered headquarters
- `establishmentActivityCode`, `establishmentActivityCodeNAF2025` — the specific establishment's own NAF/APE activity code, which can differ from the company-wide `activityCode` (e.g. a branch doing different work than headquarters)
- `establishmentStatus` — `active` or `closed`, the specific establishment's own administrative status (independent of the company-wide `status` — one establishment can close while the company overall stays active)
- `establishmentOpenedDate`, `establishmentClosedDate` — trading start/closure dates of the specific establishment
- `establishmentRGEIds[]`, `establishmentBioIds[]`, `establishmentUAIIds[]`, `establishmentFINESSIds[]`, `establishmentIDCCIds[]`, `establishmentTrainingOrganizationIds[]` — specific certification/registry identifiers held by that establishment itself
- `dataPartiallyRestricted` — `true` if the entity filed an opposition to full public disclosure (rare; some secondary fields may be withheld upstream)
- `executives[]` — `name`, `role`, `birthYear`, `birthDate`/`siren`, `type` (company officers — directors, managers, auditors)
- `localGovernmentLevel` — `Commune` / `Département` / `Région` / `EPCI` (local government bodies only)
- `localGovernmentCode` — INSEE code of the local government body (local government bodies only)
- `electedOfficials[]` — `name`, `role`, `birthYear`, `birthDate`, `gender` (mayors and councillors, local government bodies only)
- `vatNumbers[]`
- `financials[]` — `year`, `revenue`, `netIncome`
- `latestRevenue`, `latestNetIncome`, `latestFinancialYear`
- `isIndividualEntrepreneur`, `isAssociation`, `isSocialSolidarityEconomy`, `isOrganic`, `isEmployer`
- `associationRegistryNumber` — RNA number (associations only)
- `foundationRegistryNumber` — RNF number (foundations only)
- `workIntegrationEnterpriseType` — SIAE structure type, e.g. `ACI`, `EI` (work-integration social enterprises only)
- `entertainmentLicenseStatus` — `valid` or `invalid` (live-entertainment license applicants only)
- `collectiveAgreementIds[]` — IDCC collective-bargaining agreement identifiers
- `healthcareFacilityIds[]` — legal-entity-level FINESS identifiers (healthcare facilities only)
- `trainingOrganizationIds[]` — vocational-training-provider declaration numbers (training organizations only)
- `labels[]` — active official certifications/labels (Qualiopi, RGE, Alim'confiance, EPV, SIAE, and more — see FAQ)
- `sourceUrl` — official government business-directory page
- `recordType: "company"`, `scrapedAt`

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `search` | `search` / `byIds` / `nearPoint` |
| `searchQuery` | string | `danone` | Free-text name, brand, SIREN or SIRET (mode=search) |
| `sirens` | array | – | Exact SIREN numbers to look up (mode=byIds) |
| `latitude` | number | `48.8566` | Search-center latitude (mode=nearPoint) |
| `longitude` | number | `2.3522` | Search-center longitude (mode=nearPoint) |
| `radiusKm` | number | `2` | Search radius in km, up to 50 (mode=nearPoint) |
| `activitePrincipale` | string | – | NAF/APE activity code, e.g. `62.01Z` |
| `sectionActivitePrincipale` | array | – | One or more top-level NAF activity sectors (A–U), OR match |
| `categorieEntreprise` | array | – | One or more company sizes: PME / ETI / GE, OR match |
| `etatAdministratif` | string | – | Active or ceased |
| `departement` | array | – | One or more French department codes, OR match |
| `region` | array | – | One or more French region codes, OR match. Applied server-side for mode=search; applied client-side for mode=byIds/nearPoint |
| `codePostal` | string | – | Exact 5-digit postal code, comma-separated for multiple (mode=search) |
| `codeCommune` | string | – | Exact INSEE commune code. Applied server-side for mode=search; applied client-side for mode=byIds/nearPoint |
| `natureJuridique` | string | – | INSEE legal-form code, e.g. `5710` for SARL. Applied server-side for mode=search; applied client-side for mode=byIds/nearPoint |
| `executiveName` | string | – | Director/manager/elected-official last name, partial match. Applied server-side for mode=search; applied client-side for mode=byIds/nearPoint |
| `executiveFirstName` | string | – | Director/manager/elected-official first name, partial match. Applied server-side for mode=search; applied client-side for mode=byIds/nearPoint |
| `executiveType` | string | – | Restrict executive search to `dirigeant` or `elu` (mode=search) |
| `executiveBirthDateMin` | string | – | Only executives/officers born on or after this date, `YYYY-MM-DD` (mode=search) |
| `executiveBirthDateMax` | string | – | Only executives/officers born on or before this date, `YYYY-MM-DD` (mode=search) |
| `employeeRange` | array | – | One or more official INSEE employee-headcount bands, OR match. Applied server-side for mode=search; applied client-side for mode=byIds/nearPoint |
| `epci` | string | – | Intermunicipal grouping (EPCI) SIREN code, comma-separated for multiple (mode=search) |
| `collectiviteTerritorialeCode` | string | – | Exact local government body code — commune/EPCI/department/region (mode=search) |
| `idFiness` | string | – | Exact FINESS geographic identifier of a healthcare facility (mode=search) |
| `idRge` | string | – | Exact RGE (energy-works) certification identifier (mode=search) |
| `idUai` | string | – | Exact UAI educational-institution identifier (mode=search) |
| `idConventionCollective` | string | – | Exact collective-bargaining agreement identifier (IDCC) (mode=search) |
| `onlyEmployers` | bool | `false` | Only companies that employ staff |
| `onlyIndividualEntrepreneurs` | bool | `false` | Only sole proprietorships |
| `onlyAssociations` | bool | `false` | Only non-profit associations |
| `onlyOrganic` | bool | `false` | Only Agence Bio certified companies |
| `onlySocialSolidarityEconomy` | bool | `false` | Only social & solidarity economy (ESS) companies |
| `onlyQualiopiCertified` | bool | `false` | Only Qualiopi-certified training providers |
| `onlyRGECertified` | bool | `false` | Only RGE-certified (environmental works) companies |
| `onlyAlimConfianceInspected` | bool | `false` | Only companies with a published food-safety inspection |
| `onlyResponsiblePurchasing` | bool | `false` | Only RFAR responsible-purchasing label holders |
| `onlyLivingHeritageCompany` | bool | `false` | Only "Entreprise du Patrimoine Vivant" (EPV) label holders |
| `onlySocialInclusionEnterprise` | bool | `false` | Only work-integration social enterprises (SIAE) |
| `onlyTrainingOrganization` | bool | `false` | Only registered vocational-training providers |
| `onlyEntertainmentLicense` | bool | `false` | Only live-entertainment license holders |
| `onlyMissionDrivenCompany` | bool | `false` | Only "société à mission" companies |
| `onlyPublicAdministration` | bool | `false` | Only public administration bodies |
| `onlyLocalGovernment` | bool | `false` | Only territorial/local government entities |
| `onlyEducationalInstitution` | bool | `false` | Only entities with a registered UAI |
| `onlyHealthcareFacility` | bool | `false` | Only entities with a registered FINESS ID |
| `onlyGenderEqualityIndexDisclosed` | bool | `false` | Only companies that published their Egapro index |
| `onlyCollectiveAgreementDisclosed` | bool | `false` | Only companies with a declared collective agreement |
| `onlyLawyer` | bool | `false` | Only firms listed in the national bar's lawyer directory |
| `onlyGHGReportDisclosed` | bool | `false` | Only companies that published a greenhouse-gas emissions report (Bilan GES) |
| `onlyReceivedMinimisAid` | bool | `false` | Only companies recorded as having received "de minimis" state aid |
| `onlyReceivedAdemeAid` | bool | `false` | Only companies recorded as having received aid from ADEME (environment/energy agency) |
| `minRevenue` | int | – | Drop companies below this annual revenue (EUR) |
| `maxRevenue` | int | – | Drop companies above this annual revenue (EUR) |
| `minNetIncome` | int | – | Drop companies below this annual net income (EUR); can be negative |
| `maxNetIncome` | int | – | Drop companies above this annual net income (EUR) |
| `sortBySize` | bool | `false` | Sort by number of establishments instead of relevance |
| `maxItems` | int | `20` | Hard cap (1–1000) |

#### Example: search by name with sector + status filters

```json
{
  "mode": "search",
  "searchQuery": "boulangerie",
  "sectionActivitePrincipale": ["I"],
  "etatAdministratif": "A",
  "departement": ["75", "92"],
  "maxItems": 50
}
```

#### Example: lookup by SIREN

```json
{
  "mode": "byIds",
  "sirens": ["552032534", "356000000"]
}
```

#### Example: companies near a location

```json
{
  "mode": "nearPoint",
  "latitude": 45.764,
  "longitude": 4.8357,
  "radiusKm": 5,
  "sectionActivitePrincipale": ["I"],
  "maxItems": 30
}
```

### Use cases

- **Sales & lead generation** — build prospect lists filtered by sector, size, and location
- **Due diligence** — verify a French counterparty's legal status, executives, and financials
- **Market research** — analyze company density and revenue by department or sector
- **Supplier/vendor vetting** — confirm a supplier is active and check its size category
- **Local business discovery** — find nearby companies for partnerships or outreach
- **Compliance** — screen sole proprietorships and associations by activity type

### FAQ

**What is SIRENE?** The official French national registry of businesses and their establishments, maintained by INSEE (French national statistics institute). Every company operating in France is assigned a unique 9-digit SIREN number.

**Is this data official?** Yes. It comes directly from `recherche-entreprises.api.gouv.fr`, a public API published by DINUM (French digital administration agency), which aggregates INSEE/SIRENE, the National Business Registry (RNE), and business-court filings.

**Do I need an API key or login?** No. The API is fully public and free; the actor requires no credentials.

**What's the difference between SIREN and SIRET?** SIREN identifies the legal entity (9 digits). SIRET identifies one physical establishment of that entity (14 digits = SIREN + 5-digit establishment code).

**Why is `financials` sometimes missing?** Not every company discloses annual accounts publicly, and very recent or very small companies may not have filed yet.

**What does `sizeCategoryCode` mean?** `PME` (small/medium enterprise), `ETI` (mid-size), `GE` (large enterprise) — official INSEE size classifications based on headcount, revenue, and balance sheet.

**Can I search outside France?** No — this registry covers only companies registered in France (including its overseas departments).

**How fresh is the data?** The registry is updated continuously from INSEE and court-filing feeds, typically within days of a legal change.

**What's in `labels[]`?** A list of the official certifications/registrations the company actually holds — only the ones that are true are listed (e.g. `["Qualiopi certified", "RGE certified (environmental works)"]`). Possible values: Organic certified, Social & solidarity economy, Qualiopi certified, RGE certified (environmental works), Food safety inspected (Alim'confiance), Responsible purchasing label (RFAR), Living Heritage Company (EPV), Work-integration social enterprise (SIAE), Training organization, Live entertainment license, Mission-driven company, Public administration, Local government body, Educational institution (UAI), Healthcare facility (FINESS), Gender equality index disclosed, Collective bargaining agreement disclosed, Lawyer (Annuaire des avocats de France), Carbon footprint report disclosed (Bilan GES), Received de minimis state aid, Received ADEME environmental aid.

**Why does `onlyLawyer`/`onlyGHGReportDisclosed`/`onlyReceivedMinimisAid`/`onlyReceivedAdemeAid` sometimes take longer to return results?** Unlike the other certification filters, the upstream registry doesn't support filtering by these four flags server-side, so the actor pages through results and filters client-side (capped at 200 pages to bound runtime). Combine with a specific `searchQuery` for faster results.

**Does the address match my `codePostal`/`departement`/`codeCommune`/`region`/`epci`/`collectiviteTerritorialeCode` filter?** Yes — when any of these location filters is active, the returned `address`/`postalCode`/`siret` are for the specific establishment that matched your filter (which may be a branch, not the headquarters), not necessarily the registered headquarters. Without a location filter, the headquarters address is shown.

**Can I search by an executive's name?** Yes — `executiveName`/`executiveFirstName` search across both company officers ("dirigeants") and elected public officials ("élus"); they work in every mode (server-side for `search`, client-side for `byIds`/`nearPoint`). Use `executiveType` to restrict to one or the other, and `executiveBirthDateMin`/`executiveBirthDateMax` to narrow by birth date (mode=search only).

**What are `electedOfficials[]` and `localGovernmentLevel`?** For local government bodies (communes, departments, regions, EPCIs — set `onlyLocalGovernment: true` to filter to these), the registry exposes their elected officials (mayor, deputy mayors, councillors) instead of company-style executives. `localGovernmentLevel` is the body's tier (e.g. `Commune`).

**What's `employeeRange` vs `employeeRangeCode`?** `employeeRangeCode` is the raw official INSEE band code (e.g. `21`); `employeeRange` is its human-readable label (e.g. `50-99 employees`). Use `employeeRange` as the input filter value.

**Why does `sourceUrl` briefly show a "Loading" page?** The official government directory site runs a standard bot-protection check before displaying the company page — this resolves automatically within a second or two in any regular web browser and doesn't affect the data returned by this actor.

# Actor input Schema

## `mode` (type: `string`):

What to fetch.

## `searchQuery` (type: `string`):

Free-text query — company name, brand name, SIREN or SIRET number (mode=search).

## `sirens` (type: `array`):

9-digit French company identifiers (SIREN), e.g. `552032534`.

## `latitude` (type: `number`):

Latitude of the search center point.

## `longitude` (type: `number`):

Longitude of the search center point.

## `radiusKm` (type: `number`):

Search radius around the point, up to 50 km.

## `activitePrincipale` (type: `string`):

Filter by INSEE NAF/APE activity code, e.g. `62.01Z` (computer programming). Comma-separate for multiple codes.

## `sectionActivitePrincipale` (type: `array`):

Filter by one or more top-level NAF economic activity sectors (OR match).

## `categorieEntreprise` (type: `array`):

Filter by one or more official INSEE company-size categories (OR match).

## `etatAdministratif` (type: `string`):

Filter by whether the company is currently active or has ceased trading.

## `departement` (type: `array`):

Filter to one or more French administrative departments (OR match).

## `codePostal` (type: `string`):

Filter to an exact 5-digit French postal code, e.g. `75001`. Comma-separate for multiple codes.

## `region` (type: `array`):

Filter by one or more French administrative regions (OR match). Applied server-side for mode=search; applied client-side for mode=byIds/nearPoint.

## `codeCommune` (type: `string`):

Filter to an exact INSEE commune (municipality) code, e.g. `75101` for Paris 1st arrondissement. Comma-separate for multiple codes. Applied server-side for mode=search; applied client-side for mode=byIds/nearPoint.

## `natureJuridique` (type: `string`):

Filter by official INSEE legal-form code ("nature juridique"), e.g. `5710` for SARL, `5599` for SA. Comma-separate for multiple codes. See INSEE's nomenclature for the full list. Applied server-side for mode=search; applied client-side for mode=byIds/nearPoint.

## `executiveName` (type: `string`):

Find companies with a director, manager, or elected officer whose last name matches (partial match). Applied server-side for mode=search; applied client-side for mode=byIds/nearPoint.

## `executiveFirstName` (type: `string`):

Find companies with a director, manager, or elected officer whose first name matches (partial match). Combine with `executiveName` for precision. Applied server-side for mode=search; applied client-side for mode=byIds/nearPoint.

## `executiveType` (type: `string`):

Restrict the executive-name search to company officers or elected public officials.

## `employeeRange` (type: `array`):

Filter by one or more official INSEE employee-headcount ranges ("tranche d'effectif salarié") (OR match). Applied server-side for mode=search; applied client-side for mode=byIds/nearPoint.

## `onlyEmployers` (type: `boolean`):

Only companies that employ staff.

## `onlyIndividualEntrepreneurs` (type: `boolean`):

Only individual/sole-proprietor businesses (auto-entrepreneurs).

## `onlyAssociations` (type: `boolean`):

Only non-profit associations.

## `onlyOrganic` (type: `boolean`):

Only companies certified by the French organic-farming agency (Agence Bio).

## `onlySocialSolidarityEconomy` (type: `boolean`):

Only companies belonging to the social & solidarity economy (ESS) sector.

## `onlyQualiopiCertified` (type: `boolean`):

Only companies certified under the French "Qualiopi" training-quality mark.

## `onlyRGECertified` (type: `boolean`):

Only companies recognized as "Reconnu Garant de l'Environnement" (RGE) for energy-efficiency works.

## `onlyAlimConfianceInspected` (type: `boolean`):

Only companies with a published "Alim'confiance" food-safety inspection result.

## `onlyResponsiblePurchasing` (type: `boolean`):

Only companies holding the "Relations Fournisseurs et Achats Responsables" (RFAR) label.

## `onlyLivingHeritageCompany` (type: `boolean`):

Only companies holding the "Entreprise du Patrimoine Vivant" (EPV) label for craftsmanship/industrial excellence.

## `onlySocialInclusionEnterprise` (type: `boolean`):

Only "Structures d'Insertion par l'Activité Économique" (SIAE) — work-integration social enterprises.

## `onlyTrainingOrganization` (type: `boolean`):

Only companies registered as a vocational-training provider.

## `onlyEntertainmentLicense` (type: `boolean`):

Only companies holding a live-performance/entertainment producer license.

## `onlyMissionDrivenCompany` (type: `boolean`):

Only "société à mission" companies with a legally stated social/environmental purpose.

## `onlyPublicAdministration` (type: `boolean`):

Only entities recognized as public administration bodies.

## `epci` (type: `string`):

Filter by intermunicipal grouping ("EPCI") SIREN code. Comma-separate for multiple codes.

## `collectiviteTerritorialeCode` (type: `string`):

Filter to an exact local government body — commune (INSEE code), EPCI (SIREN), department (INSEE code + "D"), or region (INSEE code).

## `idFiness` (type: `string`):

Find the company operating the healthcare facility with this exact FINESS geographic identifier (9 digits).

## `idRge` (type: `string`):

Find the company holding this exact "Reconnu Garant de l'Environnement" (RGE) certification identifier.

## `idUai` (type: `string`):

Find the company/institution with this exact educational-institution identifier (UAI).

## `idConventionCollective` (type: `string`):

Filter to companies bound by this exact collective-bargaining agreement identifier (IDCC), e.g. `1979`.

## `executiveBirthDateMin` (type: `string`):

Only include companies with a director, manager, or elected officer born on or after this date (YYYY-MM-DD).

## `executiveBirthDateMax` (type: `string`):

Only include companies with a director, manager, or elected officer born on or before this date (YYYY-MM-DD).

## `onlyLocalGovernment` (type: `boolean`):

Only territorial/local government entities (municipalities, departments, regions, EPCIs).

## `onlyEducationalInstitution` (type: `boolean`):

Only entities with a registered educational-institution identifier (UAI).

## `onlyHealthcareFacility` (type: `boolean`):

Only entities with a registered healthcare-facility identifier (FINESS).

## `onlyGenderEqualityIndexDisclosed` (type: `boolean`):

Only companies that published their professional gender-equality index (Egapro).

## `onlyCollectiveAgreementDisclosed` (type: `boolean`):

Only companies with a declared collective-bargaining agreement (convention collective).

## `onlyLawyer` (type: `boolean`):

Only firms listed in the French national bar's lawyer directory (Annuaire des avocats de France).

## `onlyGHGReportDisclosed` (type: `boolean`):

Only companies that published a greenhouse-gas emissions report (Bilan GES).

## `onlyReceivedMinimisAid` (type: `boolean`):

Only companies recorded as having received "de minimis" state aid.

## `onlyReceivedAdemeAid` (type: `boolean`):

Only companies recorded as having received aid from ADEME, the French environment/energy agency.

## `minRevenue` (type: `integer`):

Drop companies with reported annual revenue below this amount.

## `maxRevenue` (type: `integer`):

Drop companies with reported annual revenue above this amount.

## `minNetIncome` (type: `integer`):

Drop companies with reported annual net income below this amount. Can be negative to include/require losses.

## `maxNetIncome` (type: `integer`):

Drop companies with reported annual net income above this amount.

## `sortBySize` (type: `boolean`):

Sort results by number of establishments (largest first) instead of text relevance.

## `maxItems` (type: `integer`):

Hard cap on emitted records.

## Actor input object example

```json
{
  "mode": "search",
  "searchQuery": "danone",
  "sirens": [],
  "latitude": 48.8566,
  "longitude": 2.3522,
  "radiusKm": 2,
  "sectionActivitePrincipale": [],
  "categorieEntreprise": [],
  "etatAdministratif": "",
  "departement": [],
  "region": [],
  "executiveType": "",
  "employeeRange": [],
  "onlyEmployers": false,
  "onlyIndividualEntrepreneurs": false,
  "onlyAssociations": false,
  "onlyOrganic": false,
  "onlySocialSolidarityEconomy": false,
  "onlyQualiopiCertified": false,
  "onlyRGECertified": false,
  "onlyAlimConfianceInspected": false,
  "onlyResponsiblePurchasing": false,
  "onlyLivingHeritageCompany": false,
  "onlySocialInclusionEnterprise": false,
  "onlyTrainingOrganization": false,
  "onlyEntertainmentLicense": false,
  "onlyMissionDrivenCompany": false,
  "onlyPublicAdministration": false,
  "onlyLocalGovernment": false,
  "onlyEducationalInstitution": false,
  "onlyHealthcareFacility": false,
  "onlyGenderEqualityIndexDisclosed": false,
  "onlyCollectiveAgreementDisclosed": false,
  "onlyLawyer": false,
  "onlyGHGReportDisclosed": false,
  "onlyReceivedMinimisAid": false,
  "onlyReceivedAdemeAid": false,
  "sortBySize": false,
  "maxItems": 20
}
```

# Actor output Schema

## `companies` (type: `string`):

Dataset containing all scraped French companies.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "search",
    "searchQuery": "danone",
    "sirens": [],
    "latitude": 48.8566,
    "longitude": 2.3522,
    "radiusKm": 2,
    "sectionActivitePrincipale": [],
    "categorieEntreprise": [],
    "etatAdministratif": "",
    "departement": [],
    "region": [],
    "executiveType": "",
    "employeeRange": [],
    "onlyEmployers": false,
    "onlyIndividualEntrepreneurs": false,
    "onlyAssociations": false,
    "onlyOrganic": false,
    "onlySocialSolidarityEconomy": false,
    "onlyQualiopiCertified": false,
    "onlyRGECertified": false,
    "onlyAlimConfianceInspected": false,
    "onlyResponsiblePurchasing": false,
    "onlyLivingHeritageCompany": false,
    "onlySocialInclusionEnterprise": false,
    "onlyTrainingOrganization": false,
    "onlyEntertainmentLicense": false,
    "onlyMissionDrivenCompany": false,
    "onlyPublicAdministration": false,
    "onlyLocalGovernment": false,
    "onlyEducationalInstitution": false,
    "onlyHealthcareFacility": false,
    "onlyGenderEqualityIndexDisclosed": false,
    "onlyCollectiveAgreementDisclosed": false,
    "onlyLawyer": false,
    "onlyGHGReportDisclosed": false,
    "onlyReceivedMinimisAid": false,
    "onlyReceivedAdemeAid": false,
    "sortBySize": false,
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/france-entreprises-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "search",
    "searchQuery": "danone",
    "sirens": [],
    "latitude": 48.8566,
    "longitude": 2.3522,
    "radiusKm": 2,
    "sectionActivitePrincipale": [],
    "categorieEntreprise": [],
    "etatAdministratif": "",
    "departement": [],
    "region": [],
    "executiveType": "",
    "employeeRange": [],
    "onlyEmployers": False,
    "onlyIndividualEntrepreneurs": False,
    "onlyAssociations": False,
    "onlyOrganic": False,
    "onlySocialSolidarityEconomy": False,
    "onlyQualiopiCertified": False,
    "onlyRGECertified": False,
    "onlyAlimConfianceInspected": False,
    "onlyResponsiblePurchasing": False,
    "onlyLivingHeritageCompany": False,
    "onlySocialInclusionEnterprise": False,
    "onlyTrainingOrganization": False,
    "onlyEntertainmentLicense": False,
    "onlyMissionDrivenCompany": False,
    "onlyPublicAdministration": False,
    "onlyLocalGovernment": False,
    "onlyEducationalInstitution": False,
    "onlyHealthcareFacility": False,
    "onlyGenderEqualityIndexDisclosed": False,
    "onlyCollectiveAgreementDisclosed": False,
    "onlyLawyer": False,
    "onlyGHGReportDisclosed": False,
    "onlyReceivedMinimisAid": False,
    "onlyReceivedAdemeAid": False,
    "sortBySize": False,
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/france-entreprises-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "search",
  "searchQuery": "danone",
  "sirens": [],
  "latitude": 48.8566,
  "longitude": 2.3522,
  "radiusKm": 2,
  "sectionActivitePrincipale": [],
  "categorieEntreprise": [],
  "etatAdministratif": "",
  "departement": [],
  "region": [],
  "executiveType": "",
  "employeeRange": [],
  "onlyEmployers": false,
  "onlyIndividualEntrepreneurs": false,
  "onlyAssociations": false,
  "onlyOrganic": false,
  "onlySocialSolidarityEconomy": false,
  "onlyQualiopiCertified": false,
  "onlyRGECertified": false,
  "onlyAlimConfianceInspected": false,
  "onlyResponsiblePurchasing": false,
  "onlyLivingHeritageCompany": false,
  "onlySocialInclusionEnterprise": false,
  "onlyTrainingOrganization": false,
  "onlyEntertainmentLicense": false,
  "onlyMissionDrivenCompany": false,
  "onlyPublicAdministration": false,
  "onlyLocalGovernment": false,
  "onlyEducationalInstitution": false,
  "onlyHealthcareFacility": false,
  "onlyGenderEqualityIndexDisclosed": false,
  "onlyCollectiveAgreementDisclosed": false,
  "onlyLawyer": false,
  "onlyGHGReportDisclosed": false,
  "onlyReceivedMinimisAid": false,
  "onlyReceivedAdemeAid": false,
  "sortBySize": false,
  "maxItems": 20
}' |
apify call crawlerbros/france-entreprises-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawlerbros/france-entreprises-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ZcR9mMsmNfDldjVIr/builds/GHJ6RU6JxP5CeyDpi/openapi.json
