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

\[💰 $2.50 / 1K] Extract official French company records from Societe.com by name, SIREN/SIRET, director, or URL — legal identity, capital, revenue, directors, establishments, and legal notices as clean structured data for lead generation, KYC, and due diligence.

- **URL**: https://apify.com/solidcode/societe-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Lead generation, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 1,000 results

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

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Societe.com Company Scraper

Pull official company records from Societe.com — France's open business register — complete with SIREN and SIRET numbers, NAF/APE activity codes, up to 21 years of financials, directors, establishments, and legal announcements for any registered French company. Look companies up one at a time or in bulk, by name, number, director, or URL. Built for sales and lead-generation teams, KYC and compliance analysts, and due-diligence and market-research professionals who need structured French company data without opening and copying every profile by hand.

### Why This Scraper?

- **Four ways to find a company** — search by company name, look up exact 9-digit SIREN or 14-digit SIRET numbers, search by a director's name, or paste a Societe.com company URL. A SIRET is auto-reduced to its parent SIREN, and spaces or separators are ignored.
- **Complete legal identity on every record** — SIREN, headquarters SIRET, RCS registration number, intracommunity VAT (TVA) number, legal form (forme juridique) with its numeric category code, creation date, and live activity status (en activité / radiée).
- **NAF/APE activity codes with full labels** — the official French activity code and its human-readable description on every company, for precise sector targeting and classification.
- **Up to 21 years of financial history** — per filing year: revenue (chiffre d'affaires), net result, total balance sheet, gross margin, operating result, EBITDA, cash flow, and indebtedness — plus headline share capital and the official workforce band (tranche d'effectif).
- **Directors and managers with their roles** — every dirigeant's name, role (gérant, président, directeur général…), and appointment date where the register publishes it.
- **Up to 1,000 establishments per company** — the full établissements list, not just a count: each site's SIRET, name, address, activity code, and headquarters flag — so you get every branch of a group, not a single number.
- **Official legal announcements (annonces légales / BODACC)** — dated registrations, changes, and filings linked to each company, with type and description.
- **One flat row per company** — identity, financials, directors, establishments, and legal notices all in a single record, with four on/off toggles so each row carries exactly the data you need and nothing you don't.

### Use Cases

**Sales & Lead Generation**

- Build prospect lists of French companies filtered by activity (NAF/APE), region, or size
- Enrich CRM records with verified SIREN/SIRET, legal form, and registered address
- Reach decision-makers by pulling directors and their roles for each target company
- Qualify accounts by revenue, workforce band, and share capital before outreach

**KYC & Compliance**

- Verify a counterparty's legal existence and status (en activité vs. radiée) from the official register
- Capture SIREN, SIRET, RCS, and VAT (TVA) numbers for onboarding and audit trails
- Screen ultimate directors and managers across a portfolio of entities
- Monitor legal announcements (BODACC) for insolvency, restructuring, and ownership changes

**Due Diligence & M\&A**

- Map a target group's full footprint with the complete establishments list
- Track up to 21 years of revenue and net result to assess financial trajectory
- Cross-reference directors to surface related entities and conflicts of interest
- Pull the legal announcements history to reconstruct a company's timeline

**Market Research & Analysis**

- Size a sector by pulling every company under a NAF/APE code by name search
- Benchmark competitors' revenue, margins, and headcount side by side
- Analyze company creation dates and legal forms to study market structure
- Feed structured French registry data into dashboards and data warehouses

### Getting Started

#### Look up one company by SIREN

The simplest run — one SIREN number returns one clean, fully enriched record:

```json
{
    "sirenNumbers": ["652014051"]
}
```

#### Search by company name

```json
{
    "searchQuery": "Carrefour",
    "maxResults": 25
}
```

#### Find every company a director runs

```json
{
    "managerName": "Alexandre Bompard",
    "maxResults": 50
}
```

#### Full bulk lookup with every section

Mix SIREN/SIRET numbers and URLs, and turn on establishments and legal announcements:

```json
{
    "sirenNumbers": ["652014051", "54205118000066"],
    "startUrls": [
        "https://www.societe.com/societe/totalenergies-se-542051180.html"
    ],
    "includeFinancials": true,
    "includeDirectors": true,
    "includeEstablishments": true,
    "includeLegalAnnouncements": true,
    "maxResults": 100
}
```

### Input Reference

#### What to Scrape

Provide at least one of these. You can combine them freely in a single run.

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `startUrls` | string\[] | `[]` | One or more Societe.com company page URLs to pull directly (e.g. `https://www.societe.com/societe/carrefour-652014051.html`). The fastest, most exact way to fetch a known company. |
| `searchQuery` | string | `""` | Search by company name (partial matches allowed), e.g. "Carrefour". Returns the best-matching companies up to your result limit. |
| `sirenNumbers` | string\[] | `["652014051"]` | List of 9-digit SIREN or 14-digit SIRET numbers to look up directly. Each resolves to one exact-match company — the most reliable way to avoid same-name companies. A SIRET is automatically reduced to its 9-digit SIREN; spaces and separators are ignored. |
| `managerName` | string | `""` | Search by a director or manager's name, e.g. "Alexandre Bompard". Returns the companies where that person holds a role, up to your result limit. |

#### Results

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResults` | integer | `50` | Maximum number of companies returned from a name or director search (1–5000). A single name or director search returns at most 120 companies (a Societe.com limit) — narrow the name or use SIREN/SIRET numbers to reach more. Direct URLs and SIREN/SIRET lookups are always fully returned and never limited by this value. |

#### Data to Include

Turn off sections you don't need to keep each record lean.

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `includeFinancials` | boolean | `true` | Include share capital, revenue (chiffre d'affaires), net result, workforce band, and available past years. |
| `includeDirectors` | boolean | `true` | Include the company's directors and managers (dirigeants) — names, roles, and appointment dates. |
| `includeEstablishments` | boolean | `false` | Include the company's establishments (établissements) — each site's SIRET, address, activity, and headquarters flag. Large groups are capped at the first 1,000 establishments per company. |
| `includeLegalAnnouncements` | boolean | `false` | Include official legal announcements (annonces légales / BODACC) — date, type, and details of registrations, changes, and filings. |

### Output

Each company is one flat row in your dataset. Nested details (directors, financials, establishments, legal announcements) live as arrays inside that same row. Here's a representative record with every section enabled:

```json
{
    "companyName": "CARREFOUR",
    "siren": "652014051",
    "siret": "65201405101540",
    "legalForm": "SA à conseil d'administration",
    "legalFormCode": "5599",
    "status": "En activité",
    "creationDate": "1965-01-01",
    "nafCode": "7010Z",
    "nafDescription": "Activités des sièges sociaux",
    "rcsNumber": "652014051 R.C.S. Évry",
    "vatNumber": "FR66652014051",
    "capital": "2 019 762 200 €",
    "revenue": 2913000000,
    "netResult": 1024000000,
    "employeeRange": "1000 à 1999 salariés",
    "address": "93 AVENUE DE PARIS, 91300 MASSY",
    "streetAddress": "93 AVENUE DE PARIS",
    "postalCode": "91300",
    "city": "MASSY",
    "department": "91",
    "directors": [
        { "name": "Alexandre BOMPARD", "role": "Président du conseil d'administration", "appointmentDate": "18 juillet 2017", "type": "Person" }
    ],
    "financials": [
        { "year": 2023, "status": "Consolidé", "revenue": 2913000000, "netResult": 1024000000, "totalBalance": 41230000000, "grossMargin": 1875000000, "operatingResult": 1330000000, "ebitda": 2140000000, "cashFlow": 1810000000, "indebtedness": 9200000000, "workforceBandCode": "53" }
    ],
    "establishments": [
        { "siret": "65201405101540", "siren": "652014051", "name": "CARREFOUR", "isHeadquarters": true, "address": "93 AVENUE DE PARIS 91300 MASSY", "postalCode": "91300", "city": "MASSY", "nafCode": "7010Z", "nafDescription": "Activités des sièges sociaux" }
    ],
    "legalAnnouncements": [
        { "date": "2023-06-15", "type": "Modification", "description": "Modification survenue sur l'administration de la société.", "source": "societe.com" }
    ],
    "sourceUrl": "https://www.societe.com/societe/carrefour-652014051.html",
    "scrapedAt": "2026-07-18T14:30:00Z"
}
```

#### Core Identity

| Field | Type | Description |
|-------|------|-------------|
| `companyName` | string | Legal name (raison sociale / dénomination). |
| `siren` | string | 9-digit SIREN company number. |
| `siret` | string | 14-digit SIRET of the headquarters (siège). |
| `legalForm` | string | Legal form (forme juridique), e.g. "SA", "SAS", "SARL". |
| `legalFormCode` | string | Numeric legal-form category code. |
| `status` | string | Activity status (en activité / radiée). |
| `creationDate` | string | Company creation / registration date. |
| `sourceUrl` | string | Canonical Societe.com company URL. |
| `scrapedAt` | string | ISO timestamp of extraction. |

#### Registration & Activity Codes

| Field | Type | Description |
|-------|------|-------------|
| `nafCode` | string | NAF/APE activity code. |
| `nafDescription` | string | NAF/APE activity label. |
| `rcsNumber` | string | RCS registration number and registry city. |
| `vatNumber` | string | Intracommunity VAT (TVA) number, where published. |

#### Address & Location

| Field | Type | Description |
|-------|------|-------------|
| `address` | string | Full registered address on one line. |
| `streetAddress` | string | Street line. |
| `postalCode` | string | Postal code. |
| `city` | string | City. |
| `department` | string | French department code, derived from the postal code. |

#### Financials

Populated when `includeFinancials` is on.

| Field | Type | Description |
|-------|------|-------------|
| `capital` | string | Share capital, in EUR. |
| `revenue` | number | Latest revenue (chiffre d'affaires), where published. |
| `netResult` | number | Latest net result (résultat net), where published. |
| `employeeRange` | string | Workforce band (tranche d'effectif), e.g. "1000 à 1999 salariés". |
| `financials` | object\[] | Per-year history — see fields below. |

Each item in the `financials` array:

| Field | Type | Description |
|-------|------|-------------|
| `year` | number | Filing year. |
| `status` | string | Account type (e.g. Consolidé / Social). |
| `revenue` | number | Revenue (chiffre d'affaires) for the year. |
| `netResult` | number | Net result (résultat net) for the year. |
| `totalBalance` | number | Total balance sheet. |
| `grossMargin` | number | Gross margin. |
| `operatingResult` | number | Operating result. |
| `ebitda` | number | EBITDA. |
| `cashFlow` | number | Cash flow. |
| `indebtedness` | number | Indebtedness. |
| `workforceBandCode` | string | Coded workforce band. |

#### Directors

Populated when `includeDirectors` is on. Each item in the `directors` array:

| Field | Type | Description |
|-------|------|-------------|
| `name` | string | Director / manager name. |
| `role` | string | Role held (gérant, président, directeur général…). |
| `appointmentDate` | string | Appointment date, where the register publishes it. |
| `type` | string | Entity type (Person or Organization). |

#### Establishments

Populated when `includeEstablishments` is on. Each item in the `establishments` array (up to 1,000 per company):

| Field | Type | Description |
|-------|------|-------------|
| `siret` | string | 14-digit SIRET of the establishment. |
| `siren` | string | Parent company SIREN. |
| `name` | string | Establishment name. |
| `isHeadquarters` | boolean | True for the headquarters (siège social). |
| `address` | string | Establishment address. |
| `postalCode` | string | Postal code. |
| `city` | string | City. |
| `nafCode` | string | Establishment NAF/APE code. |
| `nafDescription` | string | Establishment activity label. |

#### Legal Announcements

Populated when `includeLegalAnnouncements` is on. Each item in the `legalAnnouncements` array:

| Field | Type | Description |
|-------|------|-------------|
| `date` | string | Announcement date. |
| `type` | string | Announcement type (immatriculation, modification, etc.). |
| `description` | string | Details of the filing. |
| `source` | string | Source label (societe.com). |

### Tips for Best Results

- **Prefer SIREN/SIRET numbers for exact matches** — a number returns exactly the company you mean, with no same-name confusion, and is never limited by `maxResults`.
- **Paste a 14-digit SIRET freely** — it's automatically reduced to its 9-digit company (SIREN), so you can drop in establishment numbers without editing them.
- **A single name or director search tops out at 120 companies** — this is a Societe.com limit, not a setting. To pull more, split the search into narrower names or feed a list of SIREN/SIRET numbers instead.
- **Turn off sections you don't need** — leaving establishments and legal announcements off (the defaults) keeps each record lean and runs faster when you only need identity and financials.
- **Turn establishments on for group footprints** — a holding or retail group can carry hundreds of établissements; enable it to capture every branch's SIRET and address (up to 1,000 per company).
- **Combine inputs in one run** — mix pasted URLs, SIREN/SIRET numbers, a name search, and a director search together; results are de-duplicated automatically.
- **Search a director to map related entities** — one manager name returns every company where that person holds a role, a fast way to surface a group or an individual's mandates.

### Pricing

**From $2.50 per 1,000 results** — undercuts the going rate for French company data while keeping billing flat and predictable. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $0.30 | $0.285 | $0.265 | $0.25 |
| 1,000 | $3.00 | $2.85 | $2.65 | $2.50 |
| 10,000 | $30.00 | $28.50 | $26.50 | $25.00 |
| 100,000 | $300.00 | $285.00 | $265.00 | $250.00 |

A "result" is one company record in your dataset — a one-site shop and a 1,000-establishment group each count as a single result, no matter how much nested data the record carries. **No compute or time-based charges — you pay per result, plus a small fixed per-run start fee.**

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

Societe.com publishes public French company-registry information (registre du commerce et des sociétés / BODACC). This actor is intended for legitimate research, compliance, due-diligence, and business-development use. You are responsible for complying with applicable laws — including the GDPR and other data-protection rules when handling director names and other personal data — and with Societe.com's Terms of Service. Do not use extracted data for spam, harassment, or any unlawful purpose.

# Actor input Schema

## `startUrls` (type: `array`):

Paste one or more Societe.com company page URLs to scrape them directly (for example https://www.societe.com/societe/carrefour-652014051.html). Fastest and most exact way to pull a known company.

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

Search by company name (partial matches allowed). Example: 'Carrefour' or 'Total Energies'. Returns the best-matching companies up to your result limit.

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

List of 9-digit SIREN or 14-digit SIRET numbers to look up directly. Each resolves to one exact-match company — the most reliable way to avoid same-name companies. A 14-digit SIRET is automatically reduced to its 9-digit company (SIREN) number. Spaces and separators are ignored.

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

Search by the name of a company director or manager. Example: 'Dupont Jean'. Returns companies where that person holds a role, up to your result limit.

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

Maximum number of company records to return from a name or director search. Note: a single name or director search returns at most 120 companies (a Societe.com limit), so values above 120 apply per search but each search still tops out at 120 — narrow the name or use SIREN/SIRET numbers to reach more. Direct URLs and SIREN/SIRET lookups are always fully returned and are never limited by this value.

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

Include financial figures when Societe.com publishes them: share capital, revenue (chiffre d'affaires), net result, workforce band, and available past years.

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

Include the company's directors and managers (dirigeants) — names, roles, and appointment dates.

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

Include the company's establishments (établissements) — each site's SIRET, address, activity, and headquarters flag. For very large groups the list is capped at the first 1,000 establishments per company to keep each record a manageable size.

## `includeLegalAnnouncements` (type: `boolean`):

Include official legal announcements (annonces légales / BODACC) linked to the company — date, type, and details of registrations, changes, and filings.

## Actor input object example

```json
{
  "startUrls": [],
  "sirenNumbers": [
    "652014051"
  ],
  "maxResults": 50,
  "includeFinancials": true,
  "includeDirectors": true
}
```

# Actor output Schema

## `overview` (type: `string`):

Table of companies with key fields like name, SIREN, legal form, activity, location, and status.

## `details` (type: `string`):

Full per-company rows including financials, directors, establishments, and legal announcements.

# 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 = {
    "startUrls": [],
    "searchQuery": "",
    "sirenNumbers": [
        "652014051"
    ],
    "managerName": "",
    "maxResults": 50,
    "includeFinancials": true,
    "includeDirectors": true,
    "includeEstablishments": false,
    "includeLegalAnnouncements": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/societe-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 = {
    "startUrls": [],
    "searchQuery": "",
    "sirenNumbers": ["652014051"],
    "managerName": "",
    "maxResults": 50,
    "includeFinancials": True,
    "includeDirectors": True,
    "includeEstablishments": False,
    "includeLegalAnnouncements": False,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/societe-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 '{
  "startUrls": [],
  "searchQuery": "",
  "sirenNumbers": [
    "652014051"
  ],
  "managerName": "",
  "maxResults": 50,
  "includeFinancials": true,
  "includeDirectors": true,
  "includeEstablishments": false,
  "includeLegalAnnouncements": false
}' |
apify call solidcode/societe-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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