Entreprises
Qualifier un prospect B2B, fiabiliser une base clients, compléter une fiche fournisseur : ces deux endpoints interrogent les données officielles SIRENE (INSEE) — raison sociale, SIRET/SIREN, code NAF, effectifs, état administratif — pour l'ensemble des entreprises et établissements inscrits au répertoire, France entière.
Deux mots reviennent partout dans ce guide :
l'entreprise (« unité légale » au sens INSEE),
identifiée par un SIREN à 9 chiffres
(979885324), et
l'établissement — un site physique de cette
entreprise — identifié par un SIRET à 14 chiffres
(97988532400017 = SIREN + 5 chiffres). Une entreprise
a toujours au moins un établissement : son siège.
| Endpoint | Quand l'utiliser | Plan minimum |
|---|---|---|
GET /company/search |
Trouver une entreprise ou un établissement — par nom, SIREN, SIRET, filtres, ou proximité géographique |
Discovery
(proximité lat/lon/rayon_m :
Growth)
|
GET /company/view/{etablissement_id} |
Fiche complète par SIRET — ou par SIREN, qui renvoie l'établissement siège | Discovery (richesse de la fiche selon le plan) |
GET /company/search — trouver une entreprise ou un établissement
Passez un nom, un sigle ou une enseigne dans q (2 à
200 caractères) ; un SIREN ou un SIRET, même formaté avec des
espaces (« 979 885 324 »), est reconnu et recherché à
l'exact. Des filtres optionnels affinent la requête :
ville et adresse (flous),
code_postal, code_naf et
etat_administratif (A actif /
F fermé, exacts).
curl -H "Authorization: Bearer VOTRE_CLE_API" \
"https://api.trustydata.app/services/v1/company/search?q=trustydata"
{
"results": [
{
"siren": "979885324",
"siret": "97988532400017",
"nic": "00017",
"est_siege": true,
"diffusible": true,
"nom_complet": "TRUSTYDATA",
"enseigne": "KRIKRAM",
"complement": null,
"adresse": "32 B RUE DE LABBEVILLE",
"code_postal": "95690",
"commune": "NESLES-LA-VALLEE",
"code_commune": "95446",
"cedex_code": null,
"cedex_libelle": null,
"date_creation": "2023-10-01",
"activite_principale": { "code": "62.02A", "libelle": "Conseil en systèmes et logiciels informatiques" },
"categorie_juridique": { "code": "5499", "libelle": "Société à responsabilité limitée (sans autre indication)" },
"tranche_effectifs": { "code": "NN", "libelle": "Unité non employeuse" },
"etat_administratif": { "code": "A", "libelle": "Actif" },
"siege": null,
"distance_m": null
}
],
"total_results": 1,
"total_capped": false,
"resultats_approches": false,
"classement_pertinence": true,
"page": 1,
"per_page": 10
}
Un résultat est toujours un établissement (un
SIRET), même quand la recherche raisonne au grain entreprise. Les
champs codés (activité NAF, catégorie juridique, tranche
d'effectifs, état) sont rendus décodés en paires
{code, libelle}. Deux champs guident la lecture :
classement_pertinence: true signifie que les
résultats sont ordonnés du plus au moins pertinent ; quand il vaut
false (listing par siren=, proximité),
le premier résultat n'est pas « le plus probable ».
siege pointe vers l'établissement siège quand le
résultat est un établissement secondaire, et vaut
null quand le résultat est le siège
(est_siege: true). La pagination se pilote avec
page et per_page (10 par défaut, 100
max). Une liste vide fait autorité : aucune entreprise ne
correspond. Les résultats de search sont identiques
quel que soit le plan.
Le paramètre grouper — choisir le grain
grouper=true renvoie un résultat par
entreprise (par SIREN), représentée par son meilleur
établissement — le siège de préférence. C'est le mode qui répond à
« quelles entreprises s'appellent X ? ».
grouper=false renvoie un résultat par
établissement (par SIRET) — « quels sites, quels points
de vente ? ». Omis, il vaut true dès que
q est fourni, et bascule automatiquement à
false quand la requête raisonne par nature au grain
établissement : recherche par proximité
(lat/lon/rayon_m), listing
des établissements d'un SIREN (siren=979885324), ou
listing sans critère.
Recherche par proximité Growth
Ajoutez lat, lon (WGS84) et
rayon_m (en mètres, 50 000 max) pour lister les
établissements autour d'un point — les boulangeries à moins d'un
kilomètre du centre de Paris, par exemple. Ce mode est réservé aux
plans Growth et Business ; le reste de search est
ouvert à tous les plans.
curl -G "https://api.trustydata.app/services/v1/company/search" \
-H "Authorization: Bearer VOTRE_CLE_API" \
--data-urlencode "q=boulangerie" \
--data-urlencode "lat=48.8566" \
--data-urlencode "lon=2.3522" \
--data-urlencode "rayon_m=1000"
{
"results": [
{
"siren": "801911918",
"siret": "80191191800028",
"nic": "00028",
"est_siege": false,
"diffusible": true,
"nom_complet": "BOULANGERIE PARIS & CO GAITE",
"enseigne": "BOULANGERIE PARIS & CO",
"adresse": "4 B RUE DES ECOLES",
"code_postal": "75005",
"commune": "PARIS",
"code_commune": "75105",
"date_creation": "2016-04-28",
"activite_principale": { "code": "10.71C", "libelle": "Boulangerie et boulangerie-pâtisserie" },
"categorie_juridique": { "…": "…" },
"tranche_effectifs": { "…": "…" },
"etat_administratif": { "code": "F", "libelle": "Fermé" },
"siege": { "siret": "80191191800036", "nom_complet": "BOULANGERIE PARIS & CO GAITE" },
"distance_m": 972.22285741
},
{ "…": "…" }
],
"total_results": 46,
"total_capped": false,
"resultats_approches": false,
"classement_pertinence": false,
"page": 1,
"per_page": 10
}
Réponse tronquée (les 9 résultats suivants de la page ont la même
structure que le premier, et les blocs décodés secondaires sont
repliés). distance_m — rempli uniquement en mode
proximité — donne la distance au point demandé, en mètres.
grouper a basculé de lui-même au grain établissement,
et classement_pertinence: false rappelle que le
premier résultat n'est pas le meilleur match textuel. Notez
l'état F (fermé) du premier établissement : la base
SIRENE conserve l'historique — ajoutez
etat_administratif=A pour ne garder que les
établissements actifs.
GET /company/view/{etablissement_id} — la fiche complète
Un seul endpoint de fiche, deux usages : passez un
SIRET (14 chiffres) pour la fiche de cet
établissement, ou un SIREN (9 chiffres) pour
obtenir la fiche de l'établissement siège de
l'entreprise. Nous avons vérifié les deux appels pendant la
rédaction : view/979885324 renvoie exactement la même
fiche que view/97988532400017, le SIRET du siège.
curl -H "Authorization: Bearer VOTRE_CLE_API" \
"https://api.trustydata.app/services/v1/company/view/97988532400017"
{
"siret": "97988532400017",
"siren": "979885324",
"nic": "00017",
"est_siege": true,
"nom_complet": "TRUSTYDATA",
"adresse": "32 B RUE DE LABBEVILLE 95690 NESLES-LA-VALLEE",
"numero_voie": "32",
"indice_repetition": "B",
"type_voie": "RUE",
"libelle_voie": "DE LABBEVILLE",
"code_postal": "95690",
"commune": "95446",
"libelle_commune": "NESLES-LA-VALLEE",
"departement": { "code": "95", "libelle": "Val-d'Oise" },
"region": { "code": "11", "libelle": "Île-de-France" },
"nom_commercial": "KRIKRAM",
"activite_principale": { "code": "62.02A", "libelle": "Conseil en systèmes et logiciels informatiques" },
"date_creation": "2023-10-01",
"tranche_effectif_salarie": { "code": "NN", "libelle": "Unité non employeuse" },
"caractere_employeur": false,
"etat_administratif": { "code": "A", "libelle": "Actif", "date_effet": null },
"diffusible": true,
"unite_legale": {
"siren": "979885324",
"nom_complet": "TRUSTYDATA",
"nature_juridique": { "code": "5499", "libelle": "Société à responsabilité limitée (sans autre indication)" },
"activite_principale": { "code": "62.02A", "libelle": "Conseil en systèmes et logiciels informatiques" },
"etat_administratif": { "code": "A", "libelle": "Active", "date_effet": null },
"date_creation": "2023-10-01",
"categorie_entreprise": "PME",
"diffusible": true,
"tva": "FR77979885324",
"nombre_etablissements": 1,
"nombre_etablissements_ouverts": 1,
"dirigeants": [
{
"type_dirigeant": "physique",
"nom": "TRISTRAM",
"prenoms": "Hervé Daniel",
"qualite": { "code": "30", "libelle": "Gérant" },
"date_naissance": "1975-06",
"opposition_prospection": true,
"…": "…"
}
],
"identite_rne": {
"capital": { "montant": 500.0, "devise": "EUR", "variable": false },
"…": "…"
},
"finances": [
{
"annee": 2025,
"date_cloture": "2025-08-31",
"chiffre_affaires": 119794,
"resultat_net": 1350,
"…": "…"
}
],
"procedures_collectives": { "procedure_en_cours": false, "jugements": [] },
"…": "…"
},
"latitude": 49.130632999986936,
"longitude": 2.1632529999999996,
"epci": { "code": "249500430", "libelle": "Communauté de communes Sausseron Impressionnistes" },
"conventions_collectives": []
}
Réponse obtenue en plan
Business,
tronquée pour la lisibilité (la fiche réelle contient d'autres
champs de détail — objet social complet, section d'activité,
enseignes — matérialisés ici par "…"). La structure
se lit en deux niveaux : la racine décrit
l'établissement (adresse détaillée champ par champ,
activité, effectifs, état, coordonnées) et le bloc
unite_legale décrit l'entreprise qui le
porte (identité, n° de TVA, dirigeants, données financières,
procédures collectives). Pour une donnée d'entreprise, lisez
unite_legale ; pour une donnée de site, lisez la
racine. Attention : commune contient le code commune
INSEE (95446), pas le code postal — le nom est dans
libelle_commune. Le bloc identite_rne
et les dirigeants proviennent du Registre national
des entreprises.
Richesse de la fiche selon le plan
| Plan | Racine (établissement) | Bloc unite_legale (entreprise) |
|---|---|---|
| Discovery | identité + adresse complète | identité |
| Starter | + latitude/longitude |
+ tva, compteurs d'établissements |
| Growth | + epci, conventions_collectives |
+ dirigeants, identite_rne |
| Business | (identique à Growth) | + finances, procedures_collectives |
Un champ hors plan est absent — pas à null
Les champs au-delà de votre plan sont absents de la
réponse, ils n'apparaissent pas à null.
En Discovery, la fiche ci-dessus n'a ni clé
latitude ni clé dirigeants — la donnée
existe pourtant. Ne déduisez jamais d'un champ manquant que
l'information n'existe pas : elle est simplement réservée à un
plan supérieur (détail dans Plans &
quotas).
Confidentialité : deux drapeaux à ne pas confondre
La fiche porte deux informations de confidentialité qui se
ressemblent et n'ont rien à voir :
diffusible vient de l'INSEE et porte
sur l'entreprise,
opposition_prospection vient de l'INPI
et porte sur une personne. Une entreprise
parfaitement diffusible peut avoir un dirigeant opposé au
démarchage, et inversement. Les confondre conduit soit à écarter des
entreprises exploitables, soit à démarcher des personnes qui s'y
sont opposées.
diffusible |
opposition_prospection |
|
|---|---|---|
| Source | INSEE — répertoire SIRENE | INPI — Registre national des entreprises |
| Porte sur | L'entreprise (unité légale) | Une personne (le dirigeant déclarant) |
| Où le lire |
Racine de la fiche, bloc unite_legale, et chaque
résultat de GET /company/search
|
Chaque entrée de
unite_legale.dirigeants[], dans
GET /company/view/{id} uniquement
|
| Valeurs | true / false |
true = opposée,
false = pas d'opposition enregistrée,
null = non renseigné à la source
|
| Effet dans la réponse |
false ⇒ nom et adresse masqués
(servis à null), commune conservée
|
Aucun — le dirigeant est servi normalement, le drapeau signale sans masquer |
| Ce que ça vous demande | Ne pas conclure que l'entreprise est introuvable ; ne jamais recompléter le nom masqué depuis une autre source | Exclure la personne de vos actions de prospection commerciale ; les autres usages restent ouverts |
| Base légale | Art. A.123-96 du code de commerce | Art. R.123-320 du code de commerce |
| Plan | Discovery | Growth (avec les dirigeants) |
Unités non-diffusibles : un masquage légal, pas un bug
L'entreprise existe, son identité est masquée
Environ 10 % des unités légales sont
non-diffusibles : leur responsable a exercé son
droit à la non-diffusion auprès de l'INSEE. Pour ces entreprises,
le nom et l'adresse sont masqués dans toutes les réponses et le
drapeau diffusible vaut false — la
commune reste visible, le SIREN reste valide, et les dirigeants
RNE ne sont pas servis du tout. C'est une obligation légale, pas
une donnée manquante : ne recomplétez jamais ces champs depuis un
ancien export SIRENE.
Opposition à la prospection commerciale
Un dirigeant peut s'opposer à l'utilisation de ses données à des
fins de prospection commerciale. L'INPI enregistre
cette opposition sur la formalité ; l'API la restitue sur chaque
dirigeant, dans opposition_prospection :
"dirigeants": [
{
"type_dirigeant": "physique",
"nom": "TRISTRAM",
"prenoms": "Hervé Daniel",
"qualite": { "code": "30", "libelle": "Gérant" },
"date_naissance": "1975-06",
"opposition_prospection": true
}
]
Réponse obtenue en plan
Growth — le bloc
dirigeants est absent des plans inférieurs.
-
true— la personne s'est opposée. Retirez-la de vos campagnes de démarchage. -
false— aucune opposition enregistrée à la source. -
null— l'information n'est pas renseignée.nullne vaut pasfalse: traitez ce cas selon votre propre politique, ne le lisez pas comme un feu vert.
Le drapeau signale, il ne masque pas — et il vaut pour toute l'entreprise
Le dirigeant reste servi même quand
opposition_prospection vaut true :
l'opposition porte sur la prospection, pas sur
les autres usages (vérification de signataire, KYC, conformité),
et l'API ne peut pas connaître la finalité de votre appel. C'est
donc à vous, responsable de votre traitement, d'appliquer
l'exclusion.
Second point : l'INPI porte ce drapeau sur la formalité, donc au grain SIREN. La valeur est aujourd'hui identique pour tous les dirigeants d'une même entreprise — ne construisez aucune logique qui suppose une granularité par personne.
Le nom d'un dirigeant n'est pas un critère de recherche
GET /company/search ne cherche jamais sur les
dirigeants et ses résultats n'en contiennent aucun : la licence de
réutilisation du RNE (art. A.123-69 du code de commerce) restreint
les critères de recherche. Les dirigeants s'obtiennent uniquement
en lisant la fiche d'une entreprise déjà identifiée, via
GET /company/view/{id}.
Corollaire pratique : la réponse à « ce dirigeant est-il opposé au
démarchage ? » demande deux appels — la recherche
pour obtenir le SIREN ou le SIRET, puis la fiche pour lire
unite_legale.dirigeants[].opposition_prospection.
Sources
Les données proviennent de la base SIRENE de l'INSEE, du Registre
national des entreprises tenu par l'INPI (dirigeants, capital, objet
social) et du BODACC (procédures collectives), diffusés en open
data. Les dirigeants sont des données personnelles :
seuls le nom, le nom d'usage, les prénoms, le mois et l'année de
naissance sont publics — c'est pourquoi
date_naissance est tronquée à YYYY-MM.
Prochains pas
- Plans & quotas — comprendre ce qu'ouvre chaque palier
- Codes d'erreur — gérer les 401, 403, 429
- Référence complète — tous les paramètres, tous les champs
- Adresses — valider l'adresse d'un établissement contre le référentiel BAN