BODACC Commercial Announcements Scraper (France) avatar

BODACC Commercial Announcements Scraper (France)

Pricing

from $1.60 / 1,000 notice delivereds

Go to Apify Store
BODACC Commercial Announcements Scraper (France)

BODACC Commercial Announcements Scraper (France)

Structured French BODACC announcements as JSON: company, family, court, department and publication date, with family/department/date filters and a company watchlist monitor. For KYB, supplier vetting and liquidation judiciaire alerts. Official DILA open data, legal entities only.

Pricing

from $1.60 / 1,000 notice delivereds

Rating

0.0

(0)

Developer

Steadfetch

Steadfetch

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 hours ago

Last modified

Share

steadfetch/bodacc-monitor

French BODACC commercial announcements as structured JSON, plus a monitor that delivers only new notices for the companies or departments you watch.

What it does

BODACC (Bulletin officiel des annonces civiles et commerciales) is the official French register of commercial announcements: company creations, filings, insolvency proceedings, business sales, changes and deregistrations. The public Opendatasoft dataset holds more than 51 million records with no saved filters, no alerts and no ready-made monitor.

This Actor turns it into a product:

  • one structured row per announcement: company, family, notice type, court, city, postal code, department, publication date and the official notice URL;
  • filters by notice family, French department and publication date window;
  • free-text search over the notice;
  • monitor mode: watch a company name (and optionally a department or family) and receive only notices never delivered before, deduplicated by the official notice id.

Public official data only: no login, no CAPTCHA, no paywall. Source: DILA - BODACC, licence Etalab 2.0 (retrieved 2026-10-25).

BODACC also publishes sole traders (personnes physiques), whose notices carry personal names. This Actor delivers legal entities only: a record is emitted only when its listepersonnes payload proves typePersonne: "pm" for every person in the notice and its commercant name carries no sole-trader marker. DILA sometimes labels an entreprise individuelle (EI) as pm, so a civil title (Monsieur, Madame, Mme, Mlle) or a trailing EI / E.I. also excludes the row. Sole-trader rows and rows without that proof are excluded before validation, never reach the dataset and are never charged. No personal-name field exists in the output schema.

Residual risk: a sole trader published by DILA with a pm label, no civil title and no EI marker in commercant would pass. The rule is deterministic and tested against the captured rows; it does not guess at names.

Example output

{
"url": "https://bodacc-datadila.opendatasoft.com/api/v2/catalog/datasets/annonces-commerciales/records?limit=100&offset=0&order_by=dateparution+desc",
"scrapedAt": "2026-10-25T20:00:00.000Z",
"noticeId": "A20260205241",
"company": "ESPACE AUTOMATISMES",
"noticeFamily": "Ventes et cessions",
"noticeType": "Avis initial",
"court": "Greffe du Tribunal de Commerce de Saintes",
"city": "Cozes",
"postalCode": "17120",
"department": "Charente-Maritime",
"publicationDate": "2026-10-25",
"sourceUrl": "https://www.bodacc.fr/pages/annonces-commerciales-detail/?q.id=id:A20260205241"
}

Input

FieldTypeMeaning
modesearch or monitorSearch once, or check a watchlist.
fulltextstringFree-text search (company, activity, keyword).
noticeFamilystringExact BODACC family, e.g. Ventes et cessions, Modifications diverses, Radiations, Immatriculations. The Store form lists every family label (some keep their French accents). Empty means all families.
departmentstringFrench department code (06, 31, 2A, 971) or official name (Alpes-Maritimes).
dateFrom, dateToYYYY-MM-DDPublication date window. Empty means no bound.
watchlistarrayMonitor mode: { "keyword": "KAOLY", "department": "06", "noticeFamily": "Ventes et cessions" }. keyword is required; the other two fall back to the top-level values. One check is billed per watchlist item per run.
maxRowsinteger1-1,000. Output cap; in monitor mode it also caps how many new notices are delivered per run.
strictSchemabooleanKeep enabled: every row is validated against the output schema.

Monitor mode

Each watch item searches the company name (commercant, case-insensitive contains; * is not allowed in the keyword), optionally narrowed by department and family. The Actor stores the delivered notice ids in its named key-value store and emits only ids never seen before. New notices beyond maxRows stay unseen and are delivered on a later run.

Pricing

Pay per event, no subscription:

  • 2.00 USD per 1,000 results (notices delivered) - charged by the platform through apify-default-dataset-item, the only per-result charge. Rows rejected by the output schema, sole-trader rows and quiet monitor checks are never charged.
  • 0.05 USD per 1,000 checks (watchlist items) - charged through the reserved monitor-check event once per watchlist item actually checked in a monitor run. Search runs never charge this event. A check with no new notice still costs the check only.
  • 0.00005 USD per run start - the Apify-recommended apify-actor-start price, which also includes the first 5 seconds of compute.

On the Apify free plan (5 USD monthly credit) that is about 2,500 delivered notices at 2.00 USD per 1,000 results, before the per-check charge.

Measured cost: the official JSON API needs no proxy and no browser. One request returns 100 records, so a 1,000-notice run is 11 requests; the Actor runs at 256 MB and finishes in a few seconds locally, i.e. about 0.0001 USD per 1,000 notices of platform compute. Margin against the 2.00 USD price is positive.

FAQ

Is this scraping? No browser and no HTML scraping: it reads the official public Opendatasoft API published by DILA, under the Etalab 2.0 licence. Each row keeps the public bodacc.fr notice URL for attribution.

Why are some notices missing? Notices about sole traders (personnes physiques), including entreprises individuelles that DILA labels pm, are excluded on purpose (privacy). They are dropped before validation, so they never reach the dataset or the bill.

How do I monitor insolvency proceedings in one department? Set mode: "monitor", department: "06" and noticeFamily to the insolvency family label shown in the Store form, then add the companies you watch. Use a maxRows large enough for a day of new notices.

Can I get every notice ever published? The API caps a single query at 10,000 records (offset + limit). Use date windows to page through history; maxRows caps each run at 1,000 delivered rows.

Which departments use a code? Metropolitan departments use two digits (06, 31), Corsica uses 2A/2B and overseas departments use three digits (971). An official name also works.

Maintenance

Tested daily by Steadfetch. The source is the official DILA Opendatasoft API (no HTML layout to break). If the dataset schema or the API changes, the schema validation and the daily QA run fail loudly; the Actor is fixed before new features. Only bodacc-datadila.opendatasoft.com is requested; the sourceUrl field is returned, never crawled.