# Recherche Entreprises Scraper — French Company Register (`studio-amba/recherche-entreprises-scraper`) Actor

Search the official French government company register (recherche-entreprises.api.gouv.fr) by name or activity. Returns SIREN, SIRET, legal form, NAF/APE code, address, officers, creation date, and employee bracket. No API key, no login required.

- **URL**: https://apify.com/studio-amba/recherche-entreprises-scraper.md
- **Developed by:** [Studio Amba](https://apify.com/studio-amba) (community)
- **Categories:** Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $12.00 / 1,000 result 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Recherche Entreprises Scraper — Official French Company Register

Search and extract French company data straight from the official government register: [recherche-entreprises.api.gouv.fr](https://recherche-entreprises.api.gouv.fr), the same open API that powers [annuaire-entreprises.data.gouv.fr](https://annuaire-entreprises.data.gouv.fr). Look up companies by name or business activity and get the SIREN, SIRET, legal form, NAF/APE activity code, registered address, administrative status, officers (dirigeants), creation date, and employee bracket for every match. No API key, no login, no scraping of the website itself — this reads the same public data source the French state publishes for free.

France has more than 26 million registered business entities in SIRENE, the national business register. This actor turns a plain keyword search into a clean, structured list of companies you can drop straight into a CRM, a lead list, or a market-research spreadsheet.

### How to scrape Recherche Entreprises company data

This actor queries the official `recherche-entreprises.api.gouv.fr` search endpoint and returns structured records for every matching French company. Because it reads the government's own open-data API — not a scraped HTML page — the data is authoritative, current, and free to access at any volume the API allows.

#### Search by company name

Enter a company name to find that business and its related entities. Example: `Carrefour`, `Decathlon`, `Total`. The actor returns matches ranked the same way the official search ranks them, including group subsidiaries and holding structures.

#### Search by business activity

Enter an activity keyword to build a list of companies in that line of work. Example: `boulangerie` (bakery), `restaurant`, `plombier` (plumber), `garage automobile`. This is the fastest way to build a prospecting list for a specific trade or vertical.

#### Filter by department

Set the **Department Filter** to a French department code to keep only companies whose head office is in that department. Use the 2-digit code (`75` Paris, `69` Rhône, `13` Bouches-du-Rhône, `33` Gironde) or the 3-digit code for overseas departments (`971` Guadeloupe, `974` Réunion). The filter is applied server-side by the official API.

#### Filter by activity code (NAF/APE)

Set the **NAF/APE Activity Code Filter** to a specific activity code (e.g. `10.71A` for bread and pastry, `62.01Z` for software development) to keep only companies whose main registered activity matches. Combine with a name or activity keyword for a precise vertical list.

#### Active companies only

Turn on **Active Companies Only** to exclude companies whose administrative status is closed (`etat_administratif = C`) and keep just the ones currently active.

### What data does Recherche Entreprises Scraper extract?

| Field | Type | Description |
|-------|------|-------------|
| **companyName** | String | Registered company name (dénomination complète) |
| **siren** | String | 9-digit SIREN identifier |
| **siret** | String | 14-digit SIRET of the head office (siège) |
| **legalFormCode** | String | Raw INSEE legal category code (catégorie juridique) |
| **legalForm** | String | Plain-language legal form label (SA, SARL, SAS, EURL, etc.) |
| **nafCode** | String | NAF/APE activity code (e.g. `10.71A`) |
| **nafLabel** | String | Broad sector description derived from the NACE activity section |
| **sectionActivity** | String | NACE activity section letter (A–U) |
| **address** | String | Head-office street address |
| **postalCode** | String | 5-digit French postal code |
| **city** | String | Head-office city (commune) |
| **department** | String | French department code of the head office |
| **latitude** | Number | Head-office latitude |
| **longitude** | Number | Head-office longitude |
| **status** | String | Administrative status (`actif`, `cessé`) |
| **ceased** | Boolean | Whether the company has ceased activity |
| **creationDate** | String | Company creation date (ISO) |
| **employeeRange** | String | Headcount bracket (tranche d'effectif salarié) |
| **employeeCountYear** | Number | Reference year of the headcount |
| **employerCompany** | Boolean | Whether the head office is registered as an employer |
| **companySize** | String | INSEE company size category (categorie_entreprise: PME, ETI, GE...) |
| **establishmentsTotal** | Number | Total number of establishments (sites) for this company |
| **establishmentsOpen** | Number | Number of currently open establishments |
| **officers** | String | Officers/directors (dirigeants) with their role, semicolon-separated |
| **url** | String | Link to the company page on annuaire-entreprises.data.gouv.fr |
| **scrapedAt** | String | ISO timestamp of extraction |

### Input parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|--------------|
| **Company Name / Activity Keywords** | String | `boulangerie` | Search by company name or activity (in French) |
| **Department Filter** | String | — | Keep only companies in this department (`75`, `69`, `971`, …) |
| **NAF/APE Activity Code Filter** | String | — | Keep only companies matching this activity code |
| **Active Companies Only** | Boolean | `false` | Exclude closed companies |
| **Max Results** | Integer | `50` | Maximum companies to return (actor paginates 25 per request) |
| **Proxy Configuration** | Object | none | Optional — this is an open government API, no proxy required |

### Example output

```json
{
    "companyName": "BOULANGERIES BG (B B G)",
    "siren": "478455793",
    "siret": "47845579305205",
    "legalFormCode": "5710",
    "legalForm": "SAS (société par actions simplifiée)",
    "nafCode": "56.10C",
    "nafLabel": "Hébergement et restauration",
    "sectionActivity": "I",
    "address": "615 AVENUE DE LA CHAFFINE 13160 CHATEAURENARD",
    "postalCode": "13160",
    "city": "CHATEAURENARD",
    "department": "13",
    "latitude": 43.8903640316375,
    "longitude": 4.82612901648503,
    "status": "actif",
    "ceased": false,
    "creationDate": "2004-08-25",
    "employeeRange": "5 000 à 9 999 salariés",
    "employeeCountYear": 2023,
    "employerCompany": true,
    "companySize": "GE",
    "establishmentsTotal": 597,
    "establishmentsOpen": 575,
    "officers": "BERNARD BLACHERE (Président de SAS); MARIE BLACHERE (Directeur Général)",
    "url": "https://annuaire-entreprises.data.gouv.fr/entreprise/478455793",
    "scrapedAt": "2026-07-14T21:00:00.000Z"
}
````

### Common use cases

- Build B2B prospecting lists for a specific trade and department.
- Enrich a CRM with SIREN, SIRET, legal form, and NAF codes.
- Verify a supplier's legal identity, status, and officers before signing.
- Map competitors in a region by activity code or department.
- Feed French company data into market-research and lead-scoring pipelines.

### Cost estimate

Pricing is pay-per-result. Each run paginates the official API in batches of 25, so cost scales with the number of companies returned. Because the actor reads a single lightweight JSON endpoint with no browser rendering, compute cost per run is negligible.

### Limitations

- This actor reads head-office (siège) data by default. Secondary establishments are counted (`establishmentsTotal`) but not individually enumerated.
- The `nafLabel` field is derived from the broad NACE activity section (A–U), not a full 700-entry NAF code dictionary — for the exact activity description, use `nafCode`.
- Officer (dirigeants) data reflects what the RNE (Registre National des Entreprises) has on file and may be empty for some entity types (associations, public bodies).
- Results depend entirely on the official government API's uptime and rate limits.

### Related scrapers

- **Pappers Scraper** — French company data via the Pappers public directory.
- **Registro Imprese Scraper** — company data for Italy.
- **KVK Scraper** — company data from the Dutch Chamber of Commerce.
- **Brønnøysund Register Scraper (BRREG)** — company data for Norway.

### Data source and legality

This actor reads publicly available company data directly from the French government's official open-data API (recherche-entreprises.api.gouv.fr), part of the État Plateforme suite of gouv.fr open APIs. It does not access any login-protected or paid area. This data is published under the [Licence Ouverte / Open Licence](https://www.etalab.gouv.fr/licence-ouverte-open-licence/).

### Need this data on a schedule, or a custom version?

We run this scraper as a managed service for businesses: scheduled runs,
deduplication, delta detection, and delivery to your inbox, Google Sheets,
or API — maintenance included. We can also build a custom version with your
exact fields and filters, or combine multiple sources into one feed.

See [studioamba.dev/services](https://studioamba.dev/services/) or email
<hello@studioamba.dev> for a free data sample.
We maintain 300+ European web scrapers and answer within one business day.

# Actor input Schema

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

Search for French companies by name or business activity. Example: 'boulangerie', 'Carrefour', 'restaurant', 'plombier'.

## `departement` (type: `string`):

Optional. Keep only companies whose head office is in this French department. Use the 2-digit code. Example: '75' (Paris), '69' (Rhône), '13' (Bouches-du-Rhône), '971' (Guadeloupe).

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

Optional. Keep only companies whose main activity matches this NAF/APE code. Example: '10.71A' (bread and pastry), '62.01Z' (software development).

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

Only return companies whose administrative status is active (etat\_administratif = A). Excludes closed companies.

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

Maximum number of companies to return. The actor paginates the official API (25 per page) until this many results are collected.

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

Optional. This actor reads the official French government open-data API directly — no proxy is required. Leave empty unless you need a specific proxy.

## Actor input object example

```json
{
  "searchQuery": "boulangerie",
  "activeOnly": false,
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "searchQuery": "boulangerie",
    "maxResults": 20,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("studio-amba/recherche-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 = {
    "searchQuery": "boulangerie",
    "maxResults": 20,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

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

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

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

```

## CLI example

```bash
echo '{
  "searchQuery": "boulangerie",
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call studio-amba/recherche-entreprises-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=studio-amba/recherche-entreprises-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Recherche Entreprises Scraper — French Company Register",
        "description": "Search the official French government company register (recherche-entreprises.api.gouv.fr) by name or activity. Returns SIREN, SIRET, legal form, NAF/APE code, address, officers, creation date, and employee bracket. No API key, no login required.",
        "version": "0.0",
        "x-build-id": "TrgQcVjqM7E1jaWEL"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/studio-amba~recherche-entreprises-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-studio-amba-recherche-entreprises-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/studio-amba~recherche-entreprises-scraper/runs": {
            "post": {
                "operationId": "runs-sync-studio-amba-recherche-entreprises-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/studio-amba~recherche-entreprises-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-studio-amba-recherche-entreprises-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchQuery": {
                        "title": "Company Name / Activity Keywords",
                        "type": "string",
                        "description": "Search for French companies by name or business activity. Example: 'boulangerie', 'Carrefour', 'restaurant', 'plombier'."
                    },
                    "departement": {
                        "title": "Department Filter",
                        "type": "string",
                        "description": "Optional. Keep only companies whose head office is in this French department. Use the 2-digit code. Example: '75' (Paris), '69' (Rhône), '13' (Bouches-du-Rhône), '971' (Guadeloupe)."
                    },
                    "activitePrincipale": {
                        "title": "NAF/APE Activity Code Filter",
                        "type": "string",
                        "description": "Optional. Keep only companies whose main activity matches this NAF/APE code. Example: '10.71A' (bread and pastry), '62.01Z' (software development)."
                    },
                    "activeOnly": {
                        "title": "Active Companies Only",
                        "type": "boolean",
                        "description": "Only return companies whose administrative status is active (etat_administratif = A). Excludes closed companies.",
                        "default": false
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of companies to return. The actor paginates the official API (25 per page) until this many results are collected.",
                        "default": 50
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional. This actor reads the official French government open-data API directly — no proxy is required. Leave empty unless you need a specific proxy."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
