# France Company Search: SIREN/SIRET Data (SIRENE) (`adamhaleworks/france-company-search-sirene-api`) Actor

Search French companies in the official SIRENE register by NAF code, department, region, legal form, headcount, revenue and labels (RGE, Qualiopi, ESS), or look up SIREN/SIRET lists. Head office address, GPS, finances, VAT number, establishments. Company-level data only, no director names.

- **URL**: https://apify.com/adamhaleworks/france-company-search-sirene-api.md
- **Developed by:** [Adam Hale](https://apify.com/adamhaleworks) (community)
- **Categories:** Lead generation, Business, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

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

## France Company Search: SIREN/SIRET Data (SIRENE)

Search **French companies** in the official **SIRENE** register, or enrich a list of **SIREN / SIRET** numbers. Each company (unité légale) becomes one clean row:

- **SIREN, name, acronym, trade names**, legal form (code and label), **VAT number**
- **NAF/APE activity code** with label (and the new NAF 2025 code), activity section
- **Size**: employee headcount bracket and year, INSEE category (PME, ETI, GE), number of open establishments
- **Head office**: SIRET, full address, postal code, city, INSEE commune code, department, region, **GPS coordinates**
- **Latest published finances**: revenue and net income, with the year
- **Labels**: RGE, Qualiopi, organic, ESS, société à mission, association (RNA number), training organisation, work integration (SIAE), public body, collective agreements (IDCC)
- Creation and closure dates, active or closed, a link to the company's page on annuaire-entreprises.data.gouv.fr
- Optional: the company's establishments that match your search, and corporate officers that are companies (auditors, parent companies)

Filter by **NAF code, department, region, postal code, headcount, company category, legal form, labels, revenue and net income**, or search **near a GPS point**. It reads the French government's official API (Recherche d'entreprises, DINUM), so there is no scraping, no browser and no proxy. **Free while in launch; planned price $2 per 1,000 companies.**

**Company-level data only.** Unlike other French company actors, this one never outputs directors' names, birth dates or sole traders. See [Personal data](#personal-data).

### What can I use it for?

- **B2B lead lists.** All software companies in Paris with 10–49 employees, every RGE-certified heating installer in Gironde, every Qualiopi training organisation in a region, with address, size and revenue.
- **CRM enrichment and KYC checks.** Paste SIREN or SIRET numbers and get legal form, activity, status (active or closed), head office and VAT number. Invalid and unknown numbers are flagged and free.
- **Local market maps.** Restaurants, shops or service companies with a site within a few kilometres of a point, with the distance to their nearest establishment.
- **New company monitoring.** Schedule a saved search with **Only new** and get only companies you haven't received before.
- **Market sizing and research.** Counts and profiles by sector, region, size and legal form.

### What data does it return?

| Field | Example |
|---|---|
| `status` | `ok` (charged), `not_found`, `invalid_input`, `natural_person_withheld`, `error` (all free) |
| `siren`, `name`, `fullName`, `acronym`, `tradeNames` | `529991119`, `LEDGER` |
| `legalFormCode`, `legalForm` | `5710`, `SAS, société par actions simplifiée` |
| `nafCode`, `nafLabel`, `naf25Code`, `activitySection`, `activitySectionLabel` | `62.01Z`, `Programmation informatique`, `26.20Y`, `J` |
| `companyCategory`, `headcountBracket`, `headcountLabel`, `headcountYear`, `isEmployer` | `ETI`, `32`, `250-499 employees`, `2024` |
| `creationDate`, `closureDate`, `isActive`, `administrativeStatus` | `2011-01-01`, `null`, `true`, `active` |
| `vatNumber` | `FR03529991119` |
| `headOfficeSiret`, `address`, `postalCode`, `city`, `communeCode` | `52999111900098`, `106 RUE DU TEMPLE 75003 PARIS` |
| `departmentCode`, `departmentName`, `regionCode`, `regionName`, `latitude`, `longitude` | `75`, `Paris`, `11`, `Île-de-France`, `48.862592`, `2.358607` |
| `establishmentsOpen`, `establishmentsTotal` | `4`, `10` |
| `financeYear`, `revenueEur`, `netIncomeEur`, `finances[]` | `2016`, `868690`, `-397198` |
| `labels`, `isRge`, `isQualiopi`, `isBio`, `isEss`, `isSocieteMission`, `isAssociation`, `associationId`, `isTrainingOrganisation`, `isSiae`, `isPublicBody` | `["RGE"]`, `true`, … |
| `collectiveAgreements`, `rgeIds`, `localAuthorityCode` | `["1486"]` (Syntec) |
| `corporateOfficers[]` | `{"siren": "344366315", "name": "ERNST & YOUNG AUDIT", "role": "Commissaire aux comptes titulaire"}` |
| `matchingEstablishments[]` (optional) | SIRET, address, activity, headcount, GPS of matching sites |
| `requestedEstablishments[]` (lookup) | the SIRETs you asked for, with `found: true/false` |
| `distanceKm`, `nearestEstablishment`, `headOfficeDistanceKm` (near-a-point mode) | `0.354` |
| `partiallyDiffusible`, `annuaireUrl`, `updatedAt` | `false`, `https://annuaire-entreprises.data.gouv.fr/entreprise/529991119` |

#### Example output

A software company from the default search (software companies in Paris), real run on 2026-10-12, shortened:

```json
{
  "status": "ok",
  "siren": "529991119",
  "name": "LEDGER",
  "legalFormCode": "5710",
  "legalForm": "SAS, société par actions simplifiée",
  "nafCode": "62.01Z",
  "nafLabel": "Programmation informatique",
  "naf25Code": "26.20Y",
  "companyCategory": "ETI",
  "headcountLabel": "250-499 employees",
  "headcountYear": 2024,
  "creationDate": "2011-01-01",
  "isActive": true,
  "vatNumber": "FR03529991119",
  "headOfficeSiret": "52999111900098",
  "address": "106 RUE DU TEMPLE 75003 PARIS",
  "postalCode": "75003",
  "city": "PARIS",
  "departmentName": "Paris",
  "regionName": "Île-de-France",
  "latitude": 48.862592,
  "longitude": 2.358607,
  "establishmentsOpen": 4,
  "financeYear": 2016,
  "revenueEur": 868690,
  "netIncomeEur": -397198,
  "labels": ["Egapro index published"],
  "collectiveAgreements": ["1486"],
  "corporateOfficers": [{"siren": "344366315", "name": "ERNST & YOUNG AUDIT", "role": "Commissaire aux comptes titulaire"}],
  "annuaireUrl": "https://annuaire-entreprises.data.gouv.fr/entreprise/529991119"
}
```

A lookup row for a sole trader's SIREN (free, nothing personal):

```json
{"status": "natural_person_withheld", "input": "848117420", "siren": "848117420", "error": "This SIREN belongs to a sole trader (entrepreneur individuel) or a record without a legal form, i.e. a natural person. Company data is withheld for privacy. Not charged."}
```

The Output tab has three views: **Companies**, **Head office and location**, and **Finances and labels**. Export as CSV, Excel or JSON, or fetch the results through the API.

### How much does it cost?

**Free while in launch; planned price $2 per 1,000 companies.** During launch you pay only Apify's normal platform usage. Once pricing starts (announced in advance on this page and by Apify), it will be:

| Event | Planned price |
|---|---|
| Company output (row with `status: ok`) | **$0.002** (= $2 per 1,000 companies) |

- **Will not be charged:** invalid SIREN/SIRET numbers, numbers not found, sole traders withheld for privacy, lookups that failed, companies removed by your filters, duplicates and companies already delivered in earlier runs ("Only new" mode).
- **Examples at the planned price, from our test runs (2026-10-12):** the default search (software companies in Paris, 50 companies) would cost $0.10. RGE heating and plumbing installers in Gironde with 10–99 employees: 52 companies, $0.104. A lookup of 13 numbers (7 found companies, 3 invalid numbers, 2 sole traders, 1 unknown): $0.014. A 10,200-company export of all active software companies took 112 seconds: $20.40.
- **Cost cap:** once pricing starts, set **Maximum cost per run** and the actor stops cleanly when it reaches it. In a test with a $0.005 cap the default search stopped after 2 companies.

For comparison (Apify Store, checked 2026-10-12): other French company actors charge $3.50 to $24 per 1,000 companies, and one adds a second fee per company analysed.

### How to use it

1. Choose a **Mode**: search with filters, lookup a SIREN/SIRET list, or near a GPS point.
2. Set your filters. All filters are optional and combined with AND; several values inside one filter are combined with OR.
3. Click **Start**.

#### Search: software companies in Paris (default input)

```json
{
  "nafCodes": ["62.01Z"],
  "departments": ["75"],
  "status": "active",
  "maxItems": 50
}
```

#### RGE heating installers with 10–99 employees in Gironde, with their sites

```json
{
  "nafCodes": ["43.22"],
  "departments": ["Gironde"],
  "labels": ["rge"],
  "headcountBrackets": ["11", "12", "21"],
  "includeEstablishments": true,
  "maxEstablishmentsPerCompany": 3
}
```

`43.22` is a prefix and covers 43.22A (plumbing) and 43.22B (heating and air conditioning). `62` would cover all of division 62.

#### Lookup a list of SIREN / SIRET numbers

```json
{
  "mode": "lookup",
  "identifiers": ["552032534", "380 474 494", "38047449400388"]
}
```

Numbers are checked (9 or 14 digits, Luhn check digit; La Poste SIRETs use their own rule) before any request. Several numbers of the same company give one row; SIRETs add a `requestedEstablishments` list.

#### Restaurants within 2 km of Lyon city centre

```json
{
  "mode": "nearPoint",
  "latitude": "45.7640",
  "longitude": "4.8357",
  "radiusKm": "2",
  "nafCodes": ["56.10A"]
}
```

Rows include `distanceKm` and `nearestEstablishment`: national chains appear because one of their restaurants is within the radius, even when their head office is in Paris.

#### Monitoring new companies

Turn on **Only new** with a saved search and schedule it (for example weekly). The first run returns all matches; later runs return only companies you have not received for that search. In our test (software companies headquartered in Creuse) the first run returned 12 companies, the second 0, and after simulating 2 new companies the third returned exactly those 2.

#### API example

```bash
curl -X POST "https://api.apify.com/v2/acts/adamhaleworks~france-company-search-sirene-api/run-sync-get-dataset-items?token=<TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"nafCodes": ["62.01Z"], "departments": ["75"], "maxItems": 100}'
```

#### Useful codes

- **NAF**: `62.01Z` software development · `62.02A` IT consulting · `43.22B` heating installation · `56.10A` restaurants · `47.11` food retail · `68.31Z` real estate agencies · `69.20Z` accountants · `71.12B` engineering · `85.59A` adult training.
- **Legal forms**: `SAS`/`SASU` (5710), `SARL`/`EURL` (5499), `SA`, `SCI` (6540), `SNC` (5202), `SELARL` (5485), `Association` (all 92xx), or any INSEE code or prefix (`57`).
- **Departments**: codes (`75`, `13`, `2A`, `971`) or names (`Paris`, `Bouches-du-Rhône`). **Regions**: names (`Île-de-France`, `PACA`) or INSEE codes (`11`, `93`).

### How it works

- **Data source.** The [API Recherche d'entreprises](https://recherche-entreprises.api.gouv.fr/docs/) run by DINUM (the French government's digital agency), the same data as [annuaire-entreprises.data.gouv.fr](https://annuaire-entreprises.data.gouv.fr). It combines the INSEE **Sirene** register, the INPI national business register (RNE) and public label lists (ADEME RGE, Qualiopi, Agence Bio, ESS, …). No key is needed. Labels for NAF codes and legal forms come from INSEE's nomenclatures as published in the API's open-source code.
- **Licence.** The underlying datasets are published under the **Licence Ouverte / Open Licence 2.0 (Etalab)**, which allows commercial reuse with attribution: [Base Sirene](https://www.data.gouv.fr/datasets/base-sirene-des-entreprises-et-de-leurs-etablissements-siren-siret) (INSEE) and [Données des entreprises utilisées dans l'Annuaire des Entreprises](https://www.data.gouv.fr/datasets/donnees-des-entreprises-utilisees-dans-lannuaire-des-entreprises) (data.gouv.fr), both marked "lov2" on data.gouv.fr (checked 2026-10-12). Attribution: *Source: INSEE Sirene, INPI RNE, via API Recherche d'entreprises (DINUM), Licence Ouverte 2.0.*
- **Politeness and limits.** The API allows at most 7 requests per second per IP address and 30 per network, and warns that shared cloud networks may hit the limit. The actor sends at most 4 requests per second, waits as long as the API's `Retry-After` header asks on HTTP 429, and slows down further after each rate-limit answer. It identifies itself with an honest User-Agent that links to this page. The API host has no robots.txt (HTTP 404, checked 2026-10-12).
- **10,000-result window.** The API returns at most 10,000 companies per search (400 pages of 25). When you ask for more, the actor splits the search automatically by NAF code, department and headcount bracket (largest companies first) and removes duplicates, so a nationwide export of one NAF code works. If a single department and headcount bracket still has more than 10,000 matches, the run says so (SUMMARY `truncatedQueries`); add postal codes or a legal form to get the rest.
- **Head office vs any establishment.** The API's location filters match any establishment of a company. By default the actor keeps only companies whose **head office** is in the chosen place (the others are skipped and not charged). Choose **Any establishment** to also get national companies with a local branch.
- **Reliability.** Requests are retried on network errors and server errors. A migrated run continues without delivering or charging companies twice. Each run writes a SUMMARY record with counts, the API total, queries run, rate limiting and the stop reason.

### Personal data

French registers contain natural persons: sole traders (entrepreneurs individuels) are registered under their own name and address, and companies list their directors with name and birth month. This actor outputs **organisations only**:

- **Sole traders are never output.** Searches exclude them (the API's `est_entrepreneur_individuel=false` filter, plus a second check on the legal form). Records without a legal form and indivisions or partnerships between natural persons are treated the same way. In a lookup, such a SIREN returns a free row with `status: natural_person_withheld` and no name or address.
- **Directors who are natural persons and elected officials are dropped entirely.** Only officers that are companies (statutory auditors, a parent company acting as president) are kept, with SIREN, name and role.
- **No search by person.** The API's person-name and birth-date filters are not offered.
- E-mail addresses and phone numbers are removed from names and trade names. Data marked non-diffusible in Sirene is returned as empty (`partiallyDiffusible: true`).

You are responsible for using the data in line with the GDPR and the laws that apply to you, in particular for prospecting.

### FAQ

**Why is `revenueEur` 0 while the company has a net income?** Small companies may publish their accounts without the income statement, or file them confidentially. The API then reports revenue 0. Treat 0 with a non-zero net income as "not published". This is our reading of the data, not an official definition.

**Why are the finances from 2016 for some companies?** `financeYear` is the latest year for which accounts were published. Many companies stop publishing or file confidentially.

**Why do I get fewer companies than the API's total?** The head-office location rule, sole traders being withheld, closed companies (status filter) and the 10,000-result window. The SUMMARY record counts each reason.

**Can I get directors' names or phone numbers?** No. The actor is deliberately limited to company-level data.

**Something is wrong or missing?** Open an issue on the actor's Issues tab with the SIREN.

### Limitations

- Companies that chose not to be publicly listed (non-diffusibles) and companies refused registration are not in the API, so a lookup returns `not_found`.
- Headcount brackets and company categories are INSEE's yearly estimates (see `headcountYear`, `companyCategoryYear`). Revenue and net income are only available for companies that publish accounts.
- Near-a-point search can only be combined with NAF codes and activity sections (an API restriction); closed companies and sole traders are removed afterwards.
- NAF and legal form labels are in French, as in the official nomenclatures.
- The API is a public service with no guaranteed throughput; the administration may lower the limit when it is overloaded.

This actor is not affiliated with INSEE, INPI, DINUM or the French government.

***

Author: Adam Hale

# Actor input Schema

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

Search = find companies with filters (NAF code, place, size, legal form, labels, revenue). Lookup = enrich a list of SIREN or SIRET numbers. Near a point = companies with an establishment within a radius of a GPS position.

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

Optional words matched against the company name and address, for example "boulangerie" or "transport Lyon". Leave empty to search with filters only.

## `nafCodes` (type: `array`):

Main activity of the company (NAF rev. 2). Accepts 62.01Z, 6201Z, or a short prefix: 62 = all of division 62 (IT services), 43.2 = building installation. Several codes are combined with OR.

## `activitySections` (type: `array`):

Broad sectors (NAF sections). Use NAF codes above for finer filters.

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

French departments by code or name: 75, 13, 69, 2A, 971, Paris, Gironde. Several are combined with OR.

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

Regions by name or INSEE code: Île-de-France (11), Auvergne-Rhône-Alpes (84), Provence-Alpes-Côte d'Azur (93), Occitanie (76), Nouvelle-Aquitaine (75), Hauts-de-France (32), Grand Est (44), Bretagne (53), Normandie (28), Pays de la Loire (52), Centre-Val de Loire (24), Bourgogne-Franche-Comté (27), Corse (94) and overseas regions.

## `postalCodes` (type: `array`):

5-digit postal codes, for example 75011 or 69002.

## `communeCodes` (type: `array`):

5-character INSEE commune codes (not postal codes), for example 75111 (Paris 11e) or 33063 (Bordeaux).

## `locationMatch` (type: `string`):

Head office = the company's registered head office is in the chosen place (best for local lead lists). Any establishment = the company has at least one establishment (branch, shop, site) there, which also returns national companies with a local branch.

## `status` (type: `string`):

Active companies only (default), closed (ceased) companies only, or both.

## `companyCategories` (type: `array`):

INSEE category: PME = small and medium-sized (under 250 staff), ETI = intermediate-sized (250-4,999), GE = large enterprise.

## `headcountBrackets` (type: `array`):

Number of employees (INSEE bracket of the company).

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

INSEE legal form codes (5710 = SAS/SASU, 5499 = SARL/EURL, 6540 = SCI, 92 = all associations) or shortcuts: SAS, SASU, SARL, EURL, SELARL, SA, SNC, SCI, Association. Sole traders (1000) are not available.

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

Keep companies that hold every selected label.

## `collectiveAgreementId` (type: `string`):

4-digit IDCC code, for example 1486 (Syntec) or 1596 (building workers).

## `minRevenueEur` (type: `integer`):

Latest published revenue (chiffre d'affaires). Only companies that publish accounts can match.

## `maxRevenueEur` (type: `integer`):

Latest published revenue.

## `minNetIncomeEur` (type: `integer`):

Latest published net income (can be negative).

## `maxNetIncomeEur` (type: `integer`):

Latest published net income (can be negative).

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

Return companies with the most establishments first.

## `identifiers` (type: `array`):

For Lookup mode: SIREN (9 digits) or SIRET (14 digits), spaces allowed. Each company gets one row; SIRETs add the requested establishment. Invalid numbers and unknown companies get a row with an error status and are not charged.

## `latitude` (type: `string`):

For Near-a-point mode, for example 48.8566.

## `longitude` (type: `string`):

For Near-a-point mode, for example 2.3522.

## `radiusKm` (type: `string`):

Search radius around the point, up to 50 km. Default 5. Only NAF codes and activity sections can be combined with this mode.

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

Add the company's establishments that match the search (address, SIRET, activity, headcount, GPS), capped per company.

## `maxEstablishmentsPerCompany` (type: `integer`):

Cap for the establishments list.

## `includeCorporateOfficers` (type: `boolean`):

Officers that are themselves companies, for example statutory auditors or a parent company acting as president. Directors who are natural persons are never included.

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

Stop after this many companies (search and near-a-point modes). 0 = up to 100,000.

## `autoSplit` (type: `boolean`):

The API returns at most 10,000 companies per search. When you ask for more, the actor splits the search by NAF code, department and headcount bracket and removes duplicates.

## `onlyNew` (type: `boolean`):

Remember the companies already output for this exact search and skip them next time. Schedule the run to get newly registered companies matching your filters. The first run outputs all matches.

## `stateStoreName` (type: `string`):

Named key-value store that remembers output companies for "Only new" mode. Each different search keeps its own memory inside it.

## `requestsPerSecond` (type: `integer`):

The API allows at most 7 requests per second per IP address (and 30 per network). The default of 4 stays well below; the actor slows down further when asked to.

## `requestTimeoutSecs` (type: `integer`):

Timeout for one API request.

## `maxRetries` (type: `integer`):

Retries for network errors, rate limits (HTTP 429, honouring Retry-After) and server errors.

## Actor input object example

```json
{
  "mode": "search",
  "nafCodes": [
    "62.01Z",
    "62.02A"
  ],
  "departments": [
    "75",
    "92"
  ],
  "regions": [
    "Île-de-France"
  ],
  "locationMatch": "headOffice",
  "status": "active",
  "legalForms": [
    "SAS",
    "SARL"
  ],
  "sortBySize": false,
  "identifiers": [
    "552032534",
    "380 474 494",
    "38047449400388"
  ],
  "includeEstablishments": false,
  "maxEstablishmentsPerCompany": 5,
  "includeCorporateOfficers": true,
  "maxItems": 50,
  "autoSplit": true,
  "onlyNew": false,
  "stateStoreName": "france-companies-state",
  "requestsPerSecond": 4,
  "requestTimeoutSecs": 30,
  "maxRetries": 5
}
```

# Actor output Schema

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

Dataset items, one per company. Views: companies, contacts and location, finances and labels.

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

SUMMARY record in the default key-value store: rows output and charged, status counts, API total, queries run and split, sole traders withheld, only-new state, stop reason and rate limiting.

# 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 = {
    "nafCodes": [
        "62.01Z"
    ],
    "departments": [
        "75"
    ],
    "status": "active",
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("adamhaleworks/france-company-search-sirene-api").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 = {
    "nafCodes": ["62.01Z"],
    "departments": ["75"],
    "status": "active",
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("adamhaleworks/france-company-search-sirene-api").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 '{
  "nafCodes": [
    "62.01Z"
  ],
  "departments": [
    "75"
  ],
  "status": "active",
  "maxItems": 50
}' |
apify call adamhaleworks/france-company-search-sirene-api --silent --output-dataset

```

## MCP server setup

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

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/Vn8gZJiQViY8nktdO/builds/ySvt3uQoJTB2cjuhf/openapi.json
