# French Company Search — SIREN/SIRET Lookup from Sirene (`actor-forge/france-company-search-siren`) Actor

Search French companies by name or look them up by SIREN/SIRET in the official Sirene/RNE data: legal form, NAF code, headcount band, head office, VAT number, latest revenue and net income, directors opt-in. No API key. $1 per 1,000 companies.

- **URL**: https://apify.com/actor-forge/france-company-search-siren.md
- **Developed by:** [ActorForge](https://apify.com/actor-forge) (community)
- **Categories:** Lead generation, Business, Automation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 company results

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

## French Company Search — SIREN/SIRET Lookup from Sirene

Search French companies by name or look them up by SIREN/SIRET in the official Sirene/RNE data: legal form, NAF code, headcount band, head office, VAT number, latest revenue and net income, directors opt-in. No API key. $1 per 1,000 companies.

**Search French companies by name, or look them up by SIREN or SIRET**, straight from the official **Sirene (INSEE) and RNE (INPI)** data published by the French government, with no API key and no account. Each company comes back as one clean row: SIREN, dénomination, forme juridique, état administratif, date de création, **code NAF**, **tranche d'effectif**, head-office address, **numéro de TVA intracommunautaire** (computed with the official key formula), and the **latest published chiffre d'affaires and résultat net**. Directors (dirigeants) are an opt-in.

Use it to verify suppliers and customers (KYB), enrich a CRM or a prospect list with NAF codes, headcount and revenue, check that a company is still active, or turn a list of French company names into SIREN numbers. A pay-per-result alternative to Pappers or Société.com exports for the public fields.

**$1 per 1,000 companies.** Names with no match get a free status row and are never charged.

#### En français

Recherche d'entreprises françaises par nom, SIREN ou SIRET, à partir des données officielles Sirene et RNE (API Recherche d'entreprises) : forme juridique, code NAF, effectif, siège, TVA intracommunautaire, chiffre d'affaires et résultat net publiés, dirigeants en option. Sans clé API. 1 $ pour 1 000 entreprises.

#### Where the data comes from

The government's **API Recherche d'entreprises** (DINUM), which serves Sirene and RNE data under the Licence Ouverte / Etalab 2.0. Companies that opted out of public dissemination are not returned. The actor sends at most 2.5 requests per second. Not affiliated with INSEE, INPI, DINUM, Pappers or Société.com.

### What data does it return?

Every run outputs clean, schema-validated rows like these:

| companyId | name | legalForm | activityCode | employees | address.city | vatNumber | financials.year | financials.revenue | financials.netIncome |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 552032534 | DANONE | SA à conseil d’administration | 70.10Z | 1000-1999 | PARIS | FR27552032534 | 2025 | 27376000000 | 2100000000 |
| 552032534 | DANONE | SA à conseil d’administration | 70.10Z | 1000-1999 | PARIS | FR27552032534 | 2025 | 27376000000 | 2100000000 |
| 356000000 | LA POSTE |  | 53.10Z | 10000+ | PARIS | FR39356000000 | 2025 | 26700000000 | 1474000000 |

### How much does it cost?

Transparent pay-per-event pricing — you only pay for what you get, and the
actor **always respects your run budget**: set a maximum total charge and it
stops cleanly at the cap instead of overrunning.

| Event | Price | Charged | Worked example |
| --- | --- | --- | --- |
| `company-result` | $0.001 | per company record delivered | 1,000 companies = $1.00 |
| `apify-actor-start` | $0.00005 | per run per GB of memory (platform start fee) | One run at 256 MB = $0.00005 |

### Input options

| Field | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `queries` | array | no | — | One per line: a company name (e.g. "Danone", "La Poste"), a 9-digit SIREN or a 14-digit SIRET (spaces are ignored). Names return the best match by default; raise "Matches per name" for ambiguous names. |
| `defaultCountry` | string | no | `"FR"` | Always FR on this listing. |
| `maxResultsPerQuery` | integer | no | `1` | Name searches can match several companies: keep the best N (1 = best match only). ID lookups always return one. Each company is one charged row. |
| `includeOfficers` | boolean | no | `false` | Add the directors published in the RNE: name and role only, never birth dates. Off by default: directors are often private individuals, so only turn this on if you have a lawful basis (GDPR) for processing their names. |
| `lookupLei` | boolean | no | `false` | Also look up each company's Legal Entity Identifier in GLEIF by its national ID (free, one extra request per company; GLEIF allows about 60 per minute, so large lists run slower). |

### Limits & honest notes

- France only: names are searched in the API Recherche d'entreprises, which returns its own relevance ranking. Use a SIREN or SIRET for an exact match, or raise "Matches per name" for ambiguous names.
- Revenue and net income appear only for companies that publish their accounts; the latest published year is returned. Many small companies file confidentially, so these fields are often null.
- Activity descriptions are not always provided by the register; the NAF code is always present.
- At most 2.5 requests per second (the API allows 7 per second per IP), so 1,000 companies take several minutes.
- Directors: off by default. With includeOfficers you get name and role only; birth dates are never output. Company e-mail addresses and phone numbers are never output.
- Need other countries? Company Registry Lookup covers Brazil, Norway, Finland, Czechia, Poland and any LEI worldwide with the same row format.
- Respects your run budget: set a maximum total charge and the run stops cleanly at the cap. Names with no match each get a free status row and never fail the run.

### Related ActorForge actors

- [Company Registry Lookup](https://apify.com/actor-forge/company-registry-lookup) — Brazil, Norway, Finland, Czechia, Poland and LEI lookups in the same format
- [Companies House Enrichment](https://apify.com/actor-forge/companies-house-enrichment) — the same lookup for UK companies

### Changelog

- **2026-10-23** — Initial release: France-only listing of Company Registry Lookup with a plain names/SIREN/SIRET list, French column labels and revenue columns, $1 per 1,000 companies. Names starting with a two-letter word (La Poste, Le Monde) are no longer read as a country prefix.

***

*Built and maintained by **ActorForge**. Reliability first: every actor in the
portfolio is monitored by an automated nightly self-test, and breakages are
typically fixed the same day.*

# Actor input Schema

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

One per line: a company name (e.g. "Danone", "La Poste"), a 9-digit SIREN or a 14-digit SIRET (spaces are ignored). Names return the best match by default; raise "Matches per name" for ambiguous names.

## `defaultCountry` (type: `string`):

Always FR on this listing.

## `maxResultsPerQuery` (type: `integer`):

Name searches can match several companies: keep the best N (1 = best match only). ID lookups always return one. Each company is one charged row.

## `includeOfficers` (type: `boolean`):

Add the directors published in the RNE: name and role only, never birth dates. Off by default: directors are often private individuals, so only turn this on if you have a lawful basis (GDPR) for processing their names.

## `lookupLei` (type: `boolean`):

Also look up each company's Legal Entity Identifier in GLEIF by its national ID (free, one extra request per company; GLEIF allows about 60 per minute, so large lists run slower).

## Actor input object example

```json
{
  "queries": [
    "Danone",
    "552032534"
  ],
  "defaultCountry": "FR",
  "maxResultsPerQuery": 1,
  "includeOfficers": false,
  "lookupLei": false
}
```

# Actor output Schema

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

One row per French company from Sirene/RNE, plus free status rows for names with no match.

## `summary` (type: `string`):

Companies delivered per register, not-found / invalid / failed query counts, API requests and billing.

# 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": [
        "Danone",
        "552032534"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("actor-forge/france-company-search-siren").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": [
        "Danone",
        "552032534",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("actor-forge/france-company-search-siren").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": [
    "Danone",
    "552032534"
  ]
}' |
apify call actor-forge/france-company-search-siren --silent --output-dataset

```

## MCP server setup

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

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/zMZhLNwpQNHGp6SMp/builds/PXn0SeCXqgD07NWHk/openapi.json
