Construire la liste d’entreprises

Extraction, requêtes et volumes.

Registre manuscrit ouvert

Lancez plusieurs requêtes étroites, chacune liée à un segment et à une source, et chargez le tout dans une seule table brute qui se souvient de l’origine de chaque ligne. Un énorme export se diagnostique mal, alors que dix requêtes consignées montrent exactement laquelle a ramené du déchet.

À ce stade, vous collectez et vous résistez à l’envie de nettoyer. Déduplication et normalisation viennent au chapitre suivant, et elles auront besoin de la provenance que vous allez enregistrer. Le livrable est une table brute d’entreprises et un journal des requêtes. En entrée : votre grille de critères et votre registre des sources. Notre éditeur de paie pour employeurs français multi-sites reste fictif, tout comme ses chiffres.

Écrivez le plan de requêtes avant toute extraction

Une ligne par requête. Le volume attendu est votre estimation, notée à l’avance pour qu’un résultat surprenant se remarque.

ID Segment Source Requête Lignes attendues Limite de la source Découpage
Q1 Groupes de crèches SIRENE 88.91A, actives, 20 à 499, 3 sites et plus 400 Aucune Aucun
Q2 Groupes d’Ehpad SIRENE 87.10A, actives, 20 à 499, 3 sites et plus 350 Aucune Aucun
Q3 Groupes de crèches Sales Navigator Mot-clé « crèche », France, 11 à 500 600 Résultats plafonnés par recherche Par région
Q4 Sites de crèches Cartes « crèche » + ville, 30 plus grandes villes 1 200 200 par recherche avec l’outil ci-dessous Par ville
Q5 Entreprises similaires Similarité 30 meilleurs clients en entrée 300 Selon l’entreprise de départ Par client

Les interfaces de recherche plafonnent ce qu’elles renvoient, et ce plafond évolue : vérifiez le plafond actuel de chaque source. Quand une requête l’atteint, vous n’avez vu qu’un échantillon tronqué, sans le moindre avertissement. Découpez-la par région, tranche d’effectif ou secteur jusqu’à ce que chaque tranche reste nettement sous la limite.

Le registre sert de contrôle pour les autres sources. Si une recherche par mot-clé renvoie plusieurs fois plus d’entreprises que le registre n’en compte pour cette activité, le mot-clé attrape des entreprises qui ne font que mentionner le sujet.

Préparez la table brute

Gardez toutes les sources dans une seule table avec les mêmes colonnes. Laissez vide ce qu’une source ne fournit pas et conservez les valeurs d’origine intactes.

Colonne Exemple Utilité
raw_id Généré Identité de la ligne
query_id Q3 Lien avec le journal des requêtes
run_order 3 Mesurer l’apport de chaque requête
source sales_navigator Provenance
extracted_at 2026-11-09 Fraîcheur, maintenance future
name_raw Les P’tits Loups SAS Tel que livré
siren 9 chiffres, ou vide Clé forte pour la France
domain_raw www.example.fr Future clé, nettoyée au chapitre suivant
linkedin_url URL de la page entreprise Clé pour les sources LinkedIn
city, postcode, country Lyon, 69003, FR Géographie
naf_code 88.91A Filtre
headcount_raw Code de tranche ou fourchette Filtre, formats variables selon la source
open_sites 6 Filtre
source_payload JSON de la ligne d’origine Retrouver ce que vous n’avez pas mappé
Stylo plume sur des pages manuscrites

Extrayez depuis le registre

Q1 et Q2 tournent sur les deux fichiers SIRENE, chargés dans une base de données ou un moteur analytique local. Le fichier des unités légales porte l’activité et l’effectif. Le fichier des établissements permet de compter les sites ouverts.

WITH sites AS (
  SELECT siren, COUNT(*) AS open_sites
  FROM etablissement
  WHERE etatAdministratifEtablissement = 'A'
  GROUP BY siren
)
SELECT
  'Q1'                               AS query_id,
  'sirene'                           AS source,
  CURRENT_DATE                       AS extracted_at,
  u.siren,
  u.denominationUniteLegale          AS name_raw,
  u.activitePrincipaleUniteLegale    AS naf_code,
  u.trancheEffectifsUniteLegale      AS headcount_raw,
  u.statutDiffusionUniteLegale       AS diffusion_status,
  s.open_sites
FROM unite_legale u
JOIN sites s ON s.siren = u.siren
WHERE u.etatAdministratifUniteLegale = 'A'
  AND u.activitePrincipaleUniteLegale = '88.91A'
  AND s.open_sites >= 3
  AND (u.trancheEffectifsUniteLegale IN ('12','21','22','31','32')
       OR u.trancheEffectifsUniteLegale IS NULL
       OR u.trancheEffectifsUniteLegale = 'NN');

Les comptes à tranche inconnue restent dans la liste, signalés pour relecture : les retirer reviendrait à exclure des entreprises à cause d’un trou dans la donnée. Vérifiez les noms de colonnes dans la documentation du fichier en cours, car ils peuvent changer d’une version à l’autre.

Les mêmes requêtes dans Derrick

Derrick, que j’ai cofondé, gardez-le en tête, lance ces requêtes depuis une feuille ou son application web et écrit chaque résultat en lignes, ce qui convient aux équipes sans base de données.

Requête Fonctionnalité Ce que vous fournissez Ce que vous obtenez
Q1, Q2 Import Companies by NAF Code 88.91A dans une colonne, département en option Une entreprise par ligne dans un nouvel onglet, avec SIREN/SIRET, établissements ouverts, tranche d’effectif
Q3 Import LinkedIn Companies L’URL de la recherche Sales Navigator Données de l’entreprise, une ligne par entreprise
Q4 Google Maps Scraper « crèche Lyon » Jusqu’à 200 lieux : nom, téléphone, site, adresse
Q5 Find Similar Companies L’URL LinkedIn d’un client, pays en option Entreprises similaires avec secteur, pays, site et score de similarité

Les crédits suivent les lignes : 1 par entreprise sur les imports NAF et Sales Navigator, 1 par lieu sur les cartes, 1 par entreprise trouvée sur la similarité. L’import NAF renvoie toutes les entreprises du code, et vous appliquez ensuite les filtres de 20 à 499 salariés et de 3 sites dans la feuille : vous payez donc toute la population de ce code. Pour un code volumineux, lancez d’abord un département et regardez le résultat. Import Companies from a Prompt est pratique pour explorer un segment en une phrase, mais traitez-le comme de la découverte, jamais comme la preuve que vous avez vu tout le marché.

Sans Derrick, Q1 et Q2 tournent sur le fichier libre comme ci-dessus, Q3 peut passer par l’export de votre outil de recherche si votre abonnement et ses conditions le permettent, et les petites listes se copient à la main. Gardez la même table brute quelle que soit la voie.

Registre rempli d’inscriptions manuscrites

Mesurez ce que chaque requête a ajouté

Avant la déduplication, une clé grossière suffit pour voir si une requête a apporté du neuf. Lancez les requêtes dans l’ordre prévu.

WITH keyed AS (
  SELECT *, COALESCE(siren, lower(domain_raw), linkedin_url) AS account_key
  FROM raw_companies
),
first_seen AS (
  SELECT account_key, MIN(run_order) AS first_run
  FROM keyed
  GROUP BY account_key
)
SELECT
  k.query_id,
  COUNT(DISTINCT k.account_key) AS accounts,
  COUNT(DISTINCT CASE WHEN f.first_run = k.run_order THEN k.account_key END) AS new_accounts
FROM keyed k
JOIN first_seen f USING (account_key)
GROUP BY k.query_id, k.run_order
ORDER BY k.run_order;

La clé sous-estimera les recoupements entre une ligne du registre sans domaine et une ligne LinkedIn sans SIREN, ce qui suffit ici. Vérifiez ensuite la précision : tirez 50 lignes au hasard par requête et marquez chacune comme vraie cible ou non.

=SORTN(A2:F1500, 50, 0, RANDARRAY(1499), TRUE)
Requête Lignes Nouveaux comptes Part de neuf Précision sur 50 lignes Décision
Q1 412 412 100 % 96 % À garder
Q2 368 368 100 % 92 % À garder
Q3 580 190 33 % 62 % À garder, resserrer le mot-clé
Q4 1 100 140 13 % 74 % Garder seulement les nouveaux
Q5 240 12 5 % 58 % À arrêter

Une règle d’arrêt raisonnable : quand une nouvelle requête ajoute moins de 10 % de comptes nouveaux et que sa précision baisse, vous avez atteint ce que vos sources peuvent voir. Q5 en est là. Les 190 comptes de Q3 méritent une lecture : il peut s’agir de groupes que le registre a classés sous un code que vous avez exclu, ce qui vous renverrait à la grille de critères.

Gardez le journal des requêtes avec la donnée

Requête Lancée le Par Paramètres exacts ou URL Lignes Plafond atteint Crédits ou coût Notes
Q3 2026-11-09 Growth URL Sales Navigator 580 Non 580 Découpée en 13 régions

Vous relancerez ces requêtes lors de l’actualisation du TAM : ce qui n’est pas écrit ici sera reconstitué de mémoire.

Votre prochaine étape : écrivez votre plan de requêtes, lancez d’abord les requêtes d’ancrage et mesurez ce que chaque requête suivante ajoute jusqu’à votre règle d’arrêt. Portez ensuite la table brute à la déduplication, avant de dépenser quoi que ce soit en enrichissement.