Bulk SERP API per
Metti in coda un milione di ricerche Google in pochi minuti e lascia che sia Semscraper a raccoglierle. Fino a 1.000 parole chiave per chiamata API, elaborazione asincrona, callback firmate e recupero gratuito di ogni risultato.
- 1.000 parole chiave per chiamata
- Asincrona con callback firmate
- Circa 30 € ogni 100.000 SERP
- 1.000 SERP gratuite
- Nessuna carta di credito
Metti in coda 1 milione di ricerche Google
Invia fino a 1.000 parole chiave per chiamata API, fino a 500 chiamate al minuto, senza aspettare che i batch precedenti siano completati. Le tue richieste entrano subito in coda e vengono elaborate man mano che si libera capacità. La capacità di invio non coincide con il throughput di elaborazione: i tempi effettivi di completamento dipendono dal carico della coda e dalla capacità disponibile, che ampliamo con la crescita della domanda.
1. Invii
Batch da 1.000 parole chiave, con tutte le chiamate che ti servono. Ogni parola chiave ha il suo paese, la sua lingua, la sua città, il suo dispositivo e la sua profondità.
2. Noi raccogliamo
Ogni SERP viene renderizzata in un vero browser. Ogni account ha la propria coda, gli account vengono serviti a turno e una priorità da 1 a 10 stabilisce l'ordine delle tue richieste.
3. Ricevi
Ogni risultato viene inviato al tuo URL di callback appena è pronto, oppure recuperi i risultati completati a blocchi, quando vuoi.
Pensata per
Quello che serve davvero a un team che esegue decine di migliaia di ricerche al giorno.
Callback firmate
Ogni callback contiene nell'header X-Signature una firma HMAC SHA-256 del suo body, calcolata con la chiave che trovi nel menu delle chiavi API.
Recupero affidabile e gratuito
I risultati completati e mai recuperati restano disponibili e puoi elencarli con una sola chiamata. Recuperare i risultati è gratuito e ripetibile: viene addebitata solo la creazione di una ricerca.
SERP complete, fino a 10 pagine
Risultati organici con posizione e posizione in pixel, AI Overviews, annunci, local pack e tutti gli altri blocchi, in JSON o HTML. Trovi l'elenco completo nella pagina API Google Search.
Quanto costa
Paghi a SERP, senza abbonamento. Il tuo credito non scade mai.
| SERP | Pagina 1 (circa 10 risultati) | 10 pagine (circa 100 risultati) |
|---|---|---|
| 10.000 | 3,00 € | 21,00 € |
| 100.000 | 30,00 € | 210,00 € |
| 1.000.000 | 300,00 € | 2.100,00 € |
Tariffa standard, prima dello sconto dall'1 al 10% sulle ricariche. Se Google restituisce meno pagine di quelle richieste, paghi solo le pagine trovate. Prezzi dettagliati.
Un esempio funzionante,
Python: metti in coda una lista di parole chiave, verifica le callback e recupera tutto ciò che il tuo server si è perso. Eseguito sull'API in produzione il 9 ottobre 2026: callback ricevute con firme valide, ciclo di recupero eseguito due volte senza più nulla da recuperare al secondo passaggio, e nessun addebito per il recupero. Questo esempio punta a Google.com in inglese: per Google Italia usa location "it" e language "it".
# bulk.py - python bulk.py queue keywords.txt then later python bulk.py catch-up
import json, sys, time
import requests
API = "https://api.semscraper.com/v1/serp"
HEADERS = {"Authorization": "Bearer API_KEY"}
CALLBACK = "https://your-server.com/serp-callback" # or None: catch-up only
def save(serp, path="serps.jsonl"):
with open(path, "a", encoding="utf-8") as f:
f.write(json.dumps(serp, ensure_ascii=False) + "\n")
def queue(keywords):
for i in range(0, len(keywords), 1000): # 1,000 keywords per call
batch = [{
"search_engine": "google_search",
"keyword": kw, # a keyword must not contain a comma
"device": "desktop",
"location": "en",
"language": "en",
"depth": 1,
**({"callback_url": CALLBACK} if CALLBACK else {}),
} for kw in keywords[i:i + 1000]]
for attempt in range(6):
r = requests.post(API, json=batch, headers=HEADERS, timeout=60)
if r.status_code != 429: # 429: over 500 calls/minute, nothing was queued
break
time.sleep(10 * (attempt + 1))
r.raise_for_status()
print(r.json()["count"], "keywords queued")
# callback_server.py - flask --app callback_server run
import hashlib, hmac, json
from flask import Flask, request
SECRET = b"hmac_..." # HMAC key from your API keys menu
app = Flask(__name__)
def save(serp, path="serps.jsonl"):
with open(path, "a", encoding="utf-8") as f:
f.write(json.dumps(serp, ensure_ascii=False) + "\n")
@app.post("/serp-callback")
def serp_callback():
raw = request.get_data()
expected = hmac.new(SECRET, raw, hashlib.sha256).hexdigest()
if not hmac.compare_digest(expected, request.headers.get("X-Signature", "")):
return "Invalid signature", 401
for serp in json.loads(raw): # a list holding the finished SERP
save(serp)
return {"status": "ok"} # anything but 200 leaves it unfetched
# bulk.py, continued: finished results that were never fetched
def catch_up():
while True:
r = requests.get(API, headers=HEADERS, timeout=60) # up to 1,000 per call
r.raise_for_status()
ids = [p["id"] for p in r.json().get("data", [])]
if not ids:
break
for i in range(0, len(ids), 100):
r = requests.get(API, headers=HEADERS, timeout=60,
params={"ids": ",".join(ids[i:i + 100]), "output": "json"})
r.raise_for_status()
for serp in r.json()["data"]:
save(serp) # fetching marks it as fetched, and is never billed
if __name__ == "__main__":
if sys.argv[1] == "queue":
queue(open(sys.argv[2], encoding="utf-8").read().splitlines())
else:
catch_up()
Misurata su
Il nostro studio sulle AI Overviews ha raccolto in totale oltre 2,15 milioni di SERP, desktop e mobile. Una delle sue campagne ha messo in coda quasi un milione di parole chiave francesi il 12 settembre 2026. Tutte le 958.176 SERP sono state raccolte e recuperate entro 4 h 23 min dalla prima richiesta, senza alcun errore. L'ora di picco ha prodotto 237.043 SERP. Si tratta di una raccolta reale sul nostro account, non di un throughput garantito: il tempo di completamento dipende dalla profondità, dal numero di richieste in attesa e dalla capacità disponibile.
958.176
SERP di una pagina raccolte e recuperate, senza alcun errore.
4 h 23 min
dalla prima richiesta all'ultimo risultato.
237.043
SERP nell'ora di picco della raccolta.
Cosa
| Argomento | Come funziona |
|---|---|
| Una SERP o un intero batch | Una singola SERP richiede un tempo mediano di circa trenta secondi, circa un minuto per 10 pagine, perché viene renderizzata in un vero browser. Molti robot lavorano in parallelo, quindi un batch viene elaborato progressivamente e termina molto prima della somma delle sue SERP. |
| Capacità | La nostra flotta di robot cresce con la domanda: aggiungiamo capacità man mano che i volumi aumentano. Se prevedi volumi molto elevati e ricorrenti, avvisaci in anticipo e la dimensioneremo per te. |
| Invio delle callback | Ogni risultato viene inviato una sola volta. Se il tuo endpoint non risponde HTTP 200, il risultato resta semplicemente da recuperare e il ciclo di recupero lo prende in carico. |
| Recupero per ID | Fino a 100 ID per chiamata. Per grandi volumi, affidati alle callback o all'elenco dei risultati completati e non ancora recuperati (fino a 1.000 per chiamata). |
| Tempo reale | Pensata per la raccolta su larga scala, non per rispondere a un chatbot all'istante. Per dataset e agenti AI, consulta la SERP API per l'AI. |
Domande frequenti
Quante parole chiave posso inviare in una volta?
Cosa succede se il mio endpoint di callback era irraggiungibile?
Come verifico che una callback provenga da Semscraper?
Un batch può mescolare paesi, dispositivi e profondità?
Quanto tempo servirà per 100.000 SERP?
Per approfondire
Clustering delle parole chiave per somiglianza delle SERP
Due parole chiave che mostrano le stesse pagine su Google rispondono allo stesso intento: una sola pagina dovrebbe puntare su entrambe. Ecco il metodo, le soglie giuste e uno script pronto all’uso.
Leggi la guida →AI Overviews in Francia: una SERP su due, e una su due arriva in ritardo
Abbiamo raccolto più di 2 milioni di SERP di Google in francese, un milione di parole chiave su desktop e le stesse su mobile, per misurare il peso reale delle AI Overviews.
Leggi la guida →Come fare scraping di Google nel 2026
Raccogliere i risultati di Google su larga scala non è mai stato così impegnativo: i 100 risultati per pagina non esistono più, le AI Overviews si caricano in ritardo e le SERP cambiano da una città all’altra. Ecco le opzioni e le insidie.
Leggi la guida →Parti dalla tua lista di parole chiave
1.000 SERP gratuite, nessuna carta di credito richiesta.