Retour au blog
Guides & Tutoriels2025-08-30·9 min de lecture

Extraire les données de Google Maps avec JavaScript : Guide technique complet

Par Ibrahim DemolCEO IBLeadMis à jour le 26 mars 2026

Google Maps contient plus de 200 millions d'annonces commerciales. Chaque entrée contient des numéros de téléphone, des sites web, des horaires, des avis, des adresses et des retours clients. Ces données ont de la valeur — pour la génération de leads, la recherche de marché, l'analyse concurrentielle ou la surveillance de la réputation.

Vous pouvez y accéder de trois manières : l'API officielle de Google Maps (complexe, coûteuse), l'automatisation du navigateur (technique, chronophage) ou des outils spécialisés (simple, rapide). Ce guide couvre les trois, avec des exemples de code fonctionnels et des compromis honnêtes.

À la fin, vous comprendrez quelle approche convient le mieux à votre cas d'utilisation.


Pourquoi extraire les données de Google Maps ?

Avant de plonger dans le code, comprenez le cas commercial.

Génération de leads : Trouvez 500 plombiers à Chicago avec numéros de téléphone et sites web en 10 minutes au lieu de 2 heures de recherche manuelle.

Recherche de marché : Analysez les emplacements des concurrents, les prix (à partir des extractions de sites web), le sentiment des avis et les lacunes de service dans une région.

Surveillance de la réputation : Suivez les entreprises qui ont chuté en dessous de 3 étoiles, identifiez les tendances des avis, repérez les faux avis.

Intelligence commerciale : Créez des listes ciblées pour des campagnes ABM — trouvez toutes les entreprises utilisant des outils spécifiques (WordPress, HubSpot, Shopify) dans votre marché cible.

Planification d'expansion : Identifiez les zones sous-desservies en cartographiant la densité des concurrents, les avis des clients et les lacunes de service.

Exemple réel : Une franchise de services à domicile souhaitait s'étendre dans 5 nouvelles villes. Au lieu d'embaucher des éclaireurs, ils ont extrait plus de 2 000 annonces concurrentes par ville (emplacement, avis, horaires, site web), identifié des modèles dans les entreprises bien notées et ouvert dans des quartiers avec le moins de concurrence. Temps : 3 heures. Coût : 0 € (en utilisant des outils gratuits).


Comment fonctionnent les données de Google Maps

Google Maps fonctionne comme une base de données publique. Lorsque vous recherchez "plombiers près de chez moi", Google interroge son index et renvoie des résultats avec :

  • Nom de l'entreprise, adresse, téléphone
  • URL du site web
  • Horaires d'ouverture
  • Avis des clients (texte, note, date, auteur)
  • Photos (nombre, vignettes)
  • Zones de service
  • Statut de vérification
  • ID de lieu Google (identifiant unique)

Ces données sont visibles publiquement — tout le monde peut y accéder via l'interface de Google Maps. La question n'est pas de savoir si les données existent ; c'est comment vous les récupérez à grande échelle.

Trois méthodes existent :

  1. API officielle de Google Maps — Autorisée, documentée, limitée en taux
  2. Automatisation du navigateur — Imite le comportement de l'utilisateur, contourne les limites de taux, techniquement complexe
  3. Bases de données pré-indexées — Données déjà extraites et organisées, approche la plus rapide

Méthode 1 : API Google Maps avec JavaScript

L'approche officielle. Google fournit plusieurs API pour différents cas d'utilisation.

Quelles API extraire des données commerciales ?

API Places — Renvoie des annonces commerciales, des avis, des photos, des horaires d'ouverture, des informations de contact. La plus couramment utilisée.

API de géocodage — Convertit les adresses en coordonnées et vice versa.

API Directions — Calcule les itinéraires, le temps de trajet, la distance.

API JavaScript Maps — Affiche des cartes et des marqueurs d'entreprise sur les pages web.

Pour extraire des données commerciales, vous avez besoin de l'API Places (en particulier les points de terminaison "Recherche à proximité" et "Recherche par texte").

Étape 1 : Configurer votre projet Google Cloud

  1. Allez sur console.cloud.google.com
  2. Créez un nouveau projet (menu déroulant en haut à gauche → "Nouveau projet")
  3. Nommez-le (par exemple, "Extraction de données Maps")
  4. Attendez 30 secondes pour la création
  5. Sélectionnez le projet
  6. Allez dans APIs & ServicesBibliothèque
  7. Recherchez "API Places" → Cliquez dessus → Activer
  8. Allez dans APIs & ServicesIdentifiants
  9. Cliquez sur Créer des identifiantsClé API
  10. Copiez votre clé API (vous en aurez besoin pour chaque requête)

Coût : Google offre 200 €/mois de crédits gratuits. La plupart des extractions à petite échelle s'inscrivent dans ce cadre.

Étape 2 : Comprendre le prix de l'API

Vous payez par requête, pas par résultat.

API Coût par 1 000 requêtes Remarques
API Places (de base) 32 $ Nom, adresse, téléphone, site web, horaires d'ouverture
API Places (Contact) 17 $ Identique + email, téléphone
API Places (Atmosphère) 17 $ Identique + avis, notes, photos
API de géocodage 5 $ Adresse ↔ Coordonnées
API Directions 5 $ Itinéraire, temps de trajet, distance

Coût d'exemple : Extraire 10 000 entreprises avec des informations de base = 10 000 requêtes = 320 $. Avec 200 € de crédits gratuits, vous payez 120 $ de votre poche.

Si vous avez besoin de 100 000 entreprises, cela coûte 3 200 $ — cher pour des projets à grande échelle.

Étape 3 : Exemple de géocodage (Convertir une adresse en coordonnées)

Cas d'utilisation : Vous avez une liste d'adresses et avez besoin de latitude/longitude pour la cartographie.

Code :

const https = require('https');

const address = "1600 Pennsylvania Avenue NW, Washington, DC";
const apiKey = "VOTRE_CLE_API_ICI";

// Encodez l'adresse pour l'URL (espaces → %20, virgules → %2C)
const encodedAddress = encodeURIComponent(address);

const url = `https://maps.googleapis.com/maps/api/geocode/json?address=${encodedAddress}&key=${apiKey}`;

https.get(url, (response) => {
  let data = '';

  response.on('data', (chunk) => {
    data += chunk;
  });

  response.on('end', () => {
    const result = JSON.parse(data);

    if (result.results.length > 0) {
      const location = result.results[0].geometry.location;
      console.log(`Latitude: ${location.lat}`);
      console.log(`Longitude: ${location.lng}`);
      console.log(`Adresse formatée: ${result.results[0].formatted_address}`);
    }
  });
}).on('error', (err) => {
  console.error('Erreur :', err);
});

Sortie :

Latitude: 38.8951
Longitude: -77.0369
Adresse formatée: 1600 Pennsylvania Avenue NW, Washington, DC 20500, USA

Ce qui se passe : Vous envoyez l'adresse aux serveurs de Google. Ils la comparent à leur base de données, renvoient les coordonnées les plus proches et la version formatée. Simple recherche un à un.

Étape 4 : Exemple de recherche à proximité (Trouver des entreprises par catégorie + localisation)

Cas d'utilisation : Trouvez tous les restaurants dans un rayon de 1 km d'un point spécifique.

Code :

const https = require('https');

const apiKey = "VOTRE_CLE_API_ICI";
const latitude = 40.7128;  // New York
const longitude = -74.0060;
const radius = 1000;  // 1 km
const keyword = "restaurant";

const url = `https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=${latitude},${longitude}&radius=${radius}&keyword=${keyword}&key=${apiKey}`;

https.get(url, (response) => {
  let data = '';

  response.on('data', (chunk) => {
    data += chunk;
  });

  response.on('end', () => {
    const result = JSON.parse(data);

    console.log(`Trouvé ${result.results.length} restaurants :`);

    result.results.forEach((place) => {
      console.log(`
Nom : ${place.name}`);
      console.log(`Adresse : ${place.vicinity}`);
      console.log(`Note : ${place.rating} (${place.user_ratings_total} avis)`);
      console.log(`ID de lieu : ${place.place_id}`);
    });

    // Vérifiez s'il y a plus de résultats
    if (result.next_page_token) {
      console.log(`
Plus de résultats disponibles. Utilisez next_page_token : ${result.next_page_token}`);
    }
  });
}).on('error', (err) => {
  console.error('Erreur :', err);
});

Sortie :

Trouvé 20 restaurants :

Nom : Balthazar
Adresse : 80 Spring Street, New York
Note : 4.5 (1 203 avis)
ID de lieu : ChIJIQBpAG2fwoAR_L12E10P3MQ

Nom : Eleven Madison Park
Adresse : 11 Madison Avenue, New York
Note : 4.7 (892 avis)
ID de lieu : ChIJ0ZHZd6eewokRkurJVcf33V4

...

Limitations de cette approche :

  • Renvoie un maximum de 20 résultats par requête
  • Pour obtenir tous les résultats, utilisez next_page_token (nécessite plusieurs appels API = coût plus élevé)
  • Aucune extraction d'email (besoin de visiter le site web séparément)
  • Aucun texte d'avis (seulement le nombre de notes)
  • Limites de taux : 50 requêtes/seconde maximum
  • Aucun filtrage par score d'avis, statut de vérification ou nombre de photos

Méthode 2 : Automatisation du navigateur (Selenium, Puppeteer)

Si l'API Google est trop coûteuse ou limitée, vous pouvez automatiser un navigateur pour imiter le comportement de l'utilisateur.

Comment cela fonctionne : Un script ouvre Chrome/Firefox, recherche sur Google Maps "plombiers à Chicago", clique sur les résultats, extrait des données du DOM (HTML de la page) et les enregistre.

Pourquoi utiliser l'automatisation du navigateur ?

✅ Pas de coûts d'API (seulement vos coûts de serveur)
✅ Accès à toutes les données visibles (avis, photos, contenu du site web)
✅ Pas de limites de taux (techniquement — mais Google peut détecter et bloquer)
❌ Plus lent (prend 5-10 secondes par entreprise contre 0.1 seconde via l'API)
❌ Configuration complexe (nécessite l'installation de Chrome/Firefox)
❌ Fragile (Google change la mise en page → le script se casse)
❌ Risqué (Google bloque activement les scrapers)

Exemple de base Puppeteer

Configuration :

npm install puppeteer

Code :

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  // Naviguez vers la recherche Google Maps
  await page.goto('https://www.google.com/maps/search/plombiers+à+chicago');

  // Attendez que les résultats se chargent
  await page.waitForSelector('[data-item-id]');

  // Extraire les annonces commerciales
  const businesses = await page.evaluate(() => {
    const items = [];
    document.querySelectorAll('[data-item-id]').forEach((element) => {
      items.push({
        name: element.querySelector('[data-item-id] .fontHeadlineSmall')?.textContent || 'N/A',
        rating: element.querySelector('.icon-star-fill')?.textContent || 'N/A',
        address: element.querySelector('[data-item-id] .fontBodySmall')?.textContent || 'N/A',
      });
    });
    return items;
  });

  console.log(businesses);

  await browser.close();
})();

Pourquoi cela est risqué : Google détecte les modèles d'automatisation du navigateur (clics rapides, pas de mouvements de souris, en-têtes manquants). Ils bloquent l'IP ou affichent des CAPTCHAs. Vous auriez besoin de proxys, de délais et de contournement d'en-têtes — complexe et peu fiable.

Verdict : L'automatisation du navigateur fonctionne pour une extraction à petite échelle (< 100 entreprises) mais échoue à grande échelle.


Méthode 3 : Bases de données commerciales pré-indexées

L'approche la plus rapide : quelqu'un d'autre a déjà extrait et organisé les données.

Comment cela fonctionne : Une entreprise (comme IBLead) exécute des scrapers 24/7, extrait les annonces Google Maps mensuellement, nettoie les données et vend l'accès via une API ou une interface web.

Avantages :

  • Aucun codage requis
  • Résultats instantanés (données déjà extraites)
  • Coût inférieur à celui de l'API Google (tarification en gros)
  • Inclut des données enrichies (emails, technologies détectées, texte des avis)
  • Prend en charge des filtres complexes (note, nombre d'avis, statut de vérification, etc.)

Compromis :

  • Données âgées de 1 à 30 jours (pas en temps réel)
  • Vous dépendez de l'exactitude du fournisseur
  • Modèle d'abonnement (pas de paiement à l'utilisation)

Exemple : IBLead extrait plus de 5 millions d'annonces Google Maps dans plus de 15 pays, mises à jour mensuellement. Vous recherchez par ville/catégorie/filtres et exportez au format CSV en 2 clics.


Réponse courte : Cela dépend de la manière dont vous le faites.

Utiliser l'API officielle de Google Maps

Légal — Vous utilisez le service autorisé de Google, en suivant leurs conditions d'utilisation. Vous payez pour l'utilisation. Aucun problème.

Automatisation du navigateur / Scraping direct

⚠️ Zone grise — Techniquement possible, mais :

  1. Violate les conditions d'utilisation de Google — Section 10.3 : "Vous ne devez pas... tenter d'accéder ou de rechercher Google Maps par d'autres moyens que les interfaces publiques prises en charge par Google."

  2. Violate le Computer Fraud and Abuse Act (CFAA) aux États-Unis — Accès non autorisé aux systèmes informatiques. Les tribunaux ont statué que le scraping peut violer cela.

  3. Préoccupations liées aux droits d'auteur — Les noms d'entreprises, adresses et avis sont protégés par des droits d'auteur. Les reproduire sans autorisation constitue une violation des droits d'auteur.

  4. Application pratique — Google bloque activement les scrapers. Votre IP est bannie. Vous auriez besoin de proxys (ajoute de la complexité et du coût).

Cas réel : En 2020, une entreprise a été poursuivie pour avoir scrapé des profils LinkedIn. Le tribunal a statué que même les données visibles publiquement sont protégées si vous violez les conditions d'utilisation pour y accéder.

Meilleure pratique

Utilisez l'API officielle de Google Maps ou un fournisseur de données sous licence (IBLead, IBLead, etc.). Vous restez légal, évitez les interdictions d'IP et obtenez des données fiables.

Si le coût est une préoccupation, comparez :

  • API Google : 320 $ pour 10 000 entreprises
  • IBLead : 44 €/mois pour 10 000 crédits (1 entreprise = 1 crédit) = 44 € pour 10 000 entreprises
  • Automatisation du navigateur DIY : 0 $ au départ, mais 500 $+ en proxys/infrastructure, plus le risque d'action en justice

L'approche sous licence est moins chère et plus sûre.


Workflow pratique : De la recherche à l'export CSV

Passons en revue un scénario réel : Vous devez trouver 500 électriciens à Los Angeles avec numéros de téléphone et sites web.

Option A : API Google Maps

Étape 1 : Géocodez "Los Angeles" pour obtenir les coordonnées.

// Obtenez les coordonnées de LA : 34.0522, -118.2437

Étape 2 : Faites des requêtes de recherche à proximité pour "électricien" dans un rayon de 15 km.

// Première requête : renvoie 20 résultats + next_page_token
// Deuxième requête : utilisez next_page_token pour obtenir les 20 suivants
// ... répétez 25 fois pour obtenir 500 résultats

Étape 3 : Pour chaque entreprise, faites une requête distincte "Détails du lieu" pour obtenir le numéro de téléphone et le site web.

// Chaque entreprise nécessite un appel API distinct
// 500 entreprises = 500 requêtes supplémentaires

Total des requêtes : 25 (recherche à proximité) + 500 (détails du lieu) = 525 requêtes
Total du coût : (525 / 1 000) × 32 $ = 16,80 $
Temps de codage : 4-6 heures (si vous connaissez JavaScript)
Temps d'exécution : 10-15 minutes

Option B : IBLead

Étape 1 : Allez sur app.iblead.com
Étape 2 : Recherchez "électriciens" à "Los Angeles"
Étape 3 : Appliquez des filtres (note > 4, entreprises vérifiées, etc.)
Étape 4 : Exportez au format CSV
Étape 5 : Importez dans le CRM

Total du coût : 44 €/mois (couvre 10 000 crédits ; vous en utilisez 500)
Temps de codage : 0 (pas de codage)
Temps d'exécution : 2 minutes

Fonctionnalités bonus dans IBLead :
- Adresses email (extraites des sites web)
- Détections de technologies (WordPress, Shopify, HubSpot, etc.)
- Texte et sentiment des avis Google
- Données SIRET/SIREN (France uniquement)
- Filtrage par score d'avis, nombre d'avis, photos, statut de vérification


Extraction des avis Google Maps (cas d'utilisation avancé)

Les avis sont précieux pour la surveillance de la réputation, la recherche de marché et l'analyse concurrentielle.

Le défi

L'API Google Maps ne renvoie PAS le texte des avis. Vous obtenez le nombre d'avis et la note moyenne, mais pas les avis individuels.

Réponse API :

{
  "name": "Joe's Diner",
  "rating": 4.3,
  "user_ratings_total": 287
}

Vous ne recevez pas :
- Texte d'avis individuel
- Nom du critique
- Date de l'avis
- Note par avis

Approche d'automatisation du navigateur

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  // Naviguez vers une entreprise sur Google Maps
  await page.goto('https://www.google.com/maps/place/Joes+Diner');

  // Faites défiler la section des avis
  const reviews = await page.evaluate(() => {
    const reviewList = [];
    document.querySelectorAll('[data-review-id]').forEach((review) => {
      reviewList.push({
        author: review.querySelector('.EWp0qd')?.textContent || 'Anonyme',
        rating: review.querySelector('[aria-label*="star"]')?.getAttribute('aria-label') || 'N/A',
        text: review.querySelector('.wiI7pd')?.textContent || '',
        date: review.querySelector('.rsqaWe')?.textContent || 'N/A',
      });
    });
    return reviewList;
  });

  console.log(reviews);
  await browser.close();
})();

Sortie :

[
  {
    "author": "Sarah M.",
    "rating": "5 étoiles",
    "text": "Meilleur petit déjeuner en ville ! Je recommande vivement les pancakes.",
    "date": "il y a 2 semaines"
  },
  {
    "author": "John D.",
    "rating": "3 étoiles",
    "text": "Bonne nourriture mais service lent.",
    "date": "il y a 1 mois"
  }
]

Pourquoi cela est important :

  • Surveillance de la réputation : Signalez automatiquement les entreprises avec de nouveaux avis de 1 à 2 étoiles
  • Analyse concurrentielle : Extrayez les avis des concurrents pour comprendre ce que les clients apprécient
  • Analyse de sentiment : Utilisez le NLP pour catégoriser les avis par sujet (nourriture, service, prix, etc.)

Le hic : Google bloque cela à grande échelle. Après 50-100 avis, vous rencontrez des CAPTCHAs ou des interdictions d'IP.

Approche d'IBLead (fonctionnalité exclusive)

IBLead scrape le texte des avis, l'auteur, la note et la date pour chaque entreprise. Vous pouvez filtrer par :
- Note minimum/maximum
- Plage de dates (derniers 30 jours, dernière année, etc.)
- Mot-clé dans le texte de l'avis

Cas d'utilisation : Trouvez toutes les entreprises avec une note moyenne < 3 dans votre marché → personnalisez votre approche pour mentionner leurs avis bas → proposez des services de réparation de réputation.


Défis communs et solutions

Défi 1 : Limitation de taux

Problème : L'API Google Maps vous limite à 50 requêtes/seconde. Si vous en faites plus, les requêtes échouent.

Solution : Ajoutez des délais entre les requêtes.

function delay(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

for (let i = 0; i < 100; i++) {
  // Faites une requête API
  await makeRequest();

  // Attendez 200 ms avant la prochaine requête
  await delay(200);
}

Défi 2 : Données manquantes

Problème : Certaines entreprises n'ont pas de numéros de téléphone ou de sites web répertoriés sur Google Maps

Prêt à commencer ?

Accédez à toutes les entreprises Google Maps, enrichies avec emails et données légales.

Essayer IBLead gratuitement