Documentation de l’API

L’API FailliteRadar fournit les procédures collectives en France sous forme de données structurées : par jour ou par période, filtrables par type de procédure, avec entreprise, tribunal, région et référence de l’affaire. HTTPS et JSON classiques, CSV sur demande.

Dernière mise à jour: 2026-09-29

Demander un accès

Les clés sont attribuées manuellement. Dites-nous brièvement ce que vous souhaitez construire et quel volume vous prévoyez, l’accès est en général actif sous un jour ouvré.

Demander un accès

Introduction

Les tribunaux de commerce publient chaque procédure collective au BODACC, le Bulletin officiel des annonces civiles et commerciales : sauvegarde, redressement judiciaire, liquidation judiciaire, plans et clôtures. Le bulletin est conçu pour lire les annonces une par une. Il n’offre ni filtre par stade de la procédure, ni export par jour, ni lien entre les jugements successifs d’une même entreprise.

L’API comble ce manque. Nous collectons chaque nouvelle annonce du BODACC relative aux procédures collectives, normalisons le stade de la procédure, le tribunal, le département et le SIREN, et la servons en JSON ou en CSV. Assureurs-crédit, sociétés d’affacturage, sociétés de recouvrement, mandataires, cabinets d’avocats et journalistes l’utilisent pour alimenter leurs propres systèmes.

Toutes les requêtes sont adressées à https://failliteradar.fr/api/v1. L’API parle exclusivement HTTPS et répond en JSON ou en CSV. Aucun SDK n’est obligatoire : n’importe quel langage capable d’envoyer une requête HTTP suffit. Les exemples de cette page utilisent curl, Python et Node.

L’accès à l’API fait partie d’un abonnement FailliteRadar avec l’API activée. Les conditions dépendent du volume et du cas d’usage et sont convenues individuellement.

Accès

Il n’existe volontairement aucune inscription en libre-service. Nous activons les clés à la main, car les données de défaillance peuvent contenir des données personnelles et nous voulons savoir à quoi sert une intégration. En pratique, cela représente un court message et un jour ouvré.

Utilisez le formulaire de contact ou écrivez à [email protected] en précisant quatre points :

  • Ce que vous souhaitez construire, en deux ou trois phrases.
  • Les types de procédure et les régions dont vous avez besoin.
  • Le nombre approximatif de requêtes ou d’entreprises vérifiées par mois.
  • Si vous pouvez recevoir des webhooks ou si vous préférez interroger l’API à intervalles réguliers.

Vous recevez ensuite une clé personnelle, immédiatement utilisable sur tous les points de terminaison couverts par votre contrat. Une clé appartient à un marché : une clé émise sur failliteradar.fr fonctionne sur failliteradar.fr, pas sur les domaines des autres pays.

Authentification

Chaque requête transmet la clé dans l’en-tête X-API-Key. L’API accepte aussi la même clé comme jeton bearer dans l’en-tête Authorization, pratique pour les outils qui ne connaissent que cet en-tête.

http Deux en-têtes équivalents
X-API-Key: YOUR_API_KEY

# equivalent
Authorization: Bearer YOUR_API_KEY

Sans clé, l’API répond 401 missing_api_key. Une clé inconnue, désactivée ou dont l’abonnement a expiré renvoie 403 invalid_api_key. Le motif figure toujours dans le champ error de la réponse.

Traitez la clé comme un mot de passe : utilisez-la uniquement côté serveur, jamais dans du code frontend, jamais dans un dépôt public. Si une clé fuite, prévenez-nous : nous la révoquons immédiatement et en émettons une nouvelle.

Démarrage rapide

La requête la plus courante est aussi la plus simple : toutes les annonces d’un jour, éventuellement restreintes à quelques types de procédure. Un seul appel, sans pagination.

bash Annonces d’un jour
curl -H "X-API-Key: $FAILLITE_API_KEY" \
  "https://failliteradar.fr/api/v1/filings?date=2026-09-28&types=liquidation-judiciaire,redressement-judiciaire"

Sans date, l’API renvoie la veille. Une tâche quotidienne devient triviale : une entrée cron le matin récupère les annonces de la veille et les écrit dans votre système.

Pour un rattrapage historique, parcourez la période par fenêtres de 31 jours au maximum :

python Rattrapage par fenêtres de 31 jours (Python)
import os, datetime, requests

API = "https://failliteradar.fr/api/v1"
HEAD = {"X-API-Key": os.environ["FAILLITE_API_KEY"]}

# Backfill a quarter in 31-day windows, then keep running daily.
start, end = datetime.date(2026, 7, 1), datetime.date(2026, 9, 28)
day = start
while day <= end:
    stop = min(day + datetime.timedelta(days=30), end)
    r = requests.get(API + "/filings", headers=HEAD, params={
        "date_from": day.isoformat(),
        "date_to": stop.isoformat(),
        "types": "liquidation-judiciaire,redressement-judiciaire",
    }, timeout=60)
    r.raise_for_status()
    body = r.json()
    if body.get("truncated"):
        raise RuntimeError("narrow the window, 10,000 row ceiling reached")
    for f in body["filings"]:
        print(f["date"], f["case_number"], f["name"])
    day = stop + datetime.timedelta(days=1)

Points de terminaison en un coup d’œil

MéthodeCheminUsage
GET/v1/filingsAnnonces d’un jour ou d’une période, filtrables par type de procédure, en JSON ou CSV. Disponible aujourd’hui.
GET/v1/typesTypes de procédure de ce marché avec clé, codes et alias.
GET/v1/companiesRecherche des entreprises apparaissant dans au moins une annonce.
GET/v1/companies/{number}Profil d’une entreprise avec son statut actuel de procédure collective.
GET/v1/companies/{number}/filingsToutes les annonces d’une entreprise par ordre chronologique.
GET/v1/companies/{number}/financialsChiffres clés publiés, issus des comptes.
GET/v1/practitionersRecherche des mandataires et administrateurs désignés.
GET/v1/practitioners/{id}Un mandataire avec ses procédures en cours.
POST/v1/checkVérification de jusqu’à 500 clients ou fournisseurs en un appel.
GET/v1/watchlistListe des entreprises sous surveillance.
POST/v1/watchlistAjout d’une entreprise à la liste de surveillance.
DELETE/v1/watchlist/{id}Retrait d’une entreprise de la liste de surveillance.
POST/v1/webhooksEnregistrement d’un point de terminaison pour les notifications push.
GET/v1/statsComptages agrégés par jour, mois, région ou type de procédure.
GET/v1/regionsValeurs valides pour le filtre de région.
GET/v1/accountClé, périmètre du contrat, limites et consommation actuelle.

Les chemins sont relatifs à https://failliteradar.fr/api. L’adresse complète du premier point de terminaison est donc https://failliteradar.fr/api/v1/filings. Le point de terminaison des annonces est en production ; les autres suivent les mêmes conventions de clés, d’erreurs et de limites et sont activés par contrat.

Récupérer les annonces

GET /v1/filings est le cœur de l’API. Il renvoie toutes les annonces dont la date tombe dans la période demandée, de la plus récente à la plus ancienne.

ParamètreFormatDescription
dateYYYY-MM-DDUn jour unique. Prioritaire sur date_from et date_to.
date_fromYYYY-MM-DDDébut d’une période, inclus. Si seul date_from est fourni, la période se limite à ce jour.
date_toYYYY-MM-DDFin d’une période, incluse. Si seul date_to est fourni, la période se limite à ce jour. Au maximum 31 jours, bornes comprises. Si date_from est postérieure à date_to, l’API répond 400 bad_range au lieu de deviner.
typescsvListe de types de procédure séparés par des virgules : clé de groupe, alias ou code brut, sans tenir compte de la casse. À omettre pour tous les types. Voir la section suivante.
formatjson | csvjson (par défaut) ou csv.

Sans date, date_from ni date_to, la période est la veille.

Réponse

ChampTypeDescription
date_fromstringDébut effectif de la période.
date_tostringFin effective de la période.
typesstring[]Les clés de groupe servies, après résolution des alias et des codes.
countintegerNombre d’annonces dans le tableau.
filingsobject[]Les annonces, voir l’objet annonce.
truncatedbooleanPrésent uniquement, et alors à true, si la réponse a atteint le plafond de 10 000 lignes. Réduisez la période ou les types et relancez la requête.
json Réponse
{
  "date_from": "2026-09-28",
  "date_to": "2026-09-28",
  "types": ["redressement-judiciaire", "liquidation-judiciaire"],
  "count": 57,
  "filings": [
    {
      "date": "2026-09-28",
      "type": "Liquidation judiciaire",
      "type_code": "liquidation-judiciaire",
      "name": "EXEMPLE BÂTIMENT SAS",
      "address": "Lyon, 69007",
      "court": "Tribunal de commerce de Lyon",
      "case_number": "A202601870452",
      "region": "69",
      "notice": "Avis initial Jugement d'ouverture de liquidation judiciaire Date de cessation des paiements : 15 août 2026. Liquidateur : SELARL Exemple Mandataires."
    }
  ]
}

Une période revient toujours en un seul bloc : ce point de terminaison n’a pas de pagination. Les lignes sont triées par date, de la plus récente à la plus ancienne, et au sein d’un jour par identifiant interne, du plus récent au plus ancien. La même requête en Node, filtrée côté client sur une seule région :

javascript Node.js
const url = new URL("https://failliteradar.fr/api/v1/filings");
url.searchParams.set("date_from", "2026-09-01");
url.searchParams.set("date_to", "2026-09-28");
url.searchParams.set("types", "liquidation-judiciaire");

const res = await fetch(url, {
  headers: { "X-API-Key": process.env.FAILLITE_API_KEY },
});
if (!res.ok) throw new Error((await res.json()).error);

const { count, filings } = await res.json();
const local = filings.filter((f) => f.region === "69");
console.log(count, "filings,", local.length, "in 69");

Types de procédure

Les annonces du BODACC relatives aux procédures collectives se répartissent en six groupes. Le paramètre types accepte la clé du groupe, n’importe quel alias ou le code brut, sans tenir compte de la casse, séparés par des virgules. liquidation,redressement est aussi valide que les clés complètes.

CléCodeSignification
sauvegardesauvegardeProcédure de sauvegarde
Alias: safeguard
redressement-judiciaireredressement-judiciaireRedressement judiciaire
Alias: redressement, recovery
liquidation-judiciaireliquidation-judiciaireLiquidation judiciaire
Alias: liquidation
planplanPlan (cession / continuation)
clotureclotureClôture
Alias: closure
autreautreAutre
Alias: other

Le champ type contient le nom français du groupe, type_code la clé du groupe. Une valeur inconnue dans types renvoie 400 bad_type accompagnée de allowed_types, la liste complète des jetons acceptés. Agents et scripts devraient lire cette liste plutôt que deviner.

L’objet annonce

ChampTypeDescription
datestringDate de l’annonce, YYYY-MM-DD : l’événement daté le plus récent de l’affaire qui n’est pas dans le futur. Le filtre de date agit sur ce champ.
typestringNom lisible du type de procédure.
type_codestringClé machine du type de procédure. Utilisez ce champ pour vos traitements, il ne change pas.
namestringNom du débiteur tel que publié, forme juridique comprise (SAS, SARL, EURL...).
addressstring | nullVille et code postal du siège, par exemple Lyon, 69007.
courtstring | nullTribunal de commerce ou tribunal judiciaire qui a rendu le jugement.
case_numberstringIdentifiant de l’annonce BODACC. Unique par annonce.
regionstring | nullNuméro de département, soit les deux premiers chiffres du code postal, par exemple 69, 75, 2A.
noticestring | nullType d’annonce, nature du jugement et texte complémentaire tel que publié, par exemple la date de cessation des paiements et le mandataire désigné.

Une ligne correspond à une annonce BODACC. Une même entreprise en génère plusieurs au fil d’une procédure : ouverture du redressement judiciaire, conversion en liquidation, plan, clôture pour insuffisance d’actif. Regroupez par SIREN pour suivre la procédure d’une entreprise ; chaque annonce possède son propre case_number.

Tous les champs texte sont en UTF-8. Les noms sont transmis tels que la source les publie. Les champs que la source ne fournit pas valent null, jamais une supposition vide. Les affaires sans date exploitable ne peuvent pas être rattachées à un jour et ne sont pas servies. Votre client doit ignorer les champs qu’il ne connaît pas, car de nouveaux champs peuvent être ajoutés.

Export CSV

Avec format=csv, l’API renvoie les mêmes lignes sous forme de fichier CSV : ligne d’en-tête, virgule comme séparateur, UTF-8, Content-Type: text/csv; charset=utf-8. Le fichier est livré avec Content-Disposition: attachment et un nom de fichier contenant la période.

bash Télécharger une période en CSV
curl -H "X-API-Key: $FAILLITE_API_KEY" \
  -OJ "https://failliteradar.fr/api/v1/filings?date_from=2026-09-01&date_to=2026-09-28&format=csv"

# saved as filings_2026-09-01_2026-09-28.csv
csv Premières lignes
date,type,type_code,name,address,court,case_number,region,notice
2026-09-28,Liquidation judiciaire,liquidation-judiciaire,EXEMPLE BÂTIMENT SAS,"Lyon, 69007",Tribunal de commerce de Lyon,A202601870452,69,"Avis initial Jugement d'ouverture de liquidation judiciaire Date de cessation des paiements : 15 août 2026. Liquidateur : SELARL Exemple Mandataires."

Les colonnes correspondent exactement aux champs de l’objet annonce, dans le même ordre. Les champs contenant des virgules sont entourés de guillemets. Excel ouvre correctement le fichier via « Données, À partir d’un fichier texte/CSV » avec l’encodage UTF-8 ; un simple double-clic peut altérer les caractères accentués selon les paramètres du système.

Entreprises

Les annonces portent sur des affaires, mais la plupart des cas d’usage portent sur des entreprises. GET /v1/companies recherche toutes les entreprises figurant dans au moins une annonce, par nom, numéro de registre, ville, région ou statut.

bash Recherche par nom et région
curl -G -H "X-API-Key: $FAILLITE_API_KEY" \
  https://failliteradar.fr/api/v1/companies \
  --data-urlencode "q=EXEMPLE BÂTIMENT SAS" \
  -d region=69 -d limit=20

Les points de terminaison de liste renvoient des pages de 100 entrées au maximum, avec un curseur :

json Enveloppe de liste
{
  "object": "list",
  "data": [ { "company_number": "912345678", "object": "company", "...": "..." } ],
  "has_more": true,
  "next_cursor": "eyJpZCI6MTQ4MzkyMDV9"
}

Tant que has_more vaut true, transmettez next_cursor comme paramètre cursor de la requête suivante. Un curseur reste valide 24 heures.

L’objet entreprise

json GET /v1/companies/912345678
{
  "company_number": "912345678",
  "object": "company",
  "name": "EXEMPLE BÂTIMENT SAS",
  "status": "liquidation",
  "address": "Lyon, 69007",
  "region": "69",
  "industry": "Construction",
  "first_filing": "2026-09-01",
  "last_filing": "2026-09-28",
  "filings_count": 2,
  "url": "https://failliteradar.fr/company/912345678"
}
ChampTypeDescription
company_numberstringSIREN, neuf chiffres, par exemple 912345678.
namestringNom selon l’annonce la plus récente.
statusstringStade actuel, déduit de l’annonce la plus récente. Un résumé pratique, pas une appréciation juridique.
addressstring | nullAdresse du siège.
regionstring | nullRégion, mêmes valeurs que dans les annonces.
industrystring | nullSecteur selon notre classification, s’il peut être déterminé.
first_filingstringDate de la première annonce connue.
last_filingstringDate de l’annonce la plus récente.
filings_countintegerNombre d’annonces rattachées à cette entreprise.
urlstringPage publique de l’entreprise sur failliteradar.fr.

GET /v1/companies/{number}/filings renvoie toutes les annonces d’une entreprise, de la plus ancienne à la plus récente, dans le même format que /v1/filings. Vous obtenez ainsi l’historique complet sans avoir à chercher vous-même par nom.

Chiffres financiers

Pour les entreprises françaises qui déposent leurs comptes annuels de manière publique, GET /v1/companies/{number}/financials renvoie les chiffres clés par exercice, du plus récent au plus ancien, montants en euros entiers.

json Réponse
{
  "company_number": "912345678",
  "currency": "EUR",
  "statements": [
    {
      "period_end": "2025-03-31",
      "total_assets": 1840000,
      "net_assets": -212000,
      "current_liabilities": 1395000,
      "cash": 18400,
      "employees": 23
    },
    {
      "period_end": "2024-03-31",
      "total_assets": 2105000,
      "net_assets": 164000,
      "current_liabilities": 1210000,
      "cash": 96100,
      "employees": 31
    }
  ]
}

De nombreuses petites entreprises optent pour la confidentialité de leurs comptes. Pour elles, le point de terminaison renvoie une liste statements vide, jamais une estimation. Les champs absents d’un dépôt valent null.

Mandataires et administrateurs

Les jugements désignent les mandataires judiciaires et administrateurs judiciaires nommés par le tribunal. GET /v1/practitioners les recherche par nom, étude ou ville ; GET /v1/practitioners/{id} renvoie l’un d’eux avec ses procédures en cours.

bash Recherche par ville
curl -G -H "X-API-Key: $FAILLITE_API_KEY" \
  https://failliteradar.fr/api/v1/practitioners \
  -d city=Lyon -d limit=10
json L’objet mandataire
{
  "id": "prc_7Hs3Lq9Vd",
  "object": "practitioner",
  "name": "SELARL Exemple Mandataires",
  "firm": "SELARL Exemple Mandataires",
  "city": "Lyon",
  "active_cases": 41,
  "total_cases": 318,
  "last_appointment": "2026-09-28",
  "url": "https://failliteradar.fr/practitioners/"
}

Usage typique : un créancier veut savoir à qui adresser sa déclaration de créance. Le profil de l’entreprise nomme le mandataire désigné, le point de terminaison des mandataires ajoute l’adresse et la charge de dossiers.

Vérification de contreparties

POST /v1/check vérifie une liste entière de clients ou de fournisseurs en un seul appel. Vous envoyez votre propre référence et ce que vous savez de l’entreprise : nom, ville ou numéro de registre. L’API renvoie, pour chaque entrée, une correspondance et le statut de procédure collective.

bash Vérifier trois clients
curl https://failliteradar.fr/api/v1/check \
  -H "X-API-Key: $FAILLITE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "since": "2024-01-01",
    "items": [
      { "ref": "D-10023", "name": "EXEMPLE BÂTIMENT SAS", "city": "Lyon" },
      { "ref": "D-10024", "company_number": "823456789" },
      { "ref": "D-10025", "name": "BOULANGERIE DU PORT SARL" }
    ]
  }' 
json Réponse
{
  "checked": 3,
  "hits": 1,
  "results": [
    {
      "ref": "D-10023",
      "match": "exact",
      "company_number": "912345678",
      "status": "liquidation",
      "last_filing": { "date": "2026-09-28", "type_code": "liquidation-judiciaire", "case_number": "A202601870452" }
    },
    { "ref": "D-10024", "match": "none" },
    { "ref": "D-10025", "match": "ambiguous", "candidates": 2 }
  ]
}
CorrespondanceSignification
exactLe numéro de registre correspond, ou le nom et la ville correspondent sans ambiguïté.
probableLe nom correspond après normalisation (forme juridique, orthographe), la ville est plausible. À vérifier avant d’agir.
ambiguousPlusieurs entreprises conviennent. La réponse contient le nombre de candidats ; ajoutez la ville ou le numéro de registre.
noneAucune annonce sur la période. C’est une bonne nouvelle, mais pas une notation de crédit.

Un appel accepte jusqu’à 500 entrées. since limite la recherche aux annonces à partir de cette date, par défaut trois ans en arrière. Pour les portefeuilles plus importants, nous recommandons la liste de surveillance : vérifier une fois, puis ne recevoir que les changements.

Liste de surveillance

La liste de surveillance transforme une vérification ponctuelle en suivi continu. Vous ajoutez des entreprises et, dès qu’une nouvelle annonce apparaît pour l’une d’elles, vous recevez un événement watchlist.match par webhook.

bash Ajouter une entreprise
curl https://failliteradar.fr/api/v1/watchlist \
  -H "X-API-Key: $FAILLITE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "company_number": "912345678", "ref": "D-10023" }' 
json Réponse
{
  "id": "wl_Q7m2Lx9Pd",
  "object": "watchlist_entry",
  "ref": "D-10023",
  "company_number": "912345678",
  "name": "EXEMPLE BÂTIMENT SAS",
  "created_at": "2026-09-29T08:12:44Z",
  "last_match": null
}

Les entreprises qui n’ont jamais fait l’objet d’une procédure peuvent aussi être surveillées. L’entrée attend alors la première annonce, ce qui est précisément le but. Votre propre référence dans ref revient dans chaque événement, ce qui vous permet de rattacher une alerte à votre numéro de client sans recherche supplémentaire.

GET /v1/watchlist liste toutes les entrées avec la date de la dernière correspondance, DELETE /v1/watchlist/{id} en supprime une. La même liste est visible dans votre tableau de bord FailliteRadar ; les modifications sont synchronisées dans les deux sens.

Webhooks

Plutôt que d’interroger l’API, vous pouvez faire pousser les événements vers vous. Enregistrez un point de terminaison HTTPS et choisissez les événements, avec en option un filtre sur les types de procédure et les régions.

bash Enregistrer un point de terminaison
curl https://failliteradar.fr/api/v1/webhooks \
  -H "X-API-Key: $FAILLITE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/hooks/insolvency",
    "events": ["watchlist.match", "filing.published"],
    "filter": { "types": ["liquidation-judiciaire"], "region": ["69", "75"] }
  }' 
ÉvénementQuand
filing.publishedUne nouvelle annonce correspond à votre filtre. Arrive peu après l’ingestion quotidienne, en général le matin.
watchlist.matchUne nouvelle annonce concerne une entreprise de votre liste de surveillance.
stats.daily_readyLes chiffres quotidiens de la veille sont complets.
json Charge utile de l’événement
{
  "id": "evt_5Tg8Nw2Ka",
  "type": "watchlist.match",
  "created_at": "2026-09-29T06:05:11Z",
  "data": {
    "watchlist_entry": { "id": "wl_Q7m2Lx9Pd", "ref": "D-10023" },
    "filing": {
      "date": "2026-09-28",
      "type": "Liquidation judiciaire",
      "type_code": "liquidation-judiciaire",
      "name": "EXEMPLE BÂTIMENT SAS",
      "court": "Tribunal de commerce de Lyon",
      "case_number": "A202601870452",
      "region": "69"
    }
  }
}

Chaque appel est signé. L’en-tête X-Webhook-Signature contient un horodatage et un HMAC-SHA256 calculé sur l’horodatage et le corps brut, à l’aide du secret que vous recevez lors de l’enregistrement.

http En-tête de signature
X-Webhook-Signature: t=1790661911,v1=7f2c1d9a4b6e8035c1f7a29d4e5b0c8371a6d2f94e8b3c07a15d9e2f6b4c8a01
python Vérifier la signature (Python, Flask)
import hashlib, hmac, os, time
from flask import Flask, request, abort

app = Flask(__name__)
SECRET = os.environ["WEBHOOK_SECRET"].encode()

@app.post("/hooks/insolvency")
def hook():
    header = request.headers.get("X-Webhook-Signature", "")
    parts = dict(p.split("=", 1) for p in header.split(",") if "=" in p)
    signed = parts.get("t", "") + "." + request.get_data(as_text=True)
    expected = hmac.new(SECRET, signed.encode(), hashlib.sha256).hexdigest()
    if not hmac.compare_digest(expected, parts.get("v1", "")):
        abort(400)
    if abs(time.time() - int(parts["t"])) > 300:
        abort(400)  # replay protection

    event = request.get_json()
    if event["type"] == "watchlist.match":
        ref = event["data"]["watchlist_entry"]["ref"]
        print("Customer", ref, "has a new insolvency filing")
    return "", 204

Répondez avec un statut 2xx en moins de dix secondes. En cas d’échec, nous réessayons à intervalles croissants sur 24 heures, huit fois au total. Les événements peuvent arriver en double : utilisez l’id de l’événement pour écarter les doublons.

Statistiques

GET /v1/stats renvoie des comptages plutôt que des annonces individuelles. C’est le point de terminaison pour les tableaux de bord, les rapports et le journalisme, car il évite de télécharger et de compter des milliers de lignes.

bash Annonces par mois et par région
curl -G -H "X-API-Key: $FAILLITE_API_KEY" \
  https://failliteradar.fr/api/v1/stats \
  -d date_from=2026-07-01 -d date_to=2026-09-28 \
  -d group_by=month,region -d types=liquidation-judiciaire
json Réponse
{
  "date_from": "2026-07-01",
  "date_to": "2026-09-28",
  "group_by": ["month", "region"],
  "rows": [
    { "month": "2026-07", "region": "69",  "count": 118 },
    { "month": "2026-07", "region": "75", "count": 342 },
    { "month": "2026-08", "region": "69",  "count": 104 }
  ],
  "total": 3187
}

group_by accepte day, week, month, region, type et industry, jusqu’à deux à la fois. types fonctionne comme sur /v1/filings. Contrairement aux annonces, la période peut couvrir jusqu’à 24 mois.

Nos chiffres comptent des annonces. Ils devancent de plusieurs semaines les statistiques mensuelles des défaillances de la Banque de France, mais ne leur sont pas identiques, car la Banque de France compte les ouvertures de procédure par entreprise.

Données de référence

GET /v1/types renvoie les types de procédure de ce marché exactement comme dans le tableau ci-dessus : clé, libellé, codes et alias. GET /v1/regions renvoie les valeurs de région valides, dans l’orthographe utilisée dans les annonces. Les deux changent rarement et peuvent être mis en cache pendant un jour.

GET /v1/account affiche le périmètre de votre contrat, les limites actives et la consommation du mois en cours.

Erreurs

Les erreurs sont renvoyées en JSON avec un statut HTTP correspondant. Le champ error est lisible par machine et stable, message explique le problème à un humain et peut changer.

json Réponse d’erreur
{
  "error": "range_too_large",
  "message": "Range exceeds the 31-day maximum per request."
}
errorHTTPSignification
bad_date400Une date n’est pas au format YYYY-MM-DD.
bad_range400date_from est postérieure à date_to.
range_too_large400Période supérieure à 31 jours.
bad_format400format n’est ni json ni csv.
bad_type400Valeur inconnue dans types. La réponse contient en plus allowed_types.
invalid_request400Autre paramètre invalide ou corps JSON mal formé.
missing_api_key401Aucune clé envoyée.
invalid_api_key403Clé inconnue, désactivée, émise pour un autre marché, ou abonnement expiré.
insufficient_scope403La clé n’est pas activée pour ce point de terminaison.
not_found404Entreprise, mandataire ou entrée de liste de surveillance inconnu.
rate_limited429Trop de requêtes, voir les limites.
server_error500Erreur de notre côté. Réessayez après une courte attente et prévenez-nous si elle persiste.
country_not_enabled501L’API de données n’est pas encore activée pour ce marché.
json bad_type avec les valeurs autorisées
{
  "error": "bad_type",
  "message": "Unknown filing type(s): liquidaton.",
  "allowed_types": ["sauvegarde", "safeguard", "redressement-judiciaire", "redressement", "recovery", "liquidation-judiciaire", "liquidation", "..."]
}
json Marché non activé
{
  "error": "country_not_enabled",
  "message": "The data API is not available for France yet."
}

Limites

ValeurLimite
120 / minRequêtes par minute et par clé. Plus élevé sur demande.
31Nombre maximal de jours par requête sur /v1/filings, bornes comprises. /v1/stats autorise 24 mois.
10000Nombre maximal de lignes par réponse sur /v1/filings. Au-delà, la réponse porte truncated: true.
100Nombre maximal d’entrées par page sur les points de terminaison de liste.
500Nombre maximal d’entrées par appel sur /v1/check.
10000Entreprises surveillées par compte dans le contrat standard.
5Points de terminaison webhook enregistrés par compte.

Les réponses portent dans leurs en-têtes l’état actuel de la limitation de débit. Si vous la dépassez, vous recevez 429 rate_limited et un en-tête Retry-After en secondes.

http En-têtes de limitation de débit
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 117
X-RateLimit-Reset: 1790661960
Retry-After: 12

Gestion des versions

La version majeure fait partie du chemin (/v1/). Au sein d’une version majeure, nous n’apportons que des changements additifs : nouveaux points de terminaison, nouveaux paramètres facultatifs, nouveaux champs dans les réponses. Votre client doit donc ignorer les champs inconnus plutôt que d’échouer.

Les changements susceptibles de casser des intégrations existantes n’interviennent que dans une nouvelle version majeure. La version précédente reste alors en service au moins douze mois, et nous informons au préalable chaque titulaire de clé par e-mail. La date de version figure dans l’en-tête de réponse X-API-Version.

http En-tête de réponse
X-API-Version: 2026-09-01

Sources de données et actualité

La seule source des annonces est le BODACC, publié par la DILA sous l’autorité du Premier ministre. Nous n’ajoutons aucune annonce issue d’autres sources et ne modifions pas leur contenu. Les identifiants d’entreprise sont enrichis à partir du répertoire national des entreprises (SIRENE).

Le BODACC paraît les jours ouvrés. Les nouvelles annonces sont en général servies dès le lendemain matin. La date du jugement précède souvent de plusieurs jours la date de publication ; le champ date correspond à l’événement daté le plus récent de l’annonce qui n’est pas dans le futur.

Le rapprochement des annonces avec les entreprises est automatisé. Avec un numéro de registre, il est fiable ; sans numéro (noms très courants, entrepreneurs individuels), des erreurs sont possibles. C’est pourquoi la vérification de contreparties distingue exact et probable.

Protection des données et usages autorisés

Les annonces du BODACC sont publiques, mais elles peuvent contenir des données personnelles, en particulier pour les entrepreneurs individuels et les micro-entrepreneurs. Leur utilisation est soumise au RGPD et aux recommandations de la CNIL sur la réutilisation des données publiques.

Reportez les corrections et les suppressions dans vos propres systèmes. Une comparaison régulière sur la période que vous conservez suffit : ce que l’API ne renvoie plus ne doit plus figurer non plus dans votre base de données.

Usages autorisés : risque de crédit, gestion des créances, vérification des fournisseurs, conseil juridique, recherche et journalisme. Usages interdits : publier des annonces concernant des personnes physiques en dehors de leur contexte professionnel, revendre les données brutes, et prendre des décisions automatisées concernant des personnes physiques fondées uniquement sur ces données. Un contrat de sous-traitance des données personnelles est disponible.

Assistance

Questions sur l’intégration, limites plus élevées ou champs supplémentaires : [email protected] ou le formulaire de contact. Pour les problèmes techniques, indiquez l’heure de la requête et les premiers caractères de votre clé, nous retrouvons alors immédiatement la requête dans les journaux.

Si vous souhaitez connecter des agents d’IA plutôt qu’écrire des clients HTTP, les mêmes données sont disponibles via un serveur Model Context Protocol, documenté sur la page Serveur MCP. Les deux partagent clés, limites et contrat.

Demander un accès

Les clés sont attribuées manuellement. Dites-nous brièvement ce que vous souhaitez construire et quel volume vous prévoyez, l’accès est en général actif sous un jour ouvré.

Demander un accès