Search French companies: financials, directors, ownership, M&A and insolvency events.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Création d'une recherche sauvegardée pour l'utilisateur, visible dans l'app Insourcia (page /news - Veille). Utiliser cet outil quand l'utilisateur veut SAUVEGARDER une recherche pour la suivre dans le temps (veille marché, suivi d'un secteur, pipeline de cibles) - pas pour une recherche ponctuelle (utiliser search_companies). Fonctionnement : - Les filtres acceptés sont les MÊMES que search_companies (query texte libre + filtres geographie/secteur/financier/dirigeants + advanced_filters JSON). Au moins un critère est requis. - Idempotent : si une recherche sauvegardée ACTIVE du même nom existe déjà pour l'utilisateur, elle est renvoyée telle quelle (already_exists=true), sans doublon et sans modifier son alerte. - Alerte quotidienne ACTIVE PAR DÉFAUT (enable_alert=false pour s'en passer) : elle notifie l'utilisateur (page /news + email) quand de NOUVELLES sociétés entrent dans les critères de la recherche. À la creation, une notification initiale récapitule les 90 derniers jours ; ensuite seules les entrées futures déclenchent. Réponse : { id, name, url (page /news), result_count (nombre de sociétés matchant actuellement, null si indisponible), filters (filtres normalisés stockés, absent sur le hit idempotent), already_exists, alert_enabled }.
Nom de la recherche sauvegardée, court et parlant. Ex: "SaaS Bretagne CA > 5M". 1-255 caractères.
Nom, SIREN, mot-clé activite, ou "*" pour rechercher uniquement par filtres
Notification quotidienne des nouvelles sociétés qui correspondent. Par défaut : true ici, false via l'API REST.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Tool list last changed Oct 26, 2026.
Création d'une recherche sauvegardée pour l'utilisateur, visible dans l'app Insourcia (page /news - Veille). Utiliser cet outil quand l'utilisateur veut SAUVEGARDER une recherche pour la suivre dans le temps (veille marché, suivi d'un secteur, pipeline de cibles) - pas pour une recherche ponctuelle (utiliser search_companies). Fonctionnement : - Les filtres acceptés sont les MÊMES que search_companies (query texte libre + filtres geographie/secteur/financier/dirigeants + advanced_filters JSON). Au moins un critère est requis. - Idempotent : si une recherche sauvegardée ACTIVE du même nom existe déjà pour l'utilisateur, elle est renvoyée telle quelle (already_exists=true), sans doublon et sans modifier son alerte. - Alerte quotidienne ACTIVE PAR DÉFAUT (enable_alert=false pour s'en passer) : elle notifie l'utilisateur (page /news + email) quand de NOUVELLES sociétés entrent dans les critères de la recherche. À la creation, une notification initiale récapitule les 90 derniers jours ; ensuite seules les entrées futures déclenchent. Réponse : { id, name, url (page /news), result_count (nombre de sociétés matchant actuellement, null si indisponible), filters (filtres normalisés stockés, absent sur le hit idempotent), already_exists, alert_enabled }.
| Argument | Type | Description |
|---|---|---|
| name* | string | Nom de la recherche sauvegardée, court et parlant. Ex: "SaaS Bretagne CA > 5M". 1-255 caractères. |
| query | string | Nom, SIREN, mot-clé activite, ou "*" pour rechercher uniquement par filtres |
| ville | string | |
| ca_max | number | |
| ca_min | number | |
| radius | integer | |
| region | string | |
| statut | string | |
| code_naf | string | |
| is_cotee | boolean | |
| latitude | number | |
| longitude | number | |
| cagr_ca_max | number | |
| cagr_ca_min | number | |
| code_postal | string | |
| departement | string | |
| has_website | boolean | |
| credit_grade | array | |
| effectif_max | number | |
| effectif_min | number | |
| enable_alert | boolean | Notification quotidienne des nouvelles sociétés qui correspondent. Par défaut : true ici, false via l'API REST. |
| filter_annee | number | |
| credit_scored | boolean | |
| dirigeant_nom | string | |
| plan_en_cours | boolean | |
| tresorerie_max | number | |
| tresorerie_min | number | |
| advanced_filters | any | |
| dirigeant_prenom | string | |
| resultat_net_max | number | |
| resultat_net_min | number | |
| age_dirigeant_max | number | |
| age_dirigeant_min | number | |
| date_creation_max | string | |
| date_creation_min | string | |
| dirigeant_naissance | string | |
| inclure_estimations | boolean | |
| procedure_collective | string | |
| estimation_confiance_min | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Nom de la recherche sauvegardée, court et parlant. Ex: \"SaaS Bretagne CA > 5M\". 1-255 caractères."
},
"query": {
"type": "string",
"description": "Nom, SIREN, mot-clé activite, ou \"*\" pour rechercher uniquement par filtres"
},
"ville": {
"type": "string"
},
"ca_max": {
"type": "number"
},
"ca_min": {
"type": "number"
},
"radius": {
"type": "integer",
"maximum": 200,
"minimum": 1
},
"region": {
"type": "string"
},
"statut": {
"enum": [
"ACTIVE",
"DISSOLVED"
],
"type": "string"
},
"code_naf": {
"type": "string"
},
"is_cotee": {
"type": "boolean"
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"cagr_ca_max": {
"type": "number"
},
"cagr_ca_min": {
"type": "number"
},
"code_postal": {
"type": "string"
},
"departement": {
"type": "string"
},
"has_website": {
"type": "boolean"
},
"credit_grade": {
"type": "array",
"items": {
"enum": [
"AAA",
"AA",
"A",
"BBB",
"BB",
"B",
"CCC",
"D"
],
"type": "string"
}
},
"effectif_max": {
"type": "number"
},
"effectif_min": {
"type": "number"
},
"enable_alert": {
"type": "boolean",
"description": "Notification quotidienne des nouvelles sociétés qui correspondent. Par défaut : true ici, false via l'API REST."
},
"filter_annee": {
"type": "number"
},
"credit_scored": {
"type": "boolean"
},
"dirigeant_nom": {
"type": "string"
},
"plan_en_cours": {
"type": "boolean"
},
"tresorerie_max": {
"type": "number"
},
"tresorerie_min": {
"type": "number"
},
"advanced_filters": {
"anyOf": [
{
"type": "object",
"properties": {
"ca_max": {
"type": "number",
"description": "CA maximum (euros)"
},
"a_fonds": {
"type": "boolean",
"description": "true = détenue par un fonds d'investissement PE/VC"
},
"bfr_max": {
"type": "number"
},
"bfr_min": {
"type": "number"
},
"est_ess": {
"type": "boolean",
"description": "true = économie sociale et solidaire"
},
"a_fusionne": {
"type": "boolean",
"description": "true = a participé à une fusion"
},
"ebitda_max": {
"type": "number",
"description": "EBITDA maximum"
},
"ebitda_min": {
"type": "number",
"description": "EBITDA minimum"
},
"cagr_ca_max": {
"type": "number"
},
"capital_max": {
"type": "number",
"description": "Capital social maximum"
},
"capital_min": {
"type": "number",
"description": "Capital social minimum"
},
"effectif_max": {
"type": "number",
"description": "Tranche INSEE maximum"
},
"data_freshness": {
"type": "number",
"description": "Fraîcheur des bilans en années. Ex: 2 pour bilans < 2 ans"
},
"dividendes_max": {
"type": "number"
},
"dividendes_min": {
"type": "number"
},
"nb_brevets_min": {
"type": "number",
"description": "\"sociétés avec brevets\" -> 1"
},
"nb_marches_max": {
"type": "number"
},
"nb_marches_min": {
"type": "number",
"description": "\"sociétés avec marchés publics\" -> 1"
},
"tresorerie_max": {
"type": "number"
},
"cagr_rn_1an_max": {
"type": "number"
},
"cagr_rn_1an_min": {
"type": "number"
},
"dette_nette_max": {
"type": "number"
},
"dette_nette_min": {
"type": "number"
},
"marge_brute_max": {
"type": "number"
},
"marge_brute_min": {
"type": "number"
},
"marge_nette_max": {
"type": "number"
},
"marge_nette_min": {
"type": "number"
},
"nb_cessions_max": {
"type": "number"
},
"nb_cessions_min": {
"type": "number"
},
"total_actif_max": {
"type": "number"
},
"total_actif_min": {
"type": "number"
},
"cagr_ca_2ans_max": {
"type": "number"
},
"cagr_ca_2ans_min": {
"type": "number"
},
"cagr_ca_3ans_max": {
"type": "number"
},
"cagr_ca_3ans_min": {
"type": "number"
},
"cagr_ca_5ans_max": {
"type": "number"
},
"cagr_ca_5ans_min": {
"type": "number"
},
"cagr_rn_2ans_max": {
"type": "number"
},
"cagr_rn_2ans_min": {
"type": "number"
},
"cagr_rn_3ans_max": {
"type": "number"
},
"cagr_rn_3ans_min": {
"type": "number"
},
"cagr_rn_5ans_max": {
"type": "number"
},
"cagr_rn_5ans_min": {
"type": "number"
},
"marge_ebitda_max": {
"type": "number"
},
"marge_ebitda_min": {
"type": "number"
},
"resultat_net_max": {
"type": "number",
"description": "Résultat net maximum"
},
"age_dirigeant_min": {
"type": "number",
"description": "Âge minimum (années)"
},
"date_creation_max": {
"type": "string"
},
"civilite_dirigeant": {
"enum": [
"homme",
"femme",
"M",
"Mme",
"H",
"F"
],
"type": "string",
"description": "Genre du dirigeant. Au moins un dirigeant doit correspondre."
},
"comptes_consolides": {
"type": "boolean",
"description": "true = consolidés, false = sociaux uniquement"
},
"date_radiation_max": {
"type": "string"
},
"date_radiation_min": {
"type": "string"
},
"effectif_moyen_max": {
"type": "number"
},
"effectif_moyen_min": {
"type": "number",
"description": "Effectif exact des bilans, minimum"
},
"nb_subventions_min": {
"type": "number",
"description": "\"sociétés subventionnées\" -> 1"
},
"valeur_ajoutee_max": {
"type": "number"
},
"valeur_ajoutee_min": {
"type": "number"
},
"cagr_ebitda_1an_max": {
"type": "number"
},
"cagr_ebitda_1an_min": {
"type": "number"
},
"categorie_juridique": {
"type": "string",
"description": "Code INSEE de catégorie juridique, plusieurs séparés par virgule. Ex: \"5710\" SAS, \"5720\" SASU, \"5599\" SA, \"5499\" SARL"
},
"est_societe_mission": {
"type": "boolean"
},
"cagr_ebitda_2ans_max": {
"type": "number"
},
"cagr_ebitda_2ans_min": {
"type": "number"
},
"cagr_ebitda_3ans_max": {
"type": "number"
},
"cagr_ebitda_3ans_min": {
"type": "number"
},
"cagr_ebitda_5ans_max": {
"type": "number"
},
"cagr_ebitda_5ans_min": {
"type": "number"
},
"capitaux_propres_max": {
"type": "number"
},
"capitaux_propres_min": {
"type": "number"
},
"comptes_confidentiels": {
"type": "boolean",
"description": "true = comptes confidentiels, false = comptes publiés"
},
"ratio_endettement_max": {
"type": "number"
},
"ratio_endettement_min": {
"type": "number"
},
"dettes_financieres_max": {
"type": "number"
},
"dettes_financieres_min": {
"type": "number"
},
"dettes_fournisseurs_max": {
"type": "number"
},
"dettes_fournisseurs_min": {
"type": "number"
},
"cac_date_debut_mandat_max": {
"type": "string"
},
"cac_date_debut_mandat_min": {
"type": "string",
"description": "Date de début de mandat du commissaire aux comptes (titulaire ou suppléant), minimum"
},
"derniere_cession_date_max": {
"type": "string"
},
"derniere_cession_date_min": {
"type": "string"
},
"resultat_exploitation_max": {
"type": "number"
},
"resultat_exploitation_min": {
"type": "number"
},
"capacite_autofinancement_max": {
"type": "number"
},
"capacite_autofinancement_min": {
"type": "number"
},
"delai_paiement_clients_jours_max": {
"type": "number"
},
"delai_paiement_clients_jours_min": {
"type": "number"
},
"delai_paiement_fournisseurs_jours_max": {
"type": "number"
},
"delai_paiement_fournisseurs_jours_min": {
"type": "number"
}
},
"description": "Filtres avancés. Rappel include_fields : nb_marches_min -> nb_marches_titulaire,montant_marches_titulaire ; nb_subventions_min -> nb_subventions,montant_subventions_total ; nb_brevets_min -> nb_brevets,nb_brevets_actifs ; dividendes_min -> dividendes_verses.",
"additionalProperties": false
},
{
"type": "string",
"description": "DEPRECATED - JSON sérialisé des mêmes clés. Préférer l'objet typé."
}
]
},
"dirigeant_prenom": {
"type": "string"
},
"resultat_net_max": {
"type": "number"
},
"resultat_net_min": {
"type": "number"
},
"age_dirigeant_max": {
"type": "number"
},
"age_dirigeant_min": {
"type": "number"
},
"date_creation_max": {
"type": "string"
},
"date_creation_min": {
"type": "string"
},
"dirigeant_naissance": {
"type": "string"
},
"inclure_estimations": {
"type": "boolean"
},
"procedure_collective": {
"type": "string"
},
"estimation_confiance_min": {
"enum": [
"haute",
"moyenne",
"faible"
],
"type": "string"
}
},
"additionalProperties": false
}État du compte : plan et plafond de consultation (sociétés distinctes restantes sur 24 h et 30 jours, lignes de recherche, mode normal ou ralenti). Ne consomme rien.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"additionalProperties": false
}Fiche complète d'une société française identifiée par son SIREN. Pour plusieurs sociétés, le paramètre sirens sert jusqu'à 10 fiches en une requête, au lieu d'un appel par société. COÛT : 1 appel de quota par société, en lot comme à l'unité. Pour comparer beaucoup de sociétés, search_companies rend les mêmes champs en include_fields (dont description_activite et site_internet), 20 sociétés par appel. Contenu : 1. Identité - forme juridique, dates de création et d'immatriculation, date_cloture_exercice, capital, siege complet, activite (NAF, objet_social, description), effectif, LEI si présent ; successeur si radiée. 2. Financier - date_cloture et type_bilan (K consolidé, C social, S simplifié : un CA K n'est pas comparable à un CA C), CA, croissance, résultat net, marges, EBITDA, dette nette, effectif moyen. 3. Contact - site web et page LinkedIn de la société. 4. Gouvernance - dirigeants principaux. 5. IFRS - agrégats consolidés des cotées. 6. Signaux - cotation, procédures collectives, fusions, modifications de capital, transferts de siege, changements de denomination, ESS, société à mission, dernier dépôt, radiation. 7. Score crédit - grade AAA à D, probabilités de défaut 3/6/12 mois, facteurs ; détail dans get_credit_risk. Null si non scorée. 8. Cessions - historique (date, type, cédant, cessionnaire, prix). 9. Données publiques - marchés publics, subventions, brevets, salons. 10. Fonds PE/VC - nom_fonds, siren_fonds (chaînable vers get_company), annee d'entrée. 11. Estimation financière (compte de résultat confidentiel seulement) - fourchette de CA, confiance, tranche de marge d'EBE, probabilité de déficit. C'est une ESTIMATION : la présenter comme telle, jamais comme un chiffre déposé. 12. Presse - actualite_presse : 5 derniers articles. Pour approfondir : get_financials (historique), get_directors (mandats), get_events (annonces BODACC), get_company_graph (structure). watch_company met la société sous surveillance.
| Argument | Type | Description |
|---|---|---|
| siren | string | SIREN a 9 chiffres |
Cartographie des entités autour d'UNE société (par SIREN) : graphe orienté construit sur les mandats RCS/RNE et les liens de groupe. Pour la structure d'un groupe : holdings, filiales, sociétés sœurs, dirigeants communs. Complémentaire de get_directors (mandats d'une société) et de search_director_companies (mandats directs d'un dirigeant). Réponse : nodes[] (entreprises "co:<siren>", personnes "pp:<nom>|<prenom>|<AAAA-MM>", parents étrangers "co:ext:<slug>") et edges[] orientées : - mandat_pm : société dirigeante -> société dirigée - filiale : mère -> filiale (associé unique RNE) - parent_ultime : parent ultime (GLEIF) -> société - mandat_pp : personne -> société dirigée À savoir : - Pas de pourcentage de détention. Les commissaires aux comptes sont exclus. - depth=1 : liens directs. depth=2 (défaut) : expansion depuis les parents et sociétés dirigeantes, jamais depuis les filiales. - Les dirigeants de la racine tirent leurs autres sociétés (holdings personnelles, SCI, structures sœurs). expand_persons=false donne un graphe purement capitalistique. Un mandataire professionnel (plus de 50 mandats, ou cabinet comptable) n'est pas étendu : voir meta.truncated.hub_directors. - Plafonds par nœud et max_nodes : meta.truncated signale un graphe partiel. Filtres : include_personnes, include_sci, include_ceased, expand_persons. La racine n'est jamais filtrée. Pour plusieurs sociétés, le paramètre sirens sert 3 graphes en une requête (2 en depth=2), à depth=1 par défaut : une traversée coûte 3 à 5 secondes et ne se parallélise pas.
| Argument | Type | Description |
|---|---|---|
| depth | integer | Profondeur du graphe (1 = liens directs, 2 = défaut pour une société seule, 1 = défaut avec sirens) |
| siren | string | SIREN a 9 chiffres de la société racine |
| sirens | array |
Score de risque crédit d'UNE société française (par SIREN). Retourne le grade de risque (AAA -> D), la probabilité de défaut à 3/6/12 mois (taux du grade, master-scale), la position de la société dans la fourchette de son grade (bas / milieu / haut) et les facteurs principaux (5 par défaut, jusqu'à 10 avec factors_limit). Chaque facteur porte son sens (aggravant / atténuant), son poids (part de l'écart au risque moyen, 0 à 1) et la valeur de la société quand elle est affichable ; other_factors regroupe le reste. Disponible sur tous les plans. Réponses possibles : - société scorée : { scorable:true, risk:{ grade, grade_default_rate, grade_position, factors, other_factors, coverage, as_of, model } } - société non scorée (pas de comptes récents) : { scorable:false, risk:null } - SIREN inconnu : erreur 404. Cas d'usage : risque fournisseur, due diligence. Pour scorer un portefeuille, le paramètre sirens rend jusqu'à 10 scores en une requête.
| Argument | Type | Description |
|---|---|---|
| siren | string | SIREN a 9 chiffres |
| sirens | array | Plusieurs SIREN en un appel, 10 au maximum, au lieu de répéter l'appel société par société. Exclusif avec siren. Le coût de quota est identique (1 par société), ce qui change est le nombre de requêtes. |
| factors_limit | integer | Nombre de facteurs détaillés (défaut 5, max 10) |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"siren": {
"type": "string",
"description": "SIREN a 9 chiffres"
},
"sirens": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"description": "Plusieurs SIREN en un appel, 10 au maximum, au lieu de répéter l'appel société par société. Exclusif avec siren. Le coût de quota est identique (1 par société), ce qui change est le nombre de requêtes."
},
"factors_limit": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Nombre de facteurs détaillés (défaut 5, max 10)"
}
},
"additionalProperties": false
}Détail des dirigeants d'une société avec structure hiérarchique. Retourne les dirigeants classés par importance (décisionnaires en premier). Deux types d'entrées : - **PP** (personne physique) : nom, prenom, role, annee de naissance, date_debut_mandat, date_fin_mandat, linkedin_url - **PM** (personne morale) : denomination, SIREN, role, date_debut_mandat, date_fin_mandat, avec un tableau représentants[] listant les personnes physiques qui la représentent (nom, prenom, role dans la PM, dates de mandat) Inclut les commissaires aux comptes (role="CAC") avec leur date de debut/fin de mandat. Utile pour identifier le mandataire actif vs sortant. linkedin_url est le profil LinkedIn de la personne physique, présent uniquement quand un profil a été apparié avec certitude (nom + prénom + date de naissance). La clef est absente quand aucun profil n'est confirmé : c'est le cas courant, pas une anomalie. Par défaut, seuls les mandataires actifs sont retournés. Utiliser include_inactive=true pour inclure l'historique. Pour plusieurs sociétés, le paramètre sirens sert jusqu'à 10 sociétés en une requête. Le lot rend les 20 premiers mandataires de CHAQUE société et signale celles qu'il a tronquées : limit et offset n'ont pas de sens sur dix sociétés à la fois, et l'appel unitaire reste là pour dérouler l'historique complet d'une seule.
| Argument | Type | Description |
|---|---|---|
| limit | number | Nombre de résultats (défaut 20, max 100). Sans effet avec sirens : le lot sert 20 lignes par société. |
| siren | string | SIREN a 9 chiffres |
| offset | number | Pagination (défaut 0). Sans effet avec sirens, qui ne pagine pas. |
| sirens | array |
Timeline unifiée des événements d'UNE société (par SIREN). Flux chronologique décroissant qui réunit : - une ligne par annonce BODACC de modification (forme juridique, dirigeants, siege, activite, capital, denomination, dissolution), avec libellé, sous_type et source_url vers l'avis officiel ; - une ligne par dépôt des comptes (un par exercice) et par immatriculation ; - les cessions (y compris côté cédant d'une vente) et les procédures collectives ; - la radiation, l'augmentation de capital, la creation ; - une ligne par année de marchés publics, les subventions ; - sur 12 mois, les mouvements de dirigeants (dirigeant_entry, dirigeant_exit, dirigeant_change), les changements de note crédit (changement_note) et de dénomination (changement_denomination), et les transferts de siège et changements d'activité SIRENE (modification_administrative, avec un libellé explicite). Pour plusieurs sociétés, le paramètre sirens sert jusqu'à 10 timelines en une requête, 20 événements par société et sans pagination. Pour de la prospection multi-SIREN sans liste de départ, utiliser search_events. COÛT : 1 appel de quota par société.
| Argument | Type | Description |
|---|---|---|
| type | string | Filtrer par type(s) d'événement (CSV) |
| limit | number | Nombre d'evenements (défaut 50, max 200). Sans effet avec sirens : le lot sert 20 evenements par société. |
| siren | string | SIREN a 9 chiffres |
| offset | number | Pagination (défaut 0). Sans effet avec sirens, qui ne pagine pas. |
| sirens | array |
Historique financier détaillé d'une société sur plusieurs exercices. COÛT : 1 appel de quota par société, réponse de ~10 à 45 Kio selon détail et years. Pour le seul dernier exercice (ca, ebitda, resultat_exploitation, resultat_net, effectif_moyen), search_companies le rend en include_fields, 20 sociétés par appel. Pour plusieurs sociétés, le paramètre sirens sert jusqu'à 10 historiques en une requête (3 en detail=full). Le lot part en compact sauf demande explicite, y compris sur Pro, et ne pagine pas. Niveau de détail : - compact (défaut sur Free, ~40 champs par exercice) : compte de résultat complet, bilan abrégé PCG, ratios (trésorerie, dette nette, BFR, marges, endettement, CAF, délais de paiement), dividendes, effectif moyen. - full (défaut sur Pro, ~140 champs) : tous les postes. Refusé sur Free (403). - fields : ajoute quelques champs à compact sans gonfler la réponse, ex fields=["roe","bfr_jours_ca","autonomie_financiere"]. Plus de 130 disponibles : ratios, postes détaillés, immobilisations brutes, réserves, croissances (cagr_ebitda_3ans...). type_bilan : K consolidé, C social, S simplifié. Quand la fenêtre mélange plusieurs types, un seul est gardé et type_bilan_mixte l'indique ; type_bilan force un type. Les cotées ont en plus un bloc ifrs. Compte de résultat confidentiel : ni CA ni EBE déposé. Plan Pro : inclure_estimation=true ajoute estimation_financiere (fourchette de CA et d'EBE, confiance, tranche, proba de déficit) et estimation_financiere_exercices (autres exercices), des ESTIMATIONS jamais déposées ; sans lui, estimation_disponible seul. Plan gratuit : 403. dividende_estime est aussi une estimation (dividendes_verses = déposé). Rendu : _layout décrit par section l'ordre PCG des lignes, leur libellé (line.label), leur indentation (level) et leur nature (kind) ; exercices[annee][line.key] porte la valeur, null = poste absent. not_applicable_pcg signale un bilan de banque ou d'assurance. Montants en euros.
| Argument | Type | Description |
|---|---|---|
| siren | string | SIREN a 9 chiffres |
Veille quotidienne de l'utilisateur : le fil d'actualité de ses sociétés surveillées, tel qu'il apparaît sur la page /news de l'app Insourcia. Utiliser cet outil pour répondre à "quoi de neuf sur ma veille ?", "qu'est-ce qui a bougé sur mes sociétés ?", "résume-moi ma veille de la semaine", ou avant de rédiger un point hebdomadaire. Contenu : les alertes réellement délivrées (email/push) ET l'activité des sociétés des listes de veille (changements de dirigeants, annonces BODACC : procédures collectives, cessions, radiations..., articles de presse), fusionnées et dédupliquées, les plus récentes d'abord. Couvre toutes les listes de l'utilisateur, tous espaces confondus (source.espace indique lequel). Chaque ligne est HYBRIDE : "label" donne la phrase française prête à lire (identique à l'app) et "type"/"before"/"after"/"siren"/"date" donnent les champs structurés pour filtrer ou raisonner. "date" est le jour de DÉTECTION (axe de fraîcheur) ; "effective_date", quand présent, est la date d'effet juridique. unread_only=true ne renvoie que ce que l'utilisateur n'a pas encore lu. "read_key" identifie chaque ligne : la passer à mark_news_read pour la marquer lue. truncated=true signale plus de signaux que la limite demandée ; since_days et event_types permettent de resserrer (pas de pagination sur ce fil). Si counts_are_partial=true, "total" et "unread_count" sont des PLANCHERS et non des totaux : le fil est composé sur une fenêtre bornée (les 100 dernières notifications et les 100 derniers événements), et cette fenêtre était pleine. hidden_by_plan, quand présent, compte les signaux non retournés parce que le plan actuel ne donne accès qu'aux 10 signaux les plus récents, exactement comme la page /news. Un fil ainsi tronqué n'est pas complet, et hidden_by_plan dit de combien. Réponse : { news: [...], total, unread_count, last_seen_at, since_days, truncated, url (page /news) }. news vide = aucun signal sur la période, ce n'est pas une erreur.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Nombre max de signaux retournés (défaut 50, max 100) |
Liste des recherches sauvegardées de l'utilisateur (page /news - Veille de l'app Insourcia). Utiliser cet outil : - AVANT create_saved_search, pour vérifier qu'une veille équivalente n'existe pas déjà et éviter les doublons de nom. - Pour répondre à "quelles veilles ai-je ?" / "quelles sont mes recherches sauvegardées ?". Réponse : { saved_searches: [{ id, name, filters (filtres normalisés stockés), result_count (nombre de sociétés matchant, null si indisponible), alert_enabled (alerte quotidienne nouvelles sociétés active ou non), url (page /news), created_at }], total }. Les recherches sont triées de la plus récente à la plus ancienne. Liste vide = aucune veille configurée.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Nombre max de recherches retournées (défaut : 100) |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Nombre max de recherches retournées (défaut : 100)"
}
},
"additionalProperties": false
}Liste des sociétés surveillées par l'utilisateur dans ses listes de veille (page /lists de l'app Insourcia). Utiliser cet outil : - AVANT watch_company, pour vérifier si une société est déjà surveillée et connaître les listes existantes (leur nom exact). - Pour répondre à "quelles sociétés je surveille ?" / "qu'y a-t-il dans ma liste X ?". list_name (optionnel) restreint à une liste précise (nom exact). Sans list_name, toutes les listes de l'utilisateur sont retournées. Un list_name qui ne matche aucune liste renvoie companies: [] et total: 0 (ce n'est pas une erreur : simplement aucune société surveillée sous ce nom). Réponse : { companies: [{ siren, company_name, naf_code, region, list_id, list_name, added_at }] (aplaties toutes listes confondues, plus récentes d'abord), lists: [{ id, name, company_count, alert_enabled }], total, url (page /lists) }.
| Argument | Type | Description |
|---|---|---|
| list_name | string | Nom exact de la liste à consulter. Ex: "Surveillance", "Cibles M&A". Omis = toutes les listes. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"list_name": {
"type": "string",
"description": "Nom exact de la liste à consulter. Ex: \"Surveillance\", \"Cibles M&A\". Omis = toutes les listes."
}
},
"additionalProperties": false
}Marque comme lus des signaux précis de la veille de l'utilisateur (page /news de l'app Insourcia). Utiliser cet outil quand l'utilisateur indique avoir traité des signaux ("ok j'ai vu", "marque-les comme lus"). Fonctionnement : - Prend les "read_key" renvoyées par get_news, telles quelles ; leur format varie selon le type de signal et n'est pas reconstructible. - Idempotent : une clé déjà lue est ignorée (comptée dans already_read), sans erreur ni doublon. - Marquage cible uniquement : il n'existe volontairement pas de "tout marquer lu" via l'API, pour ne pas effacer par erreur la file de tri de l'utilisateur. - N'efface rien : la ligne reste visible dans l'app, elle passe simplement de "nouveau" à "lu". - Ne modifie pas la date de dernière visite de l'utilisateur sur /news. Réponse : { marked_read, already_read, unread_remaining, url (page /news) }.
| Argument | Type | Description |
|---|---|---|
| read_keys* | array | Clés "read_key" recopiées telles quelles depuis la réponse de get_news (leur format varie selon le type de signal). Max 500 par appel. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"read_keys"
],
"properties": {
"read_keys": {
"type": "array",
"items": {
"type": "string",
"maxLength": 64,
"minLength": 1
},
"maxItems": 500,
"minItems": 1,
"description": "Clés \"read_key\" recopiées telles quelles depuis la réponse de get_news (leur format varie selon le type de signal). Max 500 par appel."
}
},
"additionalProperties": false
}Rapprochement EN LOT de fiches mal identifiées (CRM, tableur, export CSV) vers leur SIREN. À utiliser pour une LISTE de sociétés à identifier ("retrouve les SIREN de ces 200 clients"). Pour UNE société cherchée par son nom, search_companies, qui rend des résultats classés ; celui-ci rend une décision, et refuse de trancher quand il n'est pas sûr. Chaque fiche revient avec un status : - resolved : SIREN certain. - review : plusieurs candidats plausibles ou nom trop générique ; les candidats sont retournés et le choix revient à l'utilisateur. - no_match : aucune correspondance. reason explique un review : ambiguous_candidates, weak_name_overlap, shared_domain (site partagé par un réseau ; domain_company_count dit combien de sociétés, fournir un nom ou un code postal), missing_name, invalid_domain, domain_no_match, lookup_failed (panne à rejouer, PAS une absence de correspondance). Conseils : domain (domaine ou URL) résout seul quand il désigne une seule société. Le code postal double quasiment le taux de rapprochement. Un mot en trop dans le nom ("Carrefour Massy") nuit plus qu'un nom tronqué. Un siren, siret ou numéro de TVA français est résolu sans recherche. COÛT : 1 appel de quota par fiche soumise, quelle que soit sa forme. Retourne results[] (ordre d'entrée, avec l'id fourni) et summary{total, resolved, review, no_match}.
| Argument | Type | Description |
|---|---|---|
| records* | array | Fiches à rapprocher, 200 maximum par appel |
| shared_domain | string | Domaine porté par plusieurs sociétés : review (défaut) rend les candidats ; head rapproche vers la maison mère (groupe dominant, sinon plus gros CA), method=domain_head, confiance basse. Réserver aux colonnes d'enseignes. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"records"
],
"properties": {
"records": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"maxLength": 128,
"description": "Identifiant libre renvoyé tel quel, pour recoller le résultat à la ligne d'origine. Jamais utilisé pour le rapprochement."
},
"vat": {
"type": "string",
"maxLength": 20,
"description": "Numéro de TVA intracommunautaire français (FRxx...)"
},
"name": {
"type": "string",
"maxLength": 300,
"description": "Dénomination telle qu'elle figure dans la fiche"
},
"siren": {
"type": "string",
"maxLength": 20,
"description": "SIREN a 9 chiffres"
},
"siret": {
"type": "string",
"maxLength": 25,
"description": "SIRET a 14 chiffres"
},
"domain": {
"type": "string",
"maxLength": 253,
"description": "Site web de la société, en domaine nu ou en URL complète. Tranche mieux qu'un nom quand il est connu."
},
"postal_code": {
"type": "string",
"maxLength": 10,
"description": "Code postal. Le signal le plus utile après un identifiant."
}
},
"additionalProperties": false
},
"maxItems": 200,
"minItems": 1,
"description": "Fiches à rapprocher, 200 maximum par appel"
},
"shared_domain": {
"enum": [
"review",
"head"
],
"type": "string",
"description": "Domaine porté par plusieurs sociétés : review (défaut) rend les candidats ; head rapproche vers la maison mère (groupe dominant, sinon plus gros CA), method=domain_head, confiance basse. Réserver aux colonnes d'enseignes."
}
},
"additionalProperties": false
}Révèle l'email PROFESSIONNEL d'un dirigeant identifié (après get_directors). Exige un compte FullEnrich, Dropcontact, Apollo, Lusha ou Kaspr connecté dans les paramètres Insourcia (sinon no_payment_source) ; provider dit lequel a servi. COÛT : 1 crédit de ce compte par email trouvé, catch-all compris. Gratuit si rien n'est trouvé (sauf Lusha et Apollo : un crédit peut être débité dès que la personne est trouvée, même sans email), ou si ce dirigeant a déjà été révélé (3 mois chez FullEnrich, 15 minutes chez Apollo, Lusha et Kaspr). Kaspr exige un profil LinkedIn (sinon linkedin_profile_required, rien consommé). Offre gratuite : 5 révélations facturées par mois (connected_account_monthly_limit). Autres erreurs : connected_account_key_invalid (à reconnecter), connected_account_out_of_credits. OUTIL UNITAIRE, sans variante par lot : boucler sur une liste consomme des crédits et déclenche une limite horaire. deliverability_proven=false : domaine catch-all, boîte non prouvée. email=null (not_found, rejected_by_verification) : inutile de réessayer. Avec Dropcontact, ou sans profil LinkedIn connu, l'outil rend status="pending" et un retrieval_token ; le rappeler avec ce SEUL paramètre après retry_after_seconds, tant que pending (jeton valable 15 min, gratuit). Ni téléphone ni email personnel. L'appelant devient responsable de traitement : information de la personne au premier contact (mention dans _notice), respect de toute opposition. Reconstituer un fichier est interdit.
| Argument | Type | Description |
|---|---|---|
| siren | string | SIREN a 9 chiffres de la société du dirigeant. Requis SAUF si retrieval_token est fourni. |
| last_name | string | Nom de famille tel que RENVOYE PAR get_directors (champ nom), pas le nom d'usage : un nom différent fait repayer un contact déjà enrichi. |
| first_name | string | Prénom du dirigeant |
Recherche de sociétés françaises par nom, SIREN/SIRET, activite ou critères (géographie, secteur, effectif, financier, dirigeants). Pour une société citée par son nom : trouver le SIREN ici, puis get_company ou get_financials. Effectif et statut départagent les homonymes. - Le siren est dans chaque résultat : ne pas les repasser par resolve_companies (fiches sans identifiant). - Valeurs : un chiffre (ca, ebitda, resultat_net, effectif_moyen, signaux publics...) n'est retourné que s'il figure dans include_fields, même quand il sert de filtre. 5 champs par recherche ; au-delà, ignorés et signalés dans warnings. Un nom inconnu est liste dans include_fields_unknown : le corriger plutôt que d'appeler get_company ligne par ligne. get_financials sert l'historique multi-années. - Filtres simples au premier niveau, les deux bornes côte à côte (effectif_min et effectif_max ; idem ca, resultat_net, tresorerie, cagr_ca, date_creation, age_dirigeant). Critères avancés (ratios, CAGR, bilan, délais, signaux publics, fonds, CAC, comptes) dans advanced_filters ; une clé inconnue est rejetée (400). - Dirigeant : dirigeant_nom + dirigeant_prenom (+ dirigeant_naissance). Inclut les dirigeants remontés via une personne morale ; mandats directs d'une personne : search_director_companies. - Tri : sort_by (relevance, chiffre_affaires, resultat_net, effectif_moyen, date_creation, capital) et sort_order. - Cessions : include_fields=nb_cessions,derniere_cession_date signale les sociétés à lire dans get_events. 20 résultats par page max ; pagination par cursor sur Pro, 1 000 résultats par recherche (au-delà : 400 search_depth_exceeded) ; total exact. COÛT : 1 appel de quota par recherche ; la réponse donne _user_plan et le quota restant. Pour suivre la recherche dans le temps : create_saved_search. Retourne l'identité de base de chaque société (siren, denomination, NAF, localisation, effectif, statut) + include_fields.
| Argument | Type | Description |
|---|---|---|
| limit | number | Résultats par page (défaut 20, max 20 ; au-delà, ramené à 20). |
Mandats directs d'un dirigeant : toutes les sociétés où il exerce un mandat direct, le dirigeant étant identifie de façon non ambiguë par nom + prénom + date de naissance exacte. C'est le pivot "personne -> sociétés", complément de search_directors (trouver la personne) et get_directors (dirigeants d'une société). Cas d'usage M&A : tracer le périmètre de sociétés d'un fondateur/dirigeant (holdings, SCI, filiales) sans confondre les homonymes. Paramètres TOUS REQUIS : nom, prenom, date_naissance (format YYYY-MM-DD). La date de naissance est obligatoire : c'est elle qui distingue la bonne personne de ses homonymes. L'obtenir au préalable via search_directors ou get_directors (champ date_naissance). Réponse : dirigeant { nom, prenom, date_naissance, annee_naissance } + data[] = entreprises { siren, denomination, role, ville, departement, code_ape, forme_juridique } + pagination { total, returned, limit }. Résultat vide = aucun mandat direct trouvé pour cette identité exacte (vérifier la date_naissance). Note : ne couvre que les mandats DIRECTS de la personne physique (exclut les dirigeants remontés depuis une PM représentée, resolved_from_pm). C'est la différence de périmètre avec search_companies(dirigeant_nom/prenom/naissance), qui filtre plus large (inclut ces remontées, granularité mois) et retourne des sociétés, pas les mandats directs d'un dirigeant. Pour la structure de détention capitalistique d'une société, voir get_company_graph.
| Argument | Type | Description |
|---|---|---|
| nom* | string | Nom de famille du dirigeant (requis). |
| limit | number | Nombre de sociétés à retourner (défaut 50, max 200) ; 1 appel de quota. |
| prenom* | string | Prénom du dirigeant (requis). |
Recherche de personnes (dirigeants) à travers toutes les sociétés françaises, par nom de famille. À la différence de search_companies (qui retourne des ENTREPRISES et accepte dirigeant_nom/dirigeant_prenom comme filtres), search_directors retourne directement des PERSONNES avec leur société de rattachement. Cas d'usage : "toutes les sociétés où siège un dirigeant nommé DUPONT", cartographie d'un réseau de mandats. Paramètres : nom (REQUIS, nom de famille), prenom (optionnel, désambiguïse), role (optionnel, ex "Président", "Gérant", "Administrateur"). Par défaut seuls les mandats actifs ; include_inactive=true pour inclure les anciens mandats. Réponse : data[] = personnes { nom, prenom, civilite, role, role_description, date_naissance, annee_naissance, lieu_naissance, type_personne, linkedin_url, entreprise { siren, denomination, ville, departement, code_ape } }. linkedin_url n'est présent que si un profil a été apparié avec certitude (plan pro) ; son absence est le cas courant, pas une anomalie. pagination { total (nb sociétés matchées), limit, returned }. Homonymes : un même nom+prénom recouvre souvent plusieurs personnes distinctes. date_naissance est le champ qui les distingue : deux dates différentes = deux personnes ; date absente = identité non confirmée ; même date = même personne. La date est diffusée au MOIS (jour normalisé à 01), conformément au régime de diffusion du registre : deux personnes nées le même mois restent indistinguables. Pour lister TOUTES les sociétés d'une personne donnée une fois sa date de naissance connue, enchaîner avec search_director_companies (nom + prénom + date_naissance). Pour la fiche complète d'un dirigeant d'une société donnée, utiliser get_directors avec le SIREN.
| Argument | Type | Description |
|---|---|---|
| nom* | string | Nom de famille du dirigeant recherché (requis). |
| role | string | Role/qualite (optionnel), ex: 'Président', 'Gérant', 'Administrateur'. |
Recherche unifiée d'événements de société (multi-SIREN), basée sur notre index ES. Renvoie des ÉVÉNEMENTS individuels (pas des sociétés) : { date, type, siren, denomination, data }. Couvre 8 types : cession (cessions de fonds), procedure (procédures collectives), depot_comptes, augmentation_capital, marche_public, subvention, radiation, creation. Ce n'est PAS le fil de veille : pour les signaux récents des sociétés suivies (nouveau bilan, score crédit, dissolution...), utiliser get_news. Couvre les événements BODACC (cessions, procédures collectives, radiations, créations) ainsi que les dépôts de comptes, augmentations de capital, marchés publics et subventions dérivés des scalaires silver. RÈGLE : préciser au moins un filtre region / departement / ville / code_naf, OU un filtre d'événement (date_min, date_max, cedant_siren, cessionnaire_siren, prix_min/max, tribunal, procedure_type), sinon 400. IMPORTANT : passer UN SEUL type quand la question porte sur un type précis. Les filtres de cadrage (existence de l'événement, fenêtre de dates) ne sont poussés dans la requête que dans ce cas ; avec plusieurs types ils s'excluraient mutuellement, et la recherche se rabat sur un tri général dont on ne lit que les premières pages : une question pointue y paraît vide. Cas d'usage : - "Cessions de fonds > 1M en Île-de-France depuis 2024" → type="cession", region="Île-de-France", date_min="2024-01-01", prix_min=1000000 - "Procédures collectives à Lyon" → type="procedure", ville="Lyon" - "Liquidations prononcées à Marseille en juillet 2026" → type="procedure", procedure_type="liquidation", ville="Marseille", date_min="2026-07-01", date_max="2026-07-31" - "Marchés publics récents dans le BTP" → type="marche_public", code_naf="4120A"
| Argument | Type | Description |
|---|---|---|
| type | string | Types d'événements (CSV) : cession, procedure, depot_comptes, augmentation_capital, marche_public, subvention, radiation, creation. Défaut : tous. |
| limit | number |
Retrait d'une société de la surveillance : l'enlève d'une liste de veille de l'utilisateur (page /lists de l'app Insourcia). Inverse de watch_company. Utiliser cet outil quand l'utilisateur veut ARRÊTER de suivre une société ("je ne suis plus intéressé par X", "enlève X de ma veille", "nettoie ma liste"). Fonctionnement : - Sans list_name, la société est retirée de TOUTES les listes de l'utilisateur - c'est le sens naturel de "arrête de surveiller X". Avec list_name, seule cette liste est nettoyée. - Idempotent : si la société n'est dans aucune liste (ou si la liste nommée n'existe pas), l'appel renvoie removed=false sans erreur. - La liste elle-même n'est jamais supprimée, même si elle devient vide. Une alerte active sur la liste reste active pour les autres sociétés. - Le retrait fonctionne même pour une société absente de l'index (radiée, disparue) : ce qui a pu être ajouté peut toujours être enlevé. list_watched_companies donne le nom exact des listes et les sociétés qu'elles contiennent. Réponse : { siren, company_name (null si non renseignée), removed, removed_from: [{ list_id, list_name }], url (page /lists) }.
| Argument | Type | Description |
|---|---|---|
| siren* | string | SIREN a 9 chiffres de la société à retirer de la veille |
| list_name | string | Nom exact de la liste à nettoyer. Ex: "Surveillance", "Cibles M&A". Omis = retrait de toutes les listes de l'utilisateur. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"siren"
],
"properties": {
"siren": {
"type": "string",
"pattern": "^\\d{9}$",
"description": "SIREN a 9 chiffres de la société à retirer de la veille"
},
"list_name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Nom exact de la liste à nettoyer. Ex: \"Surveillance\", \"Cibles M&A\". Omis = retrait de toutes les listes de l'utilisateur."
}
},
"additionalProperties": false
}Mise sous surveillance d'une société : l'ajoute à une liste de veille de l'utilisateur, visible dans l'app Insourcia (page /lists). Utiliser cet outil quand l'utilisateur veut SUIVRE une société dans le temps (cible d'acquisition, concurrent, client, fournisseur à risque) - pas pour une simple consultation (utiliser get_company). Fonctionnement : - list_name désigne la liste cible ; la liste "Surveillance" est utilisée par défaut et créée automatiquement si besoin (idem pour toute liste nommée qui n'existe pas encore). - Idempotent : si la société est déjà dans la liste, l'appel renvoie already_watched=true sans créer de doublon. - Alerte quotidienne ACTIVE PAR DÉFAUT quand la liste est créée par cet appel (enable_alert=false pour s'en passer ; sur une liste existante, enable_alert=true l'active) : l'utilisateur est notifié des événements FUTURS touchant les sociétés de la liste (annonces BODACC : procédures collectives, cessions... et changements de dirigeants). Pas de replay de l'historique. Réponse : { siren, company_name (ou null), list_id, list_name, url (page /lists), already_watched, already_watched_by, alert_enabled }.
| Argument | Type | Description |
|---|---|---|
| siren* | string | SIREN a 9 chiffres de la société à surveiller |
| list_name | string | Nom de la liste cible (1-100 caractères). Par défaut : "Surveillance". La liste est créée automatiquement si elle n'existe pas. |
| enable_alert | boolean | Alerte quotidienne sur les événements futurs (BODACC, dirigeants...) des sociétés de la liste. Par défaut : true si la liste est créée par cet appel, inchangé sinon. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"siren"
],
"properties": {
"siren": {
"type": "string",
"pattern": "^\\d{9}$",
"description": "SIREN a 9 chiffres de la société à surveiller"
},
"list_name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Nom de la liste cible (1-100 caractères). Par défaut : \"Surveillance\". La liste est créée automatiquement si elle n'existe pas."
},
"enable_alert": {
"type": "boolean",
"description": "Alerte quotidienne sur les événements futurs (BODACC, dirigeants...) des sociétés de la liste. Par défaut : true si la liste est créée par cet appel, inchangé sinon."
}
},
"additionalProperties": false
}| sirens |
| array |
| Plusieurs SIREN en un appel, 10 au maximum, au lieu de répéter l'appel société par société. Exclusif avec siren. Le coût de quota est identique (1 par société), ce qui change est le nombre de requêtes. |
| include_fields | array | Champs root/financiers supplémentaires à injecter dans la fiche (parité avec search_companies). Exemple : ['nb_dirigeants','source_esef','dernier_depot_date']. 5 champs au plus, tous plans. Un nom inconnu renvoie 400 en listant les noms non reconnus. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"siren": {
"type": "string",
"description": "SIREN a 9 chiffres"
},
"sirens": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"description": "Plusieurs SIREN en un appel, 10 au maximum, au lieu de répéter l'appel société par société. Exclusif avec siren. Le coût de quota est identique (1 par société), ce qui change est le nombre de requêtes."
},
"include_fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Champs root/financiers supplémentaires à injecter dans la fiche (parité avec search_companies). Exemple : ['nb_dirigeants','source_esef','dernier_depot_date']. 5 champs au plus, tous plans. Un nom inconnu renvoie 400 en listant les noms non reconnus."
}
},
"additionalProperties": false
}| Plusieurs SIREN en un appel, 3 au maximum, au lieu de répéter l'appel société par société. Exclusif avec siren. Le coût de quota est identique (1 par société), ce qui change est le nombre de requêtes. En depth=2 le plafond descend à 2 sociétés. |
| max_nodes | integer | Nombre max de nœuds (défaut 100) |
| include_sci | boolean | false = exclure les SCI (catégorie juridique 65xx) |
| expand_persons | boolean | false = ne pas étendre le graphe via les autres sociétés des dirigeants de la racine (défaut: true) |
| include_ceased | boolean | false = exclure les sociétés cessées |
| include_personnes | boolean | Inclure les dirigeants personnes physiques. Défaut: true |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"depth": {
"type": "integer",
"maximum": 2,
"minimum": 1,
"description": "Profondeur du graphe (1 = liens directs, 2 = défaut pour une société seule, 1 = défaut avec sirens)"
},
"siren": {
"type": "string",
"description": "SIREN a 9 chiffres de la société racine"
},
"sirens": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 3,
"minItems": 1,
"description": "Plusieurs SIREN en un appel, 3 au maximum, au lieu de répéter l'appel société par société. Exclusif avec siren. Le coût de quota est identique (1 par société), ce qui change est le nombre de requêtes. En depth=2 le plafond descend à 2 sociétés."
},
"max_nodes": {
"type": "integer",
"maximum": 150,
"minimum": 10,
"description": "Nombre max de nœuds (défaut 100)"
},
"include_sci": {
"type": "boolean",
"description": "false = exclure les SCI (catégorie juridique 65xx)"
},
"expand_persons": {
"type": "boolean",
"description": "false = ne pas étendre le graphe via les autres sociétés des dirigeants de la racine (défaut: true)"
},
"include_ceased": {
"type": "boolean",
"description": "false = exclure les sociétés cessées"
},
"include_personnes": {
"type": "boolean",
"description": "Inclure les dirigeants personnes physiques. Défaut: true"
}
},
"additionalProperties": false
}| Plusieurs SIREN en un appel, 10 au maximum, au lieu de répéter l'appel société par société. Exclusif avec siren. Le coût de quota est identique (1 par société), ce qui change est le nombre de requêtes. |
| include_inactive | boolean | Inclure les mandataires inactifs (historique). Par défaut : false |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "number",
"description": "Nombre de résultats (défaut 20, max 100). Sans effet avec sirens : le lot sert 20 lignes par société."
},
"siren": {
"type": "string",
"description": "SIREN a 9 chiffres"
},
"offset": {
"type": "number",
"description": "Pagination (défaut 0). Sans effet avec sirens, qui ne pagine pas."
},
"sirens": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"description": "Plusieurs SIREN en un appel, 10 au maximum, au lieu de répéter l'appel société par société. Exclusif avec siren. Le coût de quota est identique (1 par société), ce qui change est le nombre de requêtes."
},
"include_inactive": {
"type": "boolean",
"description": "Inclure les mandataires inactifs (historique). Par défaut : false"
}
},
"additionalProperties": false
}| Plusieurs SIREN en un appel, 10 au maximum, au lieu de répéter l'appel société par société. Exclusif avec siren. Le coût de quota est identique (1 par société), ce qui change est le nombre de requêtes. |
| date_max | string | Date max (YYYY-MM-DD) |
| date_min | string | Date min (YYYY-MM-DD) |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"type": {
"type": "string",
"description": "Filtrer par type(s) d'événement (CSV)"
},
"limit": {
"type": "number",
"description": "Nombre d'evenements (défaut 50, max 200). Sans effet avec sirens : le lot sert 20 evenements par société."
},
"siren": {
"type": "string",
"description": "SIREN a 9 chiffres"
},
"offset": {
"type": "number",
"description": "Pagination (défaut 0). Sans effet avec sirens, qui ne pagine pas."
},
"sirens": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"description": "Plusieurs SIREN en un appel, 10 au maximum, au lieu de répéter l'appel société par société. Exclusif avec siren. Le coût de quota est identique (1 par société), ce qui change est le nombre de requêtes."
},
"date_max": {
"type": "string",
"description": "Date max (YYYY-MM-DD)"
},
"date_min": {
"type": "string",
"description": "Date min (YYYY-MM-DD)"
}
},
"additionalProperties": false
}| years |
| number |
| Nombre d'exercices (défaut 3, max 10) |
| detail | string | compact (~40 champs, défaut sur plan free) ou full (~140 champs, audit exhaustif, défaut sur plan pro). Sans valeur, le serveur applique le défaut du plan de l'utilisateur. |
| fields | array | Champs financiers supplémentaires à injecter dans chaque exercice. Exemple : ['roe','bfr_jours_ca','autonomie_financiere']. 5 champs au plus, tous plans. |
| sirens | array | Plusieurs SIREN en un appel, 10 au maximum, au lieu de répéter l'appel société par société. Exclusif avec siren. Le coût de quota est identique (1 par société), ce qui change est le nombre de requêtes. En detail=full le plafond descend à 3 sociétés. |
| type_bilan | string | K (consolide), C (complet/social), S (simplifie). Sans filtre : meilleure priorité (K > C > S) |
| inclure_estimation | boolean | Plan Pro. true ajoute estimation_financiere (CA et EBE ESTIMÉS) et estimation_financiere_exercices (autres exercices) ; sinon estimation_disponible seul. Plan gratuit : 403. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"siren": {
"type": "string",
"description": "SIREN a 9 chiffres"
},
"years": {
"type": "number",
"description": "Nombre d'exercices (défaut 3, max 10)"
},
"detail": {
"enum": [
"compact",
"full"
],
"type": "string",
"description": "compact (~40 champs, défaut sur plan free) ou full (~140 champs, audit exhaustif, défaut sur plan pro). Sans valeur, le serveur applique le défaut du plan de l'utilisateur."
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Champs financiers supplémentaires à injecter dans chaque exercice. Exemple : ['roe','bfr_jours_ca','autonomie_financiere']. 5 champs au plus, tous plans."
},
"sirens": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"description": "Plusieurs SIREN en un appel, 10 au maximum, au lieu de répéter l'appel société par société. Exclusif avec siren. Le coût de quota est identique (1 par société), ce qui change est le nombre de requêtes. En detail=full le plafond descend à 3 sociétés."
},
"type_bilan": {
"enum": [
"K",
"C",
"S"
],
"type": "string",
"description": "K (consolide), C (complet/social), S (simplifie). Sans filtre : meilleure priorité (K > C > S)"
},
"inclure_estimation": {
"type": "boolean",
"description": "Plan Pro. true ajoute estimation_financiere (CA et EBE ESTIMÉS) et estimation_financiere_exercices (autres exercices) ; sinon estimation_disponible seul. Plan gratuit : 403."
}
},
"additionalProperties": false
}| since_days |
| integer |
| Profondeur d'historique en jours (défaut 90, max 365) |
| event_types | array | Filtre sur les types d'événements bruts. Ex: ["dirigeant_changed", "procedure_collective", "cession", "radiation", "presse"]. |
| unread_only | boolean | true = uniquement les signaux non lus par l'utilisateur. Défaut : false. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Nombre max de signaux retournés (défaut 50, max 100)"
},
"since_days": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Profondeur d'historique en jours (défaut 90, max 365)"
},
"event_types": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 20,
"description": "Filtre sur les types d'événements bruts. Ex: [\"dirigeant_changed\", \"procedure_collective\", \"cession\", \"radiation\", \"presse\"]."
},
"unread_only": {
"type": "boolean",
"description": "true = uniquement les signaux non lus par l'utilisateur. Défaut : false."
}
},
"additionalProperties": false
}| retrieval_token |
| string |
| Jeton rendu par un appel précédent qui a répondu status=pending. Le fournir SEUL, sans siren ni nom, pour récupérer le résultat. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"siren": {
"type": "string",
"description": "SIREN a 9 chiffres de la société du dirigeant. Requis SAUF si retrieval_token est fourni."
},
"last_name": {
"type": "string",
"description": "Nom de famille tel que RENVOYE PAR get_directors (champ nom), pas le nom d'usage : un nom différent fait repayer un contact déjà enrichi."
},
"first_name": {
"type": "string",
"description": "Prénom du dirigeant"
},
"retrieval_token": {
"type": "string",
"description": "Jeton rendu par un appel précédent qui a répondu status=pending. Le fournir SEUL, sans siren ni nom, pour récupérer le résultat."
}
},
"additionalProperties": false
}| query* |
| string |
| Nom, SIREN, mot-clé activité, ou "*" pour rechercher uniquement par filtres. Opérateurs acceptés : "expression exacte", OR en majuscules (ou |) entre deux termes, -terme pour exclure, parenthèses pour grouper. Ex : (logiciel OR saas) "gestion de paie" -holding. Dès qu'un autre filtre est posé (ville, code_naf...), la query ne fait plus que CLASSER : seul -terme reste un filtre, OR et l'expression exacte ne réduisent plus le total. |
| ville | string | Nom de ville. Plusieurs villes séparées par virgule. Ex: "Paris,Lyon,Bordeaux" |
| ca_max | number | CA maximum en euros. Ex: 50000000 pour 50M |
| ca_min | number | CA minimum en euros. Ex: 5000000 pour 5M |
| cursor | string | Curseur de pagination retourne dans next_cursor de la réponse précédente. Ne pas fournir pour la première page. |
| radius | integer | Rayon de recherche en km (1-200) autour de latitude/longitude. Les trois vont ensemble : un triplet incomplet est refusé. |
| region | string | Région. Ex: "Île-de-France", "Bretagne", "Auvergne-Rhône-Alpes" |
| statut | string | Filtre par statut au registre. DISSOLVED = dissoute ou radiée ; une société en procédure collective reste ACTIVE jusqu'à sa radiation. Le statut ne se déduit PAS de date_radiation, absente sur environ 9,9M des 12,4M sociétés dissoutes. |
| sort_by | string | Tri des résultats. Par défaut "relevance". Ex: "chiffre_affaires" pour trier par CA. |
| code_naf | string | Code NAF/APE. Exemples courants : - SaaS/Logiciel : 5829C, 6201Z, 6202A - Conseil IT : 6202A, 6209Z - Conseil management : 7022Z - Fintech : 6419Z, 6499Z - Biotech/Pharma : 2120Z, 7211Z - E-commerce : 4791A, 4791B - BTP : 4120A, 4120B - Restauration : 5610A, 5610C Plusieurs codes séparés par virgule. Accepte aussi un niveau supérieur, étendu à toutes ses sous-classes : une section (C = industrie manufacturière, F = construction, J = information et communication), une division (25 = produits métalliques) ou un groupe (25.6). Pour un secteur large, préférer la section ou la division à un mot-clé dans query. |
| is_cotee | boolean | true pour les sociétés cotées en bourse uniquement, false pour les exclure |
| latitude | number | Latitude du centre pour une recherche par rayon (WGS84). À fournir avec longitude ET radius. |
| longitude | number | Longitude du centre pour une recherche par rayon (WGS84). À fournir avec latitude ET radius. |
| sort_order | string | Ordre de tri. Par défaut "desc". Ex: "asc" pour les plus petits CA en premier. |
| cagr_ca_max | number | Croissance CA max sur 1 an en % (ex: 50 pour +50%) |
| cagr_ca_min | number | Croissance CA min sur 1 an en % (ex: 20 pour +20%) |
| code_postal | string | Code postal du siège. Ex: "75001", "69001". Plusieurs séparés par virgule. |
| departement | string | Code département. Ex: "75", "33", "69" |
| has_website | boolean | true pour ne retourner que les sociétés ayant un site web |
| credit_grade | array | Grades de risque crédit à garder (OR). Ex: ["CCC","D"] pour les sociétés à risque élevé, ["AAA","AA"] pour les plus solides. ~900k sociétés scorées (celles avec un bilan récent) ; les non scorées sont exclues dès qu'un grade est demandé. |
| effectif_max | number | Effectif maximum (nombre de salariés) |
| effectif_min | number | Effectif minimum (nombre de salariés) |
| filter_annee | number | Année de l'exercice financier. Filtre les sociétés dont le dernier bilan publié correspond à cette année. Ex: 2024 pour ne voir que les bilans 2024. Combiner avec ca_min pour "sociétés ayant fait 5M de CA en 2024". |
| credit_scored | boolean | true pour ne garder que les sociétés qui ont un score crédit, false pour les exclure |
| dirigeant_nom | string | Nom de famille du dirigeant (recherche exacte). Ex: "GUILLEMOT". Combine avec dirigeant_prenom et dirigeant_naissance pour désambiguïser les homonymes. |
| plan_en_cours | boolean | Sociétés exécutant un plan (redressement, sauvegarde ou cession). Distinct de procedure_collective : sous plan, la période d'observation est terminée. |
| include_fields | string | Champs à ajouter à chaque résultat (CSV). Une valeur filtrée n'apparaît que si son champ est demandé. Montants et ratios : le champ porte le nom du filtre sans _min/_max (ebitda_min -> ebitda, capitaux_propres_min -> capitaux_propres, nb_cessions_min -> nb_cessions). Exceptions : dividendes_min -> dividendes_verses ; nb_marches_min -> nb_marches_titulaire,montant_marches_titulaire ; nb_subventions_min -> nb_subventions,montant_subventions_total ; nb_brevets_min -> nb_brevets,nb_brevets_actifs. Financier : ca, marge_brute, valeur_ajoutee, ebitda, resultat_exploitation, resultat_net, marge_nette, marge_ebitda, total_actif, capitaux_propres, tresorerie, dettes_financieres, dettes_fournisseurs, dette_nette, bfr, ratio_endettement, capacite_autofinancement, dividendes_verses, delai_paiement_clients_jours, delai_paiement_fournisseurs_jours, effectif_moyen, annee_financiere. Croissance : croissance_ca, croissance_ebitda, croissance_rn, et leurs variantes _2ans, _3ans, _5ans. Signaux BODACC : nb_cessions, derniere_cession_date, a_fusionne, nb_modifications_capital, nb_transferts_siege, nb_changements_denomination, nb_evt_modif_admin. Données publiques : nb_marches_titulaire, montant_marches_titulaire, nb_subventions, montant_subventions_total, nb_brevets, nb_brevets_actifs, nb_participations_salons, est_societe_mission, est_ess. Fonds PE/VC : a_fonds, nom_fonds, siren_fonds, type_fonds, annee_entree_fonds, nb_fonds_actuels. Côtées : a_lei, lei, source_esef, source_gleif, nb_instruments_financiers. Compteurs et fraîcheur : nb_dirigeants, nb_etablissements, nb_representants_actifs, derniere_evt_date, dernier_depot_date, dernier_marche_date. Texte : description_activite (alias description ; reprend souvent le libellé NAF), objet_social, site_internet (~40 % des sociétés à CA > 8 M EUR). Le descriptif est déjà cherché par query. Plan gratuit : ca, resultat_net, effectif_moyen, croissance_ca, annee_financiere, plus les champs signaux, données publiques et texte. |
| tresorerie_max | number | Trésorerie maximum en euros |
| tresorerie_min | number | Trésorerie minimum en euros |
| advanced_filters | any |
| dirigeant_prenom | string | Prénom du dirigeant. À utiliser avec dirigeant_nom. Ex: "Yves" |
| resultat_net_max | number | Résultat net maximum en euros |
| resultat_net_min | number | Résultat net minimum en euros |
| age_dirigeant_max | number | Âge maximum des dirigeants (années). Ex: 50 pour moins de 50 ans. Filtre si au moins un dirigeant correspond. |
| age_dirigeant_min | number | Âge minimum des dirigeants (années). Ex: 60 pour 60 ans et plus. Filtre si au moins un dirigeant correspond. |
| date_creation_max | string | Date de création maximum (ISO). Ex: "2021-12-31" pour les sociétés créées avant 2022 |
| date_creation_min | string | Date de création minimum (ISO). Ex: "2021-01-01" pour les sociétés créées après 2021 |
| dirigeant_naissance | string | Naissance du dirigeant pour désambiguïser les homonymes, granularité mois : format YYYY-MM. Ex: "1975-03" (un YYYY-MM-DD est accepté mais le jour est ignoré). Pour une désambiguïsation au jour près, utiliser search_director_companies. |
| inclure_estimations | boolean | Sociétés au compte de résultat confidentiel (aucun CA déposé). false (défaut) : aucun chiffre estimé ; ces sociétés portent seulement estimation_disponible=true, et avec un filtre de CA la réponse donne estimations_complement (celles dont le CA ESTIMÉ passerait). true : chaque société concernée porte estimation_ca (fourchette, confiance), une ESTIMATION et jamais un CA déposé, et les filtres de CA les incluent. |
| procedure_collective | string | Procédure collective EN COURS (état courant, pas l'historique). Valeurs: "liquidation", "redressement", "sauvegarde", "conciliation", "autre", "accord_homologue", "plan_redressement", "plan_sauvegarde", "plan_cession". Plusieurs séparés par virgule. "accord_homologue" = accord de conciliation homologué en cours d'exécution, ce qui CLOT la conciliation et ne l'ouvre pas ; "conciliation" ne désigne qu'une ouverture, que le BODACC ne publie pas. Une procédure clôturée ne correspond pas : les sociétés dont la liquidation est close en sont exclues. |
| estimation_confiance_min | string | Avec inclure_estimations : confiance minimale des estimations retenues. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"limit": {
"type": "number",
"description": "Résultats par page (défaut 20, max 20 ; au-delà, ramené à 20)."
},
"query": {
"type": "string",
"description": "Nom, SIREN, mot-clé activité, ou \"*\" pour rechercher uniquement par filtres. Opérateurs acceptés : \"expression exacte\", OR en majuscules (ou |) entre deux termes, -terme pour exclure, parenthèses pour grouper. Ex : (logiciel OR saas) \"gestion de paie\" -holding. Dès qu'un autre filtre est posé (ville, code_naf...), la query ne fait plus que CLASSER : seul -terme reste un filtre, OR et l'expression exacte ne réduisent plus le total."
},
"ville": {
"type": "string",
"description": "Nom de ville. Plusieurs villes séparées par virgule. Ex: \"Paris,Lyon,Bordeaux\""
},
"ca_max": {
"type": "number",
"description": "CA maximum en euros. Ex: 50000000 pour 50M"
},
"ca_min": {
"type": "number",
"description": "CA minimum en euros. Ex: 5000000 pour 5M"
},
"cursor": {
"type": "string",
"description": "Curseur de pagination retourne dans next_cursor de la réponse précédente. Ne pas fournir pour la première page."
},
"radius": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Rayon de recherche en km (1-200) autour de latitude/longitude. Les trois vont ensemble : un triplet incomplet est refusé."
},
"region": {
"type": "string",
"description": "Région. Ex: \"Île-de-France\", \"Bretagne\", \"Auvergne-Rhône-Alpes\""
},
"statut": {
"enum": [
"ACTIVE",
"DISSOLVED"
],
"type": "string",
"description": "Filtre par statut au registre. DISSOLVED = dissoute ou radiée ; une société en procédure collective reste ACTIVE jusqu'à sa radiation. Le statut ne se déduit PAS de date_radiation, absente sur environ 9,9M des 12,4M sociétés dissoutes."
},
"sort_by": {
"enum": [
"relevance",
"chiffre_affaires",
"resultat_net",
"effectif_moyen",
"date_creation",
"capital"
],
"type": "string",
"description": "Tri des résultats. Par défaut \"relevance\". Ex: \"chiffre_affaires\" pour trier par CA."
},
"code_naf": {
"type": "string",
"description": "Code NAF/APE. Exemples courants :\n- SaaS/Logiciel : 5829C, 6201Z, 6202A\n- Conseil IT : 6202A, 6209Z\n- Conseil management : 7022Z\n- Fintech : 6419Z, 6499Z\n- Biotech/Pharma : 2120Z, 7211Z\n- E-commerce : 4791A, 4791B\n- BTP : 4120A, 4120B\n- Restauration : 5610A, 5610C\nPlusieurs codes séparés par virgule. Accepte aussi un niveau supérieur, étendu à toutes ses sous-classes : une section (C = industrie manufacturière, F = construction, J = information et communication), une division (25 = produits métalliques) ou un groupe (25.6). Pour un secteur large, préférer la section ou la division à un mot-clé dans query."
},
"is_cotee": {
"type": "boolean",
"description": "true pour les sociétés cotées en bourse uniquement, false pour les exclure"
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude du centre pour une recherche par rayon (WGS84). À fournir avec longitude ET radius."
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude du centre pour une recherche par rayon (WGS84). À fournir avec latitude ET radius."
},
"sort_order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Ordre de tri. Par défaut \"desc\". Ex: \"asc\" pour les plus petits CA en premier."
},
"cagr_ca_max": {
"type": "number",
"description": "Croissance CA max sur 1 an en % (ex: 50 pour +50%)"
},
"cagr_ca_min": {
"type": "number",
"description": "Croissance CA min sur 1 an en % (ex: 20 pour +20%)"
},
"code_postal": {
"type": "string",
"description": "Code postal du siège. Ex: \"75001\", \"69001\". Plusieurs séparés par virgule."
},
"departement": {
"type": "string",
"description": "Code département. Ex: \"75\", \"33\", \"69\""
},
"has_website": {
"type": "boolean",
"description": "true pour ne retourner que les sociétés ayant un site web"
},
"credit_grade": {
"type": "array",
"items": {
"enum": [
"AAA",
"AA",
"A",
"BBB",
"BB",
"B",
"CCC",
"D"
],
"type": "string"
},
"description": "Grades de risque crédit à garder (OR). Ex: [\"CCC\",\"D\"] pour les sociétés à risque élevé, [\"AAA\",\"AA\"] pour les plus solides. ~900k sociétés scorées (celles avec un bilan récent) ; les non scorées sont exclues dès qu'un grade est demandé."
},
"effectif_max": {
"type": "number",
"description": "Effectif maximum (nombre de salariés)"
},
"effectif_min": {
"type": "number",
"description": "Effectif minimum (nombre de salariés)"
},
"filter_annee": {
"type": "number",
"description": "Année de l'exercice financier. Filtre les sociétés dont le dernier bilan publié correspond à cette année. Ex: 2024 pour ne voir que les bilans 2024. Combiner avec ca_min pour \"sociétés ayant fait 5M de CA en 2024\"."
},
"credit_scored": {
"type": "boolean",
"description": "true pour ne garder que les sociétés qui ont un score crédit, false pour les exclure"
},
"dirigeant_nom": {
"type": "string",
"description": "Nom de famille du dirigeant (recherche exacte). Ex: \"GUILLEMOT\". Combine avec dirigeant_prenom et dirigeant_naissance pour désambiguïser les homonymes."
},
"plan_en_cours": {
"type": "boolean",
"description": "Sociétés exécutant un plan (redressement, sauvegarde ou cession). Distinct de procedure_collective : sous plan, la période d'observation est terminée."
},
"include_fields": {
"type": "string",
"description": "Champs à ajouter à chaque résultat (CSV). Une valeur filtrée n'apparaît que si son champ est demandé. Montants et ratios : le champ porte le nom du filtre sans _min/_max (ebitda_min -> ebitda, capitaux_propres_min -> capitaux_propres, nb_cessions_min -> nb_cessions). Exceptions : dividendes_min -> dividendes_verses ; nb_marches_min -> nb_marches_titulaire,montant_marches_titulaire ; nb_subventions_min -> nb_subventions,montant_subventions_total ; nb_brevets_min -> nb_brevets,nb_brevets_actifs.\nFinancier : ca, marge_brute, valeur_ajoutee, ebitda, resultat_exploitation, resultat_net, marge_nette, marge_ebitda, total_actif, capitaux_propres, tresorerie, dettes_financieres, dettes_fournisseurs, dette_nette, bfr, ratio_endettement, capacite_autofinancement, dividendes_verses, delai_paiement_clients_jours, delai_paiement_fournisseurs_jours, effectif_moyen, annee_financiere.\nCroissance : croissance_ca, croissance_ebitda, croissance_rn, et leurs variantes _2ans, _3ans, _5ans.\nSignaux BODACC : nb_cessions, derniere_cession_date, a_fusionne, nb_modifications_capital, nb_transferts_siege, nb_changements_denomination, nb_evt_modif_admin.\nDonnées publiques : nb_marches_titulaire, montant_marches_titulaire, nb_subventions, montant_subventions_total, nb_brevets, nb_brevets_actifs, nb_participations_salons, est_societe_mission, est_ess.\nFonds PE/VC : a_fonds, nom_fonds, siren_fonds, type_fonds, annee_entree_fonds, nb_fonds_actuels.\nCôtées : a_lei, lei, source_esef, source_gleif, nb_instruments_financiers.\nCompteurs et fraîcheur : nb_dirigeants, nb_etablissements, nb_representants_actifs, derniere_evt_date, dernier_depot_date, dernier_marche_date.\nTexte : description_activite (alias description ; reprend souvent le libellé NAF), objet_social, site_internet (~40 % des sociétés à CA > 8 M EUR). Le descriptif est déjà cherché par query.\nPlan gratuit : ca, resultat_net, effectif_moyen, croissance_ca, annee_financiere, plus les champs signaux, données publiques et texte."
},
"tresorerie_max": {
"type": "number",
"description": "Trésorerie maximum en euros"
},
"tresorerie_min": {
"type": "number",
"description": "Trésorerie minimum en euros"
},
"advanced_filters": {
"anyOf": [
{
"type": "object",
"properties": {
"ca_max": {
"type": "number",
"description": "CA maximum (euros)"
},
"a_fonds": {
"type": "boolean",
"description": "true = détenue par un fonds d'investissement PE/VC"
},
"bfr_max": {
"type": "number"
},
"bfr_min": {
"type": "number"
},
"est_ess": {
"type": "boolean",
"description": "true = économie sociale et solidaire"
},
"a_fusionne": {
"type": "boolean",
"description": "true = a participé à une fusion"
},
"ebitda_max": {
"type": "number",
"description": "EBITDA maximum"
},
"ebitda_min": {
"type": "number",
"description": "EBITDA minimum"
},
"cagr_ca_max": {
"type": "number"
},
"capital_max": {
"type": "number",
"description": "Capital social maximum"
},
"capital_min": {
"type": "number",
"description": "Capital social minimum"
},
"effectif_max": {
"type": "number",
"description": "Tranche INSEE maximum"
},
"data_freshness": {
"type": "number",
"description": "Fraîcheur des bilans en années. Ex: 2 pour bilans < 2 ans"
},
"dividendes_max": {
"type": "number"
},
"dividendes_min": {
"type": "number"
},
"nb_brevets_min": {
"type": "number",
"description": "\"sociétés avec brevets\" -> 1"
},
"nb_marches_max": {
"type": "number"
},
"nb_marches_min": {
"type": "number",
"description": "\"sociétés avec marchés publics\" -> 1"
},
"tresorerie_max": {
"type": "number"
},
"cagr_rn_1an_max": {
"type": "number"
},
"cagr_rn_1an_min": {
"type": "number"
},
"dette_nette_max": {
"type": "number"
},
"dette_nette_min": {
"type": "number"
},
"marge_brute_max": {
"type": "number"
},
"marge_brute_min": {
"type": "number"
},
"marge_nette_max": {
"type": "number"
},
"marge_nette_min": {
"type": "number"
},
"nb_cessions_max": {
"type": "number"
},
"nb_cessions_min": {
"type": "number"
},
"total_actif_max": {
"type": "number"
},
"total_actif_min": {
"type": "number"
},
"cagr_ca_2ans_max": {
"type": "number"
},
"cagr_ca_2ans_min": {
"type": "number"
},
"cagr_ca_3ans_max": {
"type": "number"
},
"cagr_ca_3ans_min": {
"type": "number"
},
"cagr_ca_5ans_max": {
"type": "number"
},
"cagr_ca_5ans_min": {
"type": "number"
},
"cagr_rn_2ans_max": {
"type": "number"
},
"cagr_rn_2ans_min": {
"type": "number"
},
"cagr_rn_3ans_max": {
"type": "number"
},
"cagr_rn_3ans_min": {
"type": "number"
},
"cagr_rn_5ans_max": {
"type": "number"
},
"cagr_rn_5ans_min": {
"type": "number"
},
"marge_ebitda_max": {
"type": "number"
},
"marge_ebitda_min": {
"type": "number"
},
"resultat_net_max": {
"type": "number",
"description": "Résultat net maximum"
},
"age_dirigeant_min": {
"type": "number",
"description": "Âge minimum (années)"
},
"date_creation_max": {
"type": "string"
},
"civilite_dirigeant": {
"enum": [
"homme",
"femme",
"M",
"Mme",
"H",
"F"
],
"type": "string",
"description": "Genre du dirigeant. Au moins un dirigeant doit correspondre."
},
"comptes_consolides": {
"type": "boolean",
"description": "true = consolidés, false = sociaux uniquement"
},
"date_radiation_max": {
"type": "string"
},
"date_radiation_min": {
"type": "string"
},
"effectif_moyen_max": {
"type": "number"
},
"effectif_moyen_min": {
"type": "number",
"description": "Effectif exact des bilans, minimum"
},
"nb_subventions_min": {
"type": "number",
"description": "\"sociétés subventionnées\" -> 1"
},
"valeur_ajoutee_max": {
"type": "number"
},
"valeur_ajoutee_min": {
"type": "number"
},
"cagr_ebitda_1an_max": {
"type": "number"
},
"cagr_ebitda_1an_min": {
"type": "number"
},
"categorie_juridique": {
"type": "string",
"description": "Code INSEE de catégorie juridique, plusieurs séparés par virgule. Ex: \"5710\" SAS, \"5720\" SASU, \"5599\" SA, \"5499\" SARL"
},
"est_societe_mission": {
"type": "boolean"
},
"cagr_ebitda_2ans_max": {
"type": "number"
},
"cagr_ebitda_2ans_min": {
"type": "number"
},
"cagr_ebitda_3ans_max": {
"type": "number"
},
"cagr_ebitda_3ans_min": {
"type": "number"
},
"cagr_ebitda_5ans_max": {
"type": "number"
},
"cagr_ebitda_5ans_min": {
"type": "number"
},
"capitaux_propres_max": {
"type": "number"
},
"capitaux_propres_min": {
"type": "number"
},
"comptes_confidentiels": {
"type": "boolean",
"description": "true = comptes confidentiels, false = comptes publiés"
},
"ratio_endettement_max": {
"type": "number"
},
"ratio_endettement_min": {
"type": "number"
},
"dettes_financieres_max": {
"type": "number"
},
"dettes_financieres_min": {
"type": "number"
},
"dettes_fournisseurs_max": {
"type": "number"
},
"dettes_fournisseurs_min": {
"type": "number"
},
"cac_date_debut_mandat_max": {
"type": "string"
},
"cac_date_debut_mandat_min": {
"type": "string",
"description": "Date de début de mandat du commissaire aux comptes (titulaire ou suppléant), minimum"
},
"derniere_cession_date_max": {
"type": "string"
},
"derniere_cession_date_min": {
"type": "string"
},
"resultat_exploitation_max": {
"type": "number"
},
"resultat_exploitation_min": {
"type": "number"
},
"capacite_autofinancement_max": {
"type": "number"
},
"capacite_autofinancement_min": {
"type": "number"
},
"delai_paiement_clients_jours_max": {
"type": "number"
},
"delai_paiement_clients_jours_min": {
"type": "number"
},
"delai_paiement_fournisseurs_jours_max": {
"type": "number"
},
"delai_paiement_fournisseurs_jours_min": {
"type": "number"
}
},
"description": "Filtres avancés. Rappel include_fields : nb_marches_min -> nb_marches_titulaire,montant_marches_titulaire ; nb_subventions_min -> nb_subventions,montant_subventions_total ; nb_brevets_min -> nb_brevets,nb_brevets_actifs ; dividendes_min -> dividendes_verses.",
"additionalProperties": false
},
{
"type": "string",
"description": "DEPRECATED - JSON sérialisé des mêmes clés. Préférer l'objet typé."
}
]
},
"dirigeant_prenom": {
"type": "string",
"description": "Prénom du dirigeant. À utiliser avec dirigeant_nom. Ex: \"Yves\""
},
"resultat_net_max": {
"type": "number",
"description": "Résultat net maximum en euros"
},
"resultat_net_min": {
"type": "number",
"description": "Résultat net minimum en euros"
},
"age_dirigeant_max": {
"type": "number",
"description": "Âge maximum des dirigeants (années). Ex: 50 pour moins de 50 ans. Filtre si au moins un dirigeant correspond."
},
"age_dirigeant_min": {
"type": "number",
"description": "Âge minimum des dirigeants (années). Ex: 60 pour 60 ans et plus. Filtre si au moins un dirigeant correspond."
},
"date_creation_max": {
"type": "string",
"description": "Date de création maximum (ISO). Ex: \"2021-12-31\" pour les sociétés créées avant 2022"
},
"date_creation_min": {
"type": "string",
"description": "Date de création minimum (ISO). Ex: \"2021-01-01\" pour les sociétés créées après 2021"
},
"dirigeant_naissance": {
"type": "string",
"description": "Naissance du dirigeant pour désambiguïser les homonymes, granularité mois : format YYYY-MM. Ex: \"1975-03\" (un YYYY-MM-DD est accepté mais le jour est ignoré). Pour une désambiguïsation au jour près, utiliser search_director_companies."
},
"inclure_estimations": {
"type": "boolean",
"description": "Sociétés au compte de résultat confidentiel (aucun CA déposé). false (défaut) : aucun chiffre estimé ; ces sociétés portent seulement estimation_disponible=true, et avec un filtre de CA la réponse donne estimations_complement (celles dont le CA ESTIMÉ passerait). true : chaque société concernée porte estimation_ca (fourchette, confiance), une ESTIMATION et jamais un CA déposé, et les filtres de CA les incluent."
},
"procedure_collective": {
"type": "string",
"description": "Procédure collective EN COURS (état courant, pas l'historique). Valeurs: \"liquidation\", \"redressement\", \"sauvegarde\", \"conciliation\", \"autre\", \"accord_homologue\", \"plan_redressement\", \"plan_sauvegarde\", \"plan_cession\". Plusieurs séparés par virgule. \"accord_homologue\" = accord de conciliation homologué en cours d'exécution, ce qui CLOT la conciliation et ne l'ouvre pas ; \"conciliation\" ne désigne qu'une ouverture, que le BODACC ne publie pas. Une procédure clôturée ne correspond pas : les sociétés dont la liquidation est close en sont exclues."
},
"estimation_confiance_min": {
"enum": [
"haute",
"moyenne",
"faible"
],
"type": "string",
"description": "Avec inclure_estimations : confiance minimale des estimations retenues."
}
},
"additionalProperties": false
}| date_naissance* | string | Date de naissance au format YYYY-MM-DD (requis, désambiguïse les homonymes). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"nom",
"prenom",
"date_naissance"
],
"properties": {
"nom": {
"type": "string",
"description": "Nom de famille du dirigeant (requis)."
},
"limit": {
"type": "number",
"description": "Nombre de sociétés à retourner (défaut 50, max 200) ; 1 appel de quota."
},
"prenom": {
"type": "string",
"description": "Prénom du dirigeant (requis)."
},
"date_naissance": {
"type": "string",
"description": "Date de naissance au format YYYY-MM-DD (requis, désambiguïse les homonymes)."
}
},
"additionalProperties": false
}| limit | number | Nombre de sociétés à scanner (défaut 20, max 20). |
| prenom | string | Prénom (optionnel) pour désambiguïser les homonymes. |
| include_inactive | boolean | Inclure les mandats inactifs (par défaut : false). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"nom"
],
"properties": {
"nom": {
"type": "string",
"description": "Nom de famille du dirigeant recherché (requis)."
},
"role": {
"type": "string",
"description": "Role/qualite (optionnel), ex: 'Président', 'Gérant', 'Administrateur'."
},
"limit": {
"type": "number",
"description": "Nombre de sociétés à scanner (défaut 20, max 20)."
},
"prenom": {
"type": "string",
"description": "Prénom (optionnel) pour désambiguïser les homonymes."
},
"include_inactive": {
"type": "boolean",
"description": "Inclure les mandats inactifs (par défaut : false)."
}
},
"additionalProperties": false
}| Nombre d'événements (max 20 ; 1 000 par recherche) |
| ville | string | Ville du siège (CSV possible). Ex: "Marseille". Le bon filtre pour un ressort de tribunal : plus étroit que département. |
| cursor | string | Curseur de pagination (plan Pro uniquement) |
| region | string | Région. Ex: "Île-de-France", "Bretagne" |
| code_naf | string | Code NAF/APE. CSV possible, et un niveau supérieur couvre toutes ses sous-classes : division (49), groupe (49.4), section (H). Tous les codes d'une même question vont dans UN appel, jamais un appel par code. |
| date_max | string | Date max (YYYY-MM-DD) |
| date_min | string | Date min (YYYY-MM-DD) |
| prix_max | number | Prix de vente max en euros (filtre cession) |
| prix_min | number | Prix de vente min en euros (filtre cession) |
| tribunal | string | Tribunal (filtre procedure, recherche partielle) |
| departement | string | Code département. Ex: "75", "69" |
| cedant_siren | string | SIREN du cédant (filtre cession) |
| procedure_type | string | Type(s) de procédure (CSV) : liquidation, redressement, sauvegarde, conciliation |
| cessionnaire_siren | string | SIREN du cessionnaire (filtre cession) |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"type": {
"type": "string",
"description": "Types d'événements (CSV) : cession, procedure, depot_comptes, augmentation_capital, marche_public, subvention, radiation, creation. Défaut : tous."
},
"limit": {
"type": "number",
"description": "Nombre d'événements (max 20 ; 1 000 par recherche)"
},
"ville": {
"type": "string",
"description": "Ville du siège (CSV possible). Ex: \"Marseille\". Le bon filtre pour un ressort de tribunal : plus étroit que département."
},
"cursor": {
"type": "string",
"description": "Curseur de pagination (plan Pro uniquement)"
},
"region": {
"type": "string",
"description": "Région. Ex: \"Île-de-France\", \"Bretagne\""
},
"code_naf": {
"type": "string",
"description": "Code NAF/APE. CSV possible, et un niveau supérieur couvre toutes ses sous-classes : division (49), groupe (49.4), section (H). Tous les codes d'une même question vont dans UN appel, jamais un appel par code."
},
"date_max": {
"type": "string",
"description": "Date max (YYYY-MM-DD)"
},
"date_min": {
"type": "string",
"description": "Date min (YYYY-MM-DD)"
},
"prix_max": {
"type": "number",
"description": "Prix de vente max en euros (filtre cession)"
},
"prix_min": {
"type": "number",
"description": "Prix de vente min en euros (filtre cession)"
},
"tribunal": {
"type": "string",
"description": "Tribunal (filtre procedure, recherche partielle)"
},
"departement": {
"type": "string",
"description": "Code département. Ex: \"75\", \"69\""
},
"cedant_siren": {
"type": "string",
"description": "SIREN du cédant (filtre cession)"
},
"procedure_type": {
"type": "string",
"description": "Type(s) de procédure (CSV) : liquidation, redressement, sauvegarde, conciliation"
},
"cessionnaire_siren": {
"type": "string",
"description": "SIREN du cessionnaire (filtre cession)"
}
},
"additionalProperties": false
}