# France Company Data — SIREN, Directors & Financials (`foxlabs/france-company-data`) Actor

Look up French companies by name or SIREN, or browse by industry (NAF) & department. Returns directors, financials (revenue, net result), workforce, address, legal form & status from official open data (INSEE/INPI) — no API key. KYC, due diligence, lead lists.

- **URL**: https://apify.com/foxlabs/france-company-data.md
- **Developed by:** [Berkan Kaplan](https://apify.com/foxlabs) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 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/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

<p align="center"><a href="https://apify.com/foxlabs/france-company-data"><img src="https://data.foxlabs.com.tr/img/france-company-data-banner.svg" alt="France Company Data — SIREN, Directors &amp; Financials" width="100%" /></a></p>

## France Company Data — SIREN, Directors & Financials

**Turn France's official company register into structured, ready-to-use intelligence.** Look up any French company — or a whole sector — and get one clean JSON record with identity, directors, annual financials, workforce, activity and registered address, straight from the French government's open data. **No API key, no login, no fragile HTML scraping** — so it doesn't break when a website changes.

Built on the official **Recherche d'entreprises API** (`recherche-entreprises.api.gouv.fr`), which merges **INSEE Sirene** firmographics, **INPI RNE** directors and **published annual accounts** into one source, released under **Licence Ouverte / Etalab 2.0** — free to reuse **and resell**, with attribution.

- 🇫🇷 **Whole official register** — any French company by name, SIREN/SIRET, or a no-name sector browse (NAF + department + size)
- 👤 **Directors & auditors** — every officer with role, birth year and nationality; auditors (commissaires aux comptes) too — **~92% coverage** (measured)
- 💶 **Real financials** — revenue & net result per filed year, the latest given raw, compact (`€311M`) and exact (`311,448,000`)
- ⚡ **Official open data, no key** — Licence Ouverte / Etalab 2.0: commercial reuse **and resale** allowed; direct connection, no proxies to manage

### Quick start (API)

Build a list of active small/medium **software companies (NAF `62.01Z`) in Paris (dept `75`)** in one call:

```bash
curl -X POST "https://api.apify.com/v2/acts/foxlabs~france-company-data/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "nafCode": "62.01Z", "department": "75", "companyCategory": "PME", "maxResults": 100 }'
````

Prefer no code? Open the **Input** tab, type a company name (or set a browse filter), and click **Start** — then download the results.

### What you get

One clean, flat record per company:

| Field | Type | Description |
|---|---|---|
| `siren` | string | 9-digit SIREN — the unique company identifier |
| `name` / `legalName` | string | Full name (nom complet) / registered legal name (raison sociale) |
| `acronym` | string | Acronym (sigle), where registered |
| `status` | string | `Active` or `Ceased` (état administratif) |
| `legalFormCode` | string | INSEE legal-form code (nature juridique), e.g. `5710` = SAS |
| `companyCategory` | string | INSEE size class — `PME`, `ETI` or `GE` |
| `nafCode` | string | NAF/APE activity code, e.g. `62.01Z` |
| `industrySection` | string | Readable NACE section, e.g. *Information & communication* |
| `employeeRange` | string | Readable workforce band, e.g. *1,000–1,999 employees* (not a raw code) |
| `dateCreated` | string | Company creation date (`YYYY-MM-DD`) |
| `establishmentsCount` | number | Number of establishments (établissements) |
| `address` | string | Full head-office (siège) address |
| `street` / `postalCode` / `city` | string | Address parts |
| `department` / `region` | string | Department number (e.g. `92`) / INSEE region code (e.g. `11`) |
| `latitude` / `longitude` | number | Head-office geocoordinates |
| `directors` | array | Officers **and** auditors — see shape below |
| `directorsCount` | number | Count of officers/auditors |
| `latestRevenue` | number | Latest filed revenue (chiffre d'affaires), EUR |
| `latestRevenueCurrency` | string | `EUR` when revenue is present |
| `latestRevenueFormatted` | string | Compact revenue, e.g. `€311M` |
| `latestRevenueExact` | string | Exact revenue with separators, e.g. `311,448,000` |
| `latestNetResult` | number | Latest filed net result (résultat net), EUR — can be negative |
| `latestFinancialYear` | string | Year of the latest filed accounts, e.g. `2024` |
| `financials` | array | Per year: `{ year, revenue, netResult }` |
| `isNonprofit` / `isESS` / `isMissionCompany` | bool / null | Association / social-&-solidarity-economy / société-à-mission flags |
| `vatNumber` | string | Intra-EU VAT (TVA), e.g. `FR14794598813` |
| `source` / `sourceUrl` | string | Attribution string / link to the official annuaire-entreprises page |
| `scrapedAt` | string | ISO timestamp of the run |

Each entry in `directors` is either a **person** — `{ type: "person", name, role, birthYear, nationality }` — or a **legal-person / auditor** — `{ type: "organisation", name, siren, role }`. Missing values are `null`, never a guess.

### Sample output

A real record pulled live from the source API (`scrapedAt` shown illustratively):

```json
{
  "siren": "794598813",
  "name": "DOCTOLIB",
  "legalName": "DOCTOLIB",
  "acronym": null,
  "status": "Active",
  "legalFormCode": "5710",
  "companyCategory": "ETI",
  "nafCode": "62.01Z",
  "industrySection": "Information & communication",
  "employeeRange": "1,000–1,999 employees",
  "dateCreated": "2013-07-15",
  "establishmentsCount": 9,
  "address": "54 QUAI CHARLES PASQUA, 92300, LEVALLOIS-PERRET",
  "street": "54 QUAI CHARLES PASQUA",
  "postalCode": "92300",
  "city": "LEVALLOIS-PERRET",
  "department": "92",
  "region": "11",
  "latitude": 48.900771302,
  "longitude": 2.2849148026,
  "directors": [
    { "type": "person", "name": "STANISLAS NIOX-CHATEAU", "role": "Président de SAS", "birthYear": "1987", "nationality": null },
    { "type": "organisation", "name": "GRANT THORNTON", "siren": "632013843", "role": "Commissaire aux comptes titulaire" },
    { "type": "organisation", "name": "KPMG S.A", "siren": "775726417", "role": "Commissaire aux comptes titulaire" }
  ],
  "directorsCount": 3,
  "latestRevenue": 311448000,
  "latestRevenueCurrency": "EUR",
  "latestRevenueFormatted": "€311M",
  "latestRevenueExact": "311,448,000",
  "latestNetResult": -127499000,
  "latestFinancialYear": "2024",
  "financials": [
    { "year": "2024", "revenue": 311448000, "netResult": -127499000 }
  ],
  "isNonprofit": null,
  "isESS": null,
  "isMissionCompany": null,
  "vatNumber": "FR14794598813",
  "source": "INSEE Sirene + INPI RNE via recherche-entreprises.api.gouv.fr — Licence Ouverte / Etalab 2.0",
  "sourceUrl": "https://annuaire-entreprises.data.gouv.fr/entreprise/794598813",
  "scrapedAt": "2026-07-05T09:12:44.130Z"
}
```

### Input & filters

Three ways to search — mix and match:

- **By SIREN / SIRET** (`sirenNumbers`) — exact company lookup, 9- or 14-digit. The most precise input.
- **By name** (`companyNames`) — full-text search, e.g. `Doctolib`, `BlaBlaCar`.
- **Browse & filter** — no name needed: by **NAF code** (`nafCode`, e.g. `62.01Z`), **department** (`department`, e.g. `75` = Paris) and/or **size** (`companyCategory` — `PME` / `ETI` / `GE`). Ideal for building targeted sector lists.
- **Include ceased companies** (`includeInactive`) — off by default (active only); enable to widen to ceased (cessée) entities.
- **Max results** (`maxResults`) — 1–10,000 (the source API's hard window per query).

### Example inputs (copy & paste)

```jsonc
// 1) Exact lookup by SIREN and/or SIRET — full profiles
{ "sirenNumbers": ["794598813", "79459881300077"] }

// 2) Name search — find companies by name
{ "companyNames": ["Doctolib", "BlaBlaCar"], "maxResults": 50 }

// 3) Browse a sector — active software SMEs in Paris
{ "nafCode": "62.01Z", "department": "75", "companyCategory": "PME", "maxResults": 1000 }

// 4) Whole sector nationwide — every company under a NAF code
{ "nafCode": "62.01Z", "maxResults": 5000 }

// 5) Large enterprises (GE) in a department (Rhône / Lyon)
{ "department": "69", "companyCategory": "GE", "maxResults": 500 }

// 6) Include ceased companies in a sector (history / M&A screening)
{ "nafCode": "62.02A", "department": "75", "includeInactive": true, "maxResults": 2000 }

// 7) Mid-market firms (ETI) in a sector nationwide (wholesale trade)
{ "nafCode": "46.90Z", "companyCategory": "ETI", "maxResults": 3000 }
```

### Use cases

- **KYC / KYB onboarding.** Pass a counterparty's `sirenNumbers` → verified legal identity, status, legal form, VAT, size class, and the full **directors & auditors** list — the firmographic core of a compliance file, in one call.
- **Supplier & counterparty due diligence.** Before you sign, read a company's directors, its **financial trajectory** (revenue + net result per filed year) and whether it's still active.
- **Market sizing & sector mapping.** Browse a NAF code across a department → count the players, see the size distribution (`companyCategory`) and rank leaders by revenue.
- **ICP / account targeting lists.** Build a firmographic list by industry + region + size to feed your CRM, then enrich contacts with your own tooling. *(This dataset is firmographic — it doesn't include company contact emails or phones.)*
- **Credit & risk screening.** Rank a portfolio by latest revenue and net result, and flag ceased entities before extending terms.
- **CRM enrichment & M\&A screening.** Feed existing SIRENs or names → append NAF, size band, address, geocoordinates, directors and financials; missing fields return `null`, never a guess. Filter a sector by size to spot targets and see who controls each company.

### Performance & throughput

Each search pages the official API at 25 records per page with a short, polite delay between pages — so a single SIREN or name returns in seconds, and larger browses scale with the result count. There are no external API keys, proxies or rate limits to manage. The source API caps **any single query at 10,000 records** — use the NAF, department and size filters to slice large sectors into sub-10k pulls. Direct connection is used by default (the open-data API rejects the shared datacenter proxy pool).

### Integrations

**JavaScript** (`apify-client`):

```js
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('foxlabs/france-company-data').call({
  nafCode: '62.01Z', department: '75', companyCategory: 'PME', maxResults: 500,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

**Python** (`apify-client`):

```python
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("foxlabs/france-company-data").call(run_input={
    "nafCode": "62.01Z", "department": "75", "companyCategory": "PME", "maxResults": 500,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["name"], item.get("latestRevenueFormatted"))
```

Also works with **Make / n8n / Zapier** (Apify app → run this Actor, map the input), scheduled runs, webhooks, and the **Apify MCP server** so AI agents can call it as a tool.

### Data quality

Coverage is read live from the official register on every run — nothing is cached or fabricated, and missing values are `null`.

| Field group | Coverage |
|---|---|
| Core identity (SIREN, name, status, NAF/APE, head-office address) | Present for every company — these are the base Sirene register fields |
| Directors / auditors | **~92%** (live-verified, July 2026) — sole proprietors and some entities have no registered officers |
| Financials (revenue + net result) | **~68–74%** overall (400-company sample, July 2026); ~56% for small firms (PME), ~76–83% for mid-caps & large groups (ETI/GE) |
| Financial freshness | ~80% of companies with published accounts have **2024 or 2025** as their latest filed year (July 2026 sample) |

When financials are present, revenue **and** net result are both filled. French micro/small firms may keep their accounts confidential, which is why small-company coverage is lower.

### Pricing

**Pay per result** — you are billed only for the company records returned. No subscription, no seat fees; a name that matches nothing, or a filtered browse that returns fewer rows, costs less. There's an Apify **free tier** to evaluate the full feature set before you scale, and no proxy or third-party costs to add.

### FAQ

**Do I need an API key or an account with INSEE/INPI?** No — no key, no login. The Actor calls the official open-data API for you.

**Can I use this data commercially / resell it?** Yes — the source is **Licence Ouverte / Etalab 2.0**, which permits commercial reuse and redistribution *with attribution*. Each record carries the attribution string in `source`. (See the prospecting note under Notes & limits.)

**How do I look up one specific company?** Put its 9-digit SIREN or 14-digit SIRET in `sirenNumbers`, or its name in `companyNames`.

**Can I build a list without knowing any names?** Yes — set a **browse filter**: `nafCode` and/or `department` and/or `companyCategory`.

**Does it include contact emails or phone numbers?** No. This is a **firmographic** dataset (identity, directors, financials, address) — the open register doesn't expose company contact emails/phones. Use it to build and qualify target lists, then enrich contacts with your own tools.

**Are beneficial owners (bénéficiaires effectifs) included?** No — public access to the beneficial-owner register was legally restricted in France in 2024, so no open source can provide them.

**How fresh are the financials?** They're read live from the official API on each run; in a July 2026 sample, ~80% of companies with published accounts had 2024 or 2025 as their latest filed year.

**What export formats are available?** JSON, CSV, Excel, or via the Apify API / integrations.

**How many companies can I get in one run?** Up to **10,000 per query** (the source API's hard window). Narrow with NAF/department/size to page through larger sectors.

**Why is a company missing directors or financials?** Sole proprietors and some entities have no registered officers, and micro/small firms may keep accounts confidential. Missing values are `null`, never fabricated.

### Troubleshooting

- **0 results** → filters are too narrow or a code is malformed. Check the NAF format (`62.01Z`) and department (`75`), and if you're looking for a closed company, enable **Include ceased companies**.
- **"Provide companyNames, sirenNumbers, or a browse filter"** → the run had no input. Add at least one name, number, or browse filter.
- **A big sector stops at 10,000 rows** → that's the source API's hard window, not a bug. Add a `department` or `companyCategory` filter to split the sector into sub-10k slices.
- **Enabling a proxy causes HTTP 503 / empty runs** → leave **Proxy** off (the default). The open-data API accepts direct connections but rejects the shared datacenter proxy pool.

### Notes, limits & legal (honest)

- **Source & licence.** INSEE Sirene + INPI RNE via `recherche-entreprises.api.gouv.fr`, released under **Licence Ouverte / Etalab 2.0** (commercial reuse & redistribution permitted, attribution required). Records carry the attribution string in `source`.
- **Director personal data.** Director/auditor names are public registry information. Under French/EU rules, reuse for **unsolicited commercial prospecting is restricted** — use this data for KYC, due diligence, research and B2B intelligence, and honour opt-outs. You are the data controller for your use.
- **Beneficial owners not included.** Public access to the bénéficiaires effectifs register was legally restricted in France in 2024.
- **Department filter caveat.** The filter follows the source API and may match companies with an **establishment** (not only their head office) in that department; the address returned is always the head office (siège). *(A siège-strict option is planned.)*
- **10,000 records per query** is the source API's hard limit — full-database export via the INSEE Sirene bulk file is planned.
- **Firmographic, not contact.** No company emails or phone numbers are included.
- **Not affiliated** with INSEE, INPI or the French government; this Actor redistributes their public open data.

### Support

Questions, a field you'd like added, or a custom build? Open the **Issues** tab on this Actor, or email **info@foxlabs.com.tr**. We reply fast.

*If this Actor saves you time, a ⭐ review really helps.*

### Changelog

#### 0.2 — 2026-07-05

- Reworked docs: API quick-start, full field table, real sample output, JS/Python/Make/MCP integration snippets, use cases, data-quality summary, FAQ & troubleshooting.

#### 0.1

- Initial release. Three search modes (SIREN, name, browse), directors + annual financials, readable workforce/industry labels, formatted money, active-default. Official Recherche d'entreprises API, no key.
- Direct connection by default: the source API rejects shared datacenter proxies (HTTP 503), so no proxy is used unless you explicitly enable one.

***

Part of the **[foXLabs data platform](https://data.foxlabs.com.tr/)** — public-data company, procurement, financial & AI-search intelligence scrapers. Browse the full suite and free how-to guides at **[data.foxlabs.com.tr](https://data.foxlabs.com.tr/)**.

# Actor input Schema

## `companyNames` (type: `array`):

Search French companies by name (full-text). E.g. "Doctolib", "BlaBlaCar".

## `sirenNumbers` (type: `array`):

Exact lookup by 9-digit SIREN or 14-digit SIRET. The most precise input.

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

Browse by activity code, e.g. "62.01Z" (computer programming). Works without a name — combine with Department. Full list: INSEE NAF rév. 2.

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

French department number, e.g. "75" (Paris), "69" (Rhône), "13" (Bouches-du-Rhône). Combine with NAF to browse a sector in a region.

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

INSEE size class filter. PME = small & medium, ETI = mid-market, GE = large enterprise.

## `includeInactive` (type: `boolean`):

By default only active companies are returned. Enable to also include ceased (cessée) entities.

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

Hard cap on records (1–10000). The source API returns at most 10,000 per query — narrow with filters for larger sectors.

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

Leave OFF (default). The official open-data API accepts direct connections but rejects the shared datacenter proxy pool (HTTP 503) — only enable a proxy if you have a specific reason.

## Actor input object example

```json
{
  "companyNames": [
    "Doctolib",
    "BlaBlaCar"
  ],
  "sirenNumbers": [],
  "companyCategory": "any",
  "includeInactive": false,
  "maxResults": 100,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# 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 = {
    "companyNames": [
        "Doctolib",
        "BlaBlaCar"
    ],
    "sirenNumbers": [],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("foxlabs/france-company-data").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 = {
    "companyNames": [
        "Doctolib",
        "BlaBlaCar",
    ],
    "sirenNumbers": [],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("foxlabs/france-company-data").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 '{
  "companyNames": [
    "Doctolib",
    "BlaBlaCar"
  ],
  "sirenNumbers": [],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call foxlabs/france-company-data --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=foxlabs/france-company-data",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "France Company Data — SIREN, Directors & Financials",
        "description": "Look up French companies by name or SIREN, or browse by industry (NAF) & department. Returns directors, financials (revenue, net result), workforce, address, legal form & status from official open data (INSEE/INPI) — no API key. KYC, due diligence, lead lists.",
        "version": "0.1",
        "x-build-id": "ndJ3kRJj3E04qb497"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/foxlabs~france-company-data/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-foxlabs-france-company-data",
                "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/foxlabs~france-company-data/runs": {
            "post": {
                "operationId": "runs-sync-foxlabs-france-company-data",
                "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/foxlabs~france-company-data/run-sync": {
            "post": {
                "operationId": "run-sync-foxlabs-france-company-data",
                "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": {
                    "companyNames": {
                        "title": "Company names",
                        "type": "array",
                        "description": "Search French companies by name (full-text). E.g. \"Doctolib\", \"BlaBlaCar\".",
                        "items": {
                            "type": "string"
                        }
                    },
                    "sirenNumbers": {
                        "title": "SIREN / SIRET numbers",
                        "type": "array",
                        "description": "Exact lookup by 9-digit SIREN or 14-digit SIRET. The most precise input.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "nafCode": {
                        "title": "NAF / APE industry code",
                        "type": "string",
                        "description": "Browse by activity code, e.g. \"62.01Z\" (computer programming). Works without a name — combine with Department. Full list: INSEE NAF rév. 2."
                    },
                    "department": {
                        "title": "Department",
                        "type": "string",
                        "description": "French department number, e.g. \"75\" (Paris), \"69\" (Rhône), \"13\" (Bouches-du-Rhône). Combine with NAF to browse a sector in a region."
                    },
                    "companyCategory": {
                        "title": "Company size category",
                        "enum": [
                            "any",
                            "PME",
                            "ETI",
                            "GE"
                        ],
                        "type": "string",
                        "description": "INSEE size class filter. PME = small & medium, ETI = mid-market, GE = large enterprise.",
                        "default": "any"
                    },
                    "includeInactive": {
                        "title": "Include ceased companies",
                        "type": "boolean",
                        "description": "By default only active companies are returned. Enable to also include ceased (cessée) entities.",
                        "default": false
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Hard cap on records (1–10000). The source API returns at most 10,000 per query — narrow with filters for larger sectors.",
                        "default": 100
                    },
                    "proxyConfiguration": {
                        "title": "Proxy",
                        "type": "object",
                        "description": "Leave OFF (default). The official open-data API accepts direct connections but rejects the shared datacenter proxy pool (HTTP 503) — only enable a proxy if you have a specific reason.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
