Sur cette page
- Les données des entreprises françaises sont en grande partie ouvertes et gratuites : l'API Recherche d'entreprises répond sans clé, l'API Sirene avec une clé gratuite.
- La Licence Ouverte 2.0 permet tout usage, commercial compris, à condition de citer la source ; les données personnelles restent soumises au RGPD.
- La CNIL n'interdit pas le moissonnage, mais demande d'exclure les sites qui s'y opposent par leur robots.txt ou un CAPTCHA.
- Prospecter des professionnels par courriel se fait sur l'intérêt légitime si l'objet touche à leur métier ; la personne doit être informée et pouvoir s'opposer.
- En 2024, la CNIL a infligé 240 000 € à une société qui collectait des coordonnées sur LinkedIn.
Prérequis
- Le besoin écrit : quelles entreprises, quels champs, à quelle fréquence, pour quel usage.
- L'usage décidé : une étude interne, ou de la prospection, qui ajoute les règles de la CNIL.
- Python 3, ou un outil d'automatisation qui sait appeler une API.
- Une clé pour les API qui en demandent : l'API Sirene, par un compte gratuit sur le portail de l'Insee ; le registre de l'INPI, par un compte.
Étapes
Quelle source pour quel besoin
Collecter
Choisir la source la personne qui collecte
Ce qu'on obtient : la source officielle qui répond au besoin, d'après le tableau ci-dessus.
Le conseil : une API ouverte avant toute collecte sur un site.
Lire la licence et les conditions la personne qui collecte
Ce qu'on obtient : la Licence Ouverte 2.0 pour la plupart ; des exceptions : VIES interdit l'extraction, l'API Entreprise est réservée aux administrations.
Le conseil : citer la source et la date de mise à jour, seule condition de la Licence Ouverte.
Collecter en respectant la limite le programme
Ce qu'on obtient : les champs utiles, à un rythme sous la limite de la source.
Le conseil : la réponse 429 de l'API : attendre le délai indiqué avant de reprendre.
Une seule requête, sans clé, sur l'Insee lui-même : un organisme public. La limite de l'API est de 7 requêtes par seconde par adresse.
chercher.pyimport json, time, urllib.request
API = "https://recherche-entreprises.api.gouv.fr/search?q={}&page=1&per_page=1"
CHAMPS = ["siren", "nom_complet", "etat_administratif", "activite_principale", "date_mise_a_jour"]
def chercher(siren):
with urllib.request.urlopen(API.format(siren), timeout=30) as reponse:
resultats = json.load(reponse)["results"]
return {c: resultats[0].get(c) for c in CHAMPS} if resultats else None
for siren in ["120027016"]: # l'Insee lui-même, un organisme public
print(json.dumps(chercher(siren), ensure_ascii=False, indent=1))
time.sleep(0.2) # 5 requêtes par seconde au plus : la limite est de 7python3 chercher.py{ "siren": "120027016", "nom_complet": "INSTITUT NATIONAL DE LA STATISTIQUE ET DES ETUDES ECONOMIQUES (INSEE)", "etat_administratif": "A", "activite_principale": "84.11Z", "date_mise_a_jour": "2026-10-08T09:08:48"}
Essayé le 9 octobre 2026 avec Python 3.12.7, sans bibliothèque à installer.
Tenir à jour
Garder le relevé daté le programme
Ce qu'on obtient : chaque passage enregistré avec sa date, sans écraser le précédent.
Le conseil : la date de mise à jour de la source, à côté de la vôtre.
Comparer avec le relevé d'avant le programme
Ce qu'on obtient : les entreprises nouvelles, fermées, et les champs changés.
Le conseil : l'INPI publie un point d'accès qui ne donne que les changements.
Respecter les personnes la personne responsable
Ce qu'on obtient : les dirigeants sont des personnes : les informer si on les démarche, dans un délai d'un mois au plus, et noter leur opposition.
Le conseil : l'article 14 du RGPD, et la prospection par courriel selon la CNIL.
Deux relevés fabriqués de quatre entreprises fictives, à un mois d'écart :
comparer.pyimport json
avant, apres = json.load(open("avant.json")), json.load(open("apres.json"))
for siren in sorted(avant.keys() | apres.keys()):
a, b = avant.get(siren), apres.get(siren)
if a is None:
print(siren, "nouvelle entreprise :", b["nom"])
elif b is None:
print(siren, "absente du nouveau relevé :", a["nom"])
else:
changes = [f"{champ} : {a[champ]} → {b[champ]}" for champ in a if a[champ] != b[champ]]
if changes:
print(siren, a["nom"], "·", " ; ".join(changes))
print("état : A = active, C = cessée")python3 comparer.py002583169 Imprimerie du Port · dirigeant : J. Lemoine → S. Kerjean006513477 Transports Lemaire · etat : A → C007391642 Menuiserie Valcourt · commune : Nantes → Saint-Herblainétat : A = active, C = cessée
Essayé le 9 octobre 2026 avec Python 3.12.7, sans bibliothèque à installer.
Collecte sur un site
Avant de collecter sur un site, lire son fichier robots.txt : la CNIL demande d'exclure les sites qui s'y opposent. Le fichier ci-dessous est fabriqué ; le module est celui de Python.
robots.pyfrom urllib.robotparser import RobotFileParser
ROBOTS = """User-agent: *
Disallow: /annuaire/
Allow: /actualites/
"""
regles = RobotFileParser()
regles.parse(ROBOTS.splitlines())
for page in ["https://example.com/actualites/2026", "https://example.com/annuaire/dirigeants"]:
print(page, "→", "autorisée" if regles.can_fetch("MonRobot", page) else "refusée : ne pas collecter")python3 robots.pyhttps://example.com/actualites/2026 → autoriséehttps://example.com/annuaire/dirigeants → refusée : ne pas collecter
Essayé le 9 octobre 2026 avec Python 3.12.7, sans bibliothèque à installer.
Réalisations
Les dirigeants des entreprises suivies, et ce qui a changé depuis 2008
Une collecte sur des données publiques qui dit, pour chaque entreprise, qui la dirige, ce qui a changé et ce qui a fermé depuis 2008, sur les métiers suivis par le cabinet ; le tri calibré avant le lancement, verdict par verdict.
Trouver le bon interlocuteur, et savoir ce qu'il coûte
Deux façons de chercher un contact, mesurées l'une contre l'autre avant toute campagne ; le coût de chaque appel noté ligne par ligne ; un contrôle géographique ajouté après avoir mesuré de faux rapprochements.
Contrôle du résultat
Problèmes fréquents
L'API répond 429
CauseTrop de requêtes : l'API Recherche d'entreprises renvoie 429 avec un délai d'attente.
À faireAttendre le délai indiqué, puis ralentir le programme.
Une entreprise n'a pas de dirigeant ni d'adresse
CauseSon statut de diffusion est partiel : ses informations personnelles ne se rediffusent pas et ne servent pas à la prospection.
À faireNe pas chercher à compléter ailleurs ce que la personne a demandé de ne pas diffuser.
Les chiffres ne tombent pas juste d'un passage à l'autre
CauseLe périmètre a changé, ou la source a été mise à jour entre deux comptes.
À faireCompter à date, et écrire l'écart plutôt que le lisser.
Retour en arrière
Variantes par source
Vérification
1ComprendreUne donnée est publique et sous Licence Ouverte. Pouvez-vous en faire ce que vous voulez ?
Presque : la licence permet tout usage, commercial compris, en citant la source ; mais les données personnelles qu'elle contient restent soumises au RGPD, et la prospection aux règles de la CNIL.
2AppliquerVous voulez suivre chaque mois les dirigeants de 2 000 entreprises. Comment vous y prenez-vous ?
Une source officielle, comme Sirene ou le registre de l'INPI ; un relevé daté chaque mois ; la comparaison avec le relevé d'avant pour ne garder que les changements.
3ComprendreUn site affiche les coordonnées de dirigeants, mais son robots.txt interdit la collecte. Que faire ?
Ne pas collecter : la CNIL demande d'exclure les sites qui s'y opposent par robots.txt ou CAPTCHA. Chercher la donnée dans une source ouverte.
Lectures suivantes
Rien avant : c'est un point de départ.
Collecte de données publiques
Fin du dossier.
Les pages qui renvoient ici
Limites et sources
La réponse de l'API Recherche d'entreprises a été relevée une fois, le 9 octobre 2026, sur un organisme public ; les deux relevés de la comparaison et le robots.txt sont fabriqués.
Les quotas quotidiens de BODACC et du BOAMP viennent des en-têtes de réponse observés, pas de la documentation. Ce n'est pas un avis juridique.
- Le relevé :
apprendre/recherches/2026-10-09-donnees-publiques.json, 57 sources, 16 sources de données.
Écrit par Meridal, avec l'aide de l'IA ; chaque fait vérifié à sa source et relu avant publication. Texte et schémas sous licence CC BY 4.0 : reprenez-les en citant Meridal. Le code sous licence MIT.
Réunir des informations éparpillées
1 100 € à 3 400 €, données publiques à partir de 3 850 €