Skip to content

Zwei Methoden zur Erfassung echter Google SERP-Daten—ein kostenloser Scraper für die grundlegende Nutzung und die API der Enterprise-Klasse von Bright Data für Anforderungen mit hohem Volumen.

Notifications You must be signed in to change notification settings

bright-data-de/google-search-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Google Search API

Promo

⚠️ Seit Januar 2025 fordert Google JavaScript, um Suchergebnisse zu rendern. Dieses Update zielt darauf ab, traditionelle Bots, Scraper und SEO-Tools zu blockieren, die auf nicht JavaScript-basierten Methoden beruhen. Infolgedessen müssen Unternehmen, die Google Search für Marktforschung oder Ranking-Analysen nutzen, Tools einsetzen, die JavaScript-Rendering unterstützen.

Dieses Repository bietet zwei Ansätze zum Sammeln von Google SERP-Daten:

  1. Ein kostenloser Scraper für kleine Umfänge, geeignet für grundlegende Datenerfassung
  2. Eine API-Lösung auf Enterprise-Niveau, entwickelt für hohe Volumina und robuste Datenanforderungen

Table of Contents

Free Scraper

Ein leichtgewichtiger Google-Scraper für grundlegende Anforderungen an die Datenerfassung.

google-search-result

Input Parameters

  • File: Liste der Suchbegriffe, die in Google abgefragt werden sollen (erforderlich)
  • Pages: Anzahl der Google-Seiten, aus denen Daten gescrapt werden sollen

Implementation

Ändern Sie diese Parameter in der Python file:

HEADLESS = False        
MAX_RETRIES = 2         
REQUEST_DELAY = (1, 4) 

SEARCH_TERMS = [
    "nike shoes",
    "macbook pro"
]
PAGES_PER_TERM = 3      

💡 Tipp: Setzen Sie HEADLESS = False, um Googles Erkennungsmechanismen besser zu vermeiden.

Sample Output

google-serp-data

Limitations

Google implementiert mehrere Anti-Scraping-Maßnahmen:

  1. CAPTCHAs: Werden verwendet, um zwischen Menschen und Bots zu unterscheiden
  2. IP Blocks: Temporäre oder permanente Sperren bei verdächtiger Aktivität
  3. Rate Limiting: Schnelle Anfragen können Sperren auslösen
  4. Geotargeting: Ergebnisse variieren je nach Standort, Sprache und Gerät
  5. Honeypot Traps: Versteckte Elemente zur Erkennung automatisierten Zugriffs

Nach mehreren Anfragen werden Sie wahrscheinlich auf Googles CAPTCHA-Abfrage stoßen:

google-captcha

Bright Data Google Search API

Die Google Search API von Bright Data liefert Suchergebnisse von Google von echten Nutzern mithilfe anpassbarer Suchparameter. Basierend auf derselben fortschrittlichen Technologie wie die SERP API bietet sie hohe Erfolgsraten und robuste Performance für das Scraping öffentlich verfügbarer Daten im großen Maßstab.

Key Features

  • Hohe Erfolgsraten, selbst bei großen Volumina
  • Sie zahlen nur für erfolgreiche Anfragen
  • Schnelle Antwortzeit – unter 5 Sekunden
  • Geolokalisierungs-Targeting – Extrahieren Sie Daten aus jedem Land, jeder Stadt oder von jedem Gerät
  • Ausgabeformate – Datenabruf als JSON oder rohes HTML
  • Mehrere Suchtypen – News, Bilder, Shopping, Jobs usw.
  • Asynchrone Anfragen – Ergebnisse stapelweise abrufen
  • Für Skalierung gebaut – Bewältigt hohen Traffic und Spitzenlasten

📌 Testen Sie es kostenlos in unserem SERP Playground:

bright-data-serp-api-playground

Getting Started

  1. Prerequisites:
  2. Setup: Folgen Sie der step-by-step guide, um die SERP API in Ihr Bright Data-Konto zu integrieren
  3. Implementation Methods:
    • Direct API Access
    • Native Proxy-Based Access

Direct API Access

Die einfachste Methode ist, eine direkte Anfrage an die API zu senden.

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 sich die full JSON output an

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 Suchergebnissen in unserem SERP API Parsing Guide.

Native Proxy-Based Access

Alternativ können Sie unsere Proxy-Routing-Methode verwenden.

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 sich die full HTML output an

Für die Produktion laden Sie das SSL-Zertifikat von Bright Data (siehe unseren SSL Certificate Guide).

Advanced Features

Localization

bright-data-google-search-api-screenshot-localization

  1. gl (Country Code)

    • Zweistelliger Ländercode, der das Land für die Suchergebnisse bestimmt
    • Simuliert eine Suche, als ob sie aus einem bestimmten Land durchgeführt wurde

    Beispiel: Suche nach Restaurants in Frankreich

    curl --proxy brd.superproxy.io:33335 \
     --proxy-user "brd-customer-<customer-id>-zone-<zone-name>:<zone-password>" \
     "https://www.google.com/search?q=best+restaurants+in+paris&gl=fr"
  2. hl (Language Code)

    • Zweistelliger Sprachcode, der die Sprache des Seiteninhalts festlegt
    • Beeinflusst die Sprache der Benutzeroberfläche und der Suchergebnisse

    Beispiel: Suche nach Sushi-Restaurants in Japan (Ergebnisse auf Japanisch)

    curl --proxy brd.superproxy.io:33335 \
     --proxy-user "brd-customer-<customer-id>-zone-<zone-name>:<zone-password>" \
     "https://www.google.com/search?q=best+sushi+restaurants+in+tokyo&hl=ja"

    Sie können beide Parameter zusammen verwenden, um eine bessere Lokalisierung zu erreichen:

    curl --proxy brd.superproxy.io:33335 \
     --proxy-user "brd-customer-<customer-id>-zone-<zone-name>:<zone-password>" \
     "https://www.google.com/search?q=best+hotels+in+berlin&gl=de&hl=de"

Search Type

bright-data-google-search-api-screenshot-search-type

  1. tbm (Search Category)

    • Gibt einen bestimmten Suchtyp an (Bilder, News usw.)
    • Options:
      • tbm=ischBilder
      • tbm=shopShopping
      • tbm=nwsNews
      • tbm=vidVideos

    Example (Shopping-Suche):

    curl --proxy brd.superproxy.io:33335 \
         --proxy-user "brd-customer-<customer-id>-zone-<zone-name>:<zone-password>" \
         "https://www.google.com/search?q=macbook+pro&tbm=shop"
  2. ibp (Jobs Search Parameter)

    • Speziell für jobsbezogene Suchen verwenden
    • Beispiel: ibp=htl;jobs gibt Stellenanzeigen zurück

    Example:

    curl --proxy brd.superproxy.io:33335 \
         --proxy-user "brd-customer-<customer-id>-zone-<zone-name>:<zone-password>" \
         "https://www.google.com/search?q=technical+copywriter&ibp=htl;jobs"

Pagination

Navigieren Sie durch Ergebnisseiten oder passen Sie die Anzahl der angezeigten Ergebnisse an:

  1. start

    • Definiert den Startpunkt für Suchergebnisse
    • Beispiele:
      • start=0 (default) - Erste Seite
      • start=10 - Zweite Seite (Ergebnisse 11–20)
      • start=20 - Dritte Seite (Ergebnisse 21–30)

    Example (Start ab dem 11. Ergebnis):

    curl --proxy brd.superproxy.io:33335 \
         --proxy-user "brd-customer-<customer-id>-zone-<zone-name>:<zone-password>" \
         "https://www.google.com/search?q=best+coding+laptops+2025&start=10"
  2. num

    • Definiert, wie viele Ergebnisse pro Seite zurückgegeben werden
    • Beispiele:
      • num=10 (default) - Gibt 10 Ergebnisse zurück
      • num=50 - Gibt 50 Ergebnisse zurück

    Example (40 Ergebnisse zurückgeben):

    curl --proxy brd.superproxy.io:33335 \
         --proxy-user "brd-customer-<customer-id>-zone-<zone-name>:<zone-password>" \
         "https://www.google.com/search?q=best+coding+laptops+2025&num=40"

Geo-Location

bright-data-google-search-api-screenshot-geolocation

Der Parameter uule passt Suchergebnisse basierend auf einem bestimmten Standort an:

  • Er erfordert eine kodierte Zeichenfolge, keinen Klartext.
  • Suchen Sie die Roh-Standortzeichenfolge in der Spalte Canonical Name der Google's geotargeting CSV.
  • Konvertieren Sie die Rohzeichenfolge mithilfe eines Drittanbieter-Konverters oder einer integrierten Bibliothek in das kodierte Format.
  • Fügen Sie die kodierte Zeichenfolge in Ihrer API-Anfrage als Wert für uule ein.
curl --proxy brd.superproxy.io:33335 \
     --proxy-user "brd-customer-<customer-id>-zone-<zone-name>:<zone-password>" \
     "https://www.google.com/search?q=best+hotels+in+paris&uule=w+CAIQICIGUGFyaXM"

Device Type

bright-data-google-search-api-screenshot-device-type

Verwenden Sie den Parameter brd_mobile, um Anfragen von bestimmten Geräten zu simulieren:

Value Device User-Agent Type
0 or omit Desktop Desktop
1 Mobile Mobile
ios or iphone iPhone iOS
ipad or ios_tablet iPad iOS Tablet
android Android Android
android_tablet Android Tablet Android Tablet

Example: Mobile Search

curl --proxy brd.superproxy.io:33335 \
     --proxy-user "brd-customer-<customer-id>-zone-<zone-name>:<zone-password>" \
     "https://www.google.com/search?q=best+laptops&brd_mobile=1"

Browser Type

bright-data-google-search-api-screenshot-browser-type

Verwenden Sie den Parameter brd_browser, um Anfragen von bestimmten Browsern zu simulieren:

  • brd_browser=chrome — Google Chrome
  • brd_browser=safari — Safari
  • brd_browser=firefox — Mozilla Firefox (nicht kompatibel mit brd_mobile=1)

Wenn nicht angegeben, verwendet die API einen zufälligen Browser.

Example:

curl --proxy brd.superproxy.io:33335 \
     --proxy-user "brd-customer-<customer-id>-zone-<zone-name>:<zone-password>" \
     "https://www.google.com/search?q=best+gaming+laptops&brd_browser=chrome"

Example (Kombination von Browser und Gerätetyp):

curl --proxy brd.superproxy.io:33335 \
     --proxy-user "brd-customer-<customer-id>-zone-<zone-name>:<zone-password>" \
     "https://www.google.com/search?q=best+smartphones&brd_browser=safari&brd_mobile=ios"

Parsing Results

Erhalten Sie Suchergebnisse in einem strukturierten Format mithilfe des Parameters brd_json:

  • Options:
    • brd_json=1 - Gibt Ergebnisse im geparsten JSON-Format zurück
    • brd_json=html - Gibt JSON mit einem zusätzlichen Feld "html" zurück, das rohes HTML enthält

Beispiel (JSON-Ausgabe):

curl --proxy brd.superproxy.io:33335 \
     --proxy-user "brd-customer-<customer-id>-zone-<zone-name>:<zone-password>" \
     "https://www.google.com/search?q=best+hotels+in+new+york&brd_json=1"

Beispiel (JSON mit rohem HTML):

curl --proxy brd.superproxy.io:33335 \
     --proxy-user "brd-customer-<customer-id>-zone-<zone-name>:<zone-password>" \
     "https://www.google.com/search?q=top+restaurants+in+paris&brd_json=html"

Erfahren Sie mehr in unserem SERP API Parsing Guide.

Hotel Search

bright-data-google-search-api-screenshot-google-hotels-search

Verfeinern Sie Hotelsuchen mit diesen Parametern:

  1. hotel_occupancy (Anzahl der Gäste)

    • Legt die Anzahl der Gäste fest (bis zu 4)
    • Beispiele:
      • hotel_occupancy=1 → Für 1 Gast
      • hotel_occupancy=2 → Für 2 Gäste (default)
      • hotel_occupancy=4 → Für 4 Gäste

    Example (Suche nach Hotels in New York für 4 Gäste):

    curl --proxy brd.superproxy.io:33335 \
         --proxy-user "brd-customer-<customer-id>-zone-<zone-name>:<zone-password>" \
         "https://www.google.com/search?q=hotels+in+new+york&hotel_occupancy=4"
  2. hotel_dates (Check-in- & Check-out-Daten)

    • Filtert Ergebnisse für bestimmte Datumsbereiche
    • Format: YYYY-MM-DD, YYYY-MM-DD

    Example (Suche nach Hotels in Paris vom 1. Mai bis 3. Mai 2025):

    curl --proxy brd.superproxy.io:33335 \
         --proxy-user "brd-customer-<customer-id>-zone-<zone-name>:<zone-password>" \
         "https://www.google.com/search?q=hotels+in+paris&hotel_dates=2025-05-01%2C2025-05-03"

    Combined Example:

    curl --proxy brd.superproxy.io:33335 \
         --proxy-user "brd-customer-<customer-id>-zone-<zone-name>:<zone-password>" \
         "https://www.google.com/search?q=hotels+in+tokyo&hotel_occupancy=2&hotel_dates=2025-05-01%2C2025-05-03"

Parallel Searches

Senden Sie mehrere Suchanfragen gleichzeitig innerhalb desselben Peers und derselben Sitzung – ideal zum Vergleichen von Ergebnissen.

  1. Senden Sie eine POST-Anfrage mit einem multi-Array, das Suchvariationen enthält
  2. Erhalten Sie eine response_id für das spätere Abrufen der Ergebnisse
  3. Rufen Sie Ergebnisse über die response_id ab, sobald die Verarbeitung abgeschlossen ist

Step 1: Send Parallel Requests

RESPONSE_ID=$(curl -i --silent --compressed \
  "https://api.brightdata.com/serp/req?customer=<customer-id>&zone=<zone-name>" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer API_TOKEN" \
  -d $'{
    "country": "us",
    "multi": [
      {"query": {"q": "top+macbook+for+developers", "num": 20}},
      {"query": {"q": "top+macbook+for+developers", "num": 100}}
    ]
  }' | sed -En 's/^x-response-id: (.*)/\1/p' | tr -d '\r')

echo "Response ID: $RESPONSE_ID"

Step 2: Fetch Results

curl -v --compressed \
     "https://api.brightdata.com/serp/get_result?customer=<customer-id>&zone=<zone-name>&response_id=${RESPONSE_ID}" \
     -H "Authorization: Bearer API_TOKEN"

Sie können außerdem nach mehreren Keywords in einer Anfrage suchen:

{
  "multi":[
    {"query":{"q":"best+smartphones+2025"}},
    {"query":{"q":"best+laptops+2025"}}
  ]
}

Erfahren Sie mehr über asynchrone Anfragen hier.

AI Overview

bright-data-google-search-api-screenshot-google-ai-overview

Google fügt manchmal KI-generierte Zusammenfassungen (AI Overviews) oben in den Suchergebnissen ein. Verwenden Sie brd_ai_mode=1, um die Wahrscheinlichkeit zu erhöhen, diese KI-generierten Overviews zu sehen:

curl --proxy brd.superproxy.io:33335 \
     --proxy-user "brd-customer-<customer-id>-zone-<zone-name>:<zone-password>" \
     "https://www.google.com/search?q=how+does+caffeine+affect+sleep&brd_ai_mode=1"

Support & Resources

About

Zwei Methoden zur Erfassung echter Google SERP-Daten—ein kostenloser Scraper für die grundlegende Nutzung und die API der Enterprise-Klasse von Bright Data für Anforderungen mit hohem Volumen.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published