Se hai mai provato a costruire una lista di vendita davvero mirata, esplorare nuovi mercati o fare benchmarking dei concorrenti, sai benissimo che Google Maps è una miniera d’oro. Però c’è un dato che cambia tutto: con oltre 1,5 miliardi di ricerche “near me” ogni mese e il 76% delle persone che cercano attività locali e poi le visitano entro 24 ore (), la richiesta di dati aziendali aggiornati e legati alla posizione non è mai stata così alta.
Che tu lavori in sales, marketing o operations, estrarre dati strutturati da Google Maps può fare la differenza tra una chiamata a freddo e un lead caldo con alta probabilità di conversione.
Ho passato anni nel mondo SaaS e dell’automazione, e ho visto in prima persona come i team usino Python (e oggi anche strumenti AI come ) per trasformare Google Maps in una risorsa strategica. In questa guida ti mostrerò, passo dopo passo, come estrarre dati da Google Maps con Python nel 2026 — con codice, consigli di conformità e un confronto con le soluzioni no-code. Se sei pratico di Python o cerchi solo il modo più veloce per ottenere dati utili, sei nel posto giusto.
Cosa Significa Estrarre Dati da Google Maps con Python?
Partiamo dalle basi: estrarre dati da Google Maps con Python vuol dire recuperare in modo programmato informazioni sulle attività — come nome, indirizzo, valutazione, recensioni, numero di telefono e coordinate — da Google Maps, così da poterle analizzare, filtrare ed esportare per uso business.

Ci sono due modi principali per farlo:
- Google Maps Places API: il metodo ufficiale e autorizzato. Usi una chiave API per interrogare i server di Google e ottenere dati JSON strutturati. È stabile, prevedibile e in gran parte conforme, ma prevede quote e costi.
- Web scraping dell’HTML: automatizzi un browser (con strumenti come Playwright o Selenium) per aprire Google Maps, fare ricerche e leggere la pagina renderizzata. È più flessibile, ma anche più fragile: Google cambia spesso la struttura del sito e lo scraping dell’HTML può violare i termini di Google.
Campi dati tipici che puoi estrarre:
- Nome dell’attività
- Categoria/tipologia
- Indirizzo completo (inclusi città, stato, CAP e paese)
- Latitudine e longitudine
- Numero di telefono
- URL del sito web
- Valutazione e numero di recensioni
- Fascia di prezzo
- Stato dell’attività (aperta/chiusa)
- Orari di apertura
- Place ID (l’identificativo univoco di Google)
- URL di Google Maps
Perché è importante? Perché questi campi alimentano tutto: dalla generazione di lead e la pianificazione territoriale al benchmarking della concorrenza e alla ricerca di mercato. La chiave è puntare ai dati giusti in base ai tuoi obiettivi — non estrarre tutto a caso.
Perché i Team Sales e Marketing Estraggono Dati da Google Maps con Python
Passiamo alla parte pratica. Perché nel 2026 così tanti team sales e marketing sono ossessionati dai dati di Google Maps?
- Lead generation: crea liste super mirate di attività locali, con contatti e valutazioni, per le campagne di outreach.
- Pianificazione territoriale: mappa territori di vendita, aree di consegna o zone di servizio in base alla densità reale delle attività e alle loro tipologie.
- Monitoraggio competitor: tieni traccia nel tempo delle sedi, delle valutazioni e delle recensioni dei concorrenti per intercettare trend e opportunità.
- Ricerca di mercato: analizza categorie di attività, orari di apertura e sentiment delle recensioni per orientare la strategia go-to-market.
- Scelta della sede: nel real estate e nel retail, valuta posizioni potenziali in base ai servizi vicini, al passaggio e alla concorrenza.
Impatto nel mondo reale: secondo il , il 92% delle organizzazioni sales prevede di aumentare gli investimenti in AI/dati, e i team che usano dati locali e mirati vedono tassi di conversione fino a 8 volte superiori rispetto a chi si affida a liste fredde generiche (). Uno studio sulla lead generation per franchising ha rilevato 15 dollari di nuovo fatturato per ogni 1 dollaro speso in liste lead basate su Google Maps.
Mappare gli obiettivi di business ai campi di Google Maps:
| Obiettivo di business | Campi Google Maps necessari |
|---|---|
| Lista lead locali | nome, indirizzo, telefono, sito web, categoria |
| Pianificazione territoriale | nome, lat/lng, business_status, opening_hours |
| Benchmark dei competitor | nome, rating, userRatingCount, priceLevel, reviews |
| Scelta della sede | categoria, lat/lng, densità recensioni, openingDate |
| Insight su sentiment/menu | reviews, editorialSummary, photos, types |
| Outreach via email/telefono | nationalPhoneNumber, websiteUri (poi arricchire se necessario) |
Configurare il Tuo Google Maps Scraper in Python: Strumenti e Requisiti
Prima di iniziare lo scraping, devi configurare l’ambiente Python e raccogliere gli strumenti giusti. Ecco cosa ti serve nel 2026:
1. Installa Python e le Librerie Necessarie
Versione Python consigliata: 3.10 o successiva.
Installa le librerie chiave:
1pip install \
2 requests==2.33.1 httpx==0.28.1 \
3 beautifulsoup4==4.14.3 lxml==6.0.3 \
4 pandas==2.3.3 \
5 selenium==4.43.0 playwright==1.58.0 \
6 googlemaps==4.10.0 google-maps-places==0.8.0 \
7 schedule==1.2.2 APScheduler==3.11.2 \
8 python-dotenv==1.2.2 tenacity==9.1.4
9playwright install chromium
A cosa servono:
requests,httpx: richieste HTTP (chiamate API)beautifulsoup4,lxml: parsing HTML (per web scraping)pandas: pulizia, analisi ed export dei datiselenium,playwright: automazione del browser (per scraping HTML)googlemaps,google-maps-places: client per le API di Google Mapsschedule,APScheduler: pianificazione delle attivitàpython-dotenv: carica in modo sicuro le API key dai file.envtenacity: logica di retry per la gestione degli errori
2. Ottieni una Google Maps API Key (per lo scraping via API)
- Vai su .
- Crea o seleziona un progetto.
- Attiva la fatturazione (obbligatoria, anche per l’utilizzo nel free tier).
- Abilita “Places API (New)” in APIs & Services > Library.
- Vai su Credentials > Create Credentials > API Key.
- Limita la chiave alle API e agli IP specifici per maggiore sicurezza.
- Salva la tua API key in un file
.env(non inserirla mai direttamente nel codice):
1GOOGLE_MAPS_API_KEY=your_actual_api_key_here
Nota: da marzo 2025, Google non offre più il credito universale da 200 dollari al mese. Al suo posto, esistono soglie mensili gratuite per ogni livello API (vedi ).
Come Estrarre Dati da Google Maps con Python: Guida Passo Dopo Passo
Vediamo nel dettaglio i due approcci principali — via API e scraping HTML — così puoi scegliere quello più adatto alle tue esigenze.
Approccio 1: Usare la Google Maps Places API (Consigliato)
Passo 1: Installa e Importa le Librerie Necessarie
1import os
2import httpx
3import pandas as pd
4from dotenv import load_dotenv
Passo 2: Carica in Sicurezza la Tua API Key
1load_dotenv()
2API_KEY = os.environ["GOOGLE_MAPS_API_KEY"]
Passo 3: Costruisci la Tua Query di Ricerca
Userai l’endpoint Text Search per trovare le attività che corrispondono ai tuoi criteri.
1URL = "https://places.googleapis.com/v1/places:searchText"
2FIELD_MASK = ",".join([
3 "places.id", "places.displayName", "places.formattedAddress",
4 "places.location", "places.rating", "places.userRatingCount",
5 "places.priceLevel", "places.types",
6 "places.nationalPhoneNumber", "places.websiteUri",
7 "nextPageToken",
8])
Passo 4: Esegui la Richiesta API
1def text_search(query, lat, lng, radius=3000, min_rating=4.0):
2 body = {
3 "textQuery": query,
4 "minRating": min_rating, # filtro lato server
5 "includedType": "restaurant",
6 "openNow": False,
7 "pageSize": 20,
8 "locationBias": {
9 "circle": {
10 "center": {"latitude": lat, "longitude": lng},
11 "radius": radius,
12 }
13 },
14 }
15 headers = {
16 "Content-Type": "application/json",
17 "X-Goog-Api-Key": API_KEY,
18 "X-Goog-FieldMask": FIELD_MASK, # Impostalo sempre!
19 }
20 r = httpx.post(URL, json=body, headers=headers, timeout=30)
21 r.raise_for_status()
22 return r.json()
Passo 5: Gestisci la Paginazione e Raccogli i Risultati
1def collect_all_results(query, lat, lng, radius=3000, min_rating=4.0):
2 results = []
3 next_page_token = None
4 while True:
5 data = text_search(query, lat, lng, radius, min_rating)
6 places = data.get('places', [])
7 results.extend(places)
8 next_page_token = data.get('nextPageToken')
9 if not next_page_token:
10 break
11 return results
Passo 6: Esporta i Dati con Pandas
1df = pd.DataFrame(collect_all_results("coffee shops in Brooklyn", 40.6782, -73.9442))
2df.to_csv("brooklyn_coffee_shops.csv", index=False)
Consigli pratici:
- Imposta sempre l’header
X-Goog-FieldMaskper controllare i costi. Se chiedi recensioni o foto, il prezzo per 1.000 richieste può salire da 5 a 25 dollari (). - Usa filtri lato server (come
minRating,includedType,locationBias) per non sprecare crediti su risultati irrilevanti. - Memorizza i valori
place_idper deduplicare e aggiornare i dati in futuro.
Approccio 2: Scraping dell’HTML di Google Maps (Per Uso Didattico o Occasionale)
Attenzione: Google Maps è una single-page app. Devi usare l’automazione del browser (Playwright o Selenium) e lo scraping dell’HTML può violare i termini di Google. Usalo per ricerche o test, non in produzione.
Passo 1: Installa Playwright e Avvia un Browser
1from playwright.sync_api import sync_playwright
2import time, re
3def scrape_maps(query, max_results=100):
4 with sync_playwright() as pw:
5 browser = pw.chromium.launch(headless=True)
6 ctx = browser.new_context(
7 user_agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
8 locale="en-US",
9 )
10 page = ctx.new_page()
11 page.goto("https://www.google.com/maps", timeout=60_000)
12 page.fill("#searchboxinput", query)
13 page.click('button[aria-label="Search"]')
14 page.wait_for_selector('div[role="feed"]')
15 feed = page.locator('div[role="feed"]')
16 prev = 0
17 while True:
18 feed.evaluate("el => el.scrollBy(0, el.scrollHeight)")
19 time.sleep(2)
20 count = page.locator('div[role="feed"] > div > div[jsaction]').count()
21 if count == prev or count >= max_results:
22 break
23 prev = count
24 if page.locator("text=You've reached the end of the list").count():
25 break
26 rows = []
27 cards = page.locator('div[role="feed"] > div > div[jsaction]')
28 for i in range(cards.count()):
29 c = cards.nth(i)
30 name = c.locator("div.fontHeadlineSmall").inner_text() if c.locator("div.fontHeadlineSmall").count() else ""
31 rating_el = c.locator('span[role="img"]').first
32 raw = rating_el.get_attribute("aria-label") if rating_el.count() else ""
33 m = re.search(r"([\d.]+)\s+stars?\s+([\d,]+)\s+Reviews", raw or "")
34 rating = float(m.group(1)) if m else None
35 reviews = int(m.group(2).replace(",", "")) if m else None
36 rows.append({"name": name, "rating": rating, "reviews": reviews})
37 browser.close()
38 return rows
Suggerimenti:
- Google randomizza le classi CSS ogni poche settimane, quindi questo codice potrebbe richiedere aggiornamenti regolari.
- Usa pause simili a quelle di un essere umano e non fare scraping troppo velocemente per ridurre il rischio di blocco.
- Non provare mai a bypassare CAPTCHA o il sistema SearchGuard di Google: potresti esporti a rischi legali.
Evitare lo Scraping alla Cieca: Come Mirare con Precisione ai Dati che Ti Servono
Estrarre tutto è solo un modo per perdere tempo e riempire i dataset di dati inutili. Ecco come puntare solo ai dati che contano:
- Genera liste URL mirate: usa i filtri di ricerca di Google Maps (categoria, località, valutazione, aperto ora) per restringere i risultati prima dello scraping.
- Usa la corrispondenza per frase: cerca tipi di attività o parole chiave precise (per esempio “vegan bakery in Austin”).
- Filtri geografici: specifica città, quartiere o persino coordinate e raggio per una precisione chirurgica.
- Filtraggio lato server (API): usa
minRating,includedTypeelocationBiasnel body della richiesta API. - Filtraggio lato client (Python): dopo lo scraping, usa pandas per filtrare le attività con rating superiore a 4.0, più di 50 recensioni o categorie specifiche.
Esempio: filtrare solo i ristoranti di Manhattan con rating sopra 4.0
1df = pd.DataFrame(results)
2filtered = df[(df['rating'] >= 4.0) & (df['types'].apply(lambda x: 'restaurant' in x))]
3filtered.to_csv("manhattan_top_restaurants.csv", index=False)
Usare le Librerie Python per Organizzare ed Esportare i Dati di Google Maps
Una volta estratti i dati, è il momento di pulirli, analizzarli ed esportarli per il tuo team.
Pulizia e Strutturazione dei Dati con Pandas
1import pandas as pd
2df = pd.read_json("brooklyn_restaurants.json")
3df = (
4 df.dropna(subset=["name", "address"])
5 .drop_duplicates(subset=["place_id"])
6 .assign(
7 name=lambda d: d["name"].str.strip(),
8 phone=lambda d: d["phone"].astype(str)
9 .str.replace(r"\D", "", regex=True)
10 .str.replace(r"^1?(\d{10})$", r"+1\1", regex=True),
11 rating=lambda d: pd.to_numeric(d["rating"], errors="coerce"),
12 user_ratings_total=lambda d: pd.to_numeric(
13 d["user_ratings_total"], errors="coerce"
14 ).fillna(0).astype("int32"),
15 )
16)
Analizzare e Riassumere i Dati
Esempio: valutazione media per quartiere
1by_neighborhood = (
2 df.groupby("neighborhood", as_index=False)
3 .agg(avg_rating=("rating", "mean"),
4 n_places=("place_id", "nunique"),
5 median_reviews=("user_ratings_total", "median"))
6 .sort_values("avg_rating", ascending=False)
7)
Esportare in Excel o CSV
1df.to_csv("brooklyn_top.csv", index=False)
2df.to_excel("brooklyn_top.xlsx", index=False, sheet_name="Top Rated")
Hai dataset molto grandi? Usa il formato Parquet per ottenere maggiore velocità ed efficienza nello spazio:
1df.to_parquet("brooklyn_top.parquet", compression="zstd")
Thunderbit: l’Alternativa AI a Python per Estrarre Dati da Google Maps
Se stai pensando: “Per una semplice lista di lead è davvero tanta configurazione”, non sei il solo. È proprio per questo che abbiamo creato — uno scraper web no-code potenziato dall’AI che rende l’estrazione di dati da Google Maps (e molto altro) facile come fare due clic.
Perché Thunderbit?
- Niente codice e nessuna API key: apri la , vai su Google Maps e clicca su “AI Suggest Fields”.
- Rilevamento dei campi con AI: l’intelligenza artificiale di Thunderbit legge la pagina e suggerisce le colonne giuste — nome, indirizzo, valutazione, telefono, sito web e altro.
- Scraping delle sottopagine: vuoi arricchire la tabella con dati dal sito di ogni attività? Thunderbit può visitare automaticamente ogni sottopagina e recuperare informazioni extra.
- Export in Excel, Google Sheets, Airtable o Notion: niente più contorsioni con pandas — basta cliccare “Export” e i dati sono pronti per il team.
- Scraping programmato: imposta job ricorrenti per monitorare i competitor o aggiornare automaticamente la tua lista lead.
- Manutenzione zero: l’AI di Thunderbit si adatta ai cambiamenti del sito, quindi non devi continuamente sistemare script rotti.

Thunderbit vs workflow Python:
| Passaggio | Scraper Python | Thunderbit |
|---|---|---|
| Installazione strumenti | 30–60 min (Python, pip, librerie) | 2 min (Chrome Extension) |
| Configurazione API key | 10–30 min (Cloud Console) | Non necessaria |
| Selezione campi | Codice manuale, field mask | AI Suggest Fields (1 clic) |
| Estrazione dati | Scrivi/esegui script, gestisci errori | Clicca “Scrape” |
| Export | pandas in CSV/Excel | Export in Excel/Sheets/Notion |
| Manutenzione | Aggiornamenti manuali per i cambiamenti del sito | AI si adatta automaticamente |
Bonus: Thunderbit è scelto da oltre , e il piano gratuito ti consente di estrarre fino a 6 pagine (o 10 con il boost di prova) senza costi.
Restare Compliant: Termini di Servizio di Google Maps ed Etica dello Scraping
Qui è dove molti tutorial Python diventano pericolosamente obsoleti. Ecco cosa devi sapere nel 2026:
- Google Maps Platform ToS §3.2.3 vieta in modo esplicito scraping, caching o esportazione dei dati al di fuori delle API ufficiali (). L’unica eccezione: le coordinate latitudine/longitudine possono essere memorizzate per un massimo di 30 giorni; i Place ID possono essere conservati indefinitamente.
- Chi usa le API è vincolato da contratto: se utilizzi una API key, accetti i termini di Google — anche se stai raccogliendo solo dati pubblici.
- Aggirare barriere tecniche (CAPTCHA, SearchGuard) può oggi configurare una possibile violazione DMCA §1201, con possibili conseguenze penali ().
- GDPR e leggi sulla privacy: se raccogli dati personali (email, numeri di telefono, nomi dei recensori) da Google Maps, devi avere una base giuridica adeguata e rispettare le richieste di cancellazione. Nel 2024 la CNIL francese ha multato KASPR di 200.000 euro per aver estratto contatti da LinkedIn ().
- Best practice:
- Usa la Places API come impostazione predefinita, quando possibile.
- Limita la frequenza delle richieste (≤10 QPS per API, 1–2 richieste/s per scraping HTML).
- Non bypassare mai CAPTCHA o blocchi tecnici.
- Non ridistribuire dati personali estratti.
- Rispetta richieste di opt-out e cancellazione.
- Controlla sempre le leggi locali — GDPR, CCPA e altre sono applicate in modo attivo.
In sintesi: se la conformità è un tema importante, affidati all’API e minimizza i dati raccolti. Per la maggior parte degli utenti business, uno strumento no-code come Thunderbit riduce l’esposizione al rischio (niente API key, niente redistribuzione).
Pianificare e Automatizzare lo Scraping di Google Maps con Python
Se devi mantenere i dati sempre aggiornati — per esempio per monitorare i competitor ogni settimana o aggiornare la lista lead ogni mese — l’automazione è la tua migliore alleata.
Pianificazione Semplice con schedule
1import schedule, time
2from my_scraper import run_job
3schedule.every().day.at("03:00").do(run_job, query="restaurants in Brooklyn")
4schedule.every(6).hours.do(run_job, query="coffee shops in Manhattan")
5while True:
6 schedule.run_pending()
7 time.sleep(30)
Pianificazione di Livello Produzione con APScheduler
1from apscheduler.schedulers.background import BackgroundScheduler
2from apscheduler.triggers.cron import CronTrigger
3sched = BackgroundScheduler(timezone="America/New_York")
4sched.add_job(
5 run_job,
6 CronTrigger(hour=3, minute=15, jitter=600), # 3:15 AM ± 10 min
7 kwargs={"query": "restaurants in Brooklyn"},
8 id="brooklyn_daily",
9 max_instances=1,
10 coalesce=True,
11 misfire_grace_time=3600,
12)
13sched.start()
Consigli per un’Automazione Sicura
- Aggiungi un po’ di jitter casuale alla pianificazione per evitare pattern prevedibili.
- Per lo scraping HTML, non superare mai 1–2 richieste al secondo.
- Per l’uso delle API, monitora le quote e imposta alert di fatturazione.
- Registra sempre gli errori e mantieni un file “dead-letter” per le richieste fallite.
Bonus Thunderbit: con Thunderbit puoi programmare scraping ricorrenti direttamente nell’interfaccia — niente codice, niente cron job, nessuna configurazione server.
Punti Chiave: Estrazione Dati da Google Maps Efficiente, Mirata e Conforme
Ricapitoliamo l’essenziale:
- Google Maps è la fonte n.1 per i dati di localizzazione delle attività, e alimenta tutto: dalla lead generation alla ricerca di mercato.
- Lo scraping con Python offre flessibilità e controllo, ma richiede configurazione, manutenzione e attenzione alla conformità — soprattutto mentre i sistemi anti-bot di Google e l’applicazione delle regole diventano sempre più severi.
- L’estrazione via API è la strada più sicura e scalabile per la maggior parte dei team. Usa sempre field mask e filtri lato server per controllare i costi.
- Lo scraping HTML è fragile e rischioso — usalo solo per ricerche occasionali e senza aggirare barriere tecniche.
- Punta ai dati giusti: usa matching per frase, filtri geografici e workflow con pandas per estrarre solo ciò che ti serve.
- Thunderbit è la via più rapida per chi non programma: AI, zero configurazione, export immediato e pianificazione integrata.
- La conformità conta: rispetta i termini di Google, le leggi sulla privacy e i limiti di frequenza per evitare problemi legali.
Per altri tutorial e consigli, visita il e il nostro .
FAQ
1. È legale estrarre dati da Google Maps con Python nel 2026?
Estrarre dati da Google Maps tramite l’API ufficiale è consentito entro i termini di Google, purché si rispettino le quote e non si ridistribuiscano dati soggetti a restrizioni. Lo scraping HTML di Google Maps è esplicitamente vietato dai termini di Google e comporta rischi legali, soprattutto se si aggirano barriere tecniche o si raccolgono dati personali senza consenso. Controlla sempre le leggi locali (GDPR, CCPA, ecc.) e segui le best practice di conformità.
2. Qual è la differenza tra usare l’API di Google Maps e fare web scraping dell’HTML?
L’API è stabile, autorizzata e progettata per l’estrazione dati, ma richiede una API key ed è soggetta a quote e costi. Lo scraping HTML usa l’automazione del browser per estrarre dati dalla pagina renderizzata, ma è fragile (il sito cambia spesso), può violare i termini ed è più rischioso sul piano legale. Per la maggior parte degli utilizzi business, l’API è la scelta consigliata.
3. Quanto costa estrarre dati da Google Maps usando Python nel 2026?
I prezzi della Places API di Google si applicano per 1.000 richieste e vanno da 5 dollari (Essentials) a 25 dollari (Enterprise+Atmosphere), in base ai campi richiesti. Esistono soglie mensili gratuite (10.000 per Essentials, 5.000 per Pro, 1.000 per Enterprise), ma su larga scala i costi possono crescere rapidamente. Usa sempre field mask e filtri lato server per controllare la spesa.
4. Come si confronta Thunderbit con gli scraper Google Maps basati su Python?
Thunderbit è uno scraper web no-code potenziato dall’AI che ti permette di estrarre dati da Google Maps (e molto altro) senza programmazione, API key o manutenzione. È ideale per i team sales e marketing che vogliono export rapidi e affidabili in Excel, Google Sheets, Airtable o Notion. Per chi ha esigenze tecniche e logiche personalizzate, Python offre più flessibilità ma richiede più configurazione e gestione della conformità.
5. Come posso automatizzare l’estrazione ricorrente di dati da Google Maps?
Con Python, usa librerie di scheduling come schedule o APScheduler per eseguire lo scraper a intervalli definiti (giornalieri, settimanali, ecc.). Aggiungi un jitter casuale per ridurre la rilevabilità e monitora la quota API. Con Thunderbit, puoi programmare scraping ricorrenti direttamente nell’interfaccia — senza codice né configurazione server.
Pronto a trasformare Google Maps nel tuo superpotere per sales e marketing? Che tu sia un appassionato di Python o voglia la soluzione no-code più rapida, gli strumenti giusti ci sono già nel 2026. Prova per uno scraping istantaneo e potenziato dall’AI — oppure rimboccati le maniche e lavora con l’API. In ogni caso, che le tue liste lead siano sempre fresche, le esportazioni pulite e le campagne piene di prospect locali ad alta conversione. Buono scraping!
Scopri di più
