# Sirene Company Search — France SIREN/SIRET Lookup, No API Key (`rein8/france-company-search`) Actor

Sirene company data for French companies: search the official register (Insee) by name, SIREN/SIRET, postcode, department, NAF/APE code or size. Status, head office, GPS, revenue, labels. Licence Ouverte 2.0, no API key, no directors. Unofficial: not affiliated with or endorsed by Insee or DINUM.

- **URL**: https://apify.com/rein8/france-company-search.md
- **Developed by:** [Rein X](https://apify.com/rein8) (community)
- **Categories:** Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 50.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $4.00 / 1,000 company delivereds

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

**Sirene company data: look up French companies, SIREN and SIRET in the official Sirene register — by name, number, postcode, NAF code or label — and get verified rows in seconds, with no API key.**

- 📄 **What you get** — one row per French company: SIREN, SIRET and VAT number, legal name, status, NAF code, size band, head office with GPS, latest revenue and official labels — with the filters that make lead lists: postcode, department, region, NAF/APE code, size, staff band, legal form, revenue, and labels (RGE, Qualiopi, organic, ESS).
- 🏛️ **Source** — the French State's own open company API (Annuaire des Entreprises, on Insee's Sirene register) under the *Licence Ouverte 2.0*, which allows commercial reuse; the attribution is on every row.
- 💵 **Price** — $4 per 1,000 companies; the first 3 rows are free (Preview).
- 🔑 **No API key, no account** — the API is documented as "totalement ouverte d'accès"; the Actor declares who it is and stays under the published rate limit.
- 🔒 **No personal data** — company-level only: no directors, no sole traders; every row names its source, licence and last-update date.
- ⏱️ **Time to first result** — Preview: 3 companies, free of charge; a lookup returns in seconds.

| SIREN | Name | Head office | NAF | Staff | Created | Revenue (year) |
|---|---|---|---|---|---|---:|
| 797515350 | BOULANGERIE CHAMBELLAND | 75011 PARIS | 10.71C | 20–49 | 2013-09-23 | €2,646,055 (2024) |
| 819974866 | BOULANGERIE CHARCOT | 75013 PARIS | 10.71C | 6–9 | 2016-05-01 | €622,343 (2021) |
| 104083951 | BOULANGERIE VOLTAIRE | 75011 PARIS | 10.71C | not given | 2026-04-21 | — |

*Real rows from a test run on 25 Sep 2026 with `{"queries": ["boulangerie"], "postalCode": "75011", "maxItems": 8}` — 3 of the 8 shown. The postcode filter matches companies with at least one establishment there, so a head office can be elsewhere (75013 above). Every row also carries the status, legal form, size category, head-office SIRET and GPS coordinates, labels and the official directory link.*

**Price:** $4 per 1,000 companies — 3 rows free. Apify's free plan ($5 of credit a month) covers about 1,250 companies a month at no cost to you.

#### Try it in 60 seconds

1. Tick **Preview (3 companies, free)** and press **Start**: three real companies, no charge.
2. Untick Preview and press **Start** again: the form is prefilled with "boulangerie" in postcode 75002, 50 companies — back in seconds.
3. Download CSV, Excel or JSON — or call it from code:

```bash
curl -X POST "https://api.apify.com/v2/acts/rein8~france-company-search/run-sync-get-dataset-items?token=$APIFY_TOKEN&format=csv" \
  -H 'Content-Type: application/json' -d '{"queries":["boulangerie"],"postalCode":"75011","maxItems":50}'
```

### What does this Sirene company search do?

Sirene company data on demand: type a company name, a SIREN or a SIRET — or just "every active bakery in 75011" — and get verified rows from France's official **Sirene** register in seconds: legal name, status, NAF code, size band, head office with GPS, latest revenue and official labels (RGE, Qualiopi, organic). The data comes from the French State's own open API under the *Licence Ouverte 2.0*, which allows commercial reuse, and every row carries that attribution, so a compliance reviewer can sign it off. **No API key, no account, no directors or sole traders.**

**When to use it:** registry facts about French companies: leads by area and activity, company KYC and KYB checks, market sizing, a feed of new registrations. **Not a Pappers scraper:** a Pappers Sirene scraper reads a private website that republishes the register with directors; this Actor reads the State's own API and returns the register facts without people. If you need what a Pappers company page adds (directors, documents), use that site under its own terms. **Not for:** people data. No directors, officers or sole traders are ever returned, and no email addresses or phone numbers; use a lawful people-search product instead. Typing a person's name into the search terms matches companies where that person is a director or elected official (the API searches those names); using this Actor to look people up is not permitted.

Search by **name, SIREN or SIRET**, or list companies by **postcode, department, region, activity code (NAF/APE), size, legal form or revenue**. Each record carries the identifiers, status, activity, size category, staff band, head office with GPS coordinates, the latest published financials, and the official labels (organic, RGE, Qualiopi, ESS, training organisation…).

**Official source, open licence, company-level only.** The Sirene register is published by the French State under the *Licence Ouverte / Open Licence 2.0*, which allows reuse, including commercial reuse, with attribution. The Actor reads only the documented public API, identifies itself, and stays far below the published rate limit. It never returns directors or other natural persons, and it always leaves out sole traders.

### Why use official French company data?

- **B2B lead lists** — every active bakery, software company or builder in a postcode, department or region, with size and coordinates.
- **Enrichment and KYC / KYB** — supplier KYC: SIREN or SIRET in, verified legal name, status, NAF code and head office out; company names work too.
- **Market sizing** — count and list companies by activity code, size category and area.
- **Monitoring** — with *Only companies not delivered before* and a weekly schedule: a feed of companies you have not received yet (new registrations and changed records) matching your filters.
- **Compliance-friendly** — the data comes from the register itself under an open licence, not from a third-party website that forbids scraping.

#### Why this one

| | This Actor |
|---|---|
| Source | *API Recherche d'entreprises* (Annuaire des Entreprises, DINUM) on Insee's Sirene register |
| Account or API key | None |
| Personal data | None: no directors, no sole traders, records Insee marks as partially diffusible dropped |
| Licence | Licence Ouverte 2.0 attribution on every row (`_source`, `_licence`, `_sourceUrl`) |
| Monitoring | *Only companies not delivered before*: new and changed companies only |
| Pay for what you use | $4 per 1,000 companies delivered; duplicates and companies already delivered are never charged |

#### How this compares

*How this compares — Store facts from the scan of 2026-09-23, public Store API; rivals' figures change daily.*

| Actor | Users / 30 d | Success | Rating | Price per 1,000 |
|---|---|---|---|---|
| **This actor** | new | see live status | new | $4.00 |
| [dltik/pappers-sirene-scraper](https://apify.com/dltik/pappers-sirene-scraper) | 17 | 100% | no reviews | $8.00 |
| [epicscrapers/pappers-scraper](https://apify.com/epicscrapers/pappers-scraper) | 9 | 97% | 2.98★ (2) | — |
| [bovi/companies-france](https://apify.com/bovi/companies-france) | 7 | 100% | no reviews | — |
| [tagadanar/french-company-contacts](https://apify.com/tagadanar/french-company-contacts) | 6 | 100% | no reviews | — |
| [silentflow/siret-enricher-ppr](https://apify.com/silentflow/siret-enricher-ppr) | 4 | 100% | no reviews | — |

**Only this actor, on every run:** no API key or account, official source (recherche-entreprises.api.gouv.fr), the licence stamped on every row (Licence Ouverte / Open Licence 2.0), no personal data, a declared bot identity, and a free 3-row preview.

### Examples — ready-made inputs

#### Examples (one click)

Each example below is also a public Task with its own page — open it, press **Start**, and the input is already filled in:

- [List RGE-certified builders in Île-de-France](https://apify.com/rein8/france-company-search/examples/rge-builders-ile-de-france)
- [Enrich a list of SIREN numbers](https://apify.com/rein8/france-company-search/examples/enrich-siren-list)
- [List Qualiopi training providers in the Rhône](https://apify.com/rein8/france-company-search/examples/qualiopi-training-rhone)
- [Track new bakeries in Paris weekly](https://apify.com/rein8/france-company-search/examples/new-bakeries-paris-weekly)

Or copy one into the **JSON** tab of the input, or save it as a Task.

**RGE-certified builders in Île-de-France** (energy-renovation leads; region 11, NAF section F):

```json
{ "onlyRge": true, "region": "11", "nafSection": "F", "maxItems": 1000 }
```

**Enrich a list of SIREN numbers** (one search per line; a SIRET or a company name works too):

```json
{ "queries": ["797515350", "819974866", "104083951"], "maxItems": 10 }
```

**Qualiopi-certified training providers in the Rhône (Lyon)**:

```json
{ "onlyQualiopi": true, "department": "69", "maxItems": 500 }
```

**New bakeries in Paris — weekly feed** (schedule weekly; the first run delivers every match, later runs only new or changed companies):

```json
{ "nafCode": "10.71C", "department": "75", "incremental": true, "stateKey": "paris-bakeries", "maxItems": 3000 }
```

### How to scrape French company data

1. Enter one or more **search terms** (a name, a SIREN, a SIRET) — or leave them empty and use filters only.
2. Add **filters**: postcode, department, region, NAF code, size category, staff band, legal form, revenue range, labels.
3. Set **Max companies** (default 50) and run. Download the dataset as JSON, CSV or Excel, or read it through the API.
4. Optional: tick **Only companies not delivered before** and schedule the Actor weekly to receive only companies you have not received yet (new registrations, plus records that changed, marked `_changed`).

Tick **Preview** for 3 companies free of charge.

### Input

| Input | What it does |
|---|---|
| `queries` | Search terms, one search each (name, SIREN, SIRET, address). Optional when filters are set |
| `postalCode`, `department`, `region` | Where (one value or several separated by commas). The postcode filter matches companies with **at least one establishment** there; the head office can be elsewhere — `localSites` then lists the matching establishments with their own address and SIRET |
| `nafCode`, `nafSection` | Activity (10.71C, 62.01Z… / section letter) |
| `activeOnly` | On by default; off returns ceased companies too |
| `createdFrom`, `createdTo` | Creation-date window (YYYY-MM-DD) — *créations d'entreprises du mois*. The source API has no creation-date parameter, so the filter is applied after each page is read (a broad search still reads every page); filtered-out companies are never charged. With `incremental` and a weekly schedule: a feed of new registrations only |
| `companyCategory`, `employeeBand`, `legalForm`, `revenueMin`, `revenueMax` | Size category (PME, ETI, GE), staff band, legal form, revenue range — the codes are listed in the form and in the tables below |
| `onlyAssociations`, `onlyEss`, `onlyBio`, `onlyRge`, `onlyQualiopi`, `onlyTrainingOrganisations` | Official labels |
| `sortBySize` | Largest companies first |
| `maxItems`, `maxItemsPerQuery`, `incremental` + `stateKey`, `preview` | Rows, rows per search, monitoring, free preview |

### What data can this Actor extract?

#### All fields

| Field | Meaning |
|---|---|
| `siren` | 9-digit national identifier (unique id) |
| `vatNumber` | Intra-community VAT number computed from the SIREN with the official key (FR + key + SIREN) — valid if the company is VAT-registered; check VIES before invoicing |
| `name`, `legalName`, `acronym` | Name as shown in the official directory, registered legal name, acronym |
| `status`, `creationDate`, `closureDate` | `active` / `ceased`, creation and closure dates |
| `nafCode`, `nafSection`, `nafSectionText` | Main activity code (NAF rev. 2 / APE), its section letter and the section's INSEE label ("Industrie manufacturière") |
| `legalFormCode`, `legalFormText` | INSEE legal category code (5710 = SAS, 5499 = SARL, 5599 = SA…) and its official label ("SAS, société par actions simplifiée") |
| `companyCategory` | INSEE size category: PME, ETI or GE |
| `employeeBandCode`, `employeeBandText`, `employeeBandYear` | INSEE staff band code (01 = 1–2 … 12 = 20–49 … 53 = 10,000+), its label ("20 à 49 salariés") and its year |
| `establishmentsCount`, `openEstablishmentsCount` | Establishments ever registered / currently open |
| `headOfficeSiret`, `headOfficeAddress`, `postalCode`, `city`, `cityCode`, `department`, `region` | Head office |
| `latitude`, `longitude` | Head-office coordinates |
| `localSites` | The establishments that matched your search or postcode (the local shop, not only the head office): SIRET, address, postcode, city, head office or not, activity code, trade name, staff band, opening date, coordinates. Open and fully public sites only |
| `isEmployer` | Head office registered as an employer |
| `collectiveAgreementIds` | Collective agreement ids (IDCC) |
| `financialYear`, `revenueEur`, `netIncomeEur` | Latest published accounts, when the company publishes them |
| `isAssociation`, `isSocialEconomy`, `isOrganicCertified`, `isRgeCertified`, `isQualiopiCertified`, `isTrainingOrganisation`, `isPublicService`, `isMissionCompany` | Official labels and statuses |
| `lastUpdated`, `registryUrl`, `scrapedAt` | Source update time, the company's official directory page, read time |
| `_source`, `_licence`, `_sourceUrl` | The attribution on every row: Insee — base Sirene / Annuaire des Entreprises, Licence Ouverte 2.0, and the dataset page on data.gouv.fr (which states the licence) |

#### Example output

Sample record:

```json
{
  "siren": "812809234",
  "vatNumber": "FR04812809234",
  "name": "BOULANGERIE DU NIL",
  "legalName": "BOULANGERIE DU NIL",
  "status": "active",
  "creationDate": "2015-07-02",
  "nafCode": "10.71C",
  "nafSection": "C",
  "legalFormCode": "5499",
  "companyCategory": "PME",
  "employeeBandCode": "12",
  "employeeBandYear": "2023",
  "establishmentsCount": 6,
  "openEstablishmentsCount": 5,
  "headOfficeSiret": "81280923400014",
  "headOfficeAddress": "7 RUE DU NIL 75002 PARIS",
  "postalCode": "75002",
  "city": "PARIS",
  "department": "75",
  "region": "11",
  "latitude": 48.867702377,
  "longitude": 2.3478165515,
  "isEmployer": true,
  "financialYear": "2023",
  "netIncomeEur": 437133,
  "isOrganicCertified": false,
  "registryUrl": "https://annuaire-entreprises.data.gouv.fr/entreprise/812809234",
  "scrapedAt": "2026-09-21T18:06:58.169Z"
}
```

### Output

One dataset item per company (fields above), plus a `STATS` record in the key-value store: counts, pages read, the identity and pacing used, and any errors.

*If this helped, an honest review on the Store page helps others find official-source company data; if it did not, an issue on the Issues tab gets a reply within one business day.*

**Fields for AI agents.** Every row also carries `summary` — one plain-English sentence built from the row, empty values left out (e.g. *BOULANGERIE DU NIL (SIREN 812809234) is active, created 2015-06-01, NAF 10.71C, category PME, head office in PARIS 75002, 1 open establishments.*). When you search by `postalCode`, the run's status line and `STATS.nearby` name the département of that postcode for a wider search (e.g. *You searched 75002; the same search across 75 → department=75*); the API filters by postcode itself, so no count of nearby companies is given — none is invented. A finished run's status line names the row count and mentions that a review helps others find the actor.

### How much will it cost to get French company data?

| Event | When | Price |
|---|---|---|
| `result` | each company delivered | $0.004 |

So **$4 per 1,000 companies**.

| Scenario | Rows | Cost |
|---|---|---|
| Preview | 3 | $0 |
| All active bakeries in Paris 2e | ~40 | ~$0.16 |
| One SIREN list of 500 companies, enriched | 500 | $2.00 |
| Every RGE-certified builder in Île-de-France | ~9,000 | ~$36 |
| Weekly feed of new or changed companies, five NAF codes in one department | ~100–300 / week | ~$0.40–1.20 / week |

Every active company of one activity code in a large city is typically a few hundred to a few thousand records; a commercial reseller charges €29–99 per month for the same register. You are charged only for companies delivered; the Actor stops cleanly when it reaches your maximum charge. Duplicates inside a run are never charged; in incremental mode a company already delivered is charged again only when it comes back changed (marked `_changed`: any delivered field differs from last time, e.g. address, status, staff band or `lastUpdated`; `localSites` and `vatNumber` do not count).

### Integrations and automation

- **API (curl):** `curl -X POST "https://api.apify.com/v2/acts/rein8~france-company-search/run-sync-get-dataset-items?token=$APIFY_TOKEN&format=csv" -H 'Content-Type: application/json' -d '{"queries":["boulangerie"],"postalCode":"75002","maxItems":50}'`
- **Python:** `ApifyClient(token).actor("rein8/france-company-search").call(run_input={"nafCode": "62.01Z", "department": "69", "maxItems": 200})` then `client.dataset(run["defaultDatasetId"]).iterate_items()`.
- **Schedule + Google Sheets:** a weekly schedule with *Only companies not delivered before* on, and the Apify → Google Sheets integration in append mode, is a feed of new and changed companies in your area and activity.
- **n8n / Make / Zapier:** Apify node → *Run actor* → *Get dataset items* → CRM, Slack, e-mail.
- **AI assistants:** see the next section — this Actor is an MCP tool.

### Use with AI agents (MCP, Claude, Cursor)

This Actor is already a tool on Apify's hosted MCP server. Add it to Claude Desktop, Claude.ai, Cursor, VS Code or ChatGPT with one URL — the server signs you in with OAuth on first connect, so no API token goes into the config:

`https://mcp.apify.com?tools=rein8/france-company-search`

```json
{ "mcpServers": { "apify": { "type": "http", "url": "https://mcp.apify.com?tools=rein8/france-company-search" } } }
```

Then ask in plain words. The assistant reads this listing and the input schema, and maps your question to the inputs:

| You ask | The Actor runs with |
|---|---|
| "Software companies in Lyon" | `nafCode: "62.01Z"`, `department: "69"` |
| "Is SIREN 812809234 still active?" | `queries: ["812809234"]` |
| "Every organic-certified farm in Brittany" | `onlyBio: true`, `region: "53"` |
| "New companies in postcode 75011 since last week" | `postalCode: "75011"`, `incremental: true`, `stateKey: "75011"` |
| "The biggest employers in Marseille" | `department: "13"`, `sortBySize: true` |

Example prompt: *"Check these three SIRENs — 797515350, 819974866, 104083951 — and tell me which are still active, their NAF code and head-office city."* — the agent runs `queries` with the three numbers and reads `status`, `nafCode` and `city` from the rows; a lookup returns in seconds.

**Agents without an Apify account:** through Apify's x402 integration an agent can pay per run in USDC (on Base) with no account and no API key — add `&payment=x402` to the URL above. x402 requires a pay-per-event Actor that runs with limited permissions and without Standby mode; this Actor meets all three (its public permission level reads `LIMITED_PERMISSIONS`).

### En français — annuaire des entreprises Sirene : recherche par SIREN, SIRET, raison sociale ou code NAF

Recherchez les entreprises françaises dans le répertoire **Sirene** de l'Insee via l'API ouverte de l'État (*API Recherche d'entreprises*, la même source que l'**annuaire des entreprises** data.gouv.fr) : par **raison sociale** ou nom commercial, **SIREN**, **SIRET**, code postal, département, région, code **NAF/APE**, **effectif** (tranche d'effectif salarié), catégorie d'entreprise (PME, ETI, GE), forme juridique, chiffre d'affaires ou label officiel (RGE, Qualiopi, bio, ESS, organisme de formation). Par défaut, seules les **entreprises actives** sont retournées ; désactivez *Active companies only* pour inclure les entreprises cessées.

Chaque ligne donne : SIREN et numéro de TVA intracommunautaire calculé, raison sociale (`legalName`) et sigle, état administratif, date de création, code NAF/APE et section, catégorie juridique, catégorie d'entreprise, tranche d'effectif et son année, nombre d'**établissements** (créés et ouverts), **siège social** (SIRET, adresse, code postal, commune, département, région, coordonnées GPS), les établissements qui correspondent à votre recherche (`localSites` : SIRET, adresse, enseigne, effectif, date d'ouverture), le dernier chiffre d'affaires et résultat net publiés, les labels, la date de dernière mise à jour et le lien vers la fiche officielle.

**Cas d'usage :** listes de prospection B2B par zone et activité, vérification KYB d'un fournisseur ou d'un client (SIREN ou SIRET en entrée, raison sociale, état et siège social vérifiés en sortie), études de marché, enrichissement d'un fichier de SIREN, flux hebdomadaire des nouvelles immatriculations dans un code NAF et un département. **Ce que l'Actor ne fait pas :** aucun dirigeant, aucun entrepreneur individuel, aucune adresse e-mail ni numéro de téléphone ; ce n'est pas un scraper de Pappers ni d'un autre site privé.

**Sans clé API ni compte.** L'API est « totalement ouverte d'accès » ; l'Actor s'identifie (User-Agent déclaré) et reste très en dessous de la limite publiée (une requête à la fois, au plus 2,5 par seconde). Essai gratuit : cochez *Preview* pour 3 entreprises sans frais ; ensuite 4 $ pour 1 000 entreprises livrées, sans frais de plateforme séparés.

**Attribution à conserver avec toute copie des données :**

> Source : Insee — base Sirene, via l'API Recherche d'entreprises (Annuaire des Entreprises, DINUM). Licence Ouverte / Open Licence 2.0. Date de la dernière mise à jour : voir le champ lastUpdated de chaque ligne (répertoire mis à jour le 1er septembre 2026). Réutilisation non officielle : elle ne confère aucun caractère officiel et ne suggère aucune reconnaissance ni caution de l'Insee ou de la DINUM. Données au niveau de l'entreprise uniquement (sans dirigeants, sans entrepreneurs individuels, statut de diffusion « O » uniquement).

**Demandes de suppression :** une entreprise dont le statut de diffusion Insee a changé peut écrire à rein8.actors@gmail.com ; les lignes sont rafraîchies depuis le répertoire à l'exécution suivante.

### Where the data comes from — and why it is clean

- **Source:** *API Recherche d'entreprises* (`recherche-entreprises.api.gouv.fr`), operated by the French State (DINUM, Annuaire des Entreprises) on top of Insee's Sirene register. Its documentation describes it as "totalement ouverte d'accès" — no key, no account.
- **Licence:** the Sirene base is published on data.gouv.fr under the **Licence Ouverte / Open Licence version 2.0**. Attribution: *Source: Insee — base Sirene; Annuaire des Entreprises (DINUM). Licence Ouverte 2.0.* Keep this attribution when you republish the data.
- **Fair use:** the API documents a limit of 7 requests per second. The Actor makes one request at a time, at most 2.5 per second, with a declared User-Agent and a contact address. If the source throttles, the Actor waits as told and stops rather than working around it.
- **Attribution line** to keep with any copy of the data:

> Source: Insee — base Sirene, via the API Recherche d'entreprises (Annuaire des Entreprises, DINUM). Licence Ouverte / Open Licence 2.0. Date of last update: see lastUpdated on each row (register update 2026-09-01). Unofficial: no official character, recognition or endorsement by Insee or DINUM is implied. Company-level data only (no directors, no sole traders, statut de diffusion "O" only).

### Limits and honest notes

- **10,000 results per search** is the source's cap. Narrow a search with filters (postcode, NAF code, size) to reach everything.
- **Sole traders are always excluded**, and **directors are never returned** — see below. If you need them, this is not the right tool.
- Businesses that asked the register not to publish their data ("non-diffusibles") are left out by the source itself.
- Financials exist only for companies that publish accounts; `revenueEur: 0` is the source's value and can mean "not declared".
- This is a search API, not a full dump of Sirene: for the entire register use the bulk files on data.gouv.fr.
- **Not for:** finding people, e-mail addresses or phone numbers; UK or other countries' companies; credit scores.

### FAQ, Disclaimers, and Support

**What is the basis for using this data?** It is official French State open data. The register is published under the Licence Ouverte 2.0, which permits reuse, including commercial reuse, with attribution; the Actor reads it only through the documented public API. This is a description of the source's own published terms, not legal advice.

**Intended use:** market research, B2B lead lists of companies, enrichment and verification of company records, monitoring of new registrations. It is not a tool for profiling individuals, and it does not output personal data.

**Personal data / GDPR:** the register also holds directors' names and birth dates, and sole traders are natural persons. This Actor deliberately does not download the directors block, always excludes sole traders, and does not expose the API's person-search parameters. If you combine this output with personal data from other sources, you are responsible for having a lawful basis under GDPR.

**Is it affiliated with the French State?** No. Not affiliated with, endorsed by, or reviewed by Insee, DINUM or any French administration.

#### Do I need an API key or an account?

No. The API is documented as "totalement ouverte d'accès"; the Actor declares who it is and stays under the published rate limit.

#### Is it legal to use Sirene data commercially?

The *Licence Ouverte / Open Licence 2.0* permits reuse, including commercial reuse, provided the source and the date of last update are credited — every row carries `_source`, `_licence`, `_sourceUrl` and `lastUpdated`. Credit line to keep with any copy: "Source: Insee (base Sirene) and the other producers used by the Annuaire des Entreprises (DINUM), via API Recherche d'entreprises — Licence Ouverte 2.0 — date de dernière mise à jour : see lastUpdated." This describes the licence; it is not legal advice.

#### How fresh is the data?

The State's API is updated continuously from Insee; each row carries `lastUpdated`, the source's own update time.

#### SIREN, officers, financials — which does it return?

SIREN (and SIRET, VAT number, head office), yes; financials (latest published revenue and net income), yes when the company publishes accounts; officers and directors, never — see the next question.

#### Why are there no directors or sole traders?

By design: they are natural persons. The Actor never downloads the directors block and always excludes sole traders, and drops every record Insee marks as partially diffusible. A small company's head-office address can still be its founder's home, so use the data for B2B purposes only (never B2C prospecting of individuals), keep it current, and honour removal requests (open an issue in the Issues tab or write to rein8.actors@gmail.com).

#### Removal requests

Insee directs people who have changed their diffusion status to contact reuser sites directly. A company or person that has since changed its Insee diffusion status can write to rein8.actors@gmail.com; rows are refreshed from the register on the next run, and a record that is no longer fully diffusible ("O") is not delivered.

#### Can I get only new companies on a schedule?

Yes: turn on *Only companies not delivered before*, give it a state key, and schedule the Actor weekly with your filters. Each run returns companies you have not received yet, plus companies whose record changed since (marked `_changed: true`); sort by `creationDate` to separate new registrations from updates.

#### Comment obtenir les créations d'entreprises du mois ? — How do I get only new registrations?

Set **Créée à partir du / Created on or after** to the first of the month (and, for a closed period, *Created on or before*), with your département or NAF code. The official search API has no creation-date parameter, so the Actor reads every page of the search at its polite pace and keeps the companies created in the window; you pay only for the rows kept. For a weekly feed of *new registrations only*, keep `createdFrom` set and turn on *Only companies not delivered before*: changed older records are then excluded by the date, not only by memory.

#### How do I export to Google Sheets, CSV or Excel?

Every run's dataset downloads as CSV, Excel, JSON or XML from the Storage tab or the API (`?format=csv`); the Apify → Google Sheets integration appends new rows on a schedule. The **Export CRM** view (Storage → dataset → view) downloads a French, CRM-ready CSV: raison sociale, SIREN, TVA, forme juridique, NAF, effectif, siège, création, chiffre d'affaires, fiche officielle.

#### What do the codes mean? — Les codes INSEE

Every row carries the label next to the code: `employeeBandText`, `legalFormText`, `nafSectionText`. For reference:

| `employeeBandCode` | `employeeBandText` |
|---|---|
| NN | Unité non employeuse (aucun salarié) |
| 00 | 0 salarié (a employé au cours de l'année) |
| 01 / 02 / 03 | 1 ou 2 / 3 à 5 / 6 à 9 salariés |
| 11 / 12 | 10 à 19 / 20 à 49 salariés |
| 21 / 22 | 50 à 99 / 100 à 199 salariés |
| 31 / 32 | 200 à 249 / 250 à 499 salariés |
| 41 / 42 | 500 à 999 / 1 000 à 1 999 salariés |
| 51 / 52 / 53 | 2 000 à 4 999 / 5 000 à 9 999 / 10 000 salariés et plus |

The twelve legal forms buyers filter on most (`legalForm`): 5710 SAS · 5720 SASU · 5499 SARL · 5498 EURL · 5599 SA à conseil d'administration · 5699 SA à directoire · 5202 SNC · 6540 SCI · 5458 SCOP · 6220 GIE · 6598 EARL · 5485 SELARL · 9220 association déclarée. `legalFormText` covers the whole INSEE nomenclature (about 250 codes). NAF codes come with their section label; the 732 NAF sub-class labels ("Boulangerie et boulangerie-pâtisserie" for 10.71C) are not on the row yet.

#### What does this Actor NOT do?

People search, e-mail or phone lookup, credit scores, other countries' registers, or a full dump of Sirene (use the bulk files on data.gouv.fr for that).

**Support:** open an issue on the Actor's **Issues** tab — questions and field requests are answered within one business day. If this Actor saves you a subscription, a review on the Store page helps others find official-source data.

### More official-data Actors by rein8

Same rules on every one: the source's own open route, no API key, the licence on every row, company-level data only.

- [Companies House Data — UK Company Search, No API Key](https://apify.com/rein8/uk-companies-house-snapshot) — every live UK company from the free monthly snapshot, filtered by SIC code, postcode, status or deadlines.
- [Form D Scraper — Startup Funding Rounds from SEC EDGAR, No API Key](https://apify.com/rein8/sec-form-d-funding-rounds) — every private raise filed with the U.S. SEC, as a daily feed of clean rows.

### Changelog

- 2026-09-26 — new: `createdFrom` / `createdTo` (creation-date window, applied after each page since the API has no such parameter — *créations d'entreprises du mois*); label columns `employeeBandText`, `legalFormText`, `nafSectionText` from the INSEE nomenclatures; the input form is bilingual (français · English); the dataset table has readable headers and an "Export CRM" view in French.
- 2026-09-25 (night) — listing: one-click links to the four public Tasks, a "Use with AI agents" section with the Actor's own MCP URL and the x402 note, the free-plan allowance next to the price, a fuller French section (annuaire des entreprises, raison sociale, code NAF/APE, effectif, siège social, établissements), the Pappers disambiguation and a removal-requests FAQ; title and description lead with "Sirene" and say "company data".
- 2026-09-25 (evening) — new: `localSites` (the establishments that matched your search or postcode, open and fully public only) and `vatNumber` (computed from the SIREN); a blank line in the search terms no longer runs an empty search over the whole register; a row the dataset refuses is never charged.
- 2026-09-25 — listing: a first screen with real sample rows, the price in one line and a 60-second start; ready-made example inputs (RGE builders, SIREN list enrichment, Qualiopi providers, a weekly new-company feed).
- 0.2 (2026-09-24) — listing rewritten from what buyers search for; scenario cost table; input form sectioned with pick-lists for size category and NAF section; integrations and AI-assistant prompt mapping; French summary; FAQ in question form; attribution recorded in the run statistics.
- 0.1 — first release: search by name / SIREN / SIRET, area, activity, size, revenue and label filters, incremental mode, company-level fields only.

# Actor input Schema

## `queries` (type: `array`):

Une recherche par ligne : raison sociale, marque, adresse, SIREN (9 chiffres) ou SIRET (14 chiffres) ; laissez vide pour lister par filtres seulement. · One search per line: a company name, a brand, an address, a SIREN (9 digits) or a SIRET (14 digits). Leave empty to list companies by filters only. Searching a person's name to find their company is fine; the row never contains the person — this Actor finds companies, not people.

## `postalCode` (type: `string`):

Code postal à 5 chiffres, ou plusieurs séparés par des virgules (75011,75012) ; le siège peut être ailleurs, localSites liste les établissements correspondants. · 5-digit French postcode, or several separated by commas. Matches companies with at least one establishment there — the head office can be elsewhere; each row's localSites lists the matching establishments with their own address and SIRET.

## `department` (type: `string`):

Numéro de département, ou plusieurs séparés par des virgules (75,69,13). · Department code, or several separated by commas.

## `region` (type: `string`):

Code région INSEE à 2 chiffres, ou plusieurs séparés par des virgules. · 2-digit INSEE region code, or several separated by commas: 11 Île-de-France, 24 Centre-Val de Loire, 27 Bourgogne-Franche-Comté, 28 Normandie, 32 Hauts-de-France, 44 Grand Est, 52 Pays de la Loire, 53 Bretagne, 75 Nouvelle-Aquitaine, 76 Occitanie, 84 Auvergne-Rhône-Alpes, 93 Provence-Alpes-Côte d'Azur, 94 Corse, 01 Guadeloupe, 02 Martinique, 03 Guyane, 04 La Réunion, 06 Mayotte.

## `nafCode` (type: `string`):

Code NAF exact avec le point, ou plusieurs séparés par des virgules. · Exact NAF code with the dot, or several separated by commas: 10.71C (boulangerie / bakery), 62.01Z (programmation / software), 56.10A (restauration traditionnelle / restaurants).

## `nafSection` (type: `string`):

Une lettre de section NAF. · One NAF section letter: C manufacturing, F construction, G retail, I hotels & restaurants, J information & communication, M professional services… For several sections, run once per section or use a NAF code.

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

Activé (défaut) : seulement les entreprises actives ; désactivé : actives et cessées. · On (default): only companies that are currently active. Off: active and ceased companies.

## `companyCategory` (type: `string`):

Une catégorie INSEE : PME, ETI ou GE. · One INSEE size category: PME (small and medium), ETI (mid-size), GE (large).

## `employeeBand` (type: `string`):

Codes de tranche d'effectif INSEE, séparés par des virgules ; chaque ligne porte le libellé (employeeBandText). · INSEE staff band codes, separated by commas: 01 = 1–2, 02 = 3–5, 03 = 6–9, 11 = 10–19, 12 = 20–49, 21 = 50–99, 22 = 100–199, 31 = 200–249, 32 = 250–499, 41 = 500–999, 42 = 1,000–1,999, 51 = 2,000–4,999, 52 = 5,000–9,999, 53 = 10,000+, NN = no employees.

## `legalForm` (type: `string`):

Catégorie juridique INSEE, séparées par des virgules ; chaque ligne porte le libellé (legalFormText). · INSEE legal category, separated by commas: 5710 = SAS, 5720 = SASU, 5499 = SARL, 5498 = EURL, 5599 / 5699 = SA, 5202 = SNC, 6540 = SCI, 5458 = SCOP, 6220 = GIE, 6598 = EARL, 5485 = SELARL, 9220 = association déclarée.

## `createdFrom` (type: `string`):

AAAA-MM-JJ : seulement les entreprises créées à cette date ou après (« créations du mois ») ; avec le mode incrémental et une planification hebdomadaire, un flux des nouvelles immatriculations. · YYYY-MM-DD: only companies created on or after this date. The source API has no creation-date parameter, so this filter is applied after reading each page: a broad search still reads every page (about 3 minutes per 10,000 results); filtered-out companies are never charged.

## `createdTo` (type: `string`):

AAAA-MM-JJ : seulement les entreprises créées à cette date ou avant. · YYYY-MM-DD: only companies created on or before this date; combine with "Created on or after" for a month or a quarter.

## `revenueMin` (type: `integer`):

CA minimum des derniers comptes publiés. · Minimum revenue of the latest published accounts. Only companies that publish accounts have a revenue figure (roughly one in three).

## `revenueMax` (type: `integer`):

CA maximum des derniers comptes publiés. · Maximum revenue of the latest published accounts.

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

Seulement les associations. · Only non-profit associations.

## `onlyEss` (type: `boolean`):

Seulement l'économie sociale et solidaire. · Only organisations of the social and solidarity economy (ESS).

## `onlyBio` (type: `boolean`):

Seulement les entreprises ayant un établissement certifié par l'Agence Bio. · Only companies with an establishment certified by Agence Bio.

## `onlyRge` (type: `boolean`):

Seulement les entreprises Reconnues Garantes de l'Environnement. · Only companies holding the RGE label (Reconnu Garant de l'Environnement).

## `onlyQualiopi` (type: `boolean`):

Seulement les organismes certifiés Qualiopi. · Only training providers holding the Qualiopi certification.

## `onlyTrainingOrganisations` (type: `boolean`):

Seulement les organismes de formation déclarés. · Only registered training organisations.

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

Trie par nombre d'établissements plutôt que par pertinence. · Sort results by number of establishments instead of relevance.

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

Nombre maximum d'entreprises livrées au total ; seules les lignes livrées sont facturées. · Maximum number of companies to return in total. You are charged only for companies delivered. The source returns at most 10,000 results per search — narrow with filters to go deeper.

## `maxItemsPerQuery` (type: `integer`):

Plafond optionnel par terme, pour qu'un terme large n'épuise pas le budget ; 0 = aucun. · Optional cap per search term, so that one broad term cannot use the whole budget. 0 = no per-term cap.

## `incremental` (type: `boolean`):

Remember which companies were already delivered (per 'State key') and return only new or CHANGED ones: a company delivered before comes back, marked \_changed and charged again, when any delivered field differs from last time (a new address, status, staff band or lastUpdated date; localSites and vatNumber do not count). With a weekly schedule this gives a feed of newly registered or changed companies matching your filters.

## `stateKey` (type: `string`):

Name of the memory used by 'Only companies not delivered before'. Left as 'default', every saved Task gets its own memory automatically (a run started by hand remembers per search). Type a name to share one memory between schedules on purpose.

## `allowStateFallback` (type: `boolean`):

Only matters if an incremental run stops with 'state store unavailable'. Off (default): such a run stops before anything is charged. On: the run continues without memory, i.e. it delivers and charges every matching company again.

## `preview` (type: `boolean`):

Renvoie 3 entreprises sans frais, pour vérifier le format. · Return 3 companies without any charge, to check the output format.

## Actor input object example

```json
{
  "queries": [
    "boulangerie"
  ],
  "postalCode": "75002",
  "activeOnly": true,
  "onlyAssociations": false,
  "onlyEss": false,
  "onlyBio": false,
  "onlyRge": false,
  "onlyQualiopi": false,
  "onlyTrainingOrganisations": false,
  "sortBySize": false,
  "maxItems": 50,
  "maxItemsPerQuery": 0,
  "incremental": false,
  "stateKey": "default",
  "allowStateFallback": false,
  "preview": false
}
```

# Actor output Schema

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

One item per company. Add ?format=csv or ?format=xlsx to the URL for other formats.

## `stats` (type: `string`):

Counts, pages read, the declared identity and pacing, and any errors.

# 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 = {
    "queries": [
        "boulangerie"
    ],
    "postalCode": "75002",
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("rein8/france-company-search").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 = {
    "queries": ["boulangerie"],
    "postalCode": "75002",
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("rein8/france-company-search").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 '{
  "queries": [
    "boulangerie"
  ],
  "postalCode": "75002",
  "maxItems": 50
}' |
apify call rein8/france-company-search --silent --output-dataset

```

## MCP server setup

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

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/f7yL9cGBvDGSmohsJ/builds/VXlfHA6rYUfYQRssy/openapi.json
