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" },
"…": "…"
}
],
"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é et sources
Unités non-diffusibles : un masquage légal, pas un bug
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. C'est une obligation légale, pas une
donnée manquante.
Les données proviennent de la base SIRENE de l'INSEE et du Registre national des entreprises, diffusés en open data.
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