- Tre opzioni: a mano, uno scraper sviluppato internamente (proxy, captcha, un parser da mantenere) oppure un’API SERP.
- Quattro insidie nel 2026: num=100 non funziona più, le AI Overviews asincrone, le SERP che cambiano per città e per dispositivo.
- Con Semscraper: 0,30 € ogni 1.000 parole chiave per la pagina 1, 2,10 € per una top 100, senza abbonamento.
Cosa significa “fare scraping di Google”
Fare scraping di Google significa raccogliere in automatico la pagina dei risultati di una ricerca (la SERP) per estrarne i dati: risultati organici, annunci, local pack, domande correlate, AI Overviews e la loro posizione. Gli usi sono noti: monitoraggio del posizionamento SEO, analisi dei concorrenti, ricerche di mercato, clustering delle parole chiave per somiglianza delle SERP e misurazione della visibilità nelle risposte generate dall’AI.
Tre modi per farlo
1. A mano o con un’estensione del browser
Va bene per qualche decina di parole chiave. Oltre diventa troppo lento, e la tua cronologia, la tua posizione e il tuo account Google falsano i risultati.
2. Uno scraper interno
Uno script che interroga Google direttamente. Gratuito sulla carta, ma in pratica ti servono:
- dei proxy, meglio se residenziali, e la loro rotazione, perché Google blocca in fretta gli indirizzi che lo interrogano in massa;
- la gestione dei captcha;
- un browser headless per renderizzare la pagina, altrimenti parte del contenuto manca (vedi sotto);
- un parser, da aggiornare ogni volta che Google cambia il layout;
- la gestione di paese, lingua, città e dispositivo.
Il costo reale sono i proxy, i server e soprattutto il tempo di manutenzione.
3. Un’API SERP
Un servizio che fa tutto questo al posto tuo: invii una parola chiave e i suoi parametri, ricevi la SERP strutturata in JSON. La maggior parte degli strumenti SEO sceglie questa strada, preferendo pagare a richiesta piuttosto che gestire un’infrastruttura di scraping. Per scegliere un fornitore, leggi i nostri confronti con SerpApi e DataForSEO.
Cosa contiene una SERP nel 2026
Una pagina di risultati non è più un elenco di dieci link blu. A seconda della query, Google aggiunge:
- i risultati organici;
- gli annunci Google Ads in alto e in fondo alla pagina, e gli annunci Shopping;
- il local pack, con valutazione, numero di recensioni e fascia di prezzo di ogni attività;
- le “Altre domande” (People Also Ask), il featured snippet e il Knowledge Graph;
- le notizie principali, i video e le immagini;
- l’AI Overview, con i brand citati nel testo, le sue citazioni e il pannello delle fonti.
Per misurare ciò che è davvero visibile, bisogna estrarre ogni blocco separatamente, con la posizione di ciascuno dei suoi elementi. L’API di Semscraper restituisce ogni blocco con il suo tipo: organic, paid_top, local_pack, people_also_ask, ai_overview_citation…
Le quattro insidie del 2026
Il parametro num=100 non funziona più
Da settembre 2025 Google non mostra più 100 risultati su una sola pagina. Per ottenere una top 100 bisogna scorrere le pagine una a una. Spieghiamo il metodo e il suo costo in Ottenere la top 100 di Google senza num=100.
Le AI Overviews arrivano dopo il caricamento della pagina
Nel nostro studio su un milione di parole chiave, il 48% delle AI Overviews si carica in modo asincrono: assenti dall’HTML iniziale, compaiono solo quando la pagina è visualizzata. Uno scraper che non renderizza la pagina le perde. I dettagli nel nostro studio sulle AI Overviews in Francia.
La SERP dipende dalla città
Una ricerca locale, “idraulico” o “ristorante”, non restituisce gli stessi risultati in due città diverse. Senza geolocalizzazione misuri una SERP che nessuno vede. Leggi SERP geolocalizzate.
Desktop e mobile divergono
Una parola chiave su otto si comporta in modo diverso sui due dispositivi per le AI Overviews, e l’ordine dei blocchi cambia. Raccogli il dispositivo che conta per il tuo caso d’uso, oppure entrambi.
Esempio con l’API di Semscraper
Una richiesta POST crea la raccolta, con fino a 1.000 parole chiave per chiamata:
curl -X POST 'https://api.semscraper.com/v1/serp' \
-H 'Authorization: Bearer API_KEY' \
-H 'Content-Type: application/json' \
-d '[{"search_engine": "google_search", "keyword": "ristorante", "device": "desktop", "location": "it", "language": "it", "depth": 1, "geolocation": "Milan, Lombardy, Italy"}]'I risultati si recuperano poi tramite ID, in JSON o HTML, oppure arrivano direttamente al tuo URL di callback. Ogni risultato riporta la sua posizione nel blocco, la sua posizione nella pagina, la sua pagina di Google e la sua posizione in pixel. L’elenco completo di blocchi e parametri è nella pagina API Google Search.
Gli operatori di ricerca funzionano
Gli operatori di Google funzionano così come sono all’interno della parola chiave: site:, inurl:, intitle:, filetype:, le virgolette o l’esclusione di un termine con il segno meno. Utile per elencare le pagine indicizzate di un sito o monitorare un brand su un determinato dominio. Una query con un operatore costa come qualsiasi altra. Un solo vincolo: niente virgole nella parola chiave, perché l’API le usa come separatore.
Esempio completo in Python
Questo script invia tre parole chiave, attende i risultati, poi stampa per ciascuna se c’è un’AI Overview e i primi tre risultati organici con la loro posizione in pixel:
import time
import requests
API = "https://api.semscraper.com/v1/serp"
HEADERS = {"Authorization": "Bearer API_KEY"}
keywords = ["ristorante milano", "idraulico roma", "avvocato divorzista torino"]
# 1. crea le raccolte, fino a 1.000 parole chiave per chiamata
items = [{"search_engine": "google_search", "keyword": k, "device": "desktop",
"location": "it", "language": "it", "depth": 1} for k in keywords]
created = requests.post(API, json=items, headers=HEADERS).json()
ids = [row["id"] for row in created["data"]]
# 2. recupera i risultati (al massimo 500 ID per chiamata), per 10 minuti al massimo
done, attempts = {}, 0
while len(done) != len(ids) and attempts < 60:
attempts += 1
time.sleep(10)
res = requests.get(API, params={"ids": ",".join(ids), "output": "json"}, headers=HEADERS).json()
for row in res["data"]:
if row["status"] == "done":
done[row["id"]] = row
# 3. leggi ogni SERP: AI Overview, poi i primi 3 risultati organici
for row in done.values():
aio = row["serp_info"].get("ai_overview")
print(row["keyword"], "| AI Overview:", aio["type"] if aio else "-")
for block in row["results"]:
if block["type"] == "organic":
for item in block["items"][:3]:
print(" ", item["rank_type"], item["pixel"], "px", item["url"])Per grandi volumi, sostituisci il ciclo di polling con un URL di callback (callback_url): l’API ti invia ogni risultato non appena è pronto.
Volumi e tempi
Una SERP di una pagina richiede in mediana una ventina di secondi di raccolta, una top 100 una cinquantina. Tempo mediano di raccolta misurato su 12 milioni di SERP (5,3 milioni a una pagina e 260.000 a 10 pagine) dal 12 settembre al 10 ottobre 2026; a questo si aggiunge l'attesa nella coda del tuo account, che dipende dal volume inviato. Ogni chiamata può contenere fino a 1.000 parole chiave. I robot servono gli account a turno: il grosso batch di un altro cliente non rallenta il tuo, e il tuo scorre nella tua coda.
Scegliere un’API SERP: la checklist
- Paginazione reale, con la pagina di ogni risultato, per una top 100 affidabile.
- Rendering in un browser, per acquisire le AI Overviews che si caricano in ritardo.
- Geolocalizzazione a livello di città, non solo di paese.
- Posizione in pixel, per misurare la visibilità reale di un risultato.
- Addebito delle sole pagine trovate, senza abbonamento obbligatorio.
- L’HTML della pagina oltre al JSON, per verificare un risultato sorprendente.
- Una coda equa tra i clienti.
Quanto costa
Con Semscraper la prima pagina costa 0,30 € ogni 1.000 parole chiave e ogni pagina in più 0,20 €, quindi 2,10 € ogni 1.000 parole chiave su 10 pagine. Paghi solo le pagine trovate, senza abbonamento. I dettagli nella pagina dei prezzi.
E la legalità?
Le pagine dei risultati sono pubbliche, ma raccoglierle in automatico resta soggetto ai termini di servizio di Google e, se tratti dati personali, alla normativa sulla protezione dei dati come il GDPR. Questa guida non costituisce una consulenza legale: in caso di dubbio, fai valutare il tuo caso d’uso.