# France New Companies Scraper — BODACC & SIRENE B2B Leads (`capable_coach/france-new-companies`) Actor

Newly registered French companies (SAS, SARL, SASU, EURL...) from official BODACC open data: name, SIREN, legal form, share capital, activity, head office, registration date, enriched with SIRENE data (NAF code, headcount) from the government company API. Legal entities only, no personal data.

- **URL**: https://apify.com/capable_coach/france-new-companies.md
- **Developed by:** [jules imbert](https://apify.com/capable_coach) (community)
- **Categories:** Lead generation, Business, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 new companies

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 New Companies Scraper — Daily BODACC Registrations & SIRENE B2B Leads

**Every new French company, the week it is registered: name, SIREN, legal form, share capital, declared activity, head office address and registration date — from the official BODACC open data, enriched with the NAF code, headcount range and GPS location from the French government company API. Legal entities only (SAS, SASU, SARL, EURL, SA…): no individuals, no directors' names, no personal contact data.**

Built for **B2B prospecting** (accountants, banks, insurers, web agencies, SaaS, payroll, office suppliers, coworking, telecoms), **market monitoring** and **AI agents** via the Apify MCP server.

🇫🇷 *Créations d'entreprises du BODACC (personnes morales uniquement), enrichies avec l'API Recherche d'entreprises. Version française plus bas.*

### Why this Actor

- **Fresh**: BODACC publishes creation notices every working day; a new company typically appears 3–10 days after registration with the commercial court registry (RCS).
- **Filter like a sales team**: by département, activity keywords (`restaurant`, `logiciel`, `transport`…), NAF code prefix (`56`, `62`, `43`…), legal form, minimum share capital.
- **Schedule-friendly**: `onlyNewSinceLastRun` remembers what was already delivered, so a daily schedule only returns new companies — pipe them to Google Sheets, HubSpot, Pipedrive, Slack, Make or Zapier.
- **Clean legal footing**: official open data under Licence Ouverte v2.0, no scraping, no personal data (see below).
- **Fast and cheap**: plain HTTP API, no browser, no proxy. 100 enriched companies in ~30 seconds.

### Output fields

| Group | Fields |
|---|---|
| Company | `siren`, `companyName`, `tradeName`, `acronym`, `legalForm`, `shareCapital`, `shareCapitalCurrency` |
| Registration | `registrationDate`, `activityStartDate`, `creationCategory`, `registryCourt`, `registry` |
| Activity & location | `activity` (declared corporate purpose), `headOfficeAddress`, `headOfficePostcode`, `headOfficeCity`, `departmentCode`, `department`, `regionCode`, `region` |
| BODACC notice | `bodaccPublicationDate`, `bodaccNoticeId`, `bodaccNoticeType`, `bodaccUrl` |
| Enrichment (`company`) | `nafCode`, `sectionNaf`, `headcountRange`, `isEmployer`, `companyCategory`, `creationDate`, `status`, `headOfficeSiret`, `headOfficeCommuneCode`, `headOfficeLatitude`, `headOfficeLongitude`, labels (RGE, Qualiopi, ESS, bio, société à mission), `annuaireUrl` |
| Provenance | `source`, `sourceDataset`, `sourceApiUrl`, `sourceLicense`, `attribution`, `scrapedAt` |

### Input example

```json
{
  "publishedWithinDays": 7,
  "departments": ["75", "92"],
  "activityKeywords": ["logiciel", "informatique", "conseil"],
  "excludeLegalForms": ["Société civile"],
  "minShareCapital": 1000,
  "enrichCompanies": true,
  "onlyNewSinceLastRun": true,
  "stateKey": "paris-tech",
  "maxResults": 500
}
```

By default, `excludeLegalForms` removes *sociétés civiles* (SCI and other holding vehicles), which are rarely good prospects. Clear it to include them (e.g. for real-estate or banking use cases).

### Output example

```json
{
  "siren": "131730525",
  "companyName": "AVELYON",
  "legalForm": "Société à Responsabilité Limitée",
  "shareCapital": 2125996,
  "activityStartDate": "2026-10-13",
  "activity": "GESTION DE PARTICIPATIONS - SOCIETE HOLDING",
  "headOfficeAddress": "14 Chemin Des Sablières, 01700 Neyron",
  "departmentCode": "01",
  "bodaccPublicationDate": "2026-10-27",
  "bodaccUrl": "https://www.bodacc.fr/pages/annonces-commerciales-detail/?q.id=id:A2026020687",
  "company": { "nafCode": "66.30Z", "headcountRange": "No employees / unknown", "status": "active", "headOfficeLatitude": 45.8194, "headOfficeLongitude": 4.9267 },
  "sourceLicense": "Licence Ouverte / Open Licence v2.0 (Etalab)",
  "attribution": "Source : bodacc.fr / DILA — jeu de données « annonces-commerciales », avis A2026020687 publié le 2026-10-27 — Licence Ouverte v2.0"
}
```

### Pricing

Pay per event, with discounts on paid Apify plans and no platform-usage fee on top:

| Apify plan | Per company | Per 1,000 |
|---|---|---|
| Free | $0.0025 | $2.50 |
| Starter (Bronze) | $0.00225 | $2.25 |
| Scale (Silver) | $0.001875 | $1.88 |
| Business (Gold) and above | $0.0015 | $1.50 |

Plus **$0.0003 per run start** (check the Pricing tab for the current price). You only pay for companies that match your filters.

### Legal: source, licence, personal data

- **BODACC** (Bulletin officiel des annonces civiles et commerciales), published by the **DILA** (Direction de l'information légale et administrative, Premier ministre) through its official open data API. Licence: **Licence Ouverte / Open Licence v2.0** — free commercial reuse; DILA asks reusers to credit **bodacc.fr / DILA**, the access URL and the file/notice date. Each record carries `source`, `sourceApiUrl`, `bodaccPublicationDate` and `attribution` for that purpose. Data is queried live, so DILA corrections are picked up automatically.
- **API Recherche d'entreprises** (DINUM, annuaire-entreprises.data.gouv.fr), based on SIRENE (INSEE) and RNE (INPI) open data, Licence Ouverte v2.0.
- **Personal data**: BODACC also lists sole traders (natural persons) and the names of company directors. This Actor **drops every notice about a natural person** and **never outputs directors, managers or shareholders**. Head office addresses of legal entities are public registry information; when SIRENE marks an establishment as non-diffusible, the enriched address and GPS are removed. You remain responsible for GDPR/ePrivacy rules when you prospect companies (B2B legitimate interest, opt-out).
- Not affiliated with or endorsed by DILA, INSEE or the French administration.

### Integrations and API

- **API**: run the Actor and read results over HTTP or with the Apify Python and JavaScript clients (see the **API** tab for ready-made code).
- **Schedules**: run it daily or weekly from Apify schedules.
- **Integrations**: send results to Google Sheets, Slack, e-mail, Airtable or a webhook, or connect it to Make, Zapier or n8n.
- **AI agents**: available as a tool through the Apify MCP server.

### FAQ

**Is this a BODACC API / SIRENE API alternative?** It combines both: new-company notices from the official BODACC open data, enriched with SIRENE-based data (NAF code, headcount range, location) from the government API Recherche d'entreprises. Call it through the Apify API and get JSON, CSV or Excel.

**How do I get a daily list of new French companies?** Schedule the Actor daily with `publishedWithinDays: 2` and `onlyNewSinceLastRun: true`, then connect Google Sheets, a CRM, Slack or a webhook.

**Do you provide e-mails or phone numbers?** No. They are not in the open data and this Actor does not collect personal contact data.

**Why is `company` sometimes null?** SIRENE/RNE indexing can lag by a few days for brand-new companies; rerun later or use the `bodaccUrl`.

**Can I go back in time?** Yes: set `publishedFrom`/`publishedTo` (BODACC open data goes back to 2008). Large ranges are split automatically.

***

### Other Actors by the same developer

- [France Public Tenders Scraper (BOAMP)](https://apify.com/capable_coach/france-public-tenders): French public procurement notices.
- [France Building Permits Scraper (Sitadel)](https://apify.com/capable_coach/france-building-permits): construction leads.
- [French Jobs Scraper (Emploi France)](https://apify.com/capable_coach/emploi-france-aggregator): open-licence French job offers.

### 🇫🇷 En français

**Les nouvelles sociétés françaises, chaque jour, depuis le BODACC (open data DILA).** Dénomination, SIREN, forme juridique, capital, activité, siège, date d'immatriculation, plus code NAF, tranche d'effectif et coordonnées GPS via l'API Recherche d'entreprises. Personnes morales uniquement : aucune entreprise individuelle, aucun nom de dirigeant. Filtres par département, mots-clés d'activité, code NAF, forme juridique, capital minimum ; mode « uniquement les nouvelles depuis le dernier passage » pour les planifications. Source : bodacc.fr / DILA — Licence Ouverte v2.0.

# Actor input Schema

## `publishedWithinDays` (type: `integer`):

BODACC publication window. BODACC is published every working day; creation notices appear ~3–10 days after registration. Ignored if 'Published from' is set.

## `publishedFrom` (type: `string`):

Optional start date.

## `publishedTo` (type: `string`):

Optional end date (default: today).

## `departments` (type: `array`):

Département codes of the registry notice, e.g. 75, 69, 13, 2A, 974. Empty = all of France.

## `activityKeywords` (type: `array`):

Keep companies whose declared activity contains one of these words (French), e.g. restaurant, boulangerie, conseil, logiciel, transport, BTP, e-commerce.

## `legalForms` (type: `array`):

Case/accents-insensitive 'contains' match on the legal form, e.g. 'actions simplifiée' (SAS/SASU), 'responsabilité limitée' (SARL/EURL), 'anonyme' (SA).

## `excludeLegalForms` (type: `array`):

Default excludes 'Société civile' (SCI and other non-trading holding companies), which are usually not B2B prospects. Clear the list to include them.

## `minShareCapital` (type: `integer`):

E.g. 10000 to skip micro-holdings.

## `nafPrefixes` (type: `array`):

Keep companies whose official NAF code (from SIRENE) starts with one of these, e.g. 56 (restaurants), 62 (IT), 41 / 43 (construction), 47 (retail). Forces enrichment.

## `enrichCompanies` (type: `boolean`):

Add NAF code, headcount range, SIRET of head office, GPS coordinates and labels from the government API Recherche d'entreprises. Directors' names are never included.

## `onlyNewSinceLastRun` (type: `boolean`):

Remember delivered notices in a named key-value store and skip them next time. Use with a daily or weekly schedule.

## `stateKey` (type: `string`):

Separate memory per saved search when 'Only new since last run' is on. Leave empty to use the shared default memory. Stored encrypted.

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

Maximum companies returned.

## Actor input object example

```json
{
  "publishedWithinDays": 7,
  "excludeLegalForms": [
    "Société civile"
  ],
  "minShareCapital": 0,
  "enrichCompanies": true,
  "onlyNewSinceLastRun": false,
  "maxResults": 100
}
```

# Actor output Schema

## `companies` (type: `string`):

No description

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

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "publishedWithinDays": 7,
    "excludeLegalForms": [
        "Société civile"
    ],
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("capable_coach/france-new-companies").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 = {
    "publishedWithinDays": 7,
    "excludeLegalForms": ["Société civile"],
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("capable_coach/france-new-companies").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 '{
  "publishedWithinDays": 7,
  "excludeLegalForms": [
    "Société civile"
  ],
  "maxResults": 100
}' |
apify call capable_coach/france-new-companies --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,capable_coach/france-new-companies"
        }
    }
}
```

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/0c3UZstBgi5Db6yY8/builds/kZPghB3Vk3cmIyW0x/openapi.json
