Tutoriel · France
L'API BODACC en Node.js
La France publie ses avis d'entreprises en open data, procédures collectives comprises. Voici comment les interroger depuis Node — et comment lire les résultats sans en tirer la mauvaise conclusion.
L'endpoint
Le BODACC est publié par la DILA via une instance Opendatasoft. Pas de clé, pas d'inscription — mais le langage de requête est celui d'Opendatasoft, pas un langage maison, ce qui est le principal point à apprendre.
const BASE = 'https://bodacc-datadila.opendatasoft.com/api/explore/v2.1'
const DATASET = 'annonces-commerciales'
async function bodacc(params) {
const url = new URL(`${BASE}/catalog/datasets/${DATASET}/records`)
for (const [k, v] of Object.entries(params)) url.searchParams.set(k, v)
const res = await fetch(url)
if (!res.ok) throw new Error(`BODACC ${res.status}`)
return res.json()
}
const { results } = await bodacc({ where: 'registre LIKE "552032534"', limit: 5 })
console.log(results.length, 'avis')Les familles d'avis
familleavis est le champ qui indique le type d'événement. Filtrer dessus est indispensable, sinon une immatriculation se mélange avec une liquidation.
| Valeur | Signification |
|---|---|
collective | Procédures collectives — sauvegarde, redressement, liquidation. Le signal de risque. |
creation | Immatriculations — nouvelles inscriptions. |
modification | Changements sur une immatriculation existante. |
radiation | Radiation du registre. |
vente | Ventes et cessions de fonds de commerce. |
depot | Dépôt des comptes annuels — le FAIT du dépôt, pas les comptes eux-mêmes. |
async function insolvabilitePour(siren) {
const { results } = await bodacc({
where: `registre LIKE "${siren}" AND familleavis = "collective"`,
order_by: 'dateparution DESC',
limit: 20,
})
return results.map(r => ({
date: r.dateparution,
tribunal: r.tribunal,
type: r.familleavis_lib,
detail: r.jugement, // souvent une chaîne JSON, voir plus bas
}))
}Deux pièges à connaître
jugementest souvent une chaîne encodée en JSON, pas un objet. Il faut le parser avec prudence — la forme n'est pas stable d'une année sur l'autre.[ND]signifie « non disponible ». C'est une protection de la vie privée appliquée à la source, pas une donnée manquante ni un flux cassé. À traiter comme une valeur légitime, pas comme un motif d'exclure l'avis.
function parseJugement(brut) {
if (!brut) return null
if (typeof brut === 'object') return brut
try { return JSON.parse(brut) } catch { return { texte: String(brut) } }
}
const estRedige = v => typeof v === 'string' && v.includes('[ND]')Ne pas traiter chaque avis collectif comme un échec
C'est l'erreur qui produit de mauvaises décisions de crédit. Les trois principales procédures signifient des choses très différentes :
- Sauvegarde — l'entreprise n'est pas en cessation des paiements. Elle agit par anticipation. Y voir de l'insolvabilité est simplement une erreur.
- Redressement judiciaire — cessation des paiements constatée, avec une perspective de redressement.
- Liquidation judiciaire — le redressement est jugé impossible.
Un simple indicateur booléen « avis d'insolvabilité » écrase ces trois régimes et fausse l'évaluation du risque dans les deux sens.
Là où une couche multi-pays aide
Le BODACC est gratuit et fait autorité, et si la France est votre seul marché, l'interroger directement est tout à fait raisonnable — vous n'avez pas besoin de nous pour cela.
Si vous préférez poser la question à un assistant IA plutôt qu'écrire du code, le serveur MCP donne accès à la même recherche d'insolvabilité.
Ce que vous prenez en charge vous-même en le faisant seul : les familles d'avis et leur dérive historique, les changements de forme du champ jugement, le rattachement au SIREN quand l'avis ne porte pas d'identifiant propre, et une intégration entièrement différente pour chaque autre pays. La même insolvabilité française via Prometiam, normalisée aux côtés de huit autres marchés :
const res = await fetch(
'https://api.prometiam.com/functions/v1/risk-api/insolvency/search?name=' +
encodeURIComponent('exemple sarl') + '&country=FR',
{ headers: { Authorization: `Bearer ${process.env.PROMETIAM_API_KEY}` } })
const { data } = await res.json()
// /insolvency/search est l'endpoint transfrontalier : même format pour FR,
// DE, GB, AT, CH, NO, FI, US, NL, DK, HR et SE. NOTE : /search (sans /insolvency) est
// l'index concursal espagnol et renvoie un ensemble vide avec un avis
// explicatif pour country=FR.Avis corporate uniquement — l'insolvabilité personnelle n'est jamais renvoyée, ce qui est une limite volontaire et non un simple filtre.
Questions fréquentes
L'API BODACC est-elle gratuite ?
Oui. Elle est publiée en open data par la DILA via Opendatasoft, sans clé requise. Le langage de requête est celui d'Opendatasoft, pas un langage maison.
Que signifie familleavis ?
La catégorie de l'avis — collective pour les procédures d'insolvabilité, creation pour les immatriculations, radiation pour les radiations, et ainsi de suite. Filtrer dessus est indispensable, sinon les types d'événements se mélangent.
Que signifie [ND] dans un avis BODACC ?
« Non disponible » — une protection de la vie privée appliquée à la source. C'est une valeur légitime, pas une donnée manquante.
Un avis de sauvegarde est-il une faillite ?
Non. Sauvegarde signifie que l'entreprise n'est pas en cessation des paiements et agit par anticipation. La confondre avec une liquidation judiciaire est une erreur de lecture fréquente et coûteuse.