Google Bilder als JSON Scrapen - mit URLs in voller Auflösung
Google Bilder sieht aus wie ein einfaches Raster aus Fotos, ist aber eine der am schwersten zu scrapenden Seiten im Web. Was du siehst, steht nicht im HTML. Die Thumbnails werden verzögert geladen, die Originale in voller Auflösung liegen hinter einem Klick und einer zweiten Anfrage, und die URLs, die tatsächlich im Markup stehen, sind oft base64-Blobs oder kurzlebige Weiterleitungen statt des echten Bildes auf der Seite des Publishers. Schreib einen naiven Scraper, und du landest bei einem Ordner voller 200-Pixel-Vorschauen ohne jede Ahnung, woher sie stammen.
Das neue Google Bilder-Plugin beseitigt dieses ganze Problem. Du sendest ein Keyword und bekommst ein JSON-Array zurück, in dem jedes Ergebnis bereits die Original-Bild-URL in voller Auflösung, die Seite, auf der es erscheint, und die Quelldomain enthält. Dieser Beitrag erklärt, warum Google Bilder knifflig ist, was das Plugin zurückgibt und wie du damit einen echten Bilddatensatz aufbaust.
Warum Google Bilder Schwer zu Scrapen Ist
Vor dem Plugin hatte jeder gängige Ansatz einen Haken:
- Die sichtbaren Thumbnails sind herunterskaliert. Das
src, das du direkt aus dem Raster auslesen kannst, zeigt auf ein von Google gehostetes Thumbnail, meist nur ein paar hundert Pixel breit. Gut für eine Vorschau, nutzlos, wenn du das echte Asset brauchst. - Original-URLs werden verzögert geliefert. Das Bild in voller Auflösung liegt auf dem eigenen Server des Publishers, und Google gibt diese URL erst nach einer Interaktion preis. Sie steckt in einer JavaScript-Nutzlast, nicht im initialen HTML, sodass ein einfacher HTTP-Abruf sie nie sieht.
- Das Markup ist bewusst verrauscht. Klassennamen sind verschleiert und ändern sich häufig, Inline-Daten sind codiert, und ein Großteil der Seite wird clientseitig aufgebaut. Selektoren, die heute funktionieren, brechen nächste Woche.
- Es ist eine bot-empfindliche Google-Oberfläche. Wenn du die Ergebnisseite von einer einzigen IP ohne Browser-Fingerabdruck bombardierst, bekommst du eine Challenge oder eine leere Seite statt Ergebnissen.
Du kannst all das selbst mit einem Headless-Browser, sorgfältigem Warten und Payload-Parsing lösen, aber das ist eine Menge fragiler Code, den du für eine eigentlich einfache Abfrage pflegen musst.
Was das Google-Bilder-Plugin Zurückgibt
Das Plugin nimmt eine Suchphrase - dasselbe, was du in Google Bilder eintippen würdest - und gibt die Bildergebnisse als strukturiertes JSON-Array zurück. Der entscheidende Punkt: imageUrl ist das echte Bild in voller Auflösung auf der Quellseite, nicht ein Google-Thumbnail.
Für jedes Ergebnis erhältst du Felder wie:
position- Rang in den Ergebnissentitle- der Alt-/Titeltext des BildesimageUrl- die Original-Bild-URL in voller Auflösung auf der Seite des PublisherssourceUrl- die Seite, auf der das Bild erscheintsourceDomain- der Host dieser Seite, etwaexample.comsiteName- der lesbare Name der Seite, sofern verfügbarthumbnailUrl- die von Google gehostete Vorschau, falls du eine leichtgewichtige Version willstwidthundheight- die Abmessungen des Originalbildes in Pixeln
Da die Original-URL und die Quellseite zusammen ankommen, weißt du immer, was das Bild ist und wo es rechtmäßig liegt - was für Lizenzierung und Attribution sehr wichtig ist.
Die Anfrage
Der Endpunkt ist ein einzelner POST-Aufruf. Der einzige Pflichtparameter ist q, die Suchphrase. Ein paar optionale Parameter steuern Standort, Sprache und Ergebnisanzahl:
q(Pflicht) - die Suchphrase, zum Beispielroter pandaproxy_country- das Land der Exit-IP als ISO-2-Code (US,GB,DE)gl- das Google-Suchland, ISO-2 in Kleinbuchstaben (us,de,fr)max_results- wie viele Bilder zurückgegeben werden, von 1 bis 100
Hier der einfachstmögliche Aufruf mit curl:
curl -X POST "https://api.scrapeunblocker.com/images/google-search?q=roter%20panda&max_results=20" \
-H "x-scrapeunblocker-key: YOUR_API_KEY"
Das gibt die obersten Bildergebnisse für das Keyword zurück, jedes mit seiner URL in voller Auflösung, in einer Antwort. Du verwaltest keinen Browser, wartest nicht auf verzögertes Laden und parst kein HTML.
Die Antwort
Die Antwort ist ein einzelnes JSON-Objekt. Die oberste Ebene wiederholt die Abfrage und wie viele Ergebnisse zurückkamen, und das results-Array enthält die Bilder:
{
"q": "roter panda",
"proxyCountry": "US",
"resultsCollected": 20,
"results": [
{
"position": 1,
"title": "Roter Panda ruht auf einem Ast",
"imageUrl": "https://example.com/photos/red-panda-full.jpg",
"sourceUrl": "https://example.com/wildlife/red-panda",
"sourceDomain": "example.com",
"siteName": "Example Wildlife",
"thumbnailUrl": "https://encrypted-tbn0.gstatic.com/images?q=...",
"width": 2400,
"height": 1600
}
]
}
Da die Form stabil ist, kannst du sie direkt in eine Datenbank, eine Tabelle oder eine Download-Warteschlange abbilden, ohne HTML aufzuräumen.
Aufruf aus Python
Du brauchst das SDK nicht, um das Plugin zu nutzen - jeder HTTP-Client funktioniert. Hier ein kleines Beispiel mit requests, das eine Suche ausführt und jedes Ergebnis ausgibt:
import requests
API_KEY = "YOUR_API_KEY"
URL = "https://api.scrapeunblocker.com/images/google-search"
params = {
"q": "roter panda",
"proxy_country": "US",
"gl": "us",
"max_results": 20,
}
resp = requests.post(URL, params=params, headers={"x-scrapeunblocker-key": API_KEY})
resp.raise_for_status()
data = resp.json()
for img in data["results"]:
print(f"{img['position']:>2}. {img['width']}x{img['height']} "
f"{img['sourceDomain']:<20} {img['imageUrl']}")
Wenn du die offiziellen Tools bevorzugst: ScrapeUnblocker bietet SDKs für Python, Node.js, Ruby und PHP, und das Plugin ist auch über das Dashboard und die API-Referenz verfügbar. Das Python-Paket installierst du mit pip install scrapeunblocker, und es liest deinen Schlüssel aus einer Umgebungsvariablen, sodass du dir das manuelle Setzen des Headers sparst.
Die Echten Bilder Herunterladen
Der Sinn der URL in voller Auflösung ist, dass du die echte Datei abrufen kannst. Hier eine Such-und-Download-Schleife, die jedes Originalbild auf die Festplatte speichert, benannt nach Quelldomain:
import os
import requests
from urllib.parse import urlparse
API_KEY = "YOUR_API_KEY"
SEARCH_URL = "https://api.scrapeunblocker.com/images/google-search"
os.makedirs("images", exist_ok=True)
params = {"q": "antike schreibmaschine", "max_results": 30}
data = requests.post(SEARCH_URL, params=params,
headers={"x-scrapeunblocker-key": API_KEY}).json()
for img in data["results"]:
url = img["imageUrl"]
ext = os.path.splitext(urlparse(url).path)[1] or ".jpg"
name = f"images/{img['position']:02d}_{img['sourceDomain']}{ext}"
try:
r = requests.get(url, timeout=20)
r.raise_for_status()
with open(name, "wb") as f:
f.write(r.content)
print("gespeichert", name)
except requests.RequestException as e:
print("uebersprungen", url, e)
Da imageUrl auf den Ursprungsserver zeigt und nicht auf ein Google-Thumbnail, können manche Hosts die Rate begrenzen oder Hotlinking-Schutz haben. Umschließe den Download mit try/except, füge eine kurze Pause zwischen den Anfragen ein und überspringe die fehlgeschlagenen, statt einen schlechten Host den ganzen Lauf stoppen zu lassen.
Was du Damit Bauen Kannst
Bildsuchergebnisse als sauberes JSON eröffnen einige praktische Anwendungsfälle:
- Trainings- und Referenzdatensätze. Sammle beschriftete Bilder für eine Kategorie und behalte
title,sourceUrlundsourceDomainbei jeder Datei, damit du die Herkunft nachverfolgen und später nach Lizenz filtern kannst. - Marken- und Logo-Monitoring. Suche nach deiner Marke oder deinem Produkt und sieh, welche Seiten dein Bildmaterial verwenden und in welcher Auflösung.
- Content- und SEO-Recherche. Prüfe, welche Bilder für ein Keyword ranken, wie groß sie sind und welche Domains die Ergebnisse zu einem Thema dominieren.
- Produkt- und Katalog-Anreicherung. Hole Bildkandidaten für Produkte per Name und wähle für jedes das Ergebnis mit der höchsten Auflösung.
Da jedes Ergebnis width und height enthält, kannst du in einer Zeile nach Bildern über einer Mindestgröße filtern, bevor du irgendetwas herunterlädst.
Praktische Tipps
Ein paar Dinge, die du im Kopf behalten solltest:
- Sei spezifisch bei den Keywords. Breite Begriffe liefern generisches Stockmaterial; eine präzise Phrase liefert eine engere, relevantere Menge. Behandle
qgenau wie eine echte Google-Bildersuche. - Setze den Standort, wenn es zählt. Bildergebnisse können je nach Region variieren. Nutze
proxy_countryundglzusammen, wenn du reproduzierbare, regional genaue Ergebnisse brauchst. - Filtere früh nach Abmessungen. Nutze
widthundheight, um winzige Bilder zu verwerfen, bevor du Bandbreite für den Download verbrauchst. - Respektiere Lizenzen. Eine öffentliche Bild-URL ist nicht dasselbe wie eine Lizenz zur Nutzung. Behalte
sourceUrlundsiteNamebei jedem Bild und prüfe die Nutzungsrechte, bevor du etwas veröffentlichst oder weiterverbreitest. - Behandle Download-Fehler sauber. Die Originale liegen auf Drittserver, also rechne mit einigen 403ern und Timeouts und überspringe sie.
FAQ
Bekomme ich das echte Bild oder nur ein Thumbnail?
Du bekommst das echte. imageUrl ist das Original in voller Auflösung, gehostet auf der Quellseite. Ein thumbnailUrl ist ebenfalls enthalten, falls du eine leichtgewichtige Vorschau willst.
Wie viele Bilder kann ein Aufruf zurückgeben?
Bis zu 100, gesteuert über max_results. Setze es auf die Zahl, die du wirklich brauchst, damit die Antworten klein und schnell bleiben.
Kann ich ein bestimmtes Land oder eine Sprache anvisieren?
Ja. Nutze proxy_country für die Exit-IP und gl für das Google-Suchland. Setze beide, wenn es dir wichtig ist, aus welcher Region die Ergebnisse stammen.
Ist das Scrapen von Google Bilder legal? Das Lesen öffentlicher Suchergebnisse ist im Allgemeinen in Ordnung, aber die Bilder selbst sind urheberrechtlich geschützte Werke ihrer Publisher. Eine URL zu bekommen ist keine Lizenz. Prüfe und respektiere immer die Nutzungsrechte jedes Bildes, bevor du es wiederverwendest.
Was, wenn ich Bilder von einer bestimmten Seite brauche?
Füge deiner Abfrage einen site:-artigen Begriff hinzu, oder rufe die Seiten dieser Website direkt mit dem Standard-Scraping-Endpunkt ab und hole dir die benötigten Bilder aus dem Markup.
Fazit
Google Bilder macht aus einem simpel wirkenden Raster ein Scraping-Kopfzerbrechen: herunterskalierte Thumbnails, verzögerte Original-URLs, verschleiertes Markup und eine bot-empfindliche Oberfläche. Das Google-Bilder-Plugin bringt all das auf einen einzigen Aufruf zusammen, der Bild-URLs in voller Auflösung, Quellseiten und Abmessungen als sauberes JSON zurückgibt, damit du deine Zeit mit dem Aufbau des Datensatzes verbringst statt mit dem Reverse Engineering der Seite.
Wenn du es ausprobieren willst: Das Plugin ist im ScrapeUnblocker-Dashboard verfügbar und neben den anderen Plugins in der Entwicklerdokumentation dokumentiert. Richte es auf ein Keyword und sieh, wie Bildersuche als strukturierte Daten aussieht.
ScrapeUnblocker kostenlos testen
Über 95 % Erfolgsquote · ab 0,55 € pro 1.000 Aufrufe · 500 kostenlose Anfragen bei der Registrierung.