# France BODACC Feed: New Companies, Sales, Insolvency (`moment-data/france-bodacc-company-events-feed`) Actor

Daily feed of French company events from the official BODACC: new companies, business sales (fonds de commerce), insolvency (liquidation, redressement, sauvegarde), strike-offs and changes. SIREN, legal form, capital, RCS, department, activity. Companies only. No API key.

- **URL**: https://apify.com/moment-data/france-bodacc-company-events-feed.md
- **Developed by:** [Luke Miller](https://apify.com/moment-data) (community)
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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/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 BODACC Company Events Feed: New Companies, Business Sales, Insolvency (official, no key)

A daily feed of **French company events** straight from the **BODACC** (Bulletin officiel des annonces civiles et commerciales), the official gazette where every RCS registration, business sale and court-ordered insolvency is published. Data comes from DILA's open-data API (Opendatasoft, **Licence Ouverte / Open Licence 2.0**), 51M+ notices, updated each publication day (Tuesday to Saturday).

Five event families in one clean schema:

- **creations** (default): new companies (Créations) and registrations after a head-office move (Immatriculations), with registration date, start of activity, capital and activity.
- **sales**: purchases of businesses and goodwill (Ventes et cessions de fonds de commerce), with **sale price parsed** and the corporate previous owner.
- **insolvency**: Procédures collectives: **liquidation judiciaire, redressement judiciaire, sauvegarde**, with procedure type, stage (opening / conversion / plan / closure / claims filing), judgment date and payments-cessation date.
- **radiations**: strike-offs from the RCS, with the reason (e.g. closure of liquidation).
- **modifications**: capital changes, name changes, new head office, dissolutions, change of legal form.

**Companies only.** Notices about entrepreneurs individuels / natural persons are always excluded, and manager, liquidator, lawyer and notary names are never output.

### Who it's for

- **B2B sales and agencies:** reach newly created French companies in your region or industry while they are buying (banking, insurance, accounting, software, fit-out, signage, marketing).
- **Accountants, lawyers, insolvency practitioners, restructuring funds:** daily liquidations, redressements and sauvegardes by department.
- **Credit risk, factoring, trade credit insurers, procurement:** watch suppliers and customers by SIREN for insolvency, strike-off or capital change.
- **Business brokers, franchise developers, commercial real estate:** every business sale with price, activity and location.
- **Data teams and AI agents:** stable notice IDs, SIREN for joins with SIRENE / INPI, links to the official notice.

### Output (one record per notice)

`noticeId`, `publicationDate`, `bodaccEdition` (A or B), `bodaccIssue`, `noticeNumber`, `family`, `familyLabel`, `noticeTypeLabel` (initial notice / correction), `companyName`, `tradeName`, `siren`, `legalForm`, `rcsGreffe`, `court`, `city`, `postalCode`, `department`, `departmentName`, `region`, `activity`, `capitalAmount`, `capitalCurrency`, `noticeUrl`, plus per family:

- creations: `registrationDate`, `activityStartDate`, `registrationCategory`, `isTransfer`
- sales: `saleCategory`, `salePriceEur`, `fundsOrigin`, `legalNoticeDate`, `previousOwnerName` / `previousOwnerSiren` (companies only; `previousOwnerIsPerson: true` when the seller was a person, name withheld)
- insolvency: `procedureType` (liquidation / redressement / sauvegarde / other), `procedureStage`, `judgmentFamily`, `judgmentNature`, `judgmentDate`, `paymentsCessationDate`
- radiations: `radiationReason`, `activityEndDate`
- modifications: `modificationDescription` (factual part only; opposition instructions with names removed)

Example:

```json
{
  "noticeId": "A202602104236", "publicationDate": "2026-10-31", "family": "insolvency",
  "companyName": "SEBEAL", "siren": "904809407", "legalForm": "Société à responsabilité limitée",
  "rcsGreffe": "Marseille", "city": "Marseille", "postalCode": "13013", "department": "13",
  "procedureType": "liquidation", "procedureStage": "opening",
  "judgmentNature": "Jugement d'ouverture de liquidation judiciaire", "judgmentDate": "2026-10-28",
  "paymentsCessationDate": "2026-10-15",
  "noticeUrl": "https://www.bodacc.fr/pages/annonces-commerciales-detail/?q.id=id:A202602104236"
}
```

### Quick start

1. Click **Start** with `{}`: the 30 newest company creations from the last 7 days.
2. New companies in Paris and Hauts-de-Seine with at least EUR 10,000 capital: `{"departments": ["75", "92"], "minCapital": 10000, "maxItems": 500}`
3. Liquidations and redressements in the Lyon area this week: `{"families": ["insolvency"], "procedureTypes": ["liquidation", "redressement"], "departments": ["69"], "maxItems": 1000}`
4. Restaurant and bakery business sales, last 30 days: `{"families": ["sales"], "activityKeywords": ["restaurant", "restauration", "boulangerie"], "daysBack": 30, "maxItems": 500}`
5. Everything for Toulouse postal codes: `{"families": ["creations", "sales", "insolvency", "radiations", "modifications"], "postalCodePrefixes": ["31"], "maxItems": 2000}`

**Schedule tip:** run daily (e.g. 08:00 Paris, Tuesday-Saturday) with `"daysBack": 1` to get each day's new notices. Runs are stateless.

### Notes

- Department filter = department of the publishing court registry (greffe); postal filter = the company's head-office postal code.
- Activity keyword matching uses BODACC full-text search, then an accent-insensitive substring check on the activity text.
- Multi-family runs are interleaved evenly, newest publication first. The `OUTPUT` record has counts per family and how many notices were skipped as natural persons.
- Source: `bodacc-datadila.opendatasoft.com` (annonces-commerciales). Licence Ouverte 2.0: reuse allowed with attribution ("Source: BODACC, DILA"). This Actor is not affiliated with DILA.
- Dépôts des comptes (filing of annual accounts) are not included.

### Pricing

Pay per event: a small fee per run start plus a fee per delivered notice. `maxItems` and your max charge limit cap spend.

***

### En français

Flux quotidien des **annonces BODACC** concernant les **sociétés** (personnes morales uniquement) : **créations / immatriculations**, **ventes et cessions** (prix de cession extrait), **procédures collectives** (liquidation judiciaire, redressement judiciaire, sauvegarde : type, étape, date du jugement, date de cessation des paiements), **radiations** et **modifications diverses**. Champs : SIREN, dénomination, forme juridique, capital, greffe RCS, ville, code postal, département, activité, lien vers l'annonce officielle.

Filtres : familles d'annonces, départements, préfixes de code postal, mots-clés d'activité, type de procédure, capital minimum, nombre de jours, nombre maximum d'annonces. Les entrepreneurs individuels et les noms de personnes physiques (dirigeants, mandataires, liquidateurs) ne sont jamais renvoyés. Source officielle : API open data du BODACC (DILA), Licence Ouverte 2.0. Sans clé API.

Exemple : `{"families": ["insolvency"], "departments": ["13"], "daysBack": 7}` renvoie les procédures collectives de sociétés publiées cette semaine dans les Bouches-du-Rhône.

# Actor input Schema

## `families` (type: `array`):

Which BODACC notice families to return. creations = Créations + Immatriculations (new companies and transfers in); sales = Ventes et cessions (purchase of a business / fonds de commerce, with price); insolvency = Procédures collectives (liquidation, redressement, sauvegarde judgments); radiations = strike-offs from the RCS; modifications = Modifications diverses (capital, name, address, dissolution...). Several families are interleaved evenly. Default: creations.

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

French department codes of the publishing greffe, e.g. 75, 92, 69, 13, 06, 2A, 971. Empty = all of France.

## `postalCodePrefixes` (type: `array`):

Keep companies whose postal code starts with one of these, e.g. 75 (Paris), 750 (Paris 1-9), 69003, 31. Empty = all.

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

Keep notices whose activity (objet / activité) contains any of these words, accent-insensitive, e.g. restauration, boulangerie, logiciel, transport, immobilier, conseil. Empty = all.

## `procedureTypes` (type: `array`):

Only for the insolvency family. Empty = all.

## `minCapital` (type: `integer`):

Optional. Keep only companies whose notice states a share capital of at least this amount (notices without capital are dropped when set).

## `daysBack` (type: `integer`):

Publication-date window ending today (Paris time). BODACC publishes Tuesday-Saturday.

## `dateFrom` (type: `string`):

YYYY-MM-DD. Overrides Days back.

## `dateTo` (type: `string`):

YYYY-MM-DD. Default today.

## `maxItems` (type: `integer`):

Cap on delivered notices (also caps your spend). Newest publications first.

## Actor input object example

```json
{
  "families": [
    "creations"
  ],
  "daysBack": 7,
  "maxItems": 30
}
```

# Actor output Schema

## `notices` (type: `string`):

One record per BODACC notice about a legal entity.

## `summary` (type: `string`):

Window, filters, counts per family, skipped notices.

# 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("moment-data/france-bodacc-company-events-feed").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("moment-data/france-bodacc-company-events-feed").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 '{}' |
apify call moment-data/france-bodacc-company-events-feed --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,moment-data/france-bodacc-company-events-feed"
        }
    }
}
```

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/0swcIW9lXy0SNbNSA/builds/d3YvWxKOwyXVgninx/openapi.json
