TrustyData Docs
Site Tarifs Contact

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