Retour au blog
Guides & Tutoriels2026-03-15·11 min de lecture

Guide Google Maps Python Selenium : extraire des données

Par Ibrahim DemolCEO IBLeadMis à jour le 15 mars 2026

Vous voulez extraire des données depuis Google Maps avec Python et Selenium ? Ce guide couvre tout : la préparation de l'environnement, l'écriture du script, les pièges à éviter. Le keyword guide google map python selenium extraire revient souvent dans les recherches de développeurs qui veulent automatiser la collecte de données locales — et pour cause. Google Maps contient des millions de fiches business avec adresses, téléphones, notes et horaires. Autant d'informations utiles pour la prospection, les études de marché ou l'analyse concurrentielle.


Pourquoi combiner Python et Selenium pour scraper Google Maps ?

Python est le langage de référence pour le web scraping. Sa syntaxe est claire, sa communauté est massive, et ses bibliothèques couvrent tous les besoins : manipulation de données avec Pandas, requêtes HTTP avec Requests, parsing HTML avec BeautifulSoup.

Mais Google Maps pose un problème spécifique. Une grande partie des données n'est pas dans le HTML statique. Les informations s'affichent après des interactions utilisateur : clic sur une fiche, scroll dans la liste, ouverture d'un panneau latéral. Un simple requests.get() ne suffit pas.

C'est là qu'intervient Selenium. Selenium pilote un vrai navigateur (Chrome, Firefox, Edge) et simule le comportement d'un utilisateur réel. Il peut cliquer, scroller, attendre qu'un élément apparaisse, et extraire le contenu rendu dynamiquement. Combiné à Python, il devient un outil solide pour automatiser l'extraction de données sur des interfaces web complexes comme Google Maps.


Préparer l'environnement de développement

Avant d'écrire la moindre ligne de code, il faut installer les bons outils.

1. Installer Python

Téléchargez la dernière version stable de Python sur python.org. Lors de l'installation sur Windows, cochez bien l'option "Add Python to PATH" — sans ça, les commandes pip ne fonctionneront pas dans le terminal.

Vérifiez l'installation avec :

python --version

2. Installer Selenium

Ouvrez votre terminal ou invite de commande et tapez :

pip install selenium

Selenium s'installe en quelques secondes. Vous aurez aussi besoin de Pandas pour organiser les données :

pip install pandas

3. Télécharger le WebDriver

Selenium a besoin d'un WebDriver pour contrôler votre navigateur. Le WebDriver est un exécutable qui fait le lien entre votre script Python et le navigateur.

La version du WebDriver doit correspondre exactement à la version de votre navigateur. Vérifiez votre version Chrome dans chrome://settings/help et téléchargez le ChromeDriver correspondant.

Depuis Selenium 4.6+, vous pouvez aussi utiliser selenium-manager qui gère le téléchargement automatiquement. Pratique pour éviter les erreurs de version.


Comprendre la structure de Google Maps avant de scraper

Avant d'écrire le script, prenez 5 minutes pour inspecter Google Maps dans les outils développeur de votre navigateur (F12).

Voici ce que vous observerez :

  • La liste des résultats est dans un conteneur scrollable avec une classe CSS spécifique
  • Chaque fiche business est un élément cliquable
  • Les détails (téléphone, site web, horaires) n'apparaissent qu'après avoir cliqué sur une fiche
  • Google Maps charge les résultats en lazy loading — les éléments en bas de liste n'existent pas dans le DOM tant que vous n'avez pas scrollé

Ces comportements dynamiques expliquent pourquoi Selenium est nécessaire. Ils expliquent aussi pourquoi le scraping de Google Maps est techniquement plus complexe qu'un site statique.

Attention : Google Maps limite les résultats à 120 fiches par recherche. Si votre zone géographique contient plus de 120 businesses dans une catégorie, vous devrez découper votre recherche (par arrondissement, par code postal, etc.) pour couvrir l'ensemble.


Écrire le script Python Selenium pour Google Maps

Voici un exemple fonctionnel qui recherche des restaurants dans une ville et extrait leurs adresses.

Structure du script

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
import pandas as pd

# Lancer le navigateur Chrome
driver = webdriver.Chrome()
driver.get("https://www.google.com/maps")

# Attendre que la page charge
time.sleep(3)

# Entrer la requête de recherche
search_bar = driver.find_element(By.NAME, "q")
search_bar.send_keys("Restaurants Paris 11")
search_bar.send_keys(Keys.ENTER)

# Attendre les résultats
time.sleep(5)

# Scroller dans la liste pour charger plus de résultats
results_panel = driver.find_element(By.CSS_SELECTOR, "div[role='feed']")
for _ in range(5):
    driver.execute_script("arguments[0].scrollTop = arguments[0].scrollHeight", results_panel)
    time.sleep(2)

# Extraire les fiches
results = driver.find_elements(By.CSS_SELECTOR, "div.Nv2PK")
addresses = []

for result in results:
    try:
        name = result.find_element(By.CSS_SELECTOR, ".qBF1Pd").text
        address_elements = result.find_elements(By.CSS_SELECTOR, ".W4Efsd span")
        address = " ".join([el.text for el in address_elements if el.text])
        addresses.append({"Nom": name, "Adresse": address})
    except Exception:
        pass

# Exporter en CSV
df = pd.DataFrame(addresses)
df.to_csv("restaurants_paris.csv", index=False, encoding="utf-8-sig")
print(f"{len(addresses)} restaurants extraits.")

# Fermer le navigateur
driver.quit()

Ce que fait ce script, étape par étape

Étape 1 — Lancer Chrome : webdriver.Chrome() ouvre une fenêtre Chrome contrôlée par Selenium. Vous la verrez s'ouvrir sur votre écran.

Étape 2 — Naviguer vers Google Maps : driver.get() charge la page. Le time.sleep(3) laisse le temps au JavaScript de s'exécuter.

Étape 3 — Lancer la recherche : Le script trouve la barre de recherche par son attribut name="q", tape la requête et appuie sur Entrée.

Étape 4 — Scroller : La boucle scrolle le panneau de résultats 5 fois pour déclencher le lazy loading et charger plus de fiches.

Étape 5 — Extraire : Pour chaque fiche trouvée, le script récupère le nom et l'adresse. Le bloc try/except évite que le script plante si un élément est manquant.

Étape 6 — Exporter : Pandas organise les données dans un DataFrame et les sauvegarde en CSV. L'encodage utf-8-sig garantit que les caractères spéciaux (accents, etc.) s'affichent correctement dans Excel.


Extraire des données supplémentaires : téléphone, site web, note

Pour récupérer le téléphone, le site web et la note Google, il faut cliquer sur chaque fiche et attendre que le panneau de détail s'ouvre.

for result in results:
    try:
        result.click()
        time.sleep(3)  # Attendre le panneau de détail
        
        # Note Google
        try:
            rating = driver.find_element(By.CSS_SELECTOR, "span.MW4etd").text
        except:
            rating = ""
        
        # Téléphone
        try:
            phone = driver.find_element(
                By.CSS_SELECTOR, 
                "button[data-item-id^='phone'] span.Io6YTe"
            ).text
        except:
            phone = ""
        
        # Site web
        try:
            website = driver.find_element(
                By.CSS_SELECTOR, 
                "a[data-item-id='authority']"
            ).get_attribute("href")
        except:
            website = ""
            
        addresses.append({
            "Nom": name,
            "Téléphone": phone,
            "Site web": website,
            "Note": rating
        })
        
    except Exception:
        pass

Ce code est plus lent. Chaque clic + attente prend 3 à 5 secondes. Pour 100 fiches, comptez 5 à 8 minutes d'exécution minimum.


Les sélecteurs CSS de Google Maps cassent régulièrement

C'est le problème numéro un du scraping Google Maps avec Selenium. Google modifie ses classes CSS sans prévenir. Un script qui fonctionne aujourd'hui peut retourner zéro résultat demain.

Quelques bonnes pratiques pour limiter la casse :

Utilisez des attributs stables : Les attributs data-item-id, aria-label, et role changent moins souvent que les classes CSS générées automatiquement.

Ajoutez des logs : Faites afficher le nombre d'éléments trouvés à chaque étape. Si un sélecteur retourne 0 résultat, vous le saurez immédiatement.

Versionnez votre script : Gardez les anciennes versions. Quand Google casse vos sélecteurs, vous pouvez comparer et identifier ce qui a changé.

Testez avec driver.page_source : Sauvegardez le HTML de la page pour l'inspecter hors ligne quand quelque chose ne fonctionne pas.


Gérer les restrictions et les CAPTCHA

Google détecte les comportements automatisés. Voici les signaux qui déclenchent des blocages :

  • Trop de requêtes depuis la même IP en peu de temps
  • Pas de délai entre les actions (comportement non humain)
  • User-agent manquant ou générique
  • Absence de cookies de session

Stratégies pour réduire les blocages

Ajouter des délais aléatoires : Remplacez time.sleep(3) par time.sleep(random.uniform(2, 5)). Les délais fixes sont plus facilement détectés.

Utiliser un profil Chrome réel : Lancez Chrome avec votre profil utilisateur existant pour bénéficier de vos cookies et de votre historique.

options = webdriver.ChromeOptions()
options.add_argument("--user-data-dir=/path/to/your/chrome/profile")
driver = webdriver.Chrome(options=options)

Utiliser un proxy ou VPN : Si votre IP est bloquée, un proxy rotatif ou un VPN vous permet de changer d'adresse IP. Des services comme Bright Data ou Oxylabs proposent des proxies résidentiels adaptés au scraping.

Limiter le volume par session : Ne scrapez pas 500 fiches d'affilée. Découpez en sessions de 50-100 fiches avec des pauses entre chaque.


La limite des 120 résultats Google Maps

Google Maps ne retourne jamais plus de 120 résultats par recherche, quelle que soit la zone géographique. C'est une contrainte structurelle, pas un bug.

Pour contourner cette limite et couvrir une ville entière :

  1. Découpez par arrondissement ou quartier : "Restaurants Paris 1er", "Restaurants Paris 2ème", etc.
  2. Découpez par code postal : Itérez sur une liste de codes postaux.
  3. Utilisez une grille géographique : Divisez la zone en cellules et lancez une recherche par cellule.

Cette approche multiplie le nombre de requêtes et donc le temps d'exécution. Pour couvrir une grande ville avec plusieurs catégories, comptez plusieurs heures de scraping.


Aller plus loin avec BeautifulSoup et Requests

Selenium n'est pas toujours nécessaire. Pour certaines données accessibles dans le HTML statique, BeautifulSoup et Requests suffisent et sont beaucoup plus rapides.

pip install beautifulsoup4 requests

Mais pour Google Maps spécifiquement, le rendu dynamique rend Selenium incontournable pour la plupart des données. BeautifulSoup est plus utile pour scraper les sites web des businesses une fois que vous avez récupéré leurs URLs depuis Google Maps — par exemple pour extraire les emails de contact.


Quand le scraping manuel devient contre-productif

Écrire et maintenir un scraper Google Maps prend du temps. Beaucoup de temps.

  • La mise en place initiale : 2 à 4 heures pour un développeur expérimenté
  • La maintenance quand Google change ses sélecteurs : 1 à 3 heures par incident
  • La gestion des proxies et des CAPTCHA : coût mensuel variable
  • Le temps d'exécution pour de gros volumes : plusieurs heures par export

Pour un développeur qui veut apprendre le web scraping, c'est un excellent exercice. Pour une équipe commerciale qui a besoin de 10 000 contacts qualifiés rapidement, c'est une perte de temps.

IBLead est une alternative directe. La base contient 50M+ businesses Google Maps dans 37 pays, déjà indexés et mis à jour chaque semaine. Vous filtrez par ville, catégorie, note Google, nombre d'avis, technologies utilisées sur le site web — et vous exportez en CSV en 2 minutes. Pas de code, pas de WebDriver, pas de CAPTCHA. À 44€ pour 10 000 leads, soit 0,004€ par contact.

Si vous avez besoin de données locales pour la prospection et pas d'un projet de scraping technique, IBLead vous fait gagner plusieurs heures.


FAQ

Est-ce légal de scraper Google Maps ?

Les conditions d'utilisation de Google interdisent le scraping automatisé de ses services. En pratique, Google peut bloquer votre IP ou votre compte. Sur le plan légal, la situation varie selon les pays et l'usage des données. Pour un usage commercial à grande échelle, consultez un juriste spécialisé en droit du numérique.

Pourquoi mon script Selenium ne trouve plus les éléments ?

Google Maps met à jour ses classes CSS régulièrement. Ouvrez les outils développeur (F12), inspectez les éléments que vous cherchez, et mettez à jour vos sélecteurs CSS. C'est la cause numéro un des scripts qui cessent de fonctionner.

Comment extraire les emails depuis Google Maps ?

Google Maps n'affiche pas les emails directement. Pour les récupérer, il faut d'abord extraire les URLs des sites web des businesses, puis scraper ces sites pour trouver les adresses email dans les pages "Contact" ou dans le footer. IBLead fait ce travail en amont : les emails sont enrichis depuis les sites web et inclus dans chaque export.

Quelle est la limite de résultats par recherche Google Maps ?

Google Maps limite les résultats à 120 fiches par recherche. Pour couvrir une zone plus large, vous devez multiplier les requêtes en découpant par quartier, code postal ou en utilisant une grille géographique.

Selenium ou Playwright pour scraper Google Maps ?

Les deux fonctionnent. Playwright (de Microsoft) est plus récent et souvent plus rapide. Il gère mieux les attentes asynchrones et est moins détecté comme bot. Si vous démarrez un nouveau projet de scraping, Playwright vaut la peine d'être exploré. Selenium reste plus documenté et a une communauté plus large.


Conclusion

Le duo Python + Selenium permet d'extraire des données depuis Google Maps de façon automatisée. C'est une compétence utile pour tout développeur qui travaille sur des projets de data collection ou d'automatisation web. La mise en place demande de la rigueur : gestion des délais, maintenance des sélecteurs, contournement des restrictions.

Si votre objectif est la prospection commerciale plutôt que l'apprentissage technique, IBLead vous donne accès aux mêmes données sans écrire une ligne de code. Essayez avec 200 crédits.

Commencez gratuitement — 200 crédits, sans carte

Prêt à commencer ?

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

Essayer IBLead gratuitement