# France New Companies & Insolvency Alerts – BODACC Feed (`gazidev/france-bodacc-alerts`) Actor

French BODACC announcements as clean JSON: new companies, insolvencies (procédures collectives), business sales, strike-offs, amendments, accounts filings. Filter by family, département, date, SIREN watchlist, keyword; optional SIRENE join (NAF, size, address).

- **URL**: https://apify.com/gazidev/france-bodacc-alerts.md
- **Developed by:** [Cemal Atakli](https://apify.com/gazidev) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 bodacc announcements

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 New Companies & Insolvency Alerts – BODACC Feed

Get **BODACC announcements** (Bulletin officiel des annonces civiles et commerciales) as clean, flat JSON/CSV/Excel: **new companies** (créations, immatriculations), **insolvencies** (procédures collectives: redressement judiciaire, liquidation judiciaire, sauvegarde), **business sales** (ventes et cessions de fonds de commerce), **strike-offs** (radiations), **amendments** (modifications) and **annual-accounts filings** (dépôts des comptes).

Filter by **family**, **département**, **publication date**, a **SIREN watchlist** or **keywords**, and optionally join each company with **SIRENE** data (NAF code and label, employee range, company category, head-office address) from the official Recherche d'entreprises API.

The data comes from the official **BODACC open-data feed published by the DILA** (Direction de l'information légale et administrative) under the Licence Ouverte. No scraping of web pages, no login, no API key.

**$1 per 1,000 announcements.** You pay only for announcements saved.

### Who uses it

- **B2B prospectors, accountants, banks, insurers, SaaS and office-equipment vendors**: a daily list of **newly created French companies** by département, with activity, address, capital and managers.
- **Credit-risk, KYB and collections teams**: **insolvency alerts** (opening of liquidation or receivership, plans, closures) for the whole of France or for a **watchlist of SIRENs** (customers, suppliers, debtors).
- **M\&A and business-transfer brokers**: **ventes et cessions** (business sales) with seller, buyer and opposition details.
- **Data and market-research teams**: company creation and failure trends by département or sector keyword.

### Input examples

New companies and insolvencies in Paris, last 7 days (the default prefill):

```json
{ "families": ["creation", "collective"], "departements": ["75"], "daysBack": 7, "maxResults": 20 }
```

Insolvency alerts for your customers (schedule daily, you only get new announcements):

```json
{
  "families": ["collective"],
  "sirens": ["552081317", "910288372"],
  "daysBack": 7,
  "onlyNew": true,
  "stateKey": "customer-watchlist",
  "maxResults": 0
}
```

Restaurant liquidations in the last 30 days, companies only:

```json
{ "families": ["collective"], "keywords": ["restaurant", "restauration"], "excludeIndividuals": true, "daysBack": 30, "maxResults": 0 }
```

Business sales (fonds de commerce) in Lyon and Marseille this month:

```json
{ "families": ["vente"], "departements": ["69", "13"], "dateFrom": "2026-10-01", "maxResults": 500 }
```

#### Filters

| Field | Meaning |
|---|---|
| `families` | `creation`, `immatriculation`, `vente`, `collective`, `modification`, `radiation`, `dpc` (empty = all) |
| `departements` | Département codes, e.g. `75`, `13`, `2A`, `971` (empty = all of France) |
| `daysBack` / `dateFrom` / `dateTo` | Publication-date window (default: last 7 days) |
| `sirens` | SIREN watchlist (9 digits; a SIRET also works). Also matches the previous owner in business sales |
| `keywords` | Any of these words in name, trade name, activity, judgment, description, managers or city (accent-insensitive) |
| `excludeIndividuals` | Skip sole traders (entrepreneurs individuels) |
| `announcementTypes` | `annonce` (initial), `rectificatif`, `annulation` |
| `enrichWithSirene` | Add NAF, employee range, category and head-office address (default on, no extra charge) |
| `onlyNew` + `stateKey` | Monitoring: skip announcements returned by earlier runs |
| `maxResults` | Stop after N announcements, newest bulletin first (0 = all). You pay per announcement saved |

### Output

One flat record per announcement. The nested BODACC structures (persons, establishment, act, judgment, deposit, previous owner...) are flattened into plain columns, ready for a spreadsheet or CRM:

```json
{
  "announcementId": "A202602041593",
  "family": "collective",
  "familyLabel": "Procédures collectives",
  "familyLabelEn": "Insolvency proceedings",
  "announcementType": "annonce",
  "publicationDate": "2026-10-23",
  "bulletin": "BODACC A",
  "departement": "01",
  "court": "TRIBUNAL DE COMMERCE DE BOURG-EN-BRESSE",
  "registry": "Bourg-en-Bresse",
  "siren": "908654171",
  "name": "MEXI KEBAB RESTAURANT PONT SAINTE MARIE",
  "personType": "company",
  "legalForm": "Société à Responsabilité Limitée",
  "activity": "restauration de type rapide",
  "address": "615 rue des Artisans, 01800 Meximieux",
  "postalCode": "01800",
  "city": "Meximieux",
  "judgmentFamily": "Jugement de clôture",
  "judgmentNature": "Jugement de clôture pour insuffisance d'actif",
  "judgmentDate": "2026-10-14",
  "judgmentDetails": "Jugement prononçant la clôture de la procédure de liquidation judiciaire pour insuffisance d'actif.",
  "bodaccUrl": "https://www.bodacc.fr/pages/annonces-commerciales-detail/?q.id=id:A202602041593",
  "annuaireUrl": "https://annuaire-entreprises.data.gouv.fr/entreprise/908654171"
}
```

Other columns, filled when the announcement has them: `tradeName`, `acronym`, `management` (président, gérant...), `capital`, `capitalCurrency`, `establishmentOrigin`, `establishmentType`, `eventCategory`, `registrationDate`, `activityStartDate`, `effectiveDate`, `description`, `saleOpposition`, `legalNoticeJournal`, `previousOwnerName`, `previousOwnerSiren`, `amendmentDescription`, `strikeOffComment`, `activityEndDate`, `accountsClosingDate`, `accountsFilingType`, `previousNotice` and, with `enrichWithSirene`, the SIRENE fields `nafCode`, `nafLabel`, `employeeRange`, `companyCategory`, `headOfficeAddress`, `sireneName`, `sireneStatus`, `sireneCreatedAt`, `employeeRangeCode`, `headOfficeSiret`, `headOfficePostalCode`, `headOfficeCity`, `headOfficeLatitude`, `headOfficeLongitude`. See `SAMPLE_OUTPUT.json` for one record of each family.

The run summary (`OUTPUT` in the key-value store) shows counts per family, announcements scanned, bulletin files read and SIRENE lookups.

### Pricing

Pay per event: **$0.001 per announcement saved** ($1 per 1,000), plus a tiny Actor start fee. SIRENE enrichment is included. Error rows are free. Set **Max announcements** or a maximum cost per run, and the run stops cleanly at that limit.

| | This Actor | Other BODACC Actors on the Store (Oct 2026) |
|---|---|---|
| Price per announcement | $0.001 | $0.003 – $0.015 |
| All 7 families incl. accounts filings | yes | varies |
| SIREN watchlist + `onlyNew` alerts | yes | varies |
| SIRENE join (NAF, size, address) | included | often extra or missing |

### Use with AI agents (Apify MCP)

Add this Actor to Claude, ChatGPT or any MCP client through the [Apify MCP server](https://mcp.apify.com) and ask, for example: *"Which companies in Bordeaux went into liquidation this week?"* or *"Did any of these 50 SIRENs appear in BODACC in the last 30 days?"*

### FAQ

**How fresh is the data?** BODACC is published about five times a week. The DILA feed has each bulletin on its publication morning, and each run reads the latest bulletins directly.

**How far back can I search?** The current calendar year (the DILA "année courante" feed). A 7-day run reads about 5 bulletins and takes a few seconds; a 30-day run across all families reads ~90 files and takes about 40 seconds.

**What is the difference between "créations" and "immatriculations"?** Créations are new businesses or new establishments; immatriculations are registrations of existing businesses (for example after a transfer from another registry). Both are useful for new-company lead lists.

**Why do some announcements have no SIREN?** A few insolvency notices concern persons who are not registered in the RCS (craftsmen registered elsewhere or unregistered persons); those have `siren: null`, so SIRENE enrichment is skipped.

**What if the SIRENE API is down?** The BODACC data is still returned; the SIRENE columns stay empty and the run summary shows `sireneUnavailable: true`.

**Personal data.** BODACC announcements about sole traders contain names of natural persons. Reuse is allowed under the Licence Ouverte but remains subject to the GDPR and the French *loi Informatique et Libertés* (see the DILA's personal-data notice). Use `excludeIndividuals` if you only need companies, and use the data for legitimate purposes. Civil announcements (personal recovery, inheritances) are not part of the open data and are not included.

### Data source and licence

Source: **BODACC – Direction de l'information légale et administrative (DILA)**, open-data feed [echanges.dila.gouv.fr/OPENDATA/BODACC](https://echanges.dila.gouv.fr/OPENDATA/BODACC/), dataset ["BODACC" on data.gouv.fr](https://www.data.gouv.fr/datasets/bodacc), licence **[Licence Ouverte / Open Licence (Etalab 2.0)](https://www.etalab.gouv.fr/licence-ouverte-open-licence/)**, which allows commercial reuse with attribution. SIRENE enrichment: [API Recherche d'entreprises](https://recherche-entreprises.api.gouv.fr) (DINUM / INSEE data, Licence Ouverte), queried at ≤5 requests per second (its limit is 7/s).

Each record carries the source and a link to the original announcement on bodacc.fr. The DILA open-data server has no robots.txt restrictions (checked 2026-10-24). This Actor is not affiliated with or endorsed by the DILA or the French government.

# Actor input Schema

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

Which BODACC families to return. Empty = all seven.

## `departements` (type: `array`):

French département codes of the announcement, e.g. `75` (Paris), `69`, `13`, `2A`, `971`. Empty = all of France.

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

Publication date window: today minus N days to today. Ignored when *From date* is set.

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

YYYY-MM-DD. Overrides *Last N days*. The open-data feed covers the current calendar year.

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

YYYY-MM-DD. Default: today.

## `sirens` (type: `array`):

Only announcements about these companies (9-digit SIREN, e.g. `552081317`; a 14-digit SIRET also works). Also matches the previous owner in business sales. Combine with *Only new announcements* and a daily schedule for alerts.

## `keywords` (type: `array`):

Accent- and case-insensitive match on name, trade name, activity, judgment text, description, management and city, e.g. `restaurant`, `boulangerie`, `logiciel`, `liquidation judiciaire`.

## `excludeIndividuals` (type: `boolean`):

Skip announcements about natural persons (entrepreneurs individuels).

## `announcementTypes` (type: `array`):

Empty = all.

## `enrichWithSirene` (type: `boolean`):

Join each SIREN with the official Recherche d'entreprises API (NAF code & label, employee range, company category, head-office address). About 5 lookups per second, so large runs take longer. No extra charge.

## `onlyNew` (type: `boolean`):

Skip announcements returned by earlier runs with the same *State key*. Schedule daily for an alert feed.

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

Separate 'already seen' lists for different monitors.

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

Stop after this many announcements, newest bulletin first (0 = all matching). You pay per announcement saved.

## Actor input object example

```json
{
  "families": [
    "creation",
    "collective"
  ],
  "departements": [
    "75"
  ],
  "daysBack": 7,
  "excludeIndividuals": false,
  "enrichWithSirene": true,
  "onlyNew": false,
  "stateKey": "default",
  "maxResults": 20
}
```

# Actor output Schema

## `announcements` (type: `string`):

No description

## `results` (type: `string`):

No description

## `summary` (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 = {
    "families": [
        "creation",
        "collective"
    ],
    "departements": [
        "75"
    ],
    "daysBack": 7,
    "maxResults": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("gazidev/france-bodacc-alerts").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 = {
    "families": [
        "creation",
        "collective",
    ],
    "departements": ["75"],
    "daysBack": 7,
    "maxResults": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("gazidev/france-bodacc-alerts").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 '{
  "families": [
    "creation",
    "collective"
  ],
  "departements": [
    "75"
  ],
  "daysBack": 7,
  "maxResults": 20
}' |
apify call gazidev/france-bodacc-alerts --silent --output-dataset

```

## MCP server setup

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

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/BGSdCAtQqBe6CkK0L/builds/PkR1zY0LD3xpJp5Wi/openapi.json
