BODACC API: Company Creations, Sales, Insolvencies
Pricing
from $0.68 / 1,000 announcements
BODACC API: Company Creations, Sales, Insolvencies
French BODACC announcements as JSON: company, SIREN, legal form, activity, judgment (liquidation, receivership), sale price, accounts. Filter by type, department, dates, keywords, SIREN. onlyNew for daily monitoring. No API key, no login. MCP-ready. Pay per result. $0.80 per 1,000 announcements
Pricing
from $0.68 / 1,000 announcements
Rating
0.0
(0)
Developer
ABM
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Security
Limited permissionsShare
BODACC API: Company Creations, Sales, Insolvencies (France)
$0.80 per 1,000 announcements ($0.0008 each). No API key, no login, no monthly rental. Errors, duplicates and empty results are free.
This Actor returns the official BODACC announcements (Bulletin officiel des annonces civiles et commerciales, France) as clean, structured JSON: new companies, business sales and transfers, collective proceedings (safeguard, receivership, judicial liquidation), deregistrations, filing of annual accounts and other legal notices.
It reads the official open data published by the DILA (French legal information directorate), so results are stable and complete, and it decodes the nested BODACC data into flat camelCase fields: company name, SIREN, legal form, activity, share capital, head office address, court, judgment nature and date, sale price, previous owner, accounts closing date, plus a Markdown text field ready for LLMs.
What can you filter on?
| Filter | Example |
|---|---|
| Announcement type | creation, vente (sale/transfer), collective (insolvency), radiation, dpc (accounts), modification, immatriculation, conciliation... |
| Department | "31", "75", "2A", "971" |
| Publication dates | dateFrom, dateTo or daysBack |
| Keywords (full text) | "boulangerie", "liquidation judiciaire" (any / all) |
| SIREN | "453439465", "453 439 465" or a 14-digit SIRET |
| Only new | onlyNew: true returns only announcements not delivered by your previous runs |
How much does it cost?
You pay one announcement event per announcement written to your dataset: $0.0008.
- 15 latest insolvencies in one department: $0.012
- 1,000 announcements: $0.80
- 30,000 new companies (a month of France-wide creations): $24
- Daily monitoring of one department with
onlyNew(~20 new notices a day): about $0.50 per month
Nothing is charged for invalid SIRENs, filters that match nothing, duplicates or parsing errors. When your maximum charge per run is reached, the Actor stops cleanly; it never delivers unpaid "preview" items.
Input example
The 15 latest collective proceedings (insolvencies) in Haute-Garonne:
{"announcementTypes": ["collective"],"departments": ["31"],"maxResults": 15}
Output example
{"id": "A202601952716","url": "https://www.bodacc.fr/pages/annonces-commerciales-detail/?q.id=id:A202601952716","publication": "A","publicationName": "BODACC A (sales, creations, collective proceedings)","issueNumber": "20260195","announcementNumber": 2716,"publicationDate": "2026-10-10","family": "collective","familyLabel": "Procédures collectives","noticeType": "annonce","noticeTypeLabel": "Avis initial","companyName": "CERES","siren": "912345678","sirens": ["912345678"],"registry": "Toulouse","personType": "company","legalForm": "Société par actions simplifiée","activity": "Boulangerie, pâtisserie, viennoiserie","shareCapital": 5000,"shareCapitalCurrency": "EUR","headOfficeAddress": "12 rue des Blés, 31000 Toulouse","city": "Toulouse","postalCode": "31000","departmentCode": "31","departmentName": "Haute-Garonne","regionCode": "76","regionName": "Occitanie","court": "Greffe du Tribunal de Commerce de Toulouse","judgmentFamily": "Jugement d'ouverture","judgmentNature": "Jugement d'ouverture d'une procédure de liquidation judiciaire","judgmentDate": "2026-10-01","judgmentDetails": "Jugement prononçant la liquidation judiciaire, date de cessation des paiements le 1 juillet 2026, désignant liquidateur ...","persons": [{ "name": "CERES", "type": "company", "legalForm": "Société par actions simplifiée", "address": "12 rue des Blés, 31000 Toulouse" }],"establishments": [],"saleCategory": null,"saleOrigin": null,"previousOwners": [],"accountsClosingDate": null,"text": "## Procédures collectives: CERES\n- **Published:** 2026-10-10\n- **SIREN:** 912345678\n- **Judgment:** Jugement d'ouverture d'une procédure de liquidation judiciaire\n..."}
(The values above are illustrative; field names are exact.) Other families fill their own fields: saleCategory, saleEffectiveDate, saleOrigin (price), saleOpposition, previousOwners for sales; registrationDate, activityStartDate, establishments for creations; accountsClosingDate, accountsFilingType for accounts; deregistrationComment for deregistrations; modifications for changes. Set includeRawData: true to get every original BODACC field in raw.
Use cases
1. Insolvency watch for a credit manager
A credit manager at a wholesale supplier in Occitanie checks every morning whether customers or prospects in Haute-Garonne and Tarn entered receivership or liquidation, to block credit lines before new orders ship.
Input (scheduled daily at 7:00):
{ "announcementTypes": ["collective"], "departments": ["31", "81"], "onlyNew": true, "maxResults": 500 }
Output excerpt:
[{ "companyName": "CERES", "siren": "912345678", "judgmentNature": "Jugement d'ouverture d'une procédure de liquidation judiciaire", "judgmentDate": "2026-10-01", "city": "Toulouse" }]
Next: a Make scenario matches siren against the customer list in Google Sheets and emails the account manager. About 15 to 30 notices a day, i.e. less than $1 a month.
2. Business-for-sale leads for a franchise developer or business broker
A business broker looks for restaurants and bakeries that changed hands in Paris and Hauts-de-Seine, with sale price and previous owner, to contact the new owners (equipment, insurance, accounting offers).
{ "announcementTypes": ["vente"], "departments": ["75", "92"], "keywords": ["restaurant", "boulangerie"], "daysBack": 30, "maxResults": 1000 }
[{ "companyName": "GARAGE GANDOSSI", "saleCategory": "Achat d'un établissement principal par une personne morale lors de l'immatriculation", "saleOrigin": "Achat au prix stipulé de 300000,00 euros.", "previousOwners": ["GARAGE GANDOSSI"], "saleEffectiveDate": "2026-09-30" }]
Next: export to CSV, sort by price, load in the CRM. 1,000 sales cost $0.80.
3. New company leads for accountants, banks and B2B SaaS
An accounting firm in Toulouse wants every new company created in its department each week, with activity and legal form, to offer bookkeeping before a competitor does.
{ "announcementTypes": ["creation"], "departments": ["31"], "onlyNew": true, "maxResults": 2000 }
[{ "companyName": "Labbe, Amandine", "siren": "131023491", "personType": "individual", "activity": "Achat, vente de cartes à collectionner (TCG)", "activityStartDate": "2026-10-05", "city": "Blagnac" }]
Next: n8n pushes each new company into HubSpot with the text field as a note. Around 400 creations a week in Haute-Garonne: about $1.30 a month.
4. Company history for due diligence (KYC / M&A)
A compliance analyst pulls every BODACC notice of a list of counterparties (accounts filings, capital changes, judgments) before onboarding.
{ "sirens": ["542051180", "552032534", "453 439 465"], "maxResults": 500 }
Next: feed the Markdown text of each notice to an LLM to summarise red flags.
Use with AI agents (MCP)
This Actor works as a tool for Claude, Cursor, ChatGPT and other AI agents through the Apify MCP server (https://mcp.apify.com). Add the Actor to your MCP client and ask, for example: "List the judicial liquidations published this week in Gironde with their SIREN." The agent fills the input (announcementTypes, departments, daysBack) and gets structured JSON plus a Markdown text field per notice, ready for RAG chunks.
API examples
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("<USERNAME>/bodacc-announcements").call(run_input={"announcementTypes": ["collective"],"departments": ["31"],"maxResults": 15,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["publicationDate"], item["companyName"], item["siren"], item["judgmentNature"])
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('<USERNAME>/bodacc-announcements').call({announcementTypes: ['creation'],departments: ['75'],daysBack: 7,maxResults: 500,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.map((i) => `${i.companyName} (${i.siren}) - ${i.activity}`));
Integrations and automation
- Schedules: run daily with
onlyNew: true; you only pay for announcements you have not received yet. - Make / Zapier / n8n: use the "Run Actor" module, then "Get dataset items", then route to Gmail, Slack, a CRM or Google Sheets. Example n8n flow: Schedule (daily) → Apify: Run Actor (onlyNew) → Apify: Get dataset items → IF judgmentNature contains "liquidation" → Slack message.
- Google Sheets: export the dataset as CSV or connect the Apify Google Sheets integration.
- API / webhooks: get JSON, CSV, Excel or XML from the dataset endpoint, or a webhook when the run finishes.
FAQ
Where does the data come from? From the official BODACC open data published by the DILA (data.gouv.fr / bodacc-datadila.opendatasoft.com). No website scraping, no login, no captcha.
How fresh is it? BODACC is published Tuesday to Saturday; new issues appear in the open data the same day or the next.
How does onlyNew work? The Actor remembers, per filter combination, the last publication date and the announcements already delivered, in a named key-value store bodacc-announcements-state in your account. Next runs return only what is new, oldest first, so an interrupted run never skips notices. Delete that store to start over.
Which family codes exist? creation, immatriculation, vente, collective, radiation, dpc (annual accounts), modification, conciliation, retablissement_professionnel, divers.
Can I get more than 10,000 results? Yes. Beyond 10,000, the Actor switches to the streaming export of the open data API.
Why are some fields empty? Each family carries different information (a deregistration has no judgment, an accounts filing has no sale). Empty fields are null or [].
Is it legal? BODACC is a public, official bulletin released under the French open licence (Licence Ouverte / Etalab). Personal data of sole traders is published by law; use it in compliance with GDPR (legitimate interest, no unrelated profiling).
Limits
- Only the commercial BODACC bulletin (A, B, C). Civil announcements are not covered.
- Data is returned as published: typos or missing SIRENs in the source stay as they are. The official PDF is not downloaded; use the
urllink to the official notice. - Keyword search is the open data full-text search (word-based, accent-insensitive); it is not a fuzzy search.
- Some rare nested fields (accounts filing, general modifications) are rendered as readable text rather than split into sub-fields; use
includeRawDatato get the original structure. - Older history depends on the open data (announcements from 2008 onwards).