Enrichissement externe
Enrichissement externe
Comble les trous d'une liste (téléphone, email et site web) en rapprochant chaque établissement des annuaires publics officiels chargés en local. Aucun crawl, aucune IA, aucun appel réseau pendant le job : la réponse est dans l'annuaire, ou elle n'y est pas.
À quoi il sert
La plupart des modules d'enrichissement lisent le site web d'une entreprise : une liste sans
sites est donc un cul-de-sac. Ce module fonctionne dans l'autre sens : il identifie l'établissement
(par son SIRET, ou par son nom et son code postal) et renvoie les coordonnées publiées dans les
annuaires ouverts de l'État. C'est l'étape naturelle juste après sirene, qui donne les fiches
officielles mais jamais de coordonnées.
La correspondance est déterministe, du plus sûr au plus large : SIRET, puis SIREN, puis nom normalisé + code postal, puis nom normalisé + commune. Quand deux fiches homonymes de la même ville se contredisent, rien n'est rempli : une case vide vaut mieux qu'un numéro faux.
Les annuaires couverts
| Annuaire | Ce qu'il couvre | Ce qu'il apporte |
|---|---|---|
| Annuaire Santé (RPPS) | Médecins, dentistes, pharmaciens, sages-femmes | Téléphone, email |
| DATAtourisme | Hôtels, restaurants, campings, sites et activités | Site web |
| Annuaire de l'administration (DILA) | Mairies, préfectures, organismes publics | Téléphone, email, site web |
| FINESS | Hôpitaux, cliniques, EHPAD, médico-social | Téléphone |
| Annuaire de l'éducation | Écoles, collèges, lycées | Téléphone, site web |
| ADEME, entreprises RGE | Bâtiment et rénovation énergétique | Téléphone, email, site web |
| Agence Bio | Producteurs, transformateurs et distributeurs bio | Téléphone, site web |
| Atout France, hébergements classés | Hôtels, campings, résidences de tourisme | Site web |
| Centres de contrôle technique | Automobile | Téléphone, site web |
| Qualité Tourisme et Tourisme et Handicap (DGE) | Établissements touristiques labellisés | Téléphone, email, site web |
| OpenStreetMap, commerces et artisans | Boulangeries, coiffeurs, garages, bureaux, commerces de proximité | Téléphone, email, site web |
| OpenStreetMap, restauration | Restaurants, cafés, bars | Téléphone, site web |
| OpenStreetMap, santé, services publics et hébergements | Cabinets, équipements publics, hôtels et chambres d'hôtes | Téléphone, email, site web |
Au total, environ 1 160 000 établissements, dont 854 000 avec un téléphone, 287 000 avec un email et 570 000 avec un site web. La couverture est nationale (France) et les annuaires sont rechargés chaque mois, sans intervention de votre part.
Licences et attribution
Les registres publiés par l'État sont sous Licence Ouverte. Les trois derniers viennent
d'OpenStreetMap et sont sous licence ODbL, qui impose l'attribution et le partage à l'identique.
C'est la raison d'être de la colonne opendata_source : chaque valeur écrite cite le registre dont
elle provient. Si vous rediffusez un fichier contenant ces données, conservez cette colonne.
Entrées
| Champ | Requis | Notes |
|---|---|---|
nom |
oui (sauf si siret/siren) |
Nom de l'entreprise. Alias acceptés (name, raison sociale, entreprise…). |
siret |
non | 14 chiffres. Meilleure clé : utilisée en premier quand elle est présente. |
siren |
non | 9 chiffres. Utilisée quand aucun SIRET ne correspond. |
code_postal |
non | Fortement recommandé : sans code postal ni commune, la correspondance par nom est ignorée. |
commune |
non | Solution de repli en l'absence de code postal. |
C'est le seul module d'enrichissement qui accepte des lignes sans aucun point de contact : en trouver un est précisément son rôle. Les lignes sans nom et sans identifiant d'entreprise sont conservées telles quelles dans le fichier de sortie.
Sorties
| Colonne | Type | Description |
|---|---|---|
site_web |
texte | Rempli seulement si vide en entrée. |
telephone |
texte | Rempli seulement si vide en entrée. Format national. |
email |
texte | Rempli seulement si vide en entrée. Les boîtes institutionnelles génériques sont exclues. |
opendata_champs |
texte | Les colonnes que ce module a remplies, séparées par |. Vide quand rien n'a été rempli. |
opendata_match |
texte | Comment la ligne a été rapprochée : siret, siren, nom+cp ou nom+commune. Vide sans correspondance. |
opendata_source |
texte | L'annuaire d'où viennent les valeurs, en clair (attribution imposée par la licence ouverte). |
Une valeur déjà présente n'est jamais écrasée. Un opendata_champs vide signifie que le module a
tourné sans rien trouver d'utilisable pour cette ligne, jamais que la ligne a été perdue.
Cycle de vie
Cycle de vie standard, voir Cycle de vie des jobs. La
progression est comptée en établissements, le volume final en lignes complétées.
Chaînage
opendata est un module d'enrichissement : il complète une liste existante, il n'en produit pas.
needs: poi_list
produces: enriched_list
Chaîne typique :
sirene → opendata → emails → verify_emails → filter
Le placer juste après sirene est ce qui rend la suite possible : emails, socials,
legal_mentions ou techstack exigent tous une colonne site_web.
Points d'entrée
POST /api/jobs/opendata
| Champ | Type | Requis | Description |
|---|---|---|---|
items |
tableau d'objets | non | Lignes à enrichir, 10000 maximum. Facultatif si source_job_id est fourni. |
source_job_id |
texte | non | Réutiliser les lignes d'un de vos jobs terminés au lieu de les renvoyer. |
Réponse : l'enveloppe JobPublic standard.
Exemple :
POST /api/jobs/opendata
{ "items": [ { "nom": "Dupont Couverture", "code_postal": "35000", "siret": "48123456700019" } ] }
{ "id": "6b1f…", "job_type": "opendata", "status": "pending", "results_count": 0 }
Quotas globaux et plafonds par job : voir Limites.
Erreurs
| Condition | Réponse |
|---|---|
| Aucune ligne n'a de nom, de SIRET ni de SIREN | 400 avec la composition exacte de la liste envoyée |
| Plus de 10000 lignes | Erreur de validation 422 |
source_job_id inconnu, pas à vous, non terminé ou au-delà de 10000 lignes |
400 |
Et après
- Trouver le site web : pour les lignes restées sans site.
- Données légales FR : forme juridique, effectif, dirigeants, finances.
- Emails : devient possible sur chaque ligne dont le site vient d'être rempli.