Bulk SERP API :
Mettez un million de recherches Google en file d'attente en quelques minutes, Semscraper se charge de la collecte. Jusqu'à 1 000 mots-clés par appel, traitement asynchrone, callbacks signés et récupération gratuite de chaque résultat.
- 1 000 mots-clés par appel
- Asynchrone, avec callbacks signés
- Environ 30 € les 100 000 SERP
- 1 000 SERP gratuites
- Pas de carte de crédit
1 million de recherches Google en file d'attente
Envoyez jusqu'à 1 000 mots-clés par appel, à raison de 500 appels par minute au maximum, sans attendre la fin des lots précédents. Vos requêtes sont mises en file d'attente immédiatement, puis traitées au fil de l'eau, à mesure que la capacité se libère. La capacité d'envoi n'est pas le débit de traitement : les délais réels dépendent de la charge de la file et de la capacité disponible, que nous augmentons au rythme de la demande.
1. Vous envoyez
Des lots de 1 000 mots-clés, autant d'appels que nécessaire. Chaque recherche peut avoir ses propres paramètres : pays, langue, ville, appareil et profondeur.
2. Nous collectons
Chaque SERP est rendue dans un vrai navigateur. Chaque compte a sa propre file d'attente, les comptes sont servis à tour de rôle, et une priorité de 1 à 10 ordonne vos propres requêtes.
3. Vous recevez
Chaque résultat est envoyé sur votre URL de callback dès qu'il est prêt, ou vous récupérez les résultats terminés par lots, quand vous le souhaitez.
Conçue pour
Ce dont une équipe qui lance des dizaines de milliers de recherches par jour a réellement besoin.
Callbacks signés
Chaque callback porte dans l'en-tête X-Signature une signature HMAC SHA-256 de son corps, calculée avec la clé affichée dans votre menu Clés API.
Rattrapage fiable, récupération gratuite
Les résultats traités mais non récupérés restent disponibles : vous pouvez en lister jusqu'à 1 000 par appel. La récupération est gratuite et peut être répétée : seule la création d'une recherche est facturée.
SERP complètes, jusqu'à 10 pages
Résultats naturels avec rang et position pixel, AI Overviews, annonces, pack local et tous les autres blocs, en JSON ou en HTML. La liste complète figure sur la page API Google Search.
Ce que ça coûte
Facturation à la SERP, sans abonnement. Votre solde n'expire jamais.
| SERP | Page 1 (environ 10 résultats) | 10 pages (environ 100 résultats) |
|---|---|---|
| 10 000 | 3,00 € | 21,00 € |
| 100 000 | 30,00 € | 210,00 € |
| 1 000 000 | 300,00 € | 2 100,00 € |
Tarif standard, avant remise de 1 à 10 % selon le montant rechargé. Si Google renvoie moins de pages que demandé, seules les pages trouvées sont facturées. Tarifs détaillés.
Un exemple complet,
En Python : mettre une liste de mots-clés en file d'attente, vérifier les callbacks, puis rattraper ce que votre serveur aurait manqué. Exécuté sur l'API en production le 9 octobre 2026 : callbacks reçus avec des signatures valides, boucle de rattrapage lancée deux fois sans plus rien à récupérer au second passage, et aucun frais supplémentaire pour la récupération. Cet exemple cible Google.com en anglais : pour Google France, utilisez location "fr" et language "fr".
# 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()
Mesuré sur
Notre étude sur les AI Overviews a collecté au total plus de 2,15 millions de SERP, sur desktop et mobile. L'une de ses campagnes a mis en file d'attente près d'un million de mots-clés français le 12 septembre 2026. Les 958 176 SERP ont toutes été collectées et récupérées en 4 h 23 après la première requête, sans aucune erreur. L'heure la plus chargée en a livré 237 043. Il s'agit d'une collecte réelle sur notre propre compte, pas d'un débit garanti : le délai dépend de la profondeur, du nombre de requêtes en attente et de la capacité disponible.
958 176
SERP d'une page collectées et récupérées, sans aucune erreur.
4 h 23
entre la première requête et le dernier résultat.
237 043
SERP durant l'heure la plus chargée de la collecte.
À quoi
| Sujet | Fonctionnement |
|---|---|
| Une SERP ou un lot entier | Une SERP prend en médiane une trentaine de secondes, environ une minute pour 10 pages, car elle est rendue dans un vrai navigateur. De nombreux robots travaillent en parallèle : un lot est donc traité au fil de l'eau et se termine bien plus vite que la somme de ses SERP. |
| Capacité | Notre flotte de robots grandit avec la demande : nous ajoutons de la capacité à mesure que les volumes augmentent. Si vous prévoyez de très gros volumes récurrents, prévenez-nous à l'avance et nous la dimensionnerons pour vous. |
| Envoi des callbacks | Chaque résultat est envoyé une seule fois. Si votre endpoint ne répond pas HTTP 200, le résultat reste simplement non récupéré et la boucle de rattrapage s'en charge. |
| Récupération par identifiant | Jusqu'à 100 identifiants par appel. Pour les gros volumes, appuyez-vous sur les callbacks ou sur la liste des résultats terminés non récupérés (jusqu'à 1 000 par appel). |
| Temps réel | Conçue pour la collecte à grande échelle, pas pour répondre à un chatbot dans l'instant. Pour les jeux de données et les agents IA, voyez l'API SERP pour l'IA. |
Questions fréquentes
Combien de mots-clés puis-je envoyer à la fois ?
Que se passe-t-il si mon URL de callback est indisponible ?
Comment vérifier qu'un callback provient bien de Semscraper ?
Un même lot peut-il mélanger pays, appareils et profondeurs ?
Combien de temps faut-il pour 100 000 SERP ?
Pour aller plus loin
Regrouper ses mots-clés par similarité de SERP
Deux mots-clés qui affichent les mêmes pages dans Google répondent à la même intention : ils doivent être ciblés par une seule page. Voici la méthode, les bons seuils et un script prêt à l'emploi.
Lire le guide →AI Overviews en France : une SERP sur deux, et une sur deux arrive en retard
Nous avons collecté plus de 2 millions de SERP Google françaises, un million de mots-clés en desktop et les mêmes en mobile, pour mesurer la place réelle des AI Overviews.
Lire le guide →Comment scraper Google en 2026
Récupérer les résultats de Google à grande échelle n'a jamais été aussi exigeant : 100 résultats par page supprimés, AI Overviews chargées après coup, SERP qui changent selon la ville. Voici les options et les pièges.
Lire le guide →Commencez avec votre propre liste de mots-clés
1 000 SERP offertes, sans carte bancaire.