Bulk SERP API

Bulk SERP API für die Erfassung von Google-Daten im großen Stil

Stellen Sie eine Million Google-Suchen in wenigen Minuten in die Warteschlange – Semscraper erledigt die Erfassung. Bis zu 1.000 Keywords pro API-Aufruf, asynchrone Verarbeitung, signierte Callbacks und kostenloser Abruf jedes Ergebnisses.

  • 1.000 Keywords pro Aufruf
  • Asynchron mit signierten Callbacks
  • Rund 30 € pro 100.000 SERPs
  • 1.000 kostenlose SERPs
  • Keine Kreditkarte

1 Million Google-Suchen in wenigen Minuten einreihen

Senden Sie bis zu 1.000 Keywords pro API-Aufruf und bis zu 500 Aufrufe pro Minute, ohne auf den Abschluss vorheriger Batches zu warten. Ihre Anfragen werden sofort in die Warteschlange gestellt und schrittweise abgearbeitet, sobald Kapazität frei wird. Die Einreichungskapazität ist nicht gleich dem Verarbeitungsdurchsatz: Die tatsächliche Bearbeitungsdauer hängt von der Auslastung der Warteschlange und der verfügbaren Kapazität ab, die wir mit steigender Nachfrage ausbauen.

1. Senden

Batches mit je 1.000 Keywords, so viele Aufrufe wie nötig. Jedes Keyword hat sein eigenes Land, seine Sprache, Stadt, sein Gerät und seine Tiefe.

2. Wir erfassen

Jede SERP wird in einem echten Browser gerendert. Jedes Konto hat seine eigene Warteschlange, die Konten werden reihum bedient, und eine Priorität von 1 bis 10 bestimmt die Reihenfolge Ihrer eigenen Anfragen.

3. Empfangen

Jedes Ergebnis wird an Ihre Callback-URL gesendet, sobald es fertig ist – oder Sie rufen die fertigen Ergebnisse jederzeit gebündelt ab.

Gebaut für Produktionsvolumen

Was ein Team, das täglich Zehntausende Suchen ausführt, wirklich braucht.

Signierte Callbacks

Jeder Callback enthält im Header X-Signature eine HMAC-SHA-256-Signatur seines Bodys, berechnet mit dem Schlüssel aus Ihrem Menü „API-Schlüssel“.

Zuverlässige Wiederherstellung, kostenloser Abruf

Fertige, noch nie abgerufene Ergebnisse bleiben verfügbar und lassen sich mit einem einzigen Aufruf auflisten. Der Abruf von Ergebnissen ist kostenlos und beliebig wiederholbar: Berechnet wird nur das Anlegen einer Suche.

Vollständige SERPs, bis zu 10 Seiten

Organische Ergebnisse mit Rang und Pixelposition, AI Overviews, Anzeigen, Local Pack und alle weiteren Blöcke, in JSON oder HTML. Die vollständige Liste finden Sie bei der Google Search API.

Was es im großen Maßstab kostet

Bezahlung pro SERP, ohne Abo. Ihr Guthaben verfällt nie.

SERPsSeite 1 (ca. 10 Ergebnisse)10 Seiten (ca. 100 Ergebnisse)
10.0003,00 €21,00 €
100.00030,00 €210,00 €
1.000.000300,00 €2.100,00 €

Standardpreis, vor dem Rabatt von 1 bis 10 % beim Aufladen. Liefert Google weniger Seiten als angefragt, werden nur die gefundenen Seiten berechnet. Detaillierte Preise.

Ein funktionierendes Beispiel, getestet

Python: eine Keyword-Liste einreihen, die Callbacks verifizieren und anschließend alles nachholen, was Ihr Server verpasst hat. Am 9. Oktober 2026 gegen die Live-API ausgeführt: Callbacks mit gültigen Signaturen empfangen, Nachhol-Schleife zweimal durchlaufen, beim zweiten Durchgang nichts mehr offen, und keine Kosten für den Abruf. Dieses Beispiel zielt auf Google.com auf Englisch; für Google Deutschland verwenden Sie location „de“ und language „de“.

1. bulk.py: alle Keywords einreihen
# 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")
2. callback_server.py: jeden Callback empfangen und verifizieren (Flask)
# 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
3. bulk.py, Fortsetzung: Verpasstes nachholen
# 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()

Gemessen an 958.176 SERPs

Unsere Studie zu AI Overviews hat insgesamt über 2,15 Millionen SERPs erfasst, Desktop und Mobil. In einer ihrer Kampagnen wurden am 12. September 2026 knapp eine Million französische Keywords eingereiht. Alle 958.176 SERPs wurden innerhalb von 4 Std. 23 Min. nach der ersten Anfrage erfasst und abgerufen, ohne einen einzigen Fehler. In der stärksten Stunde wurden 237.043 SERPs geliefert. Dies ist eine reale Erfassung auf unserem eigenen Konto, kein garantierter Durchsatz: Die Bearbeitungsdauer hängt von der Tiefe, der Zahl wartender Anfragen und der verfügbaren Kapazität ab.

958.176

einseitige SERPs erfasst und abgerufen, ohne einen einzigen Fehler.

4 Std. 23

von der ersten Anfrage bis zum letzten Ergebnis.

237.043

SERPs in der stärksten Stunde des Durchlaufs.

Was Sie erwarten können

ThemaSo funktioniert es
Eine SERP oder ein ganzer BatchEine einzelne SERP dauert im Median rund dreißig Sekunden, bei 10 Seiten etwa eine Minute, da sie in einem echten Browser gerendert wird. Viele Robots arbeiten parallel, sodass ein Batch schrittweise abgearbeitet wird und weit schneller fertig ist als die Summe seiner SERPs.
KapazitätUnsere Robot-Flotte wächst mit der Nachfrage: Steigen die Volumen, bauen wir Kapazität aus. Planen Sie wiederkehrend sehr große Volumen, sagen Sie uns vorab Bescheid – wir dimensionieren die Kapazität für Sie.
Zustellung der CallbacksJedes Ergebnis wird einmal gesendet. Antwortet Ihr Endpunkt nicht mit HTTP 200, bleibt das Ergebnis einfach als nicht abgerufen markiert, und die Nachhol-Schleife holt es ab.
Abruf per IDBis zu 100 IDs pro Aufruf. Für große Volumen setzen Sie auf Callbacks oder auf die Liste der fertigen, nicht abgerufenen Ergebnisse (bis zu 1.000 pro Aufruf).
EchtzeitAusgelegt auf Erfassung im großen Stil, nicht darauf, einem Chatbot im Moment zu antworten. Für KI-Datensätze und Agenten gibt es die SERP API für KI.
FAQ

Häufige Fragen

Wie viele Keywords kann ich auf einmal senden?
Bis zu 1.000 pro Aufruf und bis zu 500 Aufrufe pro Minute. Sie müssen nicht warten, bis ein Batch fertig ist, bevor Sie den nächsten senden: Alles wird sofort in die Warteschlange gestellt und schrittweise abgearbeitet.
Was passiert, wenn mein Callback-Endpunkt nicht erreichbar war?
Nichts geht verloren. Ein Callback, der kein HTTP 200 erhält, lässt das Ergebnis als nicht abgerufen stehen. Ein Aufruf von GET /v1/serp ohne IDs listet bis zu 1.000 fertige, nicht abgerufene Ergebnisse auf, die Sie anschließend per ID abrufen. Der Abruf wird nie berechnet.
Wie prüfe ich, ob ein Callback wirklich von Semscraper kommt?
Berechnen Sie einen HMAC SHA-256 des unveränderten Request-Bodys mit dem HMAC-Schlüssel aus Ihrem Menü „API-Schlüssel“ (er beginnt mit hmac_) und vergleichen Sie ihn per zeitkonstantem Vergleich mit dem Header X-Signature.
Kann ein Batch Länder, Geräte und Tiefen mischen?
Ja. Jedes Element des Batches hat eigenen Standort, eigene Sprache, Geolokalisierung, Gerät, Tiefe und Priorität. Eine Regel gilt: Ein Keyword darf kein Komma enthalten, da es sonst in zwei Suchen aufgeteilt wird.
Wie lange dauern 100.000 SERPs?
Eine Dauer garantieren wir nicht: Sie hängt von der Tiefe und der Auslastung der Warteschlange zum Zeitpunkt Ihrer Einreichung ab. Als Richtwert: Unser eigener Durchlauf mit 958.176 einseitigen SERPs war nach 4 Std. 23 Min. abgeschlossen. Unsere Infrastruktur skaliert mit der Nachfrage: Für wiederkehrend sehr große Volumen kontaktieren Sie uns vorab, und wir stellen die nötige Kapazität bereit.

Starten Sie mit Ihrer eigenen Keyword-Liste

1.000 kostenlose SERPs, keine Kreditkarte erforderlich.