Sommaire
- Pourquoi scraper Google Maps avec Python en 2026 ?
- Prérequis : installer Python, Selenium et Playwright
- Scraper avec Selenium : tutoriel pas à pas
- Scraper avec Playwright : l'alternative moderne
- Quelles données extraire de Google Maps ?
- Les limites du scraping Python
- Scraping Google Maps : légal en 2026 ?
- Alternative no-code : Scrap.io
- FAQ
Pourquoi scraper Google Maps avec Python en 2026 ?
Thomas, développeur freelance à Bordeaux, a passé un dimanche entier à coder un scraper Google Maps en Python. Lundi matin, son script tournait. Mardi, il était cassé. Google avait changé un sélecteur CSS. Trois heures de debug pour récupérer 47 fiches de plombiers.
Son histoire n'a rien d'exceptionnel.
Avec 225 millions d'établissements indexés sur Google Maps (source : Scrap.io, 2026), la tentation est énorme. C'est la plus grosse base de données B2B gratuite de la planète. Et Python reste le langage préféré des développeurs pour automatiser l'extraction — flexible, bien documenté, bourré de librairies.
Mais entre "ça marche sur mon PC" et "ça tourne en production sans exploser toutes les semaines", il y a un gouffre. Et c'est précisément ce gouffre qu'on va explorer ici. Comment scraper Google Maps avec Python en 2026, concrètement, avec du code qui fonctionne — et surtout, pourquoi 90% des tutos que vous trouverez en ligne sont déjà obsolètes.
Prérequis : installer Python, Selenium et Playwright
Bon. Avant de coder quoi que ce soit, il faut poser les fondations. Cinq minutes d'installation, promis. (La stabilité ensuite, c'est une autre histoire.)
Python 3.10+
Téléchargez la dernière version stable depuis python.org. Vérifiez avec python --version. Si vous êtes encore sur Python 3.8, c'est le moment de mettre à jour — certaines librairies modernes ne supportent plus les anciennes versions.
Selenium 4
Attention, piège classique. Selenium 4 a déprécié toutes les méthodes findelementby* (source : selenium.dev). Si votre tuto utilise encore findelementbycssselector, fermez l'onglet. C'est du Selenium 3. Mort.
Installation :
pip install selenium webdriver-manager
Le package webdriver-manager gère automatiquement le téléchargement du ChromeDriver. Fini l'époque où il fallait matcher manuellement la version du driver avec celle de Chrome.
Playwright (optionnel mais recommandé)
pip install playwrightplaywright install chromium
Playwright embarque ses propres navigateurs. Pas de driver externe, pas de problème de compatibilité. (Si vous avez déjà vécu l'enfer du ChromeDriver qui ne matche plus avec votre version de Chrome, vous comprenez pourquoi c'est un game changer.) On en reparle dans la section dédiée.
Librairies complémentaires
pip install pandas beautifulsoup4
Pandas pour structurer vos données en DataFrame et exporter en CSV. BeautifulSoup pour parser le HTML quand Selenium ne suffit pas. Et franchement, si JavaScript est plus votre truc, on a aussi un guide dédié.
Scraper avec Selenium : tutoriel pas à pas
90% des tutos Google Maps + Selenium en ligne sont obsolètes. Je ne dis pas ça pour faire le malin — c'est factuel. Ils utilisent des sélecteurs qui n'existent plus et une syntaxe dépréciée depuis Selenium 4.
Voici un script qui fonctionne en mai 2026 :
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import time
import pandas as pd
Configuration Selenium 4
options = webdriver.ChromeOptions()
options.add_argument("--disable-blink-features=AutomationControlled")
options.add_argument("--lang=fr-FR")
driver = webdriver.Chrome(
service=Service(ChromeDriverManager().install()),
options=options
)
driver.get("https://www.google.com/maps")
time.sleep(3)
Recherche
searchbox = driver.findelement(By.ID, "searchboxinput")
searchbox.sendkeys("restaurants Paris")
searchbox.sendkeys(Keys.ENTER)
time.sleep(5)
Scroll pour charger les résultats
resultspanel = driver.findelement(
By.CSS_SELECTOR, 'div[role="feed"]'
)
for _ in range(5):
driver.execute_script(
"arguments[0].scrollTop = arguments[0].scrollHeight",
results_panel
)
time.sleep(2)
Extraction
businesses = []
items = driver.findelements(By.CSSSELECTOR, 'div.Nv2PK')
for item in items:
try:
name = item.find_element(
By.CSS_SELECTOR, '.qBF1Pd'
).text
rating = item.find_element(
By.CSS_SELECTOR, '.MW4etd'
).text
businesses.append({
"nom": name,
"note": rating
})
except:
continue
df = pd.DataFrame(businesses)
df.tocsv("restaurantsparis.csv", index=False)
driver.quit()
Quelques points importants. D'abord, le --disable-blink-features=AutomationControlled : ça empêche Google de détecter immédiatement que c'est un bot. Ensuite, le scroll sur le feed de résultats — sans ça, vous ne récupérez que les 5-6 premiers résultats visibles.
Et le projet omkarcloud/google-maps-scraper sur GitHub ? Avec ses 2 400+ étoiles et 50+ types de données extractibles, c'est la référence open-source. Mais même lui nécessite de la maintenance régulière quand Google modifie son DOM. Le projet padmanabhan-s/scraping-google-map propose aussi une approche Selenium + BeautifulSoup orientée lead gen — plus basique, mais fonctionnelle pour des petits volumes.
Scraper avec Playwright : l'alternative moderne
Et si Selenium n'était plus le meilleur choix ?
Playwright, développé par Microsoft, gère nativement l'attente des éléments. Plus besoin de time.sleep() partout comme un barbare. Le navigateur attend que l'élément soit effectivement chargé avant d'interagir.
from playwright.syncapi import syncplaywright
import pandas as pd
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
page = browser.new_page()
page.goto("https://www.google.com/maps")
# Recherche
page.fill("#searchboxinput", "plombiers Lyon")
page.keyboard.press("Enter")
page.waitfortimeout(5000)
# Scroll automatique
feed = page.locator('div[role="feed"]')
for _ in range(5):
feed.evaluate(
"el => el.scrollTop = el.scrollHeight"
)
page.waitfortimeout(2000)
# Extraction
items = page.locator("div.Nv2PK").all()
data = []
for item in items:
name = item.locator(".qBF1Pd").inner_text()
data.append({"nom": name})
pd.DataFrame(data).to_csv(
"plombiers_lyon.csv", index=False
)
browser.close()
Le framework Crawlee d'Apify pousse le concept encore plus loin avec de l'anti-détection intégrée et du scaling automatique. BrightData propose aussi un guide FR complet sur le scraping Google Maps Python, mais c'est surtout pour vendre leurs proxies (ce qui est honnête, au moins). Et HasData offre un scraper multi-moteur qui supporte Selenium, Playwright et l'API en parallèle.
Bref, le choix entre Selenium et Playwright en 2026, c'est un peu comme choisir entre une boîte manuelle et une automatique. Les deux roulent. Mais l'une demande nettement moins d'efforts au quotidien.
| Critère | Selenium 4 | Playwright | Scrap.io |
|---|---|---|---|
| Installation | Moyenne (driver externe) | Simple (tout inclus) | Aucune |
| Anti-détection | Manuelle | Partielle | Intégrée |
| Maintenance | Élevée (sélecteurs cassés) | Moyenne | Zéro |
| Scaling | Complexe (proxies, IP) | Complexe | 2 clics (pays entier) |
| Enrichissement emails | Non natif | Non natif | Intégré + classifié |
| Coût | Gratuit + temps dev | Gratuit + temps dev | À partir de 35 €/mois |
| Temps pour 1 000 fiches | 2-4 h + debug | 1-3 h + debug | ~5 min |
Quelles données extraire de Google Maps ?
Une fiche Google Maps, c'est bien plus qu'un nom et une adresse. On parle de 50+ types de données extractibles par établissement (source : Scrap.io). Voici ce qu'un google maps scraper python bien configuré peut récupérer :
Données de base : nom, adresse complète, ville, code postal, coordonnées GPS, catégorie principale et secondaires, horaires d'ouverture, statut (ouvert/fermé).
Contact : numéro de téléphone (fixe ou mobile — oui, on peut distinguer les deux pour cibler les campagnes SMS), site web, et potentiellement des adresses email si on pousse l'enrichissement via le site.
Réputation : note moyenne, nombre d'avis, répartition par étoiles. Un restaurant avec 4,8/5 sur 2 000 avis et un autre avec 4,8/5 sur 12 avis, ce n'est pas la même crédibilité. (Spoiler : les bons commerciaux filtrent là-dessus avant même de décrocher le téléphone.)
Données enrichies (via le site web) : réseaux sociaux, technologies utilisées (CMS, pixels pub), meta SEO, formulaire de contact. C'est là que les scripts Python montrent leurs limites — extraire les coordonnées Google Maps c'est une chose, enrichir avec les données du site web en est une autre. Essayez de coder un enrichisseur d'emails classifié en Python. Je vous attends.
Les limites du scraping Python
OK, le code fonctionne. Aujourd'hui. Mais dans trois semaines ?
C'est le problème numéro un du scraping Google Maps avec Python : la fragilité. Google modifie régulièrement sa structure HTML. Un sélecteur CSS qui marchait hier retourne None aujourd'hui. Votre script plante à 3h du matin, personne ne s'en rend compte, et vous vous retrouvez avec un fichier vide lundi matin.
Sur Reddit (r/Python), le conseil qui revient le plus souvent : utiliser l'API officielle ou stocker les résultats intermédiaires pour limiter les pertes. Sur Quora, même son de cloche — les développeurs expérimentés recommandent de passer par des services spécialisés plutôt que de maintenir un scraper maison, parce que le coût de maintenance finit par dépasser celui d'un abonnement.
Et les blocages ? Google détecte les patterns de navigation robotique. Trop de requêtes depuis la même IP, un timing trop régulier, l'absence de cookies — et c'est le CAPTCHA. Puis le blocage pur et simple. Votre script Python fait peut-être quelques dizaines de requêtes par heure. Scrap.io en traite 10 000 par minute (source : Scrap.io) grâce à une infrastructure dédiée. C'est énorme.
Oh, et aussi — le scaling. Passer au-delà des 120 résultats sur Google Maps avec un script maison, c'est du masochisme. Il faut paginer, scroller, gérer les doublons, relancer quand ça plante. Un développeur sur Quora résumait bien : "j'ai passé plus de temps à maintenir mon scraper qu'à exploiter les données qu'il me ramenait".
Et l'API Google Places ? Elle offre 200 $ de crédit gratuit par mois (source : Google Cloud, 2026). Ça paraît généreux. Mais à ~32 $ pour 1 000 requêtes, ça fond vite. Pour 10 000 leads, comptez 320 $. L'API vs le scraping, on a fait le calcul — le scraping spécialisé revient 10 fois moins cher à grande échelle.
Marre de debug des sélecteurs CSS à 23h ? Scrap.io extrait les données Google Maps sans code, sans proxy, sans maintenance. 225 millions d'établissements accessibles en 2 clics, avec enrichissement emails et réseaux sociaux intégré. Un cas client réel : 11 734 entreprises extraites en 45 minutes.
Scraping Google Maps : légal en 2026 ?
La question qui fâche. Et la réponse qui surprend : oui, c'est légal. Mais avec des nuances.
Le scraping de données publiquement accessibles n'est pas interdit en soi. La CNIL a clarifié sa position en 2025 : la base légale de l'intérêt légitime est acceptable pour collecter des données B2B publiques, à condition de respecter le principe de minimisation et d'informer les personnes au premier contact. Pour creuser la légalité du scraping Google Maps, on a un article dédié avec la jurisprudence récente.
Concrètement : vous pouvez extraire des adresses, numéros de téléphone professionnels et emails d'entreprises listées sur Google Maps. Ce que vous ne pouvez pas faire : aspirer en masse sans finalité claire, revendre sans consentement, ignorer les demandes de désinscription. Les risques et bonnes pratiques sont détaillés dans notre guide — à lire avant de lancer votre premier script.
Et le RGPD ? Sanctions théoriques jusqu'à 20 millions d'euros. En pratique, une PME qui scrape 2 000 fiches pour de la prospection B2B ne finira pas en prison. Mais autant faire les choses proprement.
Alternative no-code : Scrap.io
Video: Web Scraper vs Scrap.io
Bon, soyons francs. Si vous lisez cet article pour scraper Google Maps en Python, c'est probablement que vous aimez coder. Et c'est cool. Mais il y a un moment où il faut se poser la question : est-ce que je code parce que c'est la meilleure solution, ou parce que j'ai l'habitude ?
Scrap.io fait exactement ce que votre script Python essaie de faire — mais sans les galères. Vous tapez une catégorie, une zone géographique, vous filtrez AVANT l'extraction (pour ne pas gaspiller de crédits sur des fiches sans email), et vous exportez en CSV ou Excel. Scraper un pays entier ? Deux clics. Littéralement.
Les données sont fraîches — extraction en temps réel, pas de base figée. (Croyez-moi, prospecter avec un fichier de 6 mois, c'est envoyer des emails dans le vide.) Et l'enrichissement est intégré : emails classifiés (individuel, contact, sales, marketing), réseaux sociaux, technologies du site, pixels pub. Notre guide complet des méthodes compare toutes les approches si vous voulez voir le détail.
Un google maps data scraper python gratuit existe, certes. Mais le temps que vous passez à le maintenir a un coût. Et ce coût dépasse très vite les 35 €/mois du plan Basic.
Essai gratuit 7 jours + 100 leads offerts. Comparez la qualité des données avec ce que votre script Python vous ramène. Si Scrap.io fait mieux en 5 minutes que votre code en 5 heures, la question est réglée.
FAQ
Est-il légal de scraper Google Maps avec Python ?
Oui, le scraping de données publiques est légal en France. La CNIL accepte la base légale de l'intérêt légitime pour la collecte B2B, à condition de respecter la minimisation des données et d'informer les personnes au premier contact. Utilisez les données pour de la prospection commerciale légitime, pas pour de la revente sauvage.
Selenium ou Playwright pour Google Maps ?
En 2026, Playwright a pris l'avantage. L'attente automatique des éléments, les navigateurs embarqués et la meilleure gestion du JavaScript dynamique en font un choix plus robuste. Selenium reste viable mais demande plus de configuration et de time.sleep() manuels. Pour les deux, le problème de maintenance des sélecteurs reste identique.
Combien de résultats peut-on extraire avec Python ?
Google Maps affiche maximum 120 résultats par recherche. Pour dépasser cette limite, il faut découper la zone géographique en sous-zones et multiplier les requêtes. C'est faisable mais laborieux. Scrap.io n'a pas cette limitation et peut extraire tous les résultats d'un pays entier.
Comment éviter les blocages Google Maps en scraping ?
Trois leviers : rotation d'IP via des proxies résidentiels, espacement aléatoire des requêtes (3-10 secondes), et rotation des user-agents. Le flag --disable-blink-features=AutomationControlled aide aussi sur Chrome. Ou alors, utilisez un outil professionnel qui gère ça nativement.
Quelles données peut-on extraire de Google Maps ?
Les données de base (nom, adresse, téléphone, note, avis, horaires, coordonnées GPS) sont directement accessibles via scraping. L'enrichissement avancé — emails classifiés, réseaux sociaux, technologies web, pixels pub — nécessite de crawler les sites web associés. Les outils spécialisés comme Scrap.io intègrent cet enrichissement nativement, là où un script Python nécessiterait un développement supplémentaire conséquent.
Votre script Python vs Scrap.io : le match est ouvert. Lancez l'essai gratuit, exportez 100 leads sur votre niche, et comparez avec ce que votre code produit. Même zone, même catégorie. Le résultat parle de lui-même.
Prêt à générer des prospects depuis Google Maps?
Essayez Scrap.io gratuitement pendant 7 jours.