/api_insee

Simple python helper to call api.insee.fr api

Primary LanguagePythonMIT LicenseMIT

đŸ‡ș🇾 English ->

API Sirene donne accĂšs aux informations concernant les entreprises et les Ă©tablissements immatriculĂ©s au rĂ©pertoire interadministratif Sirene depuis sa crĂ©ation en 1973, y compris les unitĂ©s fermĂ©es. La recherche peut ĂȘtre unitaire, multicritĂšre, phonĂ©tique et porter sur les donnĂ©es courantes et historisĂ©es. Les services actuellement disponibles interrogent les unitĂ©s lĂ©gales (Siren) et les Ă©tablissements (Siret).

La bibliothéque python api_insee est une aide pour d'interroger l'API Sirene en toute simplicité. Vous trouverez d'avantage d'informations au sujet de l'API Sirene dans la documentation officielle

Installation

Depuis un terminal :

pip install api-insee

Pour pouvoir interroger l'api vous devez créer un compte consommateur sur api.insee.fr. Puis récupérer vos clés consommateur et secrÚte.

from api_insee import ApiInsee

api = ApiInsee(
    key = # clé consommateur,
    secret = # clé secrÚte
)

Exemples d'interrogation

  • RĂ©cupĂ©rer les informations Ă  partir d'un numĂ©ro sirene ou siret
data = api.siren('005520135').get()
data = api.siret('39860733300059').get()


# RequĂȘtes envoyĂ©es:
# https://api.insee.fr/entreprises/sirene/V3/siren/005520135
# https://api.insee.fr/entreprises/sirene/V3/siret/39860733300059
  • Passer des paramĂštres Ă  la requĂȘte
data = api.siren('005520135', date='2018-01-01').get()

# RequĂȘte envoyĂ©es:
# https://api.insee.fr/entreprises/sirene/V3/siren/005520135?date=2018-01-01
  • Faire une recherche avancĂ©e sur des critĂšres donnĂ©s, en utilisant le paramĂštre q=
data = api.siren(q='unitePurgeeUniteLegage:True').get()

Recherches avancées sur critéres

Les classes api_insee.criteria permettent de construire les requĂȘtes de recherche avancĂ©es plus facilement. Vous trouverez dans la documentation officielle l'ensemble des variables disponibles.

  • Vous pouvez par exemple combiner plusieurs critĂšres sur une seule requĂȘte.
from api_insee.criteria import Field

data = api.siren(q=(
    Field('codeCommuneEtablissement', 92046),
    Field('unitePurgeeUniteLegale', True)
)).get()


# RequĂȘte envoyĂ©e:
# /?q=codeCommuneEtablissement:92046 AND unitePurgeeUniteLegale:True
  • Ou encore en utilisant un dictionnaire
data = api.siren(q={
    'codeCommuneEtablissement' : 92046,
    'unitePurgeeUniteLegale' : True
}).get()


# RequĂȘte envoyĂ©e:
# /?q=codeCommuneEtablissement:92046 AND unitePurgeeUniteLegale:True
  • Utilisez les opĂ©rateurs logiques |, &, - (not) pour prĂ©ciser vos requĂȘtes.
data = api.siren(q=(
    Field('codeCommuneEtablissement', 92046) | Field('unitePurgeeUniteLegale', True)
)).get()

data = api.siren(q=-Field('codeCommuneEtablissement', 92046)).get()

# RequĂȘtes envoyĂ©es:
# /?q=codeCommuneEtablissement:92046 OR unitePurgeeUniteLegale:True
# /?q=-codeCommuneEtablissement:92046
  • Filtrer les champs retournĂ©s par la rĂ©ponse
champs = [
    'siret',
    'denominationUniteLegale',
    'nomUsageUniteLegale',
    'prenom1UniteLegale',
]

request = api.siret('39860733300059', champs=champs)
# Request executed:
# /39860733300059?champs=siret,denominationUniteLegale,nomUsageUniteLegale,prenom1UniteLegale
Recherche multicritĂšre liens de succession
  • Interroger le service des liens de succession. (Uniquement disponible depuis la version 1.5 de api_insee)
request = api.liens_succession(q=Criteria.Field('siretEtablissementPredecesseur', 39860733300042))
# '/liensSuccession?q=siretEtablissementPredecesseur:39860733300042'

request = api.liens_succession(q=(
    Criteria.Field('siretEtablissementPredecesseur', '00555008200027') &
    Criteria.Field('dateLienSuccession', '2004-04-01')
))
# '/liensSuccession?q=siretEtablissementPredecesseur:00555008200027 AND dateLienSuccession:2004-04-01'
Recherches spéciales
Type Description Exemple
FieldExact Recherche la valeur exact FieldExact('demoninationUniteLegale','LE TIMBRE'))
Periodic Recherche sur un champ périodique Periodic(Field('activitePrincipaleUniteLegale','84.23Z')
Range Recherche sur un interval Range('nomUsageUniteLegale', 'DUPONT', 'DURANT')

Pagination

Pour les requĂȘtes retournant beaucoup de rĂ©sultats, il est possible de parcourir les rĂ©sultats grĂące Ă  la mĂ©thode pages(). Le paramĂštre nombre spĂ©cifie le nombre de rĂ©sultats par pages. La limite dĂ©finie par l'insee est 1000 rĂ©sultats par pages.

from api_insee import ApiInsee

api = ApiInsee(
    key = # clé consommateur,
    secret = # clé secrÚte
)

request = api.siren(q={
    'categorieEntreprise': 'PME'
})

for (page_index, page_result) in enumerate(request.pages(nombre=1000)):
    # votre code ici ..