# French company events & fresh leads (BODACC) (`donnees-france/bodacc-company-events`) Actor

Get French company events from the official BODACC bulletin: new registrations (fresh B2B leads), insolvency proceedings, deregistrations, business sales, filed accounts. Filter by department, court and date. Open data, no API key.

- **URL**: https://apify.com/donnees-france/bodacc-company-events.md
- **Developed by:** [Données France](https://apify.com/donnees-france) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 announcement delivereds

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

## French company events & fresh leads (BODACC)

Official French company events, straight from the **BODACC** bulletin (the
national register of civil and commercial announcements, published by the DILA).
Open data, no API key, no scraping.

### Two use cases, one Actor

**Fresh B2B leads** — filter on `Créations` and get companies that were just
registered: brand-new businesses need banking, insurance, telecom, accounting,
equipment. That is the moment they are most receptive.

**Customer risk monitoring** — filter on `Procédures collectives` to catch
insolvency proceedings, receiverships and liquidations, with the court and the
judgment block, before a customer stops paying.

### What you get per announcement

- BODACC id and notice number, publication date
- event family (Créations, Procédures collectives, Radiations, Ventes et cessions,
  Immatriculations, Modifications diverses, Dépôts des comptes)
- notice type (initial notice, rectification, cancellation)
- company name, SIREN, city, postcode, department, region
- **commercial court (tribunal)**
- **direct official BODACC link** to the notice
- commercial details block when present (judgment, deed, filed accounts)

Plus a **summary** record: count by event family, count by department, first and
last publication dates.

### Input

| Input | Purpose |
|---|---|
| `eventFamilies` | Créations (fresh leads), Procédures collectives (risk), Radiations, Ventes et cessions… |
| `departments` | restrict to where the company is registered |
| `tribunals` | restrict to one commercial court's jurisdiction |
| `publishedSinceDays` | publication window (7 = last week) |
| `publishedUntilDaysAgo` | exclude the most recent days (backfill older ranges) |
| `maxResults` | hard spending cap |

### Daily setup that works

One run per day with `publishedSinceDays: 2` and `Créations` on your target
departments. You get only what is new — typically a few dozen fresh companies a
day, which is exactly the deliverable a field sales team can call.

### Notes on the data

- 51 million announcements are available in the upstream dataset; this Actor
  filters and normalises them.
- **Personal data is deliberately excluded**: the `listepersonnes` block (officers'
  civil status, sometimes with dates of birth) is never exported. Only commercial
  events are returned. If you need officer details, use the SIREN Actors of the
  same publisher line and comply with your own legal basis.
- The official notice URL is provided by the source, not rebuilt here, so it stays
  valid.

### Related Actors

- [French B2B prospect builder (SIRENE)](https://apify.com/donnees-france/sirene-prospect-builder) — companies by activity and department
- [French company enricher (SIREN / SIRET)](https://apify.com/donnees-france/sirene-company-enricher) — full company file per SIREN
- [French public tenders watcher (BOAMP)](https://apify.com/donnees-france/boamp-tenders-watcher) — public procurement feed
- [French commune population & density (INSEE)](https://apify.com/donnees-france/french-commune-population) — market sizing by commune

# Actor input Schema

## `eventFamilies` (type: `array`):

« Créations » = entreprises immatriculées récemment (leads B2B frais). « Procédures collectives » = veille du risque client. « Radiations », « Ventes et cessions », « Dépôts des comptes » pour le reste.

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

Codes département (ex. 69, 2A, 971). Laisser vide pour toute la France — attention au volume, plafonnez alors maxResults.

## `tribunals` (type: `array`):

Filtre texte sur le greffe (ex. Lyon, Bobigny). Utile quand vous suivez un ressort précis.

## `publishedSinceDays` (type: `integer`):

Fenêtre de publication. 7 = la semaine écoulée. Un run quotidien avec 2 jours évite les doublons.

## `publishedUntilDaysAgo` (type: `integer`):

0 = pas de borne. Permet de ne prendre que des tranches anciennes.

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

Plafond de dépense : chaque annonce livrée est facturée.

## Actor input object example

```json
{
  "eventFamilies": [
    "Créations"
  ],
  "departments": [
    "69"
  ],
  "publishedSinceDays": 7,
  "publishedUntilDaysAgo": 0,
  "maxResults": 100
}
```

# Actor output Schema

## `annonces` (type: `string`):

Announcement records: BODACC id, notice number, publication date, event family, notice type, company name, SIREN, city, postcode, department, region, commercial court, official BODACC URL, and the commercial details block (judgment, deed, filed accounts) when present.

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

JSON summary of the run: number of announcements, breakdown by event family and by department, first and last publication dates.

# 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 = {
    "eventFamilies": [
        "Créations"
    ],
    "departments": [
        "69"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("donnees-france/bodacc-company-events").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 = {
    "eventFamilies": ["Créations"],
    "departments": ["69"],
}

# Run the Actor and wait for it to finish
run = client.actor("donnees-france/bodacc-company-events").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 '{
  "eventFamilies": [
    "Créations"
  ],
  "departments": [
    "69"
  ]
}' |
apify call donnees-france/bodacc-company-events --silent --output-dataset

```

## MCP server setup

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

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/LEKpK68QNnCBL1ibI/builds/OVQsBL1YXMPqGnTdw/openapi.json
