# French Company Scraper - SIRENE Data, Executives & B2B Leads (`scrapesage/french-company-scraper`) Actor

Scrape French companies from the official SIRENE registry — SIREN/SIRET, NAF activity, legal form, size, executives, revenue & establishments — plus BODACC new registrations, insolvencies & sales. Filters, lead scoring & only-new monitoring. Keyless, no browser.

- **URL**: https://apify.com/scrapesage/french-company-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** Lead generation, Agents, Integrations
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 company record scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#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

## French Company Scraper — SIRENE Data, Executives, Finances & B2B Leads

Extract **complete French company data** from the official government registry — **SIREN/SIRET, NAF activity, legal form, company size, executives, published revenue, establishments and labels** — and turn **BODACC legal announcements** (new registrations, insolvencies, business sales) into **fresh, lead‑scored B2B prospects**.

Two clean, keyless French government data sources behind one rich, LLM‑ready dataset. No login, no cookies, no browser — fast JSON extraction.

### Why this French company scraper?

Most "French company" scrapers return a thin firmographic stub and stop there. This actor merges the full **recherche‑entreprises / SIRENE** record with the **BODACC** legal gazette, so you get both *who the company is* **and** *what just happened to it* — plus a lead score on every row.

| Data | Typical scrapers | This actor |
|---|---|---|
| SIREN / SIRET, NAF/APE, legal form, status | ✅ | ✅ |
| Company size band + employer flag | partial | ✅ |
| **Executives / directors** (name, role, birth year) | ❌ | ✅ |
| **Published finances** (revenue + net result per year) | ❌ | ✅ |
| All establishments (SIRET, address, geo) | partial | ✅ |
| Labels & certifications (RGE, Qualiopi, ESS, Bio, mission‑driven…) | ❌ | ✅ |
| **BODACC new registrations** (fresh company leads) | ❌ | ✅ |
| **BODACC insolvencies & business sales** | ❌ | ✅ |
| Filter by activity, department, region, size, legal form, label | partial | ✅ |
| Lead score (0–100) per record | ❌ | ✅ |
| **Only‑new monitoring** for daily fresh leads | ❌ | ✅ |

### Use cases

- **B2B lead generation** — target French companies by **activity (NAF), department/region, size, legal form and certification**, score them, and reach the decision‑maker (executives are included). New BODACC registrations are the freshest, highest‑intent leads on the market — newly created companies need banking, insurance, accounting, software, equipment and marketing.
- **Sales prospecting & territory planning** — build clean prospect lists for any French market segment (web agencies in Paris, RGE‑certified builders in Lyon, Qualiopi training orgs nationwide…).
- **Distressed / M\&A intelligence** — track `collective` (insolvency) and `vente` (sale) announcements to find distressed assets, acquisition targets and at‑risk customers.
- **Risk, KYC & compliance** — verify SIREN/SIRET, legal form, status, executives and registry history before onboarding a French supplier or client.
- **Market & competitive research** — size a sector by company count, category (PME/ETI/GE), revenue and geography.
- **CRM enrichment** — resolve a list of SIRENs/SIRETs into full firmographics, executives and finances.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up) — the free plan is enough to try this actor.
2. Open the **French Company Scraper**, choose a **mode**, enter a query and/or filters, and click **Start**.
3. Watch results stream into the dataset table.
4. **Export** as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).

### Input

**Companies mode** — search/filter the SIRENE registry:

```json
{
    "mode": "companies",
    "query": "agence web",
    "departments": ["75"],
    "companySize": ["10-49 employees"],
    "activeOnly": true,
    "includeExecutives": true,
    "includeFinances": true,
    "maxResults": 200
}
```

**Legal announcements mode** — fresh BODACC leads (new registrations) with firmographic enrichment:

```json
{
    "mode": "legalAnnouncements",
    "announcementTypes": ["creation"],
    "publishedAfter": "2026-06-01",
    "departments": ["75", "92"],
    "enrichWithFirmographics": true,
    "maxResults": 500
}
```

- **mode** — `companies` (SIRENE firmographics) or `legalAnnouncements` (BODACC notices).
- **query** — company name, brand, manager, SIREN/SIRET (companies) or full‑text (announcements).
- **sirens** — look up specific companies directly by SIREN/SIRET.
- **activityCodes** — NAF/APE codes (`62.01Z`) or section letters (`J`, `F`).
- **departments / regions** — department codes (`75`, `2A`, `971`), 5‑digit postal codes, or region codes.
- **companySize / companyCategory / legalForms / labels** — firmographic filters (employee band, PME/ETI/GE, SAS/SARL/…, RGE/Qualiopi/ESS/Bio/mission‑driven…).
- **activeOnly / isEmployer** — keep only active companies / employers.
- **announcementTypes** *(BODACC)* — `creation`, `modification`, `radiation`, `collective` (insolvency), `depot`, `vente` (sale).
- **publishedAfter / publishedBefore** *(BODACC)* — date window, newest first.
- **enrichWithFirmographics** *(BODACC)* — attach NAF, size, executives, revenue & labels to each announcement.
- **includeExecutives / includeEstablishments / includeFinances** *(default on)* — record richness.
- **monitorMode** *(default false)* — emit only records not seen in previous runs (pairs with Schedules).

### Output

One record per company (`type: "company"`) or per announcement (`type: "announcement"`):

```json
{
    "type": "company",
    "siren": "330703844",
    "siret": "33070384400123",
    "name": "CAPGEMINI",
    "legalForm": "Société par actions simplifiée (SAS)",
    "companyCategory": "Grande entreprise",
    "activityCodeNAF": "70.10Z",
    "activitySection": "M",
    "activitySectionLabel": "Professional, scientific & technical",
    "creationDate": "1967-01-01",
    "employeeRange": "10 000 salariés et plus",
    "isEmployer": true,
    "city": "PARIS",
    "postalCode": "75017",
    "department": "75",
    "region": "11",
    "latitude": 48.8841,
    "longitude": 2.2958,
    "executives": [
        { "type": "person", "fullName": "AIMAN EZZAT", "role": "Directeur Général", "birthYear": "1961" }
    ],
    "executivesCount": 17,
    "finances": { "2024": { "revenue": 22522000000, "netResult": 10000000 } },
    "latestRevenue": 22522000000,
    "latestFinanceYear": 2024,
    "labels": ["ESS"],
    "establishmentsCount": 38,
    "officialPageUrl": "https://annuaire-entreprises.data.gouv.fr/entreprise/330703844",
    "leadScore": 96,
    "source": "recherche-entreprises.api.gouv.fr",
    "scrapedAt": "2026-06-16T18:00:00.000Z"
}
```

```json
{
    "type": "announcement",
    "announcementId": "A202601123227",
    "publishedDate": "2026-06-16",
    "announcementType": "creation",
    "announcementTypeLabel": "New registration (création)",
    "siren": "105789911",
    "companyName": "Bacci Gil, Joaquin",
    "activity": "Commerce de détail de vêtements d'occasion … via des plateformes en ligne.",
    "persons": [{ "type": "person", "firstName": "Joaquin", "lastName": "Bacci Gil" }],
    "establishment": { "address": "185 rue Ordener", "postalCode": "75018", "city": "Paris" },
    "city": "Paris",
    "department": "75",
    "greffe": "Greffe du Tribunal des Activités Economiques de Paris",
    "sourceUrl": "https://www.bodacc.fr/pages/annonces-commerciales-detail/?q.id=id:A202601123227",
    "leadScore": 90,
    "source": "BODACC (DILA)",
    "scrapedAt": "2026-06-16T18:00:00.000Z"
}
```

### Automate & schedule

Run this actor on autopilot and pull results into your own stack:

- **[Apify API](https://docs.apify.com/api/v2)** — start runs, fetch datasets, and manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[apify-client for Python](https://docs.apify.com/api/client/python/)** — official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** — run it daily with `monitorMode` on to capture only **new** registrations, insolvencies or filings — a self‑refreshing French lead pipeline.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** — trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.

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

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/french-company-scraper').call({
    mode: 'legalAnnouncements',
    announcementTypes: ['creation'],
    publishedAfter: '2026-06-01',
    departments: ['75', '92', '69'],
    enrichWithFirmographics: true,
    maxResults: 1000,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} fresh French company leads`);
```

### Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)** — multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** — push new company leads straight into your CRM.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** — get notified when a monitored filter finds new registrations.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** — auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** — pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)** — trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM‑ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** — ask your assistant to "find Qualiopi‑certified training companies in Lyon and list their directors" and let it run this scraper for you.

### Agent-ready: autonomous payments (x402 & Skyfire)

This actor is **agent-ready** — AI agents can discover it, run it, and **pay for it autonomously**, with no Apify account and no human in the loop. It uses [pay-per-event](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:

- **[x402](https://docs.apify.com/platform/integrations/x402)** — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) — no account, no API key.
- **[Skyfire](https://docs.apify.com/platform/integrations/skyfire)** — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

### More scrapers from scrapesage

Build a complete **company‑intelligence & B2B lead stack**:

- **[UK Companies House Scraper](https://apify.com/scrapesage/companies-house-scraper)** — UK company data, officers and filings.
- **[US Business Formation Scraper](https://apify.com/scrapesage/us-business-formation-scraper)** — newly registered US businesses & LLCs from state registries.
- **[SEC EDGAR Scraper](https://apify.com/scrapesage/sec-edgar-scraper)** — US public‑company filings and XBRL financials.
- **[ImportYeti Scraper](https://apify.com/scrapesage/importyeti-scraper)** — US import/customs records, suppliers and B2B leads.
- **[Made-in-China Scraper](https://apify.com/scrapesage/made-in-china-scraper)** — Chinese suppliers, products and B2B leads.
- **[TradeIndia Scraper](https://apify.com/scrapesage/tradeindia-scraper)** — Indian suppliers and manufacturer leads.
- **[FMCSA Trucking Scraper](https://apify.com/scrapesage/fmcsa-trucking-scraper)** — US carriers with phone, email and fleet data.
- **[Website Contact Scraper](https://apify.com/scrapesage/website-contact-scraper)** — emails, phones and socials from any domain list (enrich these companies).
- **[Eventbrite Scraper](https://apify.com/scrapesage/eventbrite-scraper)** — events plus organizer contact leads.

### Tips

- **Go beyond 10,000**: each query/filter returns up to 10,000 rows. To exhaust a big segment, split runs by **activity code**, **department**, or **date window** (`publishedAfter`/`publishedBefore`).
- **Freshest leads**: use `legalAnnouncements` + `announcementTypes: ["creation"]` + a recent `publishedAfter` — that's the live feed of brand‑new French companies.
- **Daily pipeline**: combine [Schedules](https://docs.apify.com/platform/schedules) with `monitorMode` to receive only new records each day.
- **Cost control**: turn off `includeEstablishments`/`includeFinances` for leaner records, and only enable `enrichWithFirmographics` when you need NAF/size/executives on announcements.

### FAQ

**Where does the data come from?** Two official French open‑data sources: the government **recherche‑entreprises / SIRENE** registry (run by DINUM/INSEE) for firmographics, and **BODACC** (the official commercial gazette, published by DILA) for legal announcements. Both are public and keyless.

**Does it return contact emails and phone numbers?** The public French registry does **not** publish company emails/phone numbers, so this actor focuses on firmographics, executives, finances and registry events. To add emails/phones, pipe the company websites into the **[Website Contact Scraper](https://apify.com/scrapesage/website-contact-scraper)**.

**How do I get only newly created companies?** Use `legalAnnouncements` mode with `announcementTypes: ["creation"]` and a recent `publishedAfter` date — BODACC publishes every new registration, newest first.

**Can I look up a specific company?** Yes — put one or more SIREN (9 digits) or SIRET (14 digits) in `sirens`, or type a SIREN/SIRET in `query`.

**Can I export to Google Sheets, CSV, or Excel?** Yes — one click in the dataset view, or automatically on every run via the [Google Drive integration](https://docs.apify.com/platform/integrations/drive).

**A field is null — why?** Some companies genuinely don't publish finances, a size band, or executives (very small entities). Fields are `null` only when the data doesn't exist, not because the scraper skipped them.

**Is scraping this data legal?** It collects publicly available open data published by the French government. You are responsible for using personal data (e.g. director names) in compliance with applicable laws (GDPR/CNIL).

### Need help?

Open an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests — more filters, finance history, extra registries — are welcome; this actor is actively maintained.

# Actor input Schema

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

Choose the data source. 'Companies' searches the official SIRENE / recherche-entreprises registry (firmographics, executives, finances). 'Legal announcements' pulls BODACC notices — new registrations (fresh leads), insolvencies and business sales — newest first.

## `query` (type: `string`):

Free-text search. In Companies mode: company name, brand, manager name, SIREN or SIRET. In Legal announcements mode: full-text on BODACC notices. Leave empty to rely on filters only.

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

Look up specific companies directly by 9-digit SIREN or 14-digit SIRET. Overrides the search query when provided.

## `activityCodes` (type: `array`):

Filter companies by activity. Use a full NAF/APE code like 62.01Z (computer programming) or 10.71C (bakery), or a single section letter A–U (e.g. J = Information & communication, F = Construction).

## `departments` (type: `array`):

Filter by French department code (75, 13, 2A, 971…) or a full 5-digit postal code (75001). Also used in Legal announcements mode (department only).

## `regions` (type: `array`):

Filter by INSEE region code (e.g. 11 = Île-de-France, 84 = Auvergne-Rhône-Alpes, 93 = PACA).

## `companySize` (type: `array`):

Keep only companies in these employee bands.

## `companyCategory` (type: `array`):

INSEE company category: PME (small/medium incl. micro), ETI (mid-cap), GE (large enterprise).

## `legalForms` (type: `array`):

Keep only these legal forms (mapped to SIRENE nature-juridique codes).

## `legalFormCodes` (type: `array`):

Power-user passthrough: exact INSEE nature-juridique codes (e.g. 5710 = SAS, 5499 = SARL, 1000 = entrepreneur individuel).

## `labels` (type: `array`):

Keep only companies carrying these official labels / certifications.

## `activeOnly` (type: `boolean`):

Drop companies whose administrative status is closed/ceased.

## `isEmployer` (type: `boolean`):

Keep only companies flagged as employers (have payroll).

## `announcementTypes` (type: `array`):

Which BODACC notice families to return in Legal announcements mode. 'creation' = brand-new company registrations (the best fresh leads); 'collective' = insolvency / collective proceedings (distressed leads); 'vente' = business sales/transfers.

## `publishedAfter` (type: `string`):

Only BODACC notices published on/after this date — the key to fresh, high-intent leads. Example: 2026-06-01.

## `publishedBefore` (type: `string`):

Only BODACC notices published on/before this date.

## `enrichWithFirmographics` (type: `boolean`):

For each BODACC notice, look up the company in the SIRENE registry and attach its NAF activity, size, executives, revenue and labels. Adds one API call per unique company.

## `includeExecutives` (type: `boolean`):

Attach the company's directors and officers (name, role, birth year).

## `includeEstablishments` (type: `boolean`):

Attach the company's matching establishments (SIRET, address, activity).

## `includeFinances` (type: `boolean`):

Attach published yearly finances (revenue / net result) when available.

## `maxResults` (type: `integer`):

Maximum number of records to emit in this run. Each search query / announcement filter returns up to 10,000 rows — split by activity, department or date to go deeper.

## `deduplicateResults` (type: `boolean`):

Emit each company (by SIREN) / announcement (by id) only once per run.

## `monitorMode` (type: `boolean`):

Remember records returned in previous runs and emit ONLY new ones. Pairs with Apify Schedules to capture fresh registrations, insolvencies or filings daily.

## `monitorStoreName` (type: `string`):

Named key-value store holding the 'already seen' ids for monitoring mode. Use a different name per tracked scope.

## `maxConcurrency` (type: `integer`):

Maximum parallel API requests (SIREN lookups / enrichment).

## `proxyConfiguration` (type: `object`):

Proxy settings. The French government open-data APIs are clean, so the default Apify proxy is plenty.

## Actor input object example

```json
{
  "mode": "companies",
  "query": "boulangerie",
  "sirens": [],
  "activityCodes": [],
  "departments": [],
  "regions": [],
  "companySize": [],
  "companyCategory": [],
  "legalForms": [],
  "legalFormCodes": [],
  "labels": [],
  "activeOnly": false,
  "isEmployer": false,
  "announcementTypes": [
    "creation"
  ],
  "enrichWithFirmographics": false,
  "includeExecutives": true,
  "includeEstablishments": true,
  "includeFinances": true,
  "maxResults": 200,
  "deduplicateResults": true,
  "monitorMode": false,
  "monitorStoreName": "french-company-monitor",
  "maxConcurrency": 4,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped records in the default dataset.

# 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 = {
    "query": "boulangerie"
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/french-company-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 = { "query": "boulangerie" }

# Run the Actor and wait for it to finish
run = client.actor("scrapesage/french-company-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 '{
  "query": "boulangerie"
}' |
apify call scrapesage/french-company-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapesage/french-company-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/LwsP5EkR48AgXHCjA/builds/HDhmlb4OycusBCXqv/openapi.json
