Dieses Repository bietet zwei Ansätze zum Sammeln von Daten von Suchergebnisseiten (Search Engine Results Page, SERP):
- Einen kostenlosen Google-Scraper im kleinen Maßstab, geeignet für grundlegende Datenerfassung
- Eine API-Lösung auf Enterprise-Niveau für die großskalige Datenerfassung in Echtzeit von großen Suchmaschinen
- Free SERP Scraper
- Limitations
- Bright Data SERP API
- Query Parameters Overview
- Other Settings for SERP API
- Support & Resources
Der kostenlose Scraper ermöglicht das Sammeln von Google-SERP-Daten im kleinen Maßstab.
- Datei: Textdatei mit Suchbegriffen (erforderlich)
- Format: Ein Suchbegriff pro Zeile
Ändern Sie diese Parameter in der Python-Datei:
# free_serp_scraper/google_serp.py
HEADLESS = False
MAX_RETRIES = 2
REQUEST_DELAY = (1, 4)
with open("search_terms.txt", "r", encoding="utf-8") as file:
passGoogle implementiert mehrere Anti-Scraping-Maßnahmen:
- CAPTCHAs: Werden verwendet, um zwischen Menschen und Bots zu unterscheiden
- IP-Blocks: Temporäre oder permanente Sperren bei verdächtiger Aktivität
- Rate Limiting: Schnelle Erkennung und Blockierung nicht identifizierter Anfragen
- Geotargeting: Ergebnisse variieren je nach Standort, Sprache und Gerät
- Honeypot Traps: Versteckte Elemente zur Erkennung automatisierter Zugriffe
Bright Data's SERP API bietet eine robuste Lösung für eine zuverlässige SERP-Datenerfassung.
- Pay-per-successful-request-Modell
- Schnelle Antwortzeiten
- Standortspezifisches Targeting
- Unterstützung für mehrere Gerätetypen und Suchparameter
- Abdeckung großer Suchmaschinen (Google, Bing, DuckDuckGo, Yandex, Baidu, Yahoo, Naver)
- Integrierte Anti-Bot-Lösungen
- Ergebnisse in Echtzeit mit Genauigkeit auf Stadtebene
- Strukturierte Datenausgabe (JSON/HTML)
Hinweis: Die SERP API ist Teil der Bright Data’s Web Scraping Suite und umfasst vollständiges Proxy-Management sowie Entsperrungs- und Parsing-Funktionen.
- Voraussetzungen:
- Erstellen Sie ein Bright Data-Konto
- Besorgen Sie sich Ihren API key
- Einrichtung der SERP API: Folgen Sie der Schritt-für-Schritt-Anleitung, um die neue SERP API in Ihrem Bright Data-Konto einzurichten.
- Implementierungsmethoden:
- Direct API Access
- Native Proxy-Based Access
Die einfachste Methode zur Nutzung der API ist das Senden einer direkten Anfrage.
cURL Example
curl https://api.brightdata.com/request \
-H "Content-Type: application/json" \
-H "Authorization: Bearer API_TOKEN" \
-d '{
"zone": "ZONE_NAME",
"url": "https://www.google.com/search?q=ollama&brd_json=1",
"format": "raw"
}'Python Example
import requests
import json
url = "https://api.brightdata.com/request"
headers = {"Content-Type": "application/json", "Authorization": "Bearer API_TOKEN"}
payload = {
"zone": "ZONE_NAME",
"url": "https://www.google.com/search?q=ollama&brd_json=1",
"format": "raw",
}
response = requests.post(url, headers=headers, json=payload)
with open("serp_direct_api.json", "w") as file:
json.dump(response.json(), file, indent=4)
print("Response saved to 'serp_direct_api.json'.")👉 Sehen Sie die vollständige JSON-Ausgabe
Hinweis: Verwenden Sie brd_json=1 für geparstes JSON oder brd_json=html für geparstes JSON + vollständiges verschachteltes HTML.
Erfahren Sie mehr über das Parsen von Ergebnissen: SERP API Parsing Guide
Eine alternative Methode mit Proxy-Routing.
cURL Example
curl -i \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<CUSTOMER_ID>-zone-<ZONE_NAME>:<ZONE_PASSWORD> \
-k \
"https://www.google.com/search?q=ollama"Python Example
import requests
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
host = "brd.superproxy.io"
port = 33335
username = "brd-customer-<customer_id>-zone-<zone_name>"
password = "<zone_password>"
proxy_url = f"http://{username}:{password}@{host}:{port}"
proxies = {"http": proxy_url, "https": proxy_url}
url = "https://www.google.com/search?q=ollama"
response = requests.get(url, proxies=proxies, verify=False)
with open("serp_native_proxy.html", "w", encoding="utf-8") as file:
file.write(response.text)
print("Response saved to 'serp_native_proxy.html'.")👉 Sehen Sie die vollständige HTML-Ausgabe
SSL Certificate: Laden Sie für den Produktivbetrieb das SSL-Zertifikat von Bright Data. Mehr erfahren: SSL Certificate Guide
Bright Data SERP API ermöglicht es Ihnen, Anfragen für mehrere Suchmaschinen – einschließlich Google, Bing, Yandex und DuckDuckGo – anzupassen, indem Sie Query-Parameter für Lokalisierung, Paginierung, Geräte-Emulation und mehr verwenden. Diese Übersicht bietet einen groben Überblick über die Funktionen der API.
Eine vollständige Liste und detaillierte Erklärung aller Query-Parameter finden Sie in der Detailed Query Parameters Documentation.
SERP API unterstützt verschiedene Google-Dienste, einschließlich Search, Maps, Trends, Reviews, Lens, Hotels und Flights. Unten finden Sie wichtige Konfigurationsparameter für jeden Dienst:
Passen Sie Ihre Suchergebnisse mit Optionen für Lokalisierung, Suchtyp, Paginierung, Geolokalisierung und Geräte-Targeting an.
Localization
gl: Ländercode für den Suchstandort (z. B.gl=us).hl: Sprachcode für die Ergebnisse (z. B.hl=en).
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://www.google.com/search?q=pizza&gl=us&hl=en"Search Type:
Verwenden Sie den Parameter tbm, um den Suchtyp festzulegen:
- Images:
tbm=isch - Shopping:
tbm=shop - News:
tbm=nws - Videos:
tbm=vid
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://www.google.com/search?q=pizza&tbm=shop"Pagination:
start: Ergebnis-Offset (0 für die erste Seite, 20 für die zweite usw.).num: Anzahl der Ergebnisse pro Seite (Standard ist 20).
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://www.google.com/search?q=pizza&start=20&num=50"Geolocation:
uule: Kodierter Standort-String für geospezifische Ergebnisse
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://www.google.com/search?q=pizza&uule=w+CAIQICINVW5pdGVkK1N0YXRlcw"Device Targeting:
Verwenden Sie den Parameter brd_mobile:
0: Desktop (Standard)1: Zufälliges Mobile- Spezifische Werte:
ios(oderiphone),ipad,android,android_tablet
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://www.google.com/search?q=pizza&brd_mobile=1"Passen Sie Maps-Abfragen an, indem Sie Koordinaten angeben und nach Unterkunftsart filtern.
Coordinates:
- Format:
@latitude,longitude,zoom(z. B. Zoom von3zbis21z).
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://www.google.com/maps/search/restaurants/@47.30227,1.67458,14.00z"Accommodation Search:
brd_accomodation_type:hotels(Standard)vacation_rentals
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://www.google.com/maps/search/hotels+new+york/?brd_accomodation_type=vacation_rentals"Rufen Sie Trenddaten mit anpassbaren Zeiträumen und Widget-Optionen ab.
Required Parameters:
brd_json=1: Gibt geparste JSON-Ergebnisse zurück.brd_trends: Legt Widgets fest (z. B.timeseries,geo_map).
Time Range:
date: Definiert den Zeitraum (z. B.now 1-dfür den vergangenen Tag).
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://trends.google.com/trends/explore?q=pizza&date=now+1-d&brd_trends=timeseries,geo_map&brd_json=1"Rufen Sie Reviews mithilfe einer Feature-ID ab und sortieren Sie sie nach Bedarf.
Key Parameters:
fid: Feature-ID aus Suchergebnissen.sort: Sortierreihenfolge (z. B.newestFirst,ratingHigh).
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user "brd-customer-<id>-zone-<name>:<pass>" \
"https://www.google.com/reviews?fid=0x808fba02425dad8f&sort=newestFirst"Suchen Sie per Bild über eine URL oder einen Datei-Upload.
Image Search:
url: Die Bild-URL, nach der gesucht werden soll.brd_json=1: Gibt Ergebnisse als JSON zurück.
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://lens.google.com/uploadbyurl?url=https://example.com/image.jpg&brd_json=1"Passen Sie Hotelsuchen mit Buchungsdaten und Währungsoptionen an.
Booking Parameters:
brd_dates: Check-in- und Check-out-Daten (YYYY-MM-DD,YYYY-MM-DD).brd_currency: Währungscode (z. B.USD,EUR).
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://www.google.com/travel/hotels?q=hotels+new+york&brd_dates=2022-01-20,2022-02-05"Suchen Sie nach Flügen mit ähnlichen Lokalisierungsparametern.
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://www.google.com/travel/flights?q=flights+new+york&gl=us&hl=en"Konfigurieren Sie Bing-Abfragen mit Optionen für Lokalisierung, Geo-Targeting, Paginierung, Geräte- und Browser-Targeting sowie Ausgabeformate. Sehen Sie sich die dedicated Bing API an.
Localization
setLang: Sprache für die Oberfläche (z. B.setLang=en-US).
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://www.bing.com/search?q=pizza&setLang=en-US"Geo-Location
location: Suchursprung (z. B.location=New+York).cc: Ländercode (z. B.cc=us).mkt: Marktcode (z. B.mkt=en-US).
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://www.bing.com/search?q=pizza&location=New+York&cc=us&mkt=en-US"Pagination
count: Anzahl der Ergebnisse (z. B.count=50).first: Offset für die Paginierung (z. B.first=11für die zweite Seite).
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://www.bing.com/search?q=pizza&count=50&first=11"Filters
safesearch: Filter für Inhalte für Erwachsene (z. B.safesearch=off).
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://www.bing.com/search?q=pizza&safesearch=off"Device Targeting
brd_mobile: Legt den Gerätetyp fest (z. B.brd_mobile=1für mobile Geräte oderbrd_mobile=ios).
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://www.bing.com/search?q=pizza&brd_mobile=1"Browser Targeting
brd_browser: Legt den Browser fest (z. B.brd_browser=chrome).
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://www.bing.com/search?q=pizza&brd_browser=chrome"Parsing
brd_json: Gibt geparstes JSON zurück (z. B.brd_json=1).
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://www.bing.com/search?q=pizza&brd_json=1"Konfigurieren Sie Yandex-Abfragen kurz mit Parametern für Lokalisierung, Paginierung, Zeitraum sowie Geräte-/Browser-Targeting. Sehen Sie sich die dedicated Yandex API an.
Localization
lr: Legt die Region fest (z. B.lr=84für die USA).lang: Seitensprache (z. B.lang=en).
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://www.yandex.com/search/?text=pizza&lr=84&lang=en"Pagination
p: Ergebnis-Seitennummer (z. B.p=2für die zweite Seite).
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://www.yandex.com/search/?text=pizza&p=2"Time Range
within: Legt den Zeitraum fest (z. B.within=1).
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://www.yandex.com/search/?text=pizza&within=1"Device Targeting
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://www.yandex.com/search/?text=pizza&brd_mobile=1"Browser Targeting
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://www.yandex.com/search/?text=pizza&brd_browser=chrome"Ein kurzer Überblick über die Anpassung der DuckDuckGo-Suche mittels Lokalisierung, Safe Search, Zeitraum sowie Geräte-/Browser-Targeting. Sehen Sie sich die dedicated DuckDuckGo API an.
Localization
kl: Land und Sprache (z. B.kl=us-en).kad: Definiert die Sprache für Elemente der Benutzeroberfläche.
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://duckduckgo.com/?q=pizza&kl=us-en"Safe Search
kp: Aktiviert Safe Search (z. B.kp=1).
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://duckduckgo.com/?q=pizza&kp=1"Time Range
df: Legt den Zeitraum fest (z. B.df=d).
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://duckduckgo.com/?q=pizza&df=d"Device Targeting
brd_mobile: Für Mobile-Geräte-Emulation.
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://duckduckgo.com/?q=pizza&brd_mobile=1"Browser Targeting
brd_browser: Zum Festlegen eines Browsers (z. B.chrome).
curl \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<customer-id>-zone-<zone-name>:<zone-password> \
"https://duckduckgo.com/?q=pizza&brd_browser=chrome"- Sync (Standard): Sie erhalten sofort eine Antwort in Echtzeit.
- Async: Rufen Sie Ergebnisse später ab (ideal für hohe Anfragevolumina).
Mehr erfahren: How Async Works
Senden Sie parallele Abfragen in einem API-Aufruf und teilen Sie dabei dieselbe IP-Adresse und Sitzung über den Parameter multi.
multi:[
{"keyword":"shoes","num":50},
{"keyword":"shoes","num":200}
]Mehr erfahren: Multiple Queries Guide
- Documentation: SERP API Docs
- Query Parameters Documentation: Detailed Query Parameters Docs
- Other Guides: Web Unlocker API, Google Maps, Google News
- Interesting Read: Best SERP APIs, Build a RAG Chatbot with SERP API, Scrape Google Search with Python
- Technical Support: Contact Us


