# Infogreffe Bilans Scraper: 3-Year Financial Statements FR (`dltik/infogreffe-bilans-fr-scraper`) Actor

Scrape 3 years of bilans (CA, resultat net, effectifs, total bilan) for French companies via INPI RNE. Dirigeants, capital, NAF, siege, immatriculation. Premium B2B for M\&A due diligence, credit scoring, salary benchmarks. $15/1K bilans.

- **URL**: https://apify.com/dltik/infogreffe-bilans-fr-scraper.md
- **Developed by:** [Walid](https://apify.com/dltik) (community)
- **Categories:** Business, Lead generation, Other
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.00005 / actor start

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

## Infogreffe Bilans Scraper — 3-Year Financial Statements for FR Companies (INPI RNE)

⭐ **Bookmark this actor → [apify.com/dltik/infogreffe-bilans-fr-scraper](https://apify.com/dltik/infogreffe-bilans-fr-scraper)** — Apify ranks by bookmarks, so it directly drives the visibility of this scraper. **One click. No signup beyond your existing Apify account.**

> Scrape **3 years of bilans (chiffre d'affaires, résultat net, effectifs, total bilan) for any French company** from the **official INPI RNE** (Registre National des Entreprises). Same source as Infogreffe / Pappers PRO / Diane — but at **$15 per 1K bilans instead of $50K/year subscriptions**. Built for M&A due-diligence, credit scoring, salary benchmarking, and B2B intel.

### ✨ What makes this scraper different

| Feature | This scraper | Other Infogreffe scrapers on Apify |
|---|:---:|:---:|
| **3 years of bilans** (CA, résultat net, effectifs, total bilan) | ✅ | ❌ only registry metadata |
| Direct **INPI RNE source** (post-Loi PACTE 2022 official) | ✅ | ❌ legacy Infogreffe scrape |
| Structured `bilans[]` array with normalized numbers | ✅ | ❌ |
| `confidentialite` flag detection (Loi Macron opt-out) | ✅ | ❌ |
| `dirigeants` with DOB + nationality + role | ✅ | partial |
| Headline `ca_dernier_exercice` / `resultat_net_dernier_exercice` | ✅ | ❌ |
| URL to INPI + annuaire-entreprises | ✅ | ❌ |
| Free auth (no $50/mo Pappers PRO key, no Infogreffe contract) | ✅ | varies |
| Price per record | **$0.015** | $0.005 (no bilans) |

### What can this Infogreffe bilans scraper do?

- 🇫🇷 **26M French companies** lookup-able by SIREN (any active or ceased entity registered at the RNE)
- 💰 **3 years of bilans** (extendable to 5) — CA, résultat net, effectifs, total bilan, type de bilan, durée d'exercice
- 🏛️ **Direct INPI RNE source** — the official open registry that replaced Infogreffe / RCS as the legal source of truth in 2023 (Loi PACTE)
- 👥 **Dirigeants** — gérant, président, DG, conseil d'administration, with nom complet, date de naissance, nationalité, rôle
- 🏢 **Full identity** — dénomination, forme juridique, capital social, code NAF, siège (adresse + CP + commune), date d'immatriculation, état administratif
- 🔒 **Confidentialité opt-out detection** — flags the ~15% of small companies that legally hid their CA (Loi Macron)
- 🚀 **HTTP-only**, no headless browser, no anti-bot — runs in under 3s per company

### What data can you extract per company?

| Field | Description |
|-------|-------------|
| `siren` | 9-digit national ID |
| `denomination` | Legal company name |
| `forme_juridique` | SARL, SAS, SA, SCI, EURL, SASU... |
| `capital_social` | Share capital in euros |
| `date_immatriculation` | RCS registration date (YYYY-MM-DD) |
| `code_naf` | NAF / APE code (e.g. `62.01Z` for software) |
| `siege_adresse` | Headquarters street address |
| `siege_code_postal` | Postal code |
| `siege_commune` | City |
| `siege_pays` | Country |
| `etat_administratif` | `A` (active) / `C` (ceased) |
| `dirigeants` | Array of `{role, nom, prenoms, nom_complet, date_naissance, nationalite, raison_sociale, siren}` |
| `bilans` | Array of yearly bilans (most recent first) with `{date_cloture, duree_exercice_mois, ca, resultat_net, total_bilan, effectifs, type_bilan, confidentialite}` |
| `ca_dernier_exercice` | Latest revenue (€) — headline number |
| `resultat_net_dernier_exercice` | Latest net income (€) |
| `effectifs_dernier_exercice` | Latest headcount |
| `total_bilan_dernier_exercice` | Latest total assets (€) |
| `date_dernier_bilan` | Most recent close date |
| `url_inpi` | Direct INPI company page |
| `url_annuaire_entreprises` | Direct annuaire-entreprises.data.gouv.fr page |
| `scraped_at` | ISO UTC timestamp |

### How to scrape French company bilans in 5 steps

1. **[Create a free Apify account](https://apify.com/sign-up)** — no credit card required
2. **Create a free INPI account** at [data.inpi.fr/login](https://data.inpi.fr/login) (Loi PACTE 2022 mandate — RNE data is free to all)
3. **Open [Infogreffe Bilans Scraper](https://apify.com/dltik/infogreffe-bilans-fr-scraper)** on Apify Store
4. **Paste your INPI email + password** in the input fields (stored encrypted as Apify secrets) and provide a `sirens` list (e.g. `["552120222","775670417"]`)
5. **Click Start** — clean JSON in seconds with 3 years of bilans, exportable to CSV/JSON/Excel from the dataset UI

### How much does it cost to scrape Infogreffe bilans?

**PAY_PER_EVENT — $0.015 per bilan record** ($15 per 1,000 companies). Failed lookups & runs without credentials are not charged. Compare: Diane / Astree / Pappers PRO charge $50–$200 per bilan via legacy enterprise contracts.

| Run size | Companies | Apify cost | Time |
|----------|-----------|------------|------|
| Quick test | 5 | $0.08 | ~15s |
| Standard | 100 | $1.50 | ~3min |
| Deep | 1,000 | $15 | ~30min |
| Massive | 5,000 | $75 | ~2.5h |

Set `yearsHistory=5` (default 3) for deeper history at the same price per company. Set `includeRawBilans=true` to also export every accounting line item (200+ fields per year).

### Input parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `mode` | enum | `siren` | `siren` = bulk SIREN lookup, `search` = free-text by denomination |
| `sirens` | array | `[]` | List of 9-digit SIREN (SIRET auto-trimmed) |
| `query` | string | — | Free-text company name (mode=search) |
| `yearsHistory` | int | `3` | 1–5 years of bilans per company |
| `includeDirigeants` | bool | `true` | Include legal representatives |
| `includeRawBilans` | bool | `false` | Include full INPI accounting payload per year |
| `maxResults` | int | `100` | Hard cap on returned companies (1–2000) |
| `inpiUsername` | string (secret) | env `INPI_USERNAME` | Your INPI email |
| `inpiPassword` | string (secret) | env `INPI_PASSWORD` | Your INPI password |
| `proxyConfig` | object | datacenter off | Optional Apify proxy (rarely needed) |

### Output example

```json
{
  "siren": "552120222",
  "denomination": "L'OREAL",
  "forme_juridique": "SA à conseil d'administration",
  "capital_social": 107132075.4,
  "date_immatriculation": "1957-01-01",
  "code_naf": "70.10Z",
  "siege_adresse": "14 RUE ROYALE",
  "siege_code_postal": "75008",
  "siege_commune": "PARIS",
  "siege_pays": "FRANCE",
  "etat_administratif": "A",
  "dirigeants": [
    {
      "role": "PRESIDENT DU CONSEIL D'ADMINISTRATION",
      "type": "personne_physique",
      "nom_complet": "Jean-Paul AGON",
      "nom": "AGON",
      "prenoms": "Jean-Paul",
      "date_naissance": "1956-07-06",
      "nationalite": "FRANCAISE"
    }
  ],
  "bilans": [
    {
      "date_cloture": "2024-12-31",
      "duree_exercice_mois": 12,
      "ca": 43480000000,
      "resultat_net": 6403000000,
      "total_bilan": 53000000000,
      "effectifs": 90000,
      "type_bilan": "CONSOLIDE",
      "confidentialite": false
    },
    { "date_cloture": "2023-12-31", "ca": 41183000000, "resultat_net": 6184000000 },
    { "date_cloture": "2022-12-31", "ca": 38260000000, "resultat_net": 5706000000 }
  ],
  "ca_dernier_exercice": 43480000000,
  "resultat_net_dernier_exercice": 6403000000,
  "effectifs_dernier_exercice": 90000,
  "total_bilan_dernier_exercice": 53000000000,
  "date_dernier_bilan": "2024-12-31",
  "url_inpi": "https://data.inpi.fr/entreprises/552120222",
  "url_annuaire_entreprises": "https://annuaire-entreprises.data.gouv.fr/entreprise/552120222",
  "scraped_at": "2026-06-20T14:32:01Z"
}
````

### Use cases

- 🤝 **M\&A due diligence** — pull 3 years of bilans for a target + 5 comparables in 30 seconds; feed the numbers into a DCF model
- 💳 **Credit scoring & risk** — auto-enrich a CRM with CA / résultat net / effectifs to score B2B prospects before extending payment terms
- 💼 **Salary benchmarking** — aggregate `effectifs × résultat_net` across a NAF code to size compensation envelopes per industry
- 🎯 **Sales prospecting** — qualify B2B leads by CA bracket and growth trajectory (compare year N vs N-1 from `bilans[]`)
- 📊 **Industry research** — pull the entire `74.90B` (consulting) NAF or a department's 100 largest companies for sector analysis
- 🏦 **Banking onboarding & KYC** — fetch dirigeants + capital + dénomination + bilans in one call (vs 5 different sources)
- 🤖 **Finance AI agents** — feed Claude / GPT a clean structured `bilans[]` instead of scraping PDFs

### Use the actor via API

**Python:**

```python
import requests

run = requests.post(
    "https://api.apify.com/v2/acts/dltik~infogreffe-bilans-fr-scraper/run-sync-get-dataset-items",
    headers={"Authorization": "Bearer YOUR_APIFY_TOKEN", "Content-Type": "application/json"},
    json={
        "mode": "siren",
        "sirens": ["552120222", "775670417", "542065479"],
        "yearsHistory": 3,
        "includeDirigeants": True,
        "inpiUsername": "you@example.com",
        "inpiPassword": "your_inpi_password"
    }
).json()
for r in run:
    if r.get("siren"):
        print(f"{r['denomination']:30} CA={r.get('ca_dernier_exercice')} RN={r.get('resultat_net_dernier_exercice')}")
```

**curl:**

```bash
curl -X POST "https://api.apify.com/v2/acts/dltik~infogreffe-bilans-fr-scraper/run-sync-get-dataset-items" \
  -H "Authorization: Bearer YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode":"siren","sirens":["552120222"],"yearsHistory":5,"inpiUsername":"you@example.com","inpiPassword":"xxxx"}'
```

### FAQ

**Why do I need an INPI account?**
Since the Loi PACTE 2022, the RNE (Registre National des Entreprises) replaced Infogreffe / RCS as the single legal source of truth for French company data. INPI hosts it and requires a free account for API access — a pure formality, no payment, no quota. Register at [data.inpi.fr/login](https://data.inpi.fr/login).

**Why $15 per 1K instead of $5?**
Bilans are premium B2B data — legacy providers (Diane, Astree, Pappers PRO) charge $50–$200 per bilan via enterprise contracts. We sit at $0.015 — same league as Apify peers like the [Poland KRS Financial Statements Scraper](https://apify.com/regdata/poland-krs) ($0.15 per large statement, 10× our price). Other Infogreffe scrapers on Apify return only registry metadata (no CA / résultat) and price at $0.005.

**Why is `ca_dernier_exercice` sometimes null?**
\~15% of small companies legally opt out of publishing their CA under the Loi Macron — `confidentialite: true` flags them. Also, INPI receives bilans 2–7 months post-clôture, so very recent FY may not be available yet; the actor surfaces the latest year on file.

**How fresh is the data?**
Pulled live at run time from the INPI RNE database. New filings show up within days of deposit at the greffe.

**Does it cover associations and micro-entrepreneurs?**
Yes — RNE covers all forms (SA, SAS, SARL, SCI, EURL, SASU, associations loi 1901 if they file at the RNE, auto-entrepreneurs). Bilans are only filed by commercial entities subject to publication obligations (typically not micro-entrepreneurs).

***

⭐ **Found this Infogreffe Bilans Scraper useful? [Bookmark it](https://apify.com/dltik/infogreffe-bilans-fr-scraper)** — Apify ranks actors by bookmarks, so it's the strongest single signal for Store visibility. One click.

### Other scrapers by dltik

| Actor | What it does | Price |
|-------|-------------|-------|
| [Pappers Sirene Scraper](https://apify.com/dltik/pappers-sirene-scraper) | 26M French companies (SIREN, SIRET, dirigeants, capital) | $0.001/result |
| [Pappers Enrichment Bundle](https://apify.com/dltik/pappers-enrichment-bundle) | Bulk enrichment of SIREN lists with full company data | $0.005/result |
| [Pappers MCP Server](https://apify.com/dltik/mcp-server-pappers) | French company data for AI agents (Claude / GPT) | $0.01/tool-call |
| [BODACC Scraper](https://apify.com/dltik/bodacc-fr-scraper) | French commercial court announcements (creations, faillites, M\&A) | $0.003/record |
| [BODACC MCP Server](https://apify.com/dltik/mcp-server-bodacc) | BODACC announcements for AI agents | $0.01/tool-call |
| [France Travail Scraper](https://apify.com/dltik/francetravail-scraper) | 700K+ FR jobs with structured salary + skills | $0.0015/job |
| [HATVP Scraper](https://apify.com/dltik/hatvp-fr-scraper) | French elected officials' financial declarations | varies |
| [Annuaire Administration FR](https://apify.com/dltik/annuaire-administration-fr-scraper) | French gov agencies & contacts | $0.003/org |

License: MIT · Author: [dltik](https://apify.com/dltik)

# Actor input Schema

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

siren = lookup one or more companies by SIREN (most accurate). search = free-text search by denomination then resolve top match.

## `sirens` (type: `array`):

List of 9-digit SIREN numbers to lookup (e.g. \['552120222', '552032534']). Use with mode=siren. Trailing SIRET digits are auto-trimmed to SIREN.

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

Free-text company name (denomination). Used with mode=search. Example: 'LVMH', 'Carrefour', 'Renault'. Returns top matches (up to maxResults).

## `yearsHistory` (type: `integer`):

How many years of bilans to include in the output (1-5). Default 3 covers most M\&A / credit use cases. INPI typically holds 3-5 years of filed accounts.

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

Include the list of legal representatives (gerant, president, directeur general, conseil d'administration) with names + DOBs from RNE.

## `includeRawBilans` (type: `boolean`):

Include the full raw INPI bilan JSON payload per year alongside the normalized flat fields. Useful for advanced finance pipelines that need all 200+ accounting line items.

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

Maximum number of companies to return (used in search mode and as a hard cap in siren mode). 1-2000.

## `inpiUsername` (type: `string`):

Your INPI / data.inpi.fr account email. Create a free account at https://data.inpi.fr/login (Loi PACTE 2022 — all RNE data is free to access with a registered account). If empty, the actor falls back to the INPI\_USERNAME environment variable.

## `inpiPassword` (type: `string`):

Your INPI account password (matches the username). If empty, the actor falls back to the INPI\_PASSWORD environment variable. Stored as a secret, never logged.

## `proxyConfig` (type: `object`):

Optional Apify proxy. INPI RNE has no anti-bot once authenticated — proxy is rarely needed unless you batch-scrape >1K SIREN at once and hit a soft per-IP throttle.

## Actor input object example

```json
{
  "mode": "siren",
  "sirens": [],
  "yearsHistory": 3,
  "includeDirigeants": true,
  "includeRawBilans": false,
  "maxResults": 100,
  "proxyConfig": {
    "useApifyProxy": false
  }
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("dltik/infogreffe-bilans-fr-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("dltik/infogreffe-bilans-fr-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 '{}' |
apify call dltik/infogreffe-bilans-fr-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Infogreffe Bilans Scraper: 3-Year Financial Statements FR",
        "description": "Scrape 3 years of bilans (CA, resultat net, effectifs, total bilan) for French companies via INPI RNE. Dirigeants, capital, NAF, siege, immatriculation. Premium B2B for M&A due diligence, credit scoring, salary benchmarks. $15/1K bilans.",
        "version": "0.0",
        "x-build-id": "oN47WrbxIG5bvDbVq"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/dltik~infogreffe-bilans-fr-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-dltik-infogreffe-bilans-fr-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/dltik~infogreffe-bilans-fr-scraper/runs": {
            "post": {
                "operationId": "runs-sync-dltik-infogreffe-bilans-fr-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/dltik~infogreffe-bilans-fr-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-dltik-infogreffe-bilans-fr-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": "Mode",
                        "enum": [
                            "siren",
                            "search"
                        ],
                        "type": "string",
                        "description": "siren = lookup one or more companies by SIREN (most accurate). search = free-text search by denomination then resolve top match.",
                        "default": "siren"
                    },
                    "sirens": {
                        "title": "SIREN list",
                        "type": "array",
                        "description": "List of 9-digit SIREN numbers to lookup (e.g. ['552120222', '552032534']). Use with mode=siren. Trailing SIRET digits are auto-trimmed to SIREN.",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "query": {
                        "title": "Company name search",
                        "type": "string",
                        "description": "Free-text company name (denomination). Used with mode=search. Example: 'LVMH', 'Carrefour', 'Renault'. Returns top matches (up to maxResults)."
                    },
                    "yearsHistory": {
                        "title": "Years of bilan history",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "How many years of bilans to include in the output (1-5). Default 3 covers most M&A / credit use cases. INPI typically holds 3-5 years of filed accounts.",
                        "default": 3
                    },
                    "includeDirigeants": {
                        "title": "Include dirigeants",
                        "type": "boolean",
                        "description": "Include the list of legal representatives (gerant, president, directeur general, conseil d'administration) with names + DOBs from RNE.",
                        "default": true
                    },
                    "includeRawBilans": {
                        "title": "Include raw bilan payloads",
                        "type": "boolean",
                        "description": "Include the full raw INPI bilan JSON payload per year alongside the normalized flat fields. Useful for advanced finance pipelines that need all 200+ accounting line items.",
                        "default": false
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 2000,
                        "type": "integer",
                        "description": "Maximum number of companies to return (used in search mode and as a hard cap in siren mode). 1-2000.",
                        "default": 100
                    },
                    "inpiUsername": {
                        "title": "INPI account username (email)",
                        "type": "string",
                        "description": "Your INPI / data.inpi.fr account email. Create a free account at https://data.inpi.fr/login (Loi PACTE 2022 — all RNE data is free to access with a registered account). If empty, the actor falls back to the INPI_USERNAME environment variable."
                    },
                    "inpiPassword": {
                        "title": "INPI account password",
                        "type": "string",
                        "description": "Your INPI account password (matches the username). If empty, the actor falls back to the INPI_PASSWORD environment variable. Stored as a secret, never logged."
                    },
                    "proxyConfig": {
                        "title": "Proxy (rarely needed)",
                        "type": "object",
                        "description": "Optional Apify proxy. INPI RNE has no anti-bot once authenticated — proxy is rarely needed unless you batch-scrape >1K SIREN at once and hit a soft per-IP throttle.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
