# BODACC Risk Monitor — French Company Legal Alerts (`songful_laborer/bodacc-risk-monitor`) Actor

Monitor French companies for insolvency, liquidation, and legal events. Search the official BODACC registry by SIREN for credit risk and KYB workflows.

- **URL**: https://apify.com/songful\_laborer/bodacc-risk-monitor.md
- **Developed by:** [Alexandre Watrin](https://apify.com/songful_laborer) (community)
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 result in bodaccs

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

## 🇫🇷 BODACC Risk Monitor — French Company Legal Alerts

Monitor French companies for insolvency, liquidation, and legal events — in a single API call.

Search the **official BODACC registry** by SIREN and get back structured legal announcements with a computed risk score. Built for **credit risk teams**, **compliance officers**, **procurement departments**, and **KYB workflows**.

***

### What is the BODACC?

The **BODACC** (*Bulletin Officiel des Annonces Civiles et Commerciales*) is the official French government journal that publishes every legal event affecting a registered company:

- **Procédures collectives** — court-ordered restructuring, receivership, liquidation
- **Modifications** — changes of directors, legal status, company name
- **Ventes et cessions** — business sales and transfers
- **Radiations** — company strikes from the trade register
- **Créations** — new company registrations
- **Dépôts des comptes** — annual financial statement filings

It is published daily by the **DILA** (Direction de l'information légale et administrative) and is the **single source of truth** for French corporate legal events.

***

### Why use this Actor?

Manually checking the BODACC for a supplier, a customer, or an acquisition target is slow, error-prone, and impossible to scale. This Actor automates it.

- ✅ **Official data source** — DILA / BODACC, no scraping, no legal risk
- ✅ **Risk score included** — each announcement is classified from 1 (low) to 3 (critical)
- ✅ **Batch processing** — check hundreds of SIREN in a single run
- ✅ **Clean, normalized output** — no need to parse the raw BODACC feed
- ✅ **Pay only for results** — you are charged per announcement detected

***

### Use cases

| Use case | Who uses it | Example |
| :--- | :--- | :--- |
| **Supplier risk monitoring** | Procurement, Supply Chain | Detect a key supplier entering liquidation before it disrupts your operations |
| **Customer credit risk** | Finance, Credit Control | Flag customers filing for court-ordered restructuring |
| **KYB / Compliance** | Legal, Compliance | Verify the legal status of a business partner before onboarding |
| **Due diligence** | M\&A, Private Equity | Build a legal history of a target company before an acquisition |
| **Competitive intelligence** | Strategy, Sales | Track director changes and ownership transfers at competitors |
| **Portfolio monitoring** | Banks, Insurers | Continuously monitor loan or policy holders for legal events |

***

### Input

| Field | Type | Required | Description |
| :--- | :--- | :--- | :--- |
| `sirens` | array of strings | ✅ Yes | List of SIREN numbers (9 digits) to monitor. |
| `typesAnnonces` | array of strings | No | Filter by announcement type. If empty or omitted, **all types** are returned. |
| `dateDebut` | string | No | Start date in `YYYY-MM-DD` format. If omitted, **no date filter** is applied. |

#### Available announcement types

| Value | Meaning | Risk level |
| :--- | :--- | :--- |
| `procedure_collective` | Court-ordered restructuring or liquidation | 🔴 Critical |
| `radiation` | Company struck from the trade register | 🔴 Critical |
| `vente` | Business sale or transfer | 🟠 High |
| `modification` | Change of director, status, or name | 🟢 Low |
| `creation` | New company registration | 🟢 Low |
| `dpc` | Annual financial statements filed | 🟢 Low |

#### Example input

```json
{
  "sirens": ["879685725", "552100554"],
  "typesAnnonces": ["procedure_collective", "modification"],
  "dateDebut": "2024-01-01"
}
```

#### Example input — all types, no date filter

```json
{
  "sirens": ["879685725"]
}
```

***

### Output

For each announcement found, the Actor pushes one record to the dataset.

#### Example output

```json
{
  "siren": "879685725",
  "type_annonce": "collective",
  "type_annonce_libelle": "Procédures collectives",
  "date_publication": "2025-01-29",
  "tribunal": "Tribunal de commerce de Bordeaux",
  "ville": "Bordeaux",
  "commercant": "ALLEGRIA",
  "departement": "33",
  "gravite": 3,
  "url": "https://www.bodacc.fr/..."
}
```

#### Output fields

| Field | Description |
| :--- | :--- |
| `siren` | The company's 9-digit identifier |
| `type_annonce` | Raw announcement family from the BODACC API |
| `type_annonce_libelle` | Human-readable French label |
| `date_publication` | Publication date of the announcement |
| `tribunal` | Court that issued the ruling (if applicable) |
| `ville` | City of the court or registered office |
| `commercant` | Name of the company or merchant concerned |
| `departement` | French department code |
| `gravite` | Computed risk score: **1** (low), **2** (medium), **3** (critical) |
| `url` | Link to the original announcement on bodacc.fr |

If no announcement is found for a SIREN, it is skipped and an info log is emitted.

***

### Pricing

This Actor uses **Pay-Per-Event** pricing:

| Event | Price | Description |
| :--- | :--- | :--- |
| `annonce_detectee` | **$10.00 / 1,000 announcements** | Charged once per announcement detected and returned |
| `actor_start` | $0.00005 | Standard Apify startup fee |

You only pay for results. If a company has no legal announcements, you are not charged for it.

**Example**: monitoring 500 suppliers that generate 40 announcements per month costs **$0.32 / month**.

***

### How to use it

1. Go to the **Input** tab.
2. Paste your list of SIREN numbers.
3. (Optional) Select the announcement types you want to monitor.
4. (Optional) Set a start date to limit results.
5. Click **Start**.
6. Download your results from the **Dataset** tab in JSON, CSV, or Excel format.

#### Programmatic access

You can call this Actor from your own code using the Apify API:

```bash
curl -X POST "https://api.apify.com/v2/acts/songful_laborer~bodacc-risk-monitor/runs?token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"sirens": ["879685725"], "typesAnnonces": ["procedure_collective"]}'
```

Or with the Apify Python client:

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("songful_laborer/bodacc-risk-monitor").call(
    run_input={"sirens": ["879685725"], "typesAnnonces": ["procedure_collective"]}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

***

### Where to find SIREN numbers

Every French company has a unique 9-digit **SIREN** identifier. You can find it:

- On any French invoice or official document
- On the [annuaire-entreprises.data.gouv.fr](https://annuaire-entreprises.data.gouv.fr) website
- In your CRM, ERP, or supplier database

If you only have a company name, you can use the free government search at [recherche-entreprises.api.gouv.fr](https://recherche-entreprises.api.gouv.fr) to find its SIREN first.

***

### Data source & legal notice

All data is retrieved from the **official BODACC API** published by the **DILA** (Direction de l'information légale et administrative):

> https://www.bodacc.fr/pages/api-bodacc/

The BODACC is a **public, official, and freely reusable** data source under the French **Licence Ouverte / Open Licence 2.0**. Commercial reuse is explicitly permitted.

This Actor does **not** scrape any website and does **not** violate any Terms of Service. It is a clean, compliant wrapper around a public API.

***

### Risk score methodology

The `gravite` field is computed by this Actor based on the announcement family:

- **3 (Critical)** — `procedure_collective`, `radiation`, `dpc`
  These events indicate severe financial distress, court intervention, or full financial disclosure obligations.

- **2 (High)** — `vente`
  A business sale or transfer may signal ownership change, financial difficulty, or strategic exit.

- **1 (Low)** — `modification`, `creation`
  Routine corporate events with no immediate risk implication.

This scoring is **indicative only** and does not constitute financial or legal advice.

***

### Limitations

- Data covers companies registered in **France only** (including DOM-TOM).
- The BODACC covers events from **2008 onwards**. Older events are not available.
- Companies in **Alsace-Moselle** follow specific local registry rules that may affect some fields.
- Duplicate SIREN in the input are not deduplicated. If you provide the same SIREN twice, it will be queried twice.
- Very large batches (10,000+ SIREN) may take several minutes to complete due to API rate limits.

***

### Support

Found a bug or have a feature request? Please open an issue in the **Issues** tab of this Actor, or contact me directly through the Apify platform.

If you find this Actor useful, a ⭐ review helps a lot!

***

### Changelog

#### v1.0.0 — Initial release

- Monitor French companies by SIREN
- Retrieve legal announcements from the official BODACC API (Explore v2.1)
- Filter by announcement type and date range
- Computed risk score (`gravite`) from 1 to 3
- Pay-Per-Event monetization

# Actor input Schema

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

Fournissez une liste de numéros SIREN (9 chiffres) à surveiller.

## `dateDebut` (type: `string`):

Date au format YYYY-MM-DD. Par défaut : 30 jours en arrière.

## `typesAnnonces` (type: `array`):

Sélectionnez les types d'annonces à surveiller. Par défaut : procédures collectives uniquement.

## Actor input object example

```json
{
  "sirens": [
    "552100554",
    "542051180"
  ],
  "typesAnnonces": [
    "dpc",
    "modification",
    "preocedure_collective"
  ]
}
```

# Actor output Schema

## `dataset` (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 = {
    "sirens": [
        "552100554",
        "542051180"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("songful_laborer/bodacc-risk-monitor").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 = { "sirens": [
        "552100554",
        "542051180",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("songful_laborer/bodacc-risk-monitor").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 '{
  "sirens": [
    "552100554",
    "542051180"
  ]
}' |
apify call songful_laborer/bodacc-risk-monitor --silent --output-dataset

```

## MCP server setup

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

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/cdNwPvskXdCFI6ZHk/builds/LCfFc22DxmpEoIPTa/openapi.json
