L’API Siren est développée via le langage Rust créé par la fondation Mozilla. Ce langage moderne est un langage compilé. Cela lui permet d’être robuste et une rapidité d’exécution sans pareil. Ce langage évolue régulièrement au travers de mises à jour ce qui lui permet d’être toujours à la pointe en termes de sécurité.
L’API adopte une architecture REST. Elle est composée de deux endpoints pour récupérer les établissements et les unités légales qui sont détaillés dans la partie suivante.
Après avoir récupéré votre clé secrète d'API depuis l’espace client, il vous suffit de l'ajouter dans les en-têtes HTTP à chaque requête que vous faites à l’API Siren.
En-tête : X-Client-Secret
Valeur : votre clé d'API.
Route racine de l’API : https://data.siren-api.fr/
Ce endpoint est destiné à la recherche d'unité légale par numéro de SIREN.
Fournir le SIREN dans l’URL (une suite de 9 chiffres).
Ce endpoint retourne un JSON correspondant au modèle UniteLegaleResponse.
400 - Invalid DataLe SIREN fourni n’est pas au bon format.
404 - Not foundUnité Légale non trouvé
Ce endpoint est destiné à la recherche d’établissement par numéro de SIRET.
Fournir le SIRET dans l’URL (une suite de 14 chiffres).
Ce endpoint retourne un JSON correspondant au modèle EtablissementResponse.
400 - Invalid DataLe SIRET fourni n’est pas au bon format.
404 - Not foundÉtablissement non trouvé
{ "etablissement": { "siret": String // Ex: "79837235500023" "siren": String // Ex: "798372355" "nic": String // Ex: "00023" "statut_diffusion": String // Ex: "O" "date_creation": String // Ex: "2019-07-01" "tranche_effectifs": String "annee_effectifs": String "activite_principale_registre_metiers": String "date_dernier_traitement": String // "2019-10-28T03:33:12" "etablissement_siege": Bool // true "nombre_periodes": Number // Ex: 1 "complement_adresse": Number // Ex: null "numero_voie": String // Ex: "1" "indice_repetition": String // Ex: null "type_voie": String // Ex: "RUE" "libelle_voie": String // Ex: "DE SAVOIE" "code_postal": String // Ex: "75006" "libelle_commune": String // Ex: "PARIS 6" "libelle_commune_etranger": String // Ex: null "distribution_speciale": String // Ex: null "code_commune": String // Ex: "75106" "code_cedex": String // Ex: null "libelle_cedex": String // Ex: null "code_pays_etranger": String // Ex: null "libelle_pays_etranger": String // Ex: null "complement_adresse2": String // Ex: null "numero_voie_2": String // Ex: null "indice_repetition_2": String // Ex: null "type_voie_2": String // Ex: null "libelle_voie_2": String // Ex: null "code_postal_2": String // Ex: null "libelle_commune_2": String // Ex: null "libelle_commune_etranger_2": String // Ex: null "distribution_speciale_2": String // Ex: null "code_commune_2": String // Ex: null "code_cedex_2": String // Ex: null "libelle_cedex_2": String // Ex: null "code_pays_etranger_2": String // Ex: null "libelle_pays_etranger_2": String // Ex: null "date_debut": String // Ex: "2019-07-01" "etat_administratif": String // Ex: "A" "enseigne_1": String // Ex: "CREATIWITY" "enseigne_2": String // Ex: null "enseigne_3": String // Ex: null "denomination_usuelle": String // Ex: "CREATIWITY" "activite_principale": String // Ex: "62.02A" "nomenclature_activite_principale": String // Ex: "NAFRev2" "caractere_employeur": String // Ex: "O" "unite_legale": UniteLegale } }
{ "siret": String // Ex: "79837235500023" "siren": String // Ex: "798372355" "nic": String // Ex: "00023" "statut_diffusion": String // Ex: "O" "date_creation": String // Ex: "2019-07-01" "tranche_effectifs": String // Ex: null "annee_effectifs": String // Ex: null "activite_principale_registre_metiers": String // Ex: null "date_dernier_traitement": String // Ex: "2019-10-28T03:33:12" "etablissement_siege": Bool // Ex: true "nombre_periodes": Number // Ex: 1 "complement_adresse": String // Ex: null "numero_voie": String // Ex: "1" "indice_repetition": String // Ex: null "type_voie": String // Ex: "RUE" "libelle_voie": String // Ex: "DE SAVOIE" "code_postal": String // Ex: "75006" "libelle_commune": String // Ex: "PARIS 6" "libelle_commune_etranger": String // Ex: null "distribution_speciale": String // Ex: null "code_commune": String // Ex: "75106" "code_cedex": String // Ex: null "libelle_cedex": String // Ex: null "code_pays_etranger": String // Ex: null "libelle_pays_etranger": String // Ex: null "complement_adresse2": String // Ex: null "numero_voie_2": String // Ex: null "indice_repetition_2": String // Ex: null "type_voie_2": String // Ex: null "libelle_voie_2": String // Ex: null "code_postal_2": String // Ex: null "libelle_commune_2": String // Ex: null "libelle_commune_etranger_2": String // Ex: null "distribution_speciale_2": String // Ex: null "code_commune_2": String // Ex: null "code_cedex_2": String // Ex: null "libelle_cedex_2": String // Ex: null "code_pays_etranger_2": String // Ex: null "libelle_pays_etranger_2": String // Ex: null "date_debut": String // Ex: "2019-07-01" "etat_administratif": String // Ex: "A" "enseigne_1": String // Ex: "CREATIWITY" "enseigne_2": String // Ex: null "enseigne_3": String // Ex: null "denomination_usuelle": String // Ex: "CREATIWITY" "activite_principale": String // Ex: "62.02A" "nomenclature_activite_principale": String // Ex: "NAFRev2" "caractere_employeur": String // Ex: "O" }
{ "unite_legale": { "siren": String // Ex: "798372355" "statut_diffusion": String // Ex: "O" "unite_purgee": String // Ex: null "date_creation": String // Ex: "2013-10-30" "sigle": String // Ex: null "sexe": String // Ex: null "prenom_1": String // Ex: null "prenom_2": String // Ex: null "prenom_3": String // Ex: null "prenom_4": String // Ex: null "prenom_usuel": String // Ex: null "pseudonyme": String // Ex: null "identifiant_association": String // Ex: null "tranche_effectifs": String // Ex: "02" "annee_effectifs": Number // Ex: 2018 "date_dernier_traitement": String // Ex: "2020-08-25T11:07:37" "nombre_periodes": Number // Ex: 3 "categorie_entreprise": String // Ex: "PME" "annee_categorie_entreprise": Number // Ex: 2018 "date_debut": String // Ex: "2019-07-01" "etat_administratif": String // Ex: "A" "nom": String // Ex: null "nom_usage": String // Ex: null "denomination": String // Ex: "CREATIWITY" "denomination_usuelle_1": String // Ex: null "denomination_usuelle_2": String // Ex: null "denomination_usuelle_3": String // Ex: null "categorie_juridique": String // Ex: "5710" "activite_principale": String // Ex: "62.02A" "nomenclature_activite_principale": String // Ex: "NAFRev2" "nic_siege": String // Ex: "00023" "economie_sociale_solidaire": String // Ex: "N" "caractere_employeur": String // Ex: "O" "etablissements": [Etablissement] "etablissement_siege": Etablissement } }
{ "siren": String // Ex: "798372355" "statut_diffusion": String // Ex: "O" "unite_purgee": String // Ex: null "date_creation": String // Ex: "2013-10-30" "sigle": String // Ex: null "sexe": String // Ex: null "prenom_1": String // Ex: null "prenom_2": String // Ex: null "prenom_3": String // Ex: null "prenom_4": String // Ex: null "prenom_usuel": String // Ex: null "pseudonyme": String // Ex: null "identifiant_association": String // Ex: null "tranche_effectifs": String // Ex: "02" "annee_effectifs": Number // Ex: 2018 "date_dernier_traitement": String // Ex: "2020-08-25T11:07:37" "nombre_periodes": Number // Ex: 3 "categorie_entreprise": String // Ex: "PME" "annee_categorie_entreprise": Number // Ex: 2018 "date_debut": String // Ex: "2019-07-01" "etat_administratif": String // Ex: "A" "nom": String // Ex: null "nom_usage": String // Ex: null "denomination": String // Ex: "CREATIWITY" "denomination_usuelle_1": String // Ex: null "denomination_usuelle_2": String // Ex: null "denomination_usuelle_3": String // Ex: null "categorie_juridique": String // Ex: "5710" "activite_principale": String // Ex: "62.02A" "nomenclature_activite_principale": String // Ex: "NAFRev2" "nic_siege": String // Ex: "00023" "economie_sociale_solidaire": String // Ex: "N" "caractere_employeur": String // Ex: "O" "etablissement_siege": Etablissement }
L’API Siren se met à jour de deux façons différentes :
L’intégralité de la base de données est alors rechargée depuis l'INSEE, ce qui assure l'intégrité des données.
Une mise à jour quotidienne est effectuée depuis l’INSEE. Il s’agit d’une mise à jour incrémentale où seules les modifications de la veille sont récupérées.
Ce double système de mise à jour est transparent pour vous. Il s’effectue en arrière plan et lorsque la mise à jour est achevée, vous disposerez immédiatement des données à jour dans les résultats de vos appels API.
Des tests de charge ont été effectués sur l’API : que ce soit sur le endpoint Etablissements ou Unites_Legales, l’API met moins de 100 ms en moyenne pour retourner une réponse.
Cependant, des variations dans le temps de réponse peuvent apparaitre en fonction de la connexion internet de l’utilisateur.
La plateforme API Siren s’appuie sur une brique logicielle Open Source développée par Creatiwity et disponible sur GitHub : https://github.com/Creatiwity/siren
La brique “Siren” développée en langage Rust est distribuée sous licence MIT.
En accord avec le RGPD, les entreprises ne souhaitant plus figurer au sein de la banque de données doivent contacter l’INSEE pour se retirer des listes.
Notre système de mise à jour quotidienne retirera automatiquement l’entreprise des résultats.
La géolocalisation des établissements d’entreprise n’est pas immédiatement mise à disposition au sein des fichiers OpenData.
Il est cependant possible d’appliquer une recherche géolocalisée sur la base des adresses en utilisant l’API officielle Adresse.
N’hésitez pas à nous contacter pour obtenir plus d’informations sur ce point.