France Company Health Check by SIREN – BODACC Batch
Pricing
from $3.00 / 1,000 company reports
France Company Health Check by SIREN – BODACC Batch
Batch-check up to 10,000 SIREN/SIRET/VAT numbers against official BODACC open data: one risk row per company with insolvency stage, strike-off, dissolution, late accounts, business sales and an explained risk score. $0.003 per company; sole traders masked.
Pricing
from $3.00 / 1,000 company reports
Rating
0.0
(0)
Developer
Jordan Banchonpanith
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Security
Limited permissionsShare
France Company Health Check by SIREN – BODACC Procédure Collective Batch Check
France Company Health Check by SIREN turns the official BODACC announcements (Bulletin officiel des annonces civiles et commerciales, DILA) into one risk summary row per French company. Paste SIREN, SIRET or FR VAT numbers and see, in one table, which companies are in a procédure collective (safeguard, receivership, liquidation), struck off, dissolved, or late with their accounts.
It is built for supplier and customer due diligence, credit-risk screening of a receivables book, KYB refreshes, CRM hygiene (finding closed accounts) and M&A sourcing.
What you get for each SIREN
- Insolvency stage (procédure collective), with its date and history: safeguard (sauvegarde), receivership (redressement judiciaire), recovery or safeguard plan, court-ordered sale (plan de cession), judicial liquidation (liquidation judiciaire), or closure for insufficient assets / debts paid
- Strike-off (radiation) and its reason, and dissolution (including dissolution without liquidation after a merger)
- Last published accounts (closing date, filing type), number of years filed, and a late-filing flag for company forms that must file accounts
- Business sales (ventes et cessions de fonds): how many times the company was buyer or seller, and the last sale with its price when stated
- Changes in the last 12 months: management, head-office moves, capital, activity, name
- An explained risk score (0–100) and level (
low/medium/high/closed/unknown), with plain-English reasons
How to check BODACC for a list of SIRENs
- Paste numbers into SIREN / SIRET / FR VAT numbers: 9-digit SIREN, 14-digit SIRET, or FR VAT number, with or without spaces.
- Optionally limit the history with
lookbackYears, or add a compact list of notices. - Run, then export the table to CSV / Excel / JSON, schedule it weekly, or call it from the Apify API.
{"sirens": ["552032534", "542 051 180 00066", { "siren": "949202030", "label": "supplier-17" }, "FR40303265045"],"lookbackYears": 0,"maskNaturalPersons": true,"includeNotices": false,"maxNotices": 50}
| Field | Description |
|---|---|
sirens | SIREN (9 digits), SIRET (14 digits) or FR VAT number. Strings, or objects {siren, label}. Duplicates are removed. Max 10,000. |
lookbackYears | Use only notices from the last N years (default 0 = full history) |
maskNaturalPersons | Mask sole traders (default true) |
includeNotices / maxNotices | Add a compact list of notices: id, date, type, judgment nature, tags, official bodacc.fr link. No free text. |
Why a summary row instead of raw notices
BODACC publishes events one notice at a time. To know whether a company is still trading you have to read them in order. This Actor does that for you: for example, a liquidation opening followed by a "closure for insufficient assets" becomes riskLevel: "closed". It recognises more than 15 real BODACC judgment wordings, including "Autre jugement et ordonnance" notices that carry the decision only in their text. Claim-list filings (dépôt de l'état des créances) are kept as evidence that a procedure exists but never override the actual stage.
Output example (one row per SIREN)
From a real run on 2026-11-05 (trimmed). The Output tab has a "Risk overview" table; every field is described in the dataset schema.
{"input": "949202030", "label": "supplier-17", "siren": "949202030", "found": true, "isNaturalPerson": false,"name": "DES 4 SABOTS", "legalForm": "S.E.L.A.R.L.", "department": "71","noticesTotal": 3, "noticesByType": { "collective": 1, "dpc": 2 }, "lastNoticeDate": "2026-11-04","lastAccounts": { "closingDate": "2024-12-31", "publishedDate": "2025-09-16", "filingType": "Comptes annuels et rapports" },"accountsOverdue": true,"insolvency": { "status": "receivership", "statusLabel": "Receivership (redressement judiciaire) opened", "since": "2026-10-27", "ongoing": true, "history": [{ "date": "2026-11-04", "stage": "receivership" }] },"radiation": null, "dissolution": null,"businessSales": { "asBuyer": 0, "asSeller": 0, "lastSale": null },"changesLast12Months": { "managementChanges": 0, "headOfficeMoves": 0, "capitalChanges": 0, "activityChanges": 0, "nameChanges": 0 },"riskLevel": "high", "riskScore": 100,"riskReasons": ["Receivership (redressement judiciaire) opened (2026-10-27)", "Last published accounts closed 2024-12-31 (over 20 months ago: possible late filing)"]}
Invalid numbers (bad length or failed Luhn check) return found: false with an error, and are not charged.
How the risk score works
The score adds the following weights, capped at 100:
| Signal | Weight |
|---|---|
| Liquidation | 90 |
| Closure for insufficient assets | 95 |
| Court-ordered sale | 80 |
| Receivership | 70 |
| Recovery plan | 45 |
| Safeguard | 40 |
| Safeguard plan | 30 |
| Debts paid (only if less than 3 years ago) | 15 |
| Procedure notices with no stated stage (for example only a claim-list filing in the window) | 50 (20 if the first one is over 3 years old) |
| Strike-off | 100 |
| Dissolution | 60 (40 without liquidation) |
| Conciliation or professional recovery (less than 3 years ago) | 30 |
| Late accounts | 30 |
| Sold a business in the last 12 months | 20 |
| 2 or more head-office moves in 12 months | 10 |
| 2 or more management changes in 12 months | 10 |
| Registered less than 12 months ago | 10 |
Levels: closed = struck off or closed for insufficient assets; high ≥ 70; medium ≥ 30; otherwise low. unknown means no notices were found.
Pricing (pay per event)
| Event | Price | When |
|---|---|---|
siren-report | $0.003 | One summary row for a SIREN with at least 1 BODACC notice |
empty-check | $0.0005 | A valid SIREN for which BODACC has no notice |
| Actor start | $0.001 | Once per run |
Invalid numbers and API errors are free. 1,000 companies cost at most about $3. Set a maximum charge per run: the Actor stops cleanly when the limit is reached. SIRENs are queried 20 per official API request, up to 10,000 per run.
Personal data (GDPR)
BODACC also publishes notices about sole traders (entrepreneurs individuels, natural persons). By default (maskNaturalPersons: true), when the company is a natural person or its type is unknown:
- the name and trade name are replaced by
[natural person – masked] - the city and the activity text are removed
Only the SIREN, department, legal form, dates and status remain. For all companies, the Actor never copies free-text fields (judgment details, sale descriptions, change descriptions), which can contain names of directors, liquidators or private addresses. They become controlled tags (for example management-change, receivership), and each notice keeps its official bodacc.fr link.
Turn masking off only if you have a lawful basis to process this personal data. You are the controller of what you do with the output.
Data source and limits
- Official source only: the BODACC open-data API by DILA (Opendatasoft Explore v2.1,
bodacc-datadila.opendatasoft.com/api), allowed by the site's robots.txt, no login or key. Data under Licence Ouverte / Etalab 2.0. - BODACC covers companies registered with commercial courts (RCS) and, since 2023, the RNE. Associations, most public bodies and some liberal professions or micro-entrepreneurs never appear: they return
found: false(charged $0.0005). - Accounts filed under confidentiality still produce a dépôt des comptes notice, so the late-filing flag still works, but publication can lag a few weeks behind the filing.
- For the most accurate insolvency stage, keep
lookbackYears: 0(full history). A short lookback can leave out the opening judgment or plan, and the row then showsprocedure-published(stage not stated). - This is a signal tool based on official publications, not a credit rating.
FAQ
How do I know if a French company is in liquidation? Paste its SIREN: insolvency.status shows the current stage (for example liquidation) with its date, and riskLevel becomes high or closed.
Can I monitor my customers every week? Yes: save the input as a task and add an Apify schedule. Each run costs $0.003 per company with notices.
Does it use Infogreffe or paid data? No. Only the free official BODACC API.
En français : BODACC procédure collective par SIREN
Collez une liste de SIREN, SIRET ou numéros de TVA FR : l'Actor lit toutes les annonces BODACC officielles (DILA) et renvoie une ligne de synthèse par entreprise : procédure collective en cours (sauvegarde, redressement judiciaire, plan, plan de cession, liquidation judiciaire, clôture pour insuffisance d'actif), radiation, dissolution, dernier dépôt des comptes et retard éventuel, ventes de fonds, changements récents (dirigeants, siège, capital), avec un score de risque expliqué. Les entrepreneurs individuels sont masqués par défaut (RGPD). Prix : 0,003 $ par SIREN avec annonces, 0,0005 $ sans annonce. Ce n'est pas une notation de crédit.
Support
This Actor is maintained by an AI agent on behalf of its owner. Report problems in the Issues tab; issues are fixed within 14 days.
Data source: BODACC, Direction de l'information légale et administrative (DILA), Licence Ouverte 2.0. Not affiliated with DILA.
Ready-to-run example tasks
- BODACC procédure collective check by SIREN
- Find closed or struck-off French companies in a list
- Monitor customers in BODACC (with official notice links)
More Actors from the same maintainer
- France Price per m² by Address – Batch DVF Comps: median €/m² of real recorded sales around French addresses
- Swiss VAT (MWST/TVA) & UID Validator: bulk check of Swiss VAT / UID numbers in the official register
- Google Sheets Import/Export – Service Account: send these results to a Google Sheet without OAuth expiry