# France Societe.com Company Scraper (`regdata/societe-com-scraper`) Actor

Scrape French company data from Societe.com - the full director and officer mandate history with date ranges (current and former), plus SIREN/SIRET, legal form, NAF code, registered address and status. The deepest free French officer record, with no API. No proxy required.

- **URL**: https://apify.com/regdata/societe-com-scraper.md
- **Developed by:** [getregdata](https://apify.com/regdata) (community)
- **Categories:** Lead generation, Automation, Agents
- **Features:** Limited permissions
- **Stats:** 28 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 company records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## France Company Scraper - Societe.com | Donnees d'entreprises francaises

Extract French company data from **Societe.com** - directors, financials, subsidiaries, and corporate network for any French company - as structured JSON, in bulk. Societe.com aggregates official **INSEE, INPI, and BODACC** data into France's most comprehensive free company platform, and there is no public API for it.

**No login, no API key, nothing to configure** - a company name, SIREN, or director name in, clean JSON out.

### What data do you get?

One rich record per company:

```json
{
  "companyName": "TOTALENERGIES SE",
  "siren": "542051180",
  "siret": "54205118000066",
  "legalForm": "SA a conseil d'administration",
  "nafCode": "70.10Z",
  "nafDescription": "Activites des sieges sociaux",
  "address": "2 Place Jean Millier, La Defense 6",
  "postalCode": "92400",
  "city": "Courbevoie",
  "capital": "6 596 521 497,50 EUR",
  "creationDate": "1924-03-24",
  "status": "Active",
  "employeeCount": "100 000+",
  "directors": [
    { "name": "POUYANNE Patrick", "role": "President-Directeur General", "appointmentDate": "2015-10-29" },
    { "name": "DESMAREST Thierry", "role": "Ancien President du Conseil", "appointmentDate": "2010-05-21", "endDate": "2015-12-18" }
  ],
  "sourceUrl": "https://www.societe.com/societe/totalenergies-se-542051180.html"
}
```

**The officer history is the point.** `directors` returns the full mandate timeline, not just
the current board - 75 records for Danone, 68 for TotalEnergies, with `Ancien ...` roles and
date ranges back to 2003. Neither SIRENE nor `recherche-entreprises.api.gouv.fr` reconstructs
that, which is what this actor is for.

**On the financials, and on shareholders.** An earlier version of this note said `revenue`
and `netResult` were unreliable, on the evidence of a check that returned `revenue: "0"` for
Danone and TotalEnergies. That was re-investigated on 2026-08-28 and the note was wrong on
both counts:

- `netResult` really was broken - it was empty on *every* record, because Societe.com labels
  the row "Resultats net" and the extractor looked for the singular. Fixed; it now returns
  the figure, sign included.
- `revenue` was reading the newest column of the financial table, and Societe.com renders a
  year whose accounts are **not yet filed** as a literal `0` rather than leaving it blank.
  Across 9 large companies, 6 had a zero there - Air France showed `0` for 2025 with
  17,469,000,000 sitting in 2024. Both fields now return the last year **actually filed**,
  and every figure ships with `revenueYear` / `netResultYear` so you can see which year you
  have. Air France now returns 17,469,000,000 for 2024.
- A `0` that survives is real: a pure holding company (NAF 7010Z head office) books
  dividends rather than turnover, so TotalEnergies genuinely reports no revenue while
  reporting a 13.7 bn net result. Read the two fields together.

`shareholders` has been **removed** rather than fixed. Societe.com sells the capital-structure
list as a paid report - the free fiche shows a pitch and a sample PDF, and names nobody, for
any company. The field could only ever have returned an empty array, which reads as "this
company has no shareholders" instead of "this source does not publish them".

`subsidiaries` and `brands` remain best-effort and are often empty.

| Field | Description |
|-------|-------------|
| `companyName` | Official name (denomination sociale) |
| `siren` / `siret` | 9-digit SIREN and 14-digit SIRET (siege social) |
| `legalForm` | SARL, SAS, SA, SCI, EURL, etc. |
| `nafCode` / `nafDescription` | NAF/APE activity code and description |
| `address` / `postalCode` / `city` | Registered address (siege social) |
| `capital` / `creationDate` / `status` | Share capital, creation date, and status (Active, En liquidation, Radiee, ...) |
| `employeeCount` | Workforce band |
| `directors` | **Full mandate history** - `name`, `role`, `appointmentDate`, `endDate`. Includes former officers (`Ancien ...`), not just the current board |
| `sourceUrl` | Societe.com company page |
| `revenue` / `netResult` | Simplified figures for the last financial year **actually filed**. A surviving `0` is the company's own answer, not a miss - see the note above |
| `revenueYear` / `netResultYear` | The financial year each figure belongs to. The two can differ; the rows are filed independently |
| `subsidiaries` / `brands` | Best-effort, often empty |

### How much does it cost?

**Pay per event** - you are not charged for Apify platform usage, only a start fee per run plus a fixed price per company record. Directors and financials are included in the record price.

| Volume | Cost |
|--------|------|
| Start cost (per run, default 2 GB memory) | $0.05 |
| Per company record | $0.005 |
| 1 company | ~$0.055 |
| ~100 records | ~$0.55 |
| ~1,000 records | ~$5.05 |

The start fee is $0.025 per GB of run memory, so it is $0.05 at the default 2 GB - put many SIRENs in one run to spread it. A SIREN the source confirms does not exist, or a company that could not be retrieved, is not charged. Prices shown are for the Apify Free plan; on paid plans the record price is $0.004 (Starter) and $0.003 (Scale and above), and the start fee $0.02 / $0.015 per GB. No subscription, no minimum. Turning off `includeFinancials` and `includeDirectors` makes a run faster, not cheaper.

### Is it legal, and where does the data come from?

Data comes from [Societe.com](https://www.societe.com/), which aggregates official public sources: **INSEE** (company registry), **INPI** (trademarks/IP), and **BODACC** (legal announcements). The data is publicly accessible; director names are public information filed with the French registries (RCS). You are responsible for your own GDPR / French data-protection compliance when processing it.

### How do I use it?

Click **Try it** and paste this input:

```json
{ "searchQuery": "Total Energies", "maxResults": 10 }
```

For an **exact** company, use the SIREN (`{ "sirenNumbers": ["542051180"] }`) - name search returns partial matches, so a SIREN avoids namesakes. Search by director (`{ "managerName": "Dupont Jean" }`), or do a fast identity-only lookup by turning off financials/directors.

### Input options

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `searchQuery` | string | No | - | Company name (partial match) |
| `sirenNumbers` | string\[] | No | - | 9-digit SIREN numbers for exact lookup |
| `managerName` | string | No | - | Search by director/manager name |
| `includeFinancials` | boolean | No | `true` | Include revenue / net result when available |
| `includeDirectors` | boolean | No | `true` | Include the board (names, roles, dates) |
| `maxResults` | integer | No | `50` | Max search results to process |
| `maxConcurrency` | integer | No | `5` | Companies scraped in parallel (1-5) |

At least one of `searchQuery`, `sirenNumbers`, or `managerName` must be provided.

### What you can do with it

- **B2B prospecting** - build lead lists by industry (NAF), size, or region, enriched with director names.
- **Due diligence** - verify identity, legal status, financial health, and management before a deal.
- **Competitive & M\&A research** - monitor competitor financials, director changes, and subsidiary networks.
- **KYC / KYB** - verify a French company's registration and active status.

### Run it from code

```bash
## cURL - start a run and get the dataset back
curl -X POST "https://api.apify.com/v2/acts/regdata~societe-com-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "sirenNumbers": ["542051180"] }'
```

```javascript
// Node.js - apify-client
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('regdata/societe-com-scraper').call({ sirenNumbers: ['542051180'] });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

```python
## Python - apify-client
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("regdata/societe-com-scraper").call(run_input={"sirenNumbers": ["542051180"]})
items = client.dataset(run["defaultDatasetId"]).list_items().items
```

### Integrations

Runs anywhere Apify does: call it from the **REST API**, **schedule** recurring enrichment, pipe results into **n8n / Make / Zapier**, or use it from any **MCP client** (Claude, Cursor) via [mcp.apify.com](https://mcp.apify.com).

### FAQ

**Is it legal?** Societe.com aggregates public INSEE/INPI/BODACC data; director names are public RCS filings. The data is publicly accessible; you remain responsible for GDPR / French data-protection compliance.

**Do I need an account, API key, or proxy?** No - none of them. Just an Apify account.

**A name search returned a small namesake company instead of the big one - why?** Name search returns Societe.com's own result order, which can rank a small namesake above a large group. Use the **SIREN** (`sirenNumbers`) for an exact, unambiguous lookup.

**How deep are the financials?** Simplified figures - revenue and net result for the last financial year Societe.com shows as filed, each with the year it belongs to. Not full multi-year balance sheets, and no shareholder list (Societe.com sells that separately and does not publish it on the free page).

**What export formats are supported?** JSON, CSV, Excel, or XML, or read live via the API.

### Limitations

- Name search returns partial matches in Societe.com's own order; use `sirenNumbers` for an exact company.
- Only simplified financials (revenue, net result, plus the year each belongs to) are extracted, and only when published - not full balance sheets.
- Shareholder lists are not available: Societe.com sells them as a paid report and names no shareholder on the free fiche.
- Data freshness depends on when INSEE/INPI/BODACC publish updates; some fields can lag.
- The board list includes current and former mandates; a person with several roles appears once per role.

### Related actors

Part of a suite of official government registry actors - **no public API to build or maintain**, pay per result, nothing to configure.

| Country | Actors |
|---|---|
| Poland | [BDO](https://apify.com/regdata/bdo-waste-registry-scraper) · [CRBR](https://apify.com/regdata/crbr-beneficial-owners-scraper) · [KRS (financials)](https://apify.com/regdata/poland-krs-financial-scraper) · [EKW](https://apify.com/regdata/ekw-ksiegi-wieczyste-scraper) · [KNF](https://apify.com/regdata/knf-registry-scraper) · [KRS (board)](https://apify.com/regdata/krs-fullnames-scraper) · [KRZ](https://apify.com/regdata/krz-debtor-scraper) · [MSiG](https://apify.com/regdata/msig-scraper) · [KYB check](https://apify.com/regdata/poland-kyb-check) · [PEP (Sejm)](https://apify.com/regdata/poland-parliamentary-pep-scraper) · [REGON (sites)](https://apify.com/regdata/polish-premises-prospector) · [REGON](https://apify.com/regdata/polish-regon-scraper) · [UOKiK](https://apify.com/regdata/uokik-clauses-scraper) |
| Germany | [Insolvenzbekanntmachungen](https://apify.com/regdata/germany-insolvency-scraper) · [Handelsregister](https://apify.com/regdata/germany-handelsregister-scraper) |
| Spain | [BORME](https://apify.com/regdata/borme-corporate-acts-scraper) · [Registro Mercantil](https://apify.com/regdata/spain-company-directory-scraper) · [Registro Público Concursal](https://apify.com/regdata/spain-concursal-scraper) |
| Italy | [INI-PEC](https://apify.com/regdata/italy-pec-lookup) · [Registro Imprese](https://apify.com/regdata/italy-registro-imprese-scraper) |
| Austria | [Ediktsdatei](https://apify.com/regdata/austria-ediktsdatei-scraper) · [WKO](https://apify.com/regdata/wko-business-directory-scraper) |
| France | **Societe.com (this actor)** |
| Belgium | [KBO / BCE](https://apify.com/regdata/belgium-kbo-company-scraper) |
| Czechia | [ISIR](https://apify.com/regdata/czech-isir-insolvency-scraper) |
| Slovakia | [RPVS](https://apify.com/regdata/slovakia-rpvs-ubo-scraper) |
| Cyprus | [DRCOR](https://apify.com/regdata/cyprus-drcor-company-scraper) |
| Ireland | [CRO](https://apify.com/regdata/ireland-cro-company-scraper) |
| Portugal | [Publicações MJ](https://apify.com/regdata/portugal-corporate-acts-scraper) |
| Nigeria | [CAC](https://apify.com/regdata/nigeria-cac-company-scraper) |
| Colombia | [RUES](https://apify.com/regdata/colombia-rues-company-scraper) |
| USA | [California SoS](https://apify.com/regdata/california-sos-business-scraper) · [California UCC](https://apify.com/regdata/california-ucc-lien-scraper) |
| UAE | [ADGM](https://apify.com/regdata/uae-adgm-public-register-scraper) |
| Global | [Adverse media](https://apify.com/regdata/adverse-media-screener) |

**Common combinations:** company register -> [UBO](https://apify.com/regdata/crbr-beneficial-owners-scraper) -> [insolvency/debtors](https://apify.com/regdata/krz-debtor-scraper) -> [adverse media](https://apify.com/regdata/adverse-media-screener) is the standard KYB/onboarding chain.

For Poland that whole chain is one call: [Poland KYB Risk Check](https://apify.com/regdata/poland-kyb-check) takes a NIP or KRS and returns identity, beneficial owners and insolvency - screened against the company **and every beneficial owner** - as a single verdict. The component registry lookups it runs bill as usual, plus a small orchestration fee.

> Full suite: [apify.com/regdata](https://apify.com/regdata) · Callable from any MCP client via [mcp.apify.com](https://mcp.apify.com)

### Informations en francais

#### Qu'est-ce que cet acteur ?

Cet acteur extrait les donnees d'entreprises francaises depuis **Societe.com** - le plus grand site gratuit de donnees d'entreprises en France, qui regroupe les informations de l'INSEE, de l'INPI et du BODACC. Aucune API publique n'existe. Vous obtenez des donnees structurees : fiche d'identite, dirigeants, bilans simplifies et filiales. (La liste des actionnaires n'est pas incluse : Societe.com la vend comme rapport payant et ne la publie pas sur la fiche gratuite.) Sans cle, sans configuration.

#### Pour qui ?

Pour les **equipes commerciales B2B** (listes de prospects enrichies avec dirigeants et donnees financieres), les **cabinets de due diligence**, les **analystes M\&A** cartographiant filiales et mandats, et les **equipes compliance** (KYC/KYB sur des entites francaises). Pour une entreprise precise, utilisez le SIREN. Sans abonnement - vous payez a l'utilisation.

***

### Donnees d'entreprises francaises - Societe.com

Extraction automatisee des donnees d'entreprises francaises depuis Societe.com. Dirigeants, bilans simplifies, filiales et reseau d'entreprises. Donnees issues de l'INSEE, INPI et BODACC. Aucune API publique. Ideal pour la verification d'entreprises (KYC/KYB), l'analyse concurrentielle et le due diligence en France.

# Actor input Schema

## `searchQuery` (type: `string`):

Search by company name (partial match). Example: 'Total Energies', 'Carrefour', 'BNP Paribas'

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

List of 9-digit SIREN numbers to look up directly. Each SIREN resolves to an exact-match company record.

## `managerName` (type: `string`):

Search by manager or director name. Example: 'Dupont Jean', 'Martin Pierre'. Returns companies where this person holds a role.

## `includeFinancials` (type: `boolean`):

Include simplified financial figures (revenue, net result) when Societe.com exposes them on the company page.

## `includeDirectors` (type: `boolean`):

Include the company's board - director names, roles, and appointment dates.

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

Maximum number of company records to return from a name/manager search. Default: 50.

## `maxConcurrency` (type: `integer`):

How many companies to scrape in parallel (1-5). Higher finishes faster. Default: 5.

## Actor input object example

```json
{
  "sirenNumbers": [
    "542051180"
  ],
  "includeFinancials": true,
  "includeDirectors": true,
  "maxResults": 1,
  "maxConcurrency": 5
}
```

# Actor output Schema

## `companyData` (type: `string`):

Company identity, directors, financial data, and corporate network from Societe.com.

# 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 = {
    "sirenNumbers": [
        "542051180"
    ],
    "maxResults": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("regdata/societe-com-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 = {
    "sirenNumbers": ["542051180"],
    "maxResults": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("regdata/societe-com-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "sirenNumbers": [
    "542051180"
  ],
  "maxResults": 1
}' |
apify call regdata/societe-com-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,regdata/societe-com-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/RC1detzKmlsRwfx2X/builds/I025VxLNmbilIZfJs/openapi.json
