# Pappers Sirene Scraper (`maximedupre/pappers-sirene-scraper`) Actor

Search French companies by text, filters, coordinates, or SIREN/SIRET. Export official company data with addresses, NAF codes, dirigeants, financials, establishments, Pappers links, and registry flags.

- **URL**: https://apify.com/maximedupre/pappers-sirene-scraper.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

$4.50 / 1,000 companies

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

### 🔎 Pappers Sirene scraper for French company data

Pappers Sirene Scraper searches French companies from the official [recherche-entreprises.api.gouv.fr](https://recherche-entreprises.api.gouv.fr/) data surface and returns clean rows you can export from Apify. Use it to search by company name, business type, location, NAF code, coordinates, or known SIREN/SIRET identifiers.

Each saved row is one French company with official identity data, head office address, activity codes, company status, dirigeants when available, financial fields when available, establishments when the source returns them, Pappers and Annuaire Entreprises links, and registry flags such as RGE, Qualiopi, bio, ESS, association, training organization, and mission company.

For a small first run, keep the prefilled search for `boulangerie` in Paris and `Maximum companies` set to `10`. Once the output shape fits your workflow, raise the limit, add filters, switch to coordinate search, or paste SIREN/SIRET values for enrichment.

### ✅ What this Actor does

- Searches the French company registry by text and filters.
- Enriches known SIREN and SIRET identifiers.
- Searches around latitude and longitude coordinates with a radius up to 50 km.
- Saves one dataset row per accepted company.
- Adds official source links for Pappers and Annuaire Entreprises.
- Includes NAF/APE activity data, legal status, head office address, GPS fields, company size fields, establishment counts, and employee bracket fields when available.
- Includes dirigeants, financial history, and nested establishments by default when the source provides them.
- Emits useful registry and compliance flags without asking you to turn on a separate paid option.
- Works with Apify exports, API access, schedules, webhooks, and integrations.
- Charges only for saved company rows.

This Actor focuses on public French company registry data. It does not use paid Pappers API keys, Societe.com credentials, cookies, private accounts, lead email enrichment, or an MCP tool-call interface.

### 📦 What data you get

Each dataset item represents one company. Fields can be `null` or empty when the public source does not expose that data for a specific company.

- `siren`, `siretSiege`, `nomComplet`, `nomRaisonSociale`, `sigle`, and commercial names
- `etatAdministratif`, creation/update/closure dates, legal form, employer flag, and company category
- `activitePrincipale`, `activitePrincipaleNaf25`, `sectionActivitePrincipale`, and employee bracket fields
- Head office address, postal code, commune, department, region, latitude, and longitude
- `nombreEtablissements` and `nombreEtablissementsOuverts`
- Latest revenue, latest net result, finance year, and optional `financesHistory`
- Optional `dirigeants` array and `dirigeantsCount`
- Optional `establishments` array and `establishmentsCount`
- `complianceFlags` for source-provided certifications and registry statuses
- `urlPappers`, `urlAnnuaireEntreprises`, `sourceApiUrl`, and `scrapedAt`

The Actor keeps the output table-ready while still preserving richer nested data for finance, officers, and establishments.

### 🎯 Common use cases

- Build French B2B lead lists by activity, location, size, revenue, or certification.
- Enrich a CRM list that already contains SIREN or SIRET identifiers.
- Find local companies around a sales territory, store, office, or event.
- Check company status, legal identity, and official source links for KYC or vendor review.
- Research companies by NAF code, department, postal code, commune, or region.
- Export official French company data to CSV, Excel, JSON, a warehouse, or an API workflow.
- Schedule repeat searches to refresh prospecting or compliance datasets.

### ▶️ How to run it

1. Open the Input tab.
2. Choose a target mode: `Search companies`, `Enrich SIREN/SIRET list`, or `Search around coordinates`.
3. Add your query, identifiers, or coordinates.
4. Set `Maximum companies` to keep the run bounded.
5. Add location, activity, company, people, or certification filters if needed.
6. Keep enrichment options enabled when you want financial history, dirigeants, and establishments.
7. Start the Actor and open the dataset.

You can export results as JSON, CSV, Excel, XML, RSS, or HTML. You can also call the Actor through the Apify API, schedule it, or connect it to webhooks and integrations.

### ⚙️ Input

```json
{
	"mode": "search",
	"query": "boulangerie",
	"departement": "75",
	"etatAdministratif": "A",
	"maxResults": 10,
	"includeFinancialHistory": true,
	"includeDirigeants": true,
	"includeEstablishments": true,
	"establishmentsLimit": 5
}
````

#### 🎯 Target modes

- `search`: search companies by text and registry filters.
- `lookup`: enrich known SIREN or SIRET identifiers. Paste one identifier per line.
- `geo`: search near a latitude and longitude with `radiusKm`.

#### 🧭 Filters

Use location filters such as department, postal code, region, or commune. Use activity filters such as NAF/APE code or NAF section. Use company filters for active/ceased status, size category, employee bracket, and reported revenue. People filters can search by officer last name, first name, or person type. Certification filters include RGE, Qualiopi, bio, ESS, association, training organization, and mission company.

#### 📦 Enrichment

Financial history, dirigeants, and establishments are enabled by default. Turn them off only when you want a smaller output payload. Compliance and registry flags are always included when the source provides them because they do not change the charged unit.

### 🧾 Output example

```json
{
	"type": "company",
	"status": "ok",
	"sourceMode": "search",
	"sourceRowNumber": 1,
	"siren": "403052111",
	"siretSiege": "40305211100037",
	"nomComplet": "BOULANGERIES PAUL",
	"etatAdministratif": "A",
	"activitePrincipale": "10.71C",
	"nombreEtablissements": 20,
	"nombreEtablissementsOuverts": 12,
	"siegeAddress": "344 AVENUE DE LA MARNE",
	"siegeCommune": "MARCQ-EN-BAROEUL",
	"caLatest": 27376000000,
	"resultatNetLatest": 0,
	"financesYear": 2024,
	"dirigeantsCount": 3,
	"establishmentsCount": 5,
	"complianceFlags": {
		"est_rge": false,
		"est_qualiopi": false,
		"est_bio": false,
		"est_ess": false
	},
	"urlPappers": "https://www.pappers.fr/entreprise/403052111",
	"urlAnnuaireEntreprises": "https://annuaire-entreprises.data.gouv.fr/entreprise/403052111",
	"scrapedAt": "2026-06-11T15:00:00.000Z"
}
```

### 💳 Pricing

This Actor uses pay-per-event pricing. You are charged `$0.0045` for each saved company row.

Unresolved SIREN/SIRET identifiers, no-match searches, and empty runs do not create company rows. The run still completes with clear logs so you can adjust the input and try again.

### ⚠️ Limits and caveats

`Maximum companies` can be set up to `10,000` per run. For broad searches, split large jobs by department, region, NAF code, or other filters so each export stays focused and easier to review.

Financials, dirigeants, establishments, and certification flags depend on what the public source exposes for each company. Some companies have no published financial data. Some lookup and search shapes return only the head office plus matching establishments rather than a full establishment registry.

Geo mode searches around coordinates and activity filters. It does not combine a free-text query with the coordinate endpoint.

### ❓ FAQ

#### 🔑 Do I need a Pappers API key?

No. The Actor does not ask for a Pappers API key, cookies, Societe.com login, or private source account.

#### 🏢 Can I enrich a list of SIREN or SIRET values?

Yes. Choose `Enrich SIREN/SIRET list`, paste one identifier per line, and set the maximum number of companies to save.

#### 🏬 Does it return establishments?

Yes, when the source returns them. The Actor always includes head office fields and can include nested establishments with a per-company cap.

#### 💶 Does every company have financial data?

No. Financial fields are included when the public source provides them. Missing finance values are returned as `null` or empty arrays, not as error rows.

### 📝 Changelog

- 0.1: Initial release.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~pappers-sirene-scraper/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Other actors

- [LinkedIn Company Scraper ↗](https://apify.com/maximedupre/linkedin-company-scraper) - Export public LinkedIn company profile data for known companies.
- [LinkedIn Company People Scraper ↗](https://apify.com/maximedupre/linkedin-company-people-scraper) - Build visible employee lists from LinkedIn company People pages.
- [Business Address Scraper ↗](https://apify.com/maximedupre/business-address-scraper) - Find physical business addresses on submitted company websites.
- [Google Maps Shared List Scraper ↗](https://apify.com/maximedupre/google-maps-shared-list-scraper) - Export saved places from public Google Maps shared lists.
- [Map Your Show Exhibitor Scraper ↗](https://apify.com/maximedupre/map-your-show-exhibitor-scraper) - Turn public exhibitor directories into company lead datasets.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

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

Choose whether this run searches companies, enriches known identifiers, or searches around coordinates.

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

Maximum company rows to save across the run. Use a small value for the first run.

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

Use with Search mode. Enter a company name, business type, address term, or officer name.

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

Use with Enrich mode. Add one SIREN or SIRET per line.

## `latitude` (type: `number`):

Use with Geo mode. Enter the center point latitude.

## `longitude` (type: `number`):

Use with Geo mode. Enter the center point longitude.

## `radiusKm` (type: `number`):

Search radius around the coordinates.

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

Filter by French department code, such as `75` for Paris or `69` for Rhône.

## `codePostal` (type: `string`):

Filter by a 5-digit postal code.

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

Filter by a 2-digit French region code, such as `11` for Île-de-France.

## `codeCommune` (type: `string`):

Filter by INSEE commune code.

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

Filter by NAF/APE code, such as `62.01Z` for software or `56.10A` for restaurants.

## `sectionActivitePrincipale` (type: `string`):

Filter by one-letter NAF section, such as `J` for information and communication.

## `etatAdministratif` (type: `string`):

Choose active companies, ceased companies, or both statuses.

## `categorieEntreprise` (type: `string`):

Filter by official company size category.

## `trancheEffectifSalarie` (type: `string`):

Filter by INSEE employee bracket code, such as `21` for 50-99 employees.

## `caMin` (type: `integer`):

Filter by minimum reported revenue in euros.

## `caMax` (type: `integer`):

Filter by maximum reported revenue in euros.

## `nomPersonne` (type: `string`):

Find companies linked to an officer or elected person last name.

## `prenomsPersonne` (type: `string`):

Add a first name when you want a more precise people search.

## `typePersonne` (type: `string`):

Choose which kind of person relationship to search.

## `estRge` (type: `boolean`):

Return companies with RGE eco-construction certification.

## `estQualiopi` (type: `boolean`):

Return companies with Qualiopi training certification.

## `estBio` (type: `boolean`):

Return companies with organic or bio certification.

## `estEss` (type: `boolean`):

Return companies in the social and solidarity economy.

## `estAssociation` (type: `boolean`):

Return loi 1901 association records.

## `estOrganismeFormation` (type: `boolean`):

Return registered training organizations.

## `estSocieteMission` (type: `boolean`):

Return société à mission records.

## `includeFinancialHistory` (type: `boolean`):

Add year-by-year revenue and net result fields when the source provides them.

## `includeDirigeants` (type: `boolean`):

Add dirigeants and legal-person officers when the source provides them.

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

Add establishment rows nested under each company when the source provides them.

## `establishmentsLimit` (type: `integer`):

Maximum establishments to include under each company row.

## Actor input object example

```json
{
  "mode": "search",
  "maxResults": 10,
  "query": "boulangerie",
  "identifiers": [
    "552032534",
    "552120222"
  ],
  "latitude": 48.8566,
  "longitude": 2.3522,
  "radiusKm": 10,
  "departement": "75",
  "etatAdministratif": "A",
  "estRge": false,
  "estQualiopi": false,
  "estBio": false,
  "estEss": false,
  "estAssociation": false,
  "estOrganismeFormation": false,
  "estSocieteMission": false,
  "includeFinancialHistory": true,
  "includeDirigeants": true,
  "includeEstablishments": true,
  "establishmentsLimit": 5
}
```

# Actor output Schema

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

Open the default dataset with one row per scraped French company.

# 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 = {
    "maxResults": 10,
    "query": "boulangerie",
    "identifiers": [
        "552032534",
        "552120222"
    ],
    "latitude": 48.8566,
    "longitude": 2.3522,
    "departement": "75",
    "establishmentsLimit": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/pappers-sirene-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "maxResults": 10,
    "query": "boulangerie",
    "identifiers": [
        "552032534",
        "552120222",
    ],
    "latitude": 48.8566,
    "longitude": 2.3522,
    "departement": "75",
    "establishmentsLimit": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/pappers-sirene-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "maxResults": 10,
  "query": "boulangerie",
  "identifiers": [
    "552032534",
    "552120222"
  ],
  "latitude": 48.8566,
  "longitude": 2.3522,
  "departement": "75",
  "establishmentsLimit": 5
}' |
apify call maximedupre/pappers-sirene-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Pappers Sirene Scraper",
        "description": "Search French companies by text, filters, coordinates, or SIREN/SIRET. Export official company data with addresses, NAF codes, dirigeants, financials, establishments, Pappers links, and registry flags.",
        "version": "0.1",
        "x-build-id": "k7dfFaCwAdISct53y"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/maximedupre~pappers-sirene-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-maximedupre-pappers-sirene-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/maximedupre~pappers-sirene-scraper/runs": {
            "post": {
                "operationId": "runs-sync-maximedupre-pappers-sirene-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/maximedupre~pappers-sirene-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-maximedupre-pappers-sirene-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "mode": {
                        "title": "Target mode",
                        "enum": [
                            "search",
                            "lookup",
                            "geo"
                        ],
                        "type": "string",
                        "description": "Choose whether this run searches companies, enriches known identifiers, or searches around coordinates.",
                        "default": "search"
                    },
                    "maxResults": {
                        "title": "Maximum companies",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum company rows to save across the run. Use a small value for the first run.",
                        "default": 100
                    },
                    "query": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Use with Search mode. Enter a company name, business type, address term, or officer name."
                    },
                    "identifiers": {
                        "title": "SIREN or SIRET identifiers",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Use with Enrich mode. Add one SIREN or SIRET per line.",
                        "items": {
                            "type": "string",
                            "minLength": 1
                        }
                    },
                    "latitude": {
                        "title": "Latitude",
                        "type": "number",
                        "description": "Use with Geo mode. Enter the center point latitude."
                    },
                    "longitude": {
                        "title": "Longitude",
                        "type": "number",
                        "description": "Use with Geo mode. Enter the center point longitude."
                    },
                    "radiusKm": {
                        "title": "Radius in kilometers",
                        "minimum": 0.1,
                        "maximum": 50,
                        "type": "number",
                        "description": "Search radius around the coordinates.",
                        "default": 10
                    },
                    "departement": {
                        "title": "Department code",
                        "type": "string",
                        "description": "Filter by French department code, such as `75` for Paris or `69` for Rhône."
                    },
                    "codePostal": {
                        "title": "Postal code",
                        "type": "string",
                        "description": "Filter by a 5-digit postal code."
                    },
                    "region": {
                        "title": "Region code",
                        "type": "string",
                        "description": "Filter by a 2-digit French region code, such as `11` for Île-de-France."
                    },
                    "codeCommune": {
                        "title": "Commune code",
                        "type": "string",
                        "description": "Filter by INSEE commune code."
                    },
                    "activitePrincipale": {
                        "title": "NAF activity code",
                        "type": "string",
                        "description": "Filter by NAF/APE code, such as `62.01Z` for software or `56.10A` for restaurants."
                    },
                    "sectionActivitePrincipale": {
                        "title": "NAF section",
                        "type": "string",
                        "description": "Filter by one-letter NAF section, such as `J` for information and communication."
                    },
                    "etatAdministratif": {
                        "title": "Administrative status",
                        "enum": [
                            "A",
                            "C",
                            "all"
                        ],
                        "type": "string",
                        "description": "Choose active companies, ceased companies, or both statuses.",
                        "default": "A"
                    },
                    "categorieEntreprise": {
                        "title": "Company size category",
                        "enum": [
                            "PME",
                            "ETI",
                            "GE"
                        ],
                        "type": "string",
                        "description": "Filter by official company size category."
                    },
                    "trancheEffectifSalarie": {
                        "title": "Employee bracket code",
                        "type": "string",
                        "description": "Filter by INSEE employee bracket code, such as `21` for 50-99 employees."
                    },
                    "caMin": {
                        "title": "Minimum revenue",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Filter by minimum reported revenue in euros."
                    },
                    "caMax": {
                        "title": "Maximum revenue",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Filter by maximum reported revenue in euros."
                    },
                    "nomPersonne": {
                        "title": "Officer last name",
                        "type": "string",
                        "description": "Find companies linked to an officer or elected person last name."
                    },
                    "prenomsPersonne": {
                        "title": "Officer first name",
                        "type": "string",
                        "description": "Add a first name when you want a more precise people search."
                    },
                    "typePersonne": {
                        "title": "Person type",
                        "enum": [
                            "dirigeant",
                            "elu"
                        ],
                        "type": "string",
                        "description": "Choose which kind of person relationship to search."
                    },
                    "estRge": {
                        "title": "RGE certified companies",
                        "type": "boolean",
                        "description": "Return companies with RGE eco-construction certification.",
                        "default": false
                    },
                    "estQualiopi": {
                        "title": "Qualiopi certified companies",
                        "type": "boolean",
                        "description": "Return companies with Qualiopi training certification.",
                        "default": false
                    },
                    "estBio": {
                        "title": "Bio certified companies",
                        "type": "boolean",
                        "description": "Return companies with organic or bio certification.",
                        "default": false
                    },
                    "estEss": {
                        "title": "Social economy companies",
                        "type": "boolean",
                        "description": "Return companies in the social and solidarity economy.",
                        "default": false
                    },
                    "estAssociation": {
                        "title": "Associations",
                        "type": "boolean",
                        "description": "Return loi 1901 association records.",
                        "default": false
                    },
                    "estOrganismeFormation": {
                        "title": "Training organizations",
                        "type": "boolean",
                        "description": "Return registered training organizations.",
                        "default": false
                    },
                    "estSocieteMission": {
                        "title": "Mission-driven companies",
                        "type": "boolean",
                        "description": "Return société à mission records.",
                        "default": false
                    },
                    "includeFinancialHistory": {
                        "title": "Include financial history",
                        "type": "boolean",
                        "description": "Add year-by-year revenue and net result fields when the source provides them.",
                        "default": true
                    },
                    "includeDirigeants": {
                        "title": "Include officers",
                        "type": "boolean",
                        "description": "Add dirigeants and legal-person officers when the source provides them.",
                        "default": true
                    },
                    "includeEstablishments": {
                        "title": "Include establishments",
                        "type": "boolean",
                        "description": "Add establishment rows nested under each company when the source provides them.",
                        "default": true
                    },
                    "establishmentsLimit": {
                        "title": "Establishments per company",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum establishments to include under each company row.",
                        "default": 10
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
