# BODACC Company Insolvency Check (France, by SIREN or Name) (`chosen_loafer/france-insolvency-monitor-bodacc`) Actor

Check whether a French company (by name or SIREN) has any insolvency proceedings on BODACC before you extend credit or sign a contract: court, judgment type and filing date. Can also monitor new filings on a schedule. Liquidator/officer and sole-trader debtor names are excluded

- **URL**: https://apify.com/chosen_loafer/france-insolvency-monitor-bodacc.md
- **Developed by:** [Pavel Staurouski](https://apify.com/chosen_loafer) (community)
- **Categories:** Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $15.00 / 1,000 insolvency record checkeds

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 Insolvency Monitor (BODACC)

Monitors new French insolvency proceedings published on BODACC (Bulletin officiel des
annonces civiles et commerciales), filtered by company name, SIREN registry number, or
publication date.

### What you get

One record per matching insolvency filing: the debtor's registered company name,
SIREN registry number, the type of proceeding (liquidation, restructuring, or
bankruptcy as a catch-all), the commercial court handling it, the filing date, whether
the proceeding is still open or has been closed, and a link to the official BODACC
notice.

### GDPR notice

This Actor does **not** include any natural person's name, even though BODACC's source
register legally can and does contain them (a court-appointed liquidator/administrator
named in the judgment text, or a sole trader's own name when the debtor is an
individual rather than a company).

- When the debtor is an individual/sole trader, `companyName` is `null` and
  `isIndividualDebtor` is `true`. The SIREN registry number is still provided, since it
  identifies the registered business entity for due-diligence matching without naming
  the person behind it.
- The judgment's free-text wording, which is the only place a liquidator's or
  administrator's name appears for a company debtor, is not included in the output at
  all: French legal prose cannot be reliably scrubbed of names field-by-field the way
  structured data can, so the whole field is dropped rather than shipped unfiltered.

In short: this Actor reports entity-level insolvency status (is this company insolvent,
what kind of proceeding, which court, when, open or closed) and nothing about the named
individuals who may appear in the underlying public judgment.

### What it does not do

No contact-person data, no full judgment text, no attached documents. Output is limited
to structured, entity-level insolvency metadata as described above.

### Why you might need this

B2B credit-risk, supply-chain due-diligence, and KYB (know-your-business) teams need to
know when a trading partner enters insolvency proceedings before extending further
credit, releasing goods on account, or signing a new contract with a counterparty that
has already filed for liquidation or restructuring - not after the invoice becomes
uncollectable. BODACC publishes hundreds of these notices a day; this Actor turns that
into a filterable, structured feed instead of a manual search.

### Input

```json
{
  "companyName": "Dupont",
  "companyId": "488307372",
  "countries": ["FR"],
  "dateFrom": "2026-09-01",
  "dateTo": "2026-10-07",
  "maxResults": 100,
  "maxChecked": 300
}
```

All fields are optional except that at least one of `companyName`, `companyId`, or the
default 30-day date window should narrow the search; leaving everything blank monitors
all new French insolvency filings in the last 30 days.

`maxChecked` is a safety cap on how many candidate records are read from BODACC in this
run (each is a billed event, whether or not it is complete enough to push). It stops the
run even if `maxResults` hasn't been reached yet, e.g. for a narrow company-name filter
with few matches in the date window.

Only France (`FR`) ships in this version. `countries` is kept as a multi-select field so
future countries can be added without an input-schema breaking change; selecting
anything else currently raises a clear error rather than silently returning nothing.

### Sample output

One real BODACC record (from this Actor's own test fixtures), run through this Actor's
own transform function (dates in ISO 8601; this particular filing is from the
historical sample set used for testing, a live run only ever returns filings inside
your own date window):

```json
{
  "companyName": "MAISON LONGO",
  "registryId": "488307372",
  "country": "FR",
  "insolvencyType": "liquidation",
  "court": "TRIBUNAL DE COMMERCE DE BRIEY",
  "filingDate": "2008-01-06T00:00:00.000Z",
  "status": "open",
  "sourceUrl": "https://www.bodacc.fr/pages/annonces-commerciales-detail/?q.id=id:A200800932640",
  "isIndividualDebtor": false
}
```

### Pricing

Pay per run started, plus per record checked against your filters (not just per match:
reading each candidate record from BODACC is the real cost driver). See the Pricing tab
for exact rates.

***

### Moniteur des procedures collectives (France / BODACC)

Surveille les nouvelles procedures collectives publiees au BODACC (Bulletin officiel des
annonces civiles et commerciales), filtrees par nom d'entreprise, numero SIREN, ou date
de publication.

Ce que vous obtenez : un enregistrement par procedure correspondante, avec la
denomination de l'entreprise, le numero SIREN, le type de procedure (liquidation,
redressement, ou categorie generique), le tribunal de commerce competent, la date de
publication, le statut (en cours ou cloturee), et un lien vers l'avis BODACC officiel.

Avis RGPD : cet outil n'inclut aucun nom de personne physique, meme lorsque le registre
source en contient legalement (mandataire judiciaire designe dans le jugement, ou nom
propre d'un commercant individuel). Lorsque le debiteur est une personne physique,
`companyName` est `null` ; le numero SIREN reste fourni pour identifier l'entite sans
nommer la personne. Le texte libre du jugement, seul endroit ou apparaitrait le nom d'un
mandataire pour une personne morale, n'est pas inclus du tout dans la sortie.

# Actor input Schema

## `companyName` (type: `string`):

Filter by (part of) the registered company or trader name, e.g. "Dupont". Leave empty to monitor all new insolvency filings in the date window.

## `companyId` (type: `string`):

Filter by the French SIREN number (9 digits, spaces are ignored), e.g. "488307372".

## `countries` (type: `array`):

Countries to monitor. Only France (BODACC) ships in this version; DE, PL, IT, NL and ES were probed in recon and dropped for now, see NOTES.md.

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

ISO date (YYYY-MM-DD). Only filings published on or after this date are returned. Defaults to 30 days ago.

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

ISO date (YYYY-MM-DD). Only filings published on or before this date are returned. Defaults to today.

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

Maximum number of insolvency records to output.

## `maxChecked` (type: `integer`):

Safety cap on how many candidate records are read from the source in this run (each is a billed event, whether or not it is complete enough to push). Stops the run even if "Max results" hasn't been reached yet, e.g. for a narrow filter with few matches in the date window.

## Actor input object example

```json
{
  "countries": [
    "FR"
  ],
  "maxResults": 100,
  "maxChecked": 300
}
```

# Actor output Schema

## `matchedFilings` (type: `string`):

Per-filing records.

# 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 = {
    "countries": [
        "FR"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("chosen_loafer/france-insolvency-monitor-bodacc").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 = { "countries": ["FR"] }

# Run the Actor and wait for it to finish
run = client.actor("chosen_loafer/france-insolvency-monitor-bodacc").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 '{
  "countries": [
    "FR"
  ]
}' |
apify call chosen_loafer/france-insolvency-monitor-bodacc --silent --output-dataset

```

## MCP server setup

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

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/qCfX24r7NNzVn2ZKP/builds/wdth7Ncwgvw9JEFcH/openapi.json
