Schau dir die gängigen Tutorials zu „Gemini Web Scraping" an, und du merkst schnell: Sie alle sprechen denselben Leser an – einen Python-Profi, der seine virtuelle Umgebung längst eingerichtet hat, mit Pydantic-Schemata jongliert und zu Async-Libraries eine feste Meinung mitbringt. Triffst du diese Beschreibung? Prima, dann scrolle gleich zum Code. Sitzt du dagegen im Vertrieb, im Marketing oder in der E-Commerce-Operations und willst einfach strukturierte Daten von mehreren Seiten holen, ohne vorher zu büffeln, was markdownify eigentlich macht – keine Sorge, mit diesem Problem bist du in guter Gesellschaft.
Hinter dem Namen Gemini steckt Googles multimodale KI-Familie, die sich rasant zu einem der bevorzugten Werkzeuge für die Extraktion von Webdaten mausert. Laut Stack Overflow Developer Survey 2025 nutzen oder planen 84 % der Entwickler den Einsatz von KI-Tools – und LLM-gestütztes Scraping ist ein fester Bestandteil dieser Entwicklung. Zwischen einem schicken Demo für eine einzelne URL und einer robusten Pipeline, die Pagination, Unterseiten, Anti-Bot-Schutz und unordentliches HTML in großem Maßstab verarbeitet, liegen jedoch Welten. Dieser Leitfaden nimmt sich beide Wege vor – Python (Code) und No-Code –, rechnet die Modellwahl mit konkreten Token-Zahlen durch, behandelt Multi-Page-Scraping ausführlich (also genau jenen Schritt, den die meisten Tutorials stillschweigend übergehen) und sagt offen, wo Gemini-Scraping schlicht aufhört zu funktionieren. Danach weißt du, welcher Weg zu deinem Workflow passt – und welche Fallstricke Entwickler wie Business-Anwender gleichermaßen erwischen.
Was ist Gemini Web Scraping?
Beim Gemini Web Scraping schickst du den Inhalt einer Webseite – HTML, Markdown oder sogar einen Screenshot – an eines von Googles Gemini-Modellen. Das Modell wertet die Seite aus und liefert strukturierte Daten zurück. Ohne CSS-Selektoren, ohne XPath, ohne brüchige Regeln, die beim nächsten Layout-Update auseinanderfallen.
Im Kern läuft das so ab:
- Seite abrufen (mit
requests, einem Headless-Browser oder einer Chrome-Erweiterung) - Inhalt bereinigen und umwandeln (meist HTML → Markdown, um Token-Kosten zu senken)
- An Gemini senden mit einem Schema, das die gewünschten Felder beschreibt
- Strukturiertes JSON zurückerhalten – bereit für Spreadsheet, CRM oder Datenbank
Beim klassischen Scraping mit BeautifulSoup oder Selenium verdrahtet man Selektoren wie div.product-title > span.price fest und drückt die Daumen, dass die Seite nicht nächsten Dienstag umgebaut wird. Gemini liest eine Seite dagegen eher wie ein Mensch: Es erfasst Kontext, fängt Layoutänderungen ab und kommt mit unsauberer Formatierung ohne Custom Rules klar.
Ein Detail noch, das später wichtig wird: Gemini ist von Grund auf multimodal. Text, Bilder, Videos, Audio, PDFs und Code verarbeitet es in einer einzigen Anfrage. Das ermöglicht Scraping-Ansätze – etwa einen Screenshot statt HTML zu schicken –, die den meisten anderen LLMs schlicht verschlossen bleiben. Dazu kommen wir gleich.
Warum Gemini Web Scraping für Business-Teams wichtig ist
Warum sollten sich ein Marketing Manager oder eine E-Commerce-Analystin überhaupt mit LLMs und Web Scraping befassen? Kurz gesagt: Es spart enorm Zeit – und fällt nicht bei jedem Website-Update in sich zusammen.
Prognosen zufolge wird der Markt für Web-Scraping-Software wachsen – von rund 1 Milliarde US-Dollar im Jahr 2025 auf über 2 Milliarden US-Dollar bis 2030. Am stärksten zulegen dürfte dabei die KI-gestützte Extraktion. Das ist kein Hype, sondern Ausdruck eines echten Wandels darin, wie Teams an ihre Daten kommen.
In typische Business-Workflows fügt sich Gemini Scraping so ein:
| Anwendungsfall | Was extrahiert wird | Wer profitiert |
|---|---|---|
| Lead-Generierung | Kontaktdaten aus Verzeichnissen, LinkedIn (öffentlich), Unternehmenswebsites | Vertrieb, BDRs |
| Preisbeobachtung der Konkurrenz | Produktpreise, Lagerstatus, Aktionen | E-Commerce, Pricing-Teams |
| Produktkatalog-Extraktion | Namen, Spezifikationen, Bilder, Bewertungen | Merchandising, Marketplace-Operations |
| Immobilienangebote | Objektdetails, Preise, Maklerinfos | Makler, Investoren |
| Content-Aggregation | News, Blogposts, Social-Media-Erwähnungen | Marketing, PR |
| Jobmarkt-Research | Jobtitel, Gehälter, Standorte | HR, Recruiting |
Der praktische Gewinn ist doppelt. Zum einen entfällt das ständige Schreiben, Testen und Debuggen von Parsing-Skripten – das Modell liest die Seite jedes Mal aufs Neue. Zum anderen brauchst du nicht jedes Mal einen Entwickler, sobald eine Website ein <div> verschiebt. Die kostenlose Gemini-Einstiegsebene macht Experimente für kleine Projekte fast gratis: etwa 1.000 Anfragen pro Tag bei Flash-Lite und 100 pro Tag bei Pro, ganz ohne Kreditkarte.
Welches Gemini-Modell solltest du wählen? (Flash Lite vs. Flash vs. Pro)
Fürs Scraping taugen nicht alle Gemini-Modelle gleich gut. Diesen Vergleich hätte ich mir in jedem Tutorial gewünscht – denn die falsche Wahl kostet entweder unnötig Geld oder produziert Datenmüll.
Alle drei aktuellen Gemini-2.5-Modelle teilen sich ein Kontextfenster von 1.048.576 Tokens und sind multimodal. Worin sie sich unterscheiden, sind Kosten, Geschwindigkeit und die Qualität bei komplexen Extraktionen.
| Modell | Input-Kosten (pro 1 Mio. Tokens) | Output-Kosten (pro 1 Mio. Tokens) | Am besten geeignet für | Genauigkeit bei komplexen Schemata | Geschwindigkeit |
|---|---|---|---|---|---|
| Gemini 2.5 Flash Lite | ca. $0.025 | ca. $0.10 | Einfache, flache Daten, hohe Mengen | ⚠️ Tut sich schwer mit verschachtelten/optionalen Feldern | Am schnellsten |
| Gemini 2.5 Flash | ca. $0.075 | ca. $0.625 | Die meisten Scraping-Aufgaben | ✅ Gut für strukturierte Extraktion | Schnell |
| Gemini 2.5 Pro | ca. $0.3125 | ca. $2.50 | Komplexe verschachtelte Schemata, Sonderfälle | ✅ Beste Genauigkeit | Am langsamsten |
(Preise laut Gemini Developer API. Die Batch API ist 50 % günstiger.)
Gemini 2.5 Flash Lite: Schnell und günstig, aber mit Lücken
Flash Lite ist die Sparvariante. Für einfache, flache Daten in hoher Stückzahl – Produktnamen, Preise, einstufige Listen – ist sie ideal. Bei optionalen Feldern, Zeitstempeln und verschachtelten Daten gibt es allerdings dokumentierte Probleme. Ein Entwickler schilderte im Google-Forum, dass Flash Lite „durchdreht", sobald Schemata nicht erforderliche Eigenschaften enthalten, und so lange repetitiven Text ausgibt, bis das Token-Limit erreicht ist. Hat dein Schema mehr als zwei Verschachtelungsebenen oder können Felder auf manchen Seiten fehlen, verbrennt Flash Lite Tokens und Nerven gleichermaßen.
Gemini 2.5 Flash: Der Sweet Spot für die meisten Scraping-Jobs
Bei nahezu jedem realen Scraping-Projekt würde ich mit Flash beginnen. Es erledigt strukturierte Extraktion zuverlässig, kommt mit Pagination-Logik zurecht und kostet auf der Input-Seite rund das Dreifache von Flash Lite – ein Aufpreis, den der Genauigkeitsgewinn rechtfertigt. In GPQA-ähnlichen Reasoning-Benchmarks liegt Flash nur wenige Punkte hinter Pro. Heißt: Es beherrscht genau jenes Ableiten, Normalisieren und Glätten, auf das es beim Scraping in der Praxis ankommt.
Gemini 2.5 Pro: Maximale Genauigkeit für komplexe Daten
Pro ist das Feinwerkzeug. Greif dazu, wenn du tief verschachtelte Schemata extrahierst – etwa Produktspezifikationen mit mehreren Varianten-Gruppen samt Größen, Farben und Preisen – oder wenn erfundene Felder tabu sind, wie bei juristischen, finanziellen oder medizinischen Daten. Auf der Input-Seite kostet es rund das Zwölffache von Flash Lite, gehört also für Aufgaben reserviert, bei denen Genauigkeit über dem Preis steht.
Rechenbeispiel: 10.000 Produktseiten
Wandelst du HTML vorab in Markdown um – was du tun solltest, gleich mehr dazu –, schrumpft eine typische Produktseite von rund 20.000 Tokens rohem HTML auf etwa 4.000 Tokens Markdown. Das Output-JSON liegt bei ungefähr 500 Tokens pro Seite.
| Modell | Input-Kosten (40 Mio. Tokens) | Output-Kosten (5 Mio. Tokens) | Gesamt für 10K Seiten |
|---|---|---|---|
| Flash Lite | $1.00 | $0.50 | ca. $1.50 |
| Flash | $3.00 | $3.13 | ca. $6.13 |
| Pro | $12.50 | $12.50 | ca. $25.00 |
Ohne Markdown-Vorverarbeitung – also mit rohem HTML bei rund 200 Mio. Input-Tokens – vervier- bis verfünffachen sich diese Zahlen. Die Vorverarbeitung ist damit der Hebel mit dem größten Effekt in der ganzen Pipeline.
Code oder No-Code: Zwei Wege zum Gemini Web Scraping
An dieser Stelle teilt sich der Weg. Baust du als Entwickler deine eigene Pipeline, gibt dir Python plus Gemini-API die größtmögliche Kontrolle. Brauchst du als Business-User jetzt sofort Daten und willst kein Terminal öffnen, bringt dich ein No-Code-AI-Scraper schneller ans Ziel.
| Kriterium | Gemini API (Python) | Thunderbit (No-Code) |
|---|---|---|
| Einrichtungszeit | 15–30 Min. (Umgebung, Keys, Bibliotheken) | < 1 Min. (Chrome-Erweiterung installieren) |
| Programmieren nötig | Ja (Python, Pydantic) | Nein |
| Pagination | Manuelles Skripting | Integriert (Klick oder Infinite Scroll) |
| Subpage-Anreicherung | Eigener Code pro Website | 1-Klick-„Scrape Subpages" |
| Token-Kostenmanagement | Manuell (HTML-Bereinigung, Modellwahl) | Vom KI-Engine übernommen |
| Exportoptionen | JSON/CSV per Skript | Excel, Google Sheets, Airtable, Notion |
| Am besten für | Entwickler mit eigener Pipeline | Business-User, die sofort Daten brauchen |
Thunderbit ist die No-Code-Variante aus unserem eigenen Haus – eine Chrome-Erweiterung, die KI (unter der Haube unter anderem Gemini, ChatGPT und Claude) einsetzt, um Felder vorzuschlagen, Daten mit zwei Klicks zu extrahieren und ins Zielprogramm zu exportieren. Beide Wege gehe ich unten der Reihe nach durch.
Wer lieber von der Tabelle aus startet, sollte auch einen Blick auf Quadratic werfen – ein KI-Spreadsheet, das Gemini-gestütztes Web Scraping direkt in der Tabelle ausführt. Für Workflows, die von einer konkreten Webseite ausgehen (Produktlisten, Verzeichnisse, Lead-Datenbanken), passt Thunderbit allerdings meist besser zum gedanklichen Modell der Nutzer.
Schritt für Schritt: Gemini Web Scraping mit Python
Dieser Abschnitt ist für Entwickler gedacht. Möchtest du den No-Code-Weg, spring einfach weiter nach unten.
Bevor du startest:
- Schwierigkeit: Mittelstufe (Python-Grundkenntnisse erforderlich)
- Zeitbedarf: ca. 20–30 Minuten für den ersten Scrape
- Was du brauchst: Python 3.10+, ein Google-AI-Studio-Konto (kostenlos), eine Ziel-URL
Schritt 1: Python-Umgebung und Gemini-API-Key einrichten
Leg einen Projektordner und eine virtuelle Umgebung an und installiere die nötigen Bibliotheken:
mkdir gemini-scraper && cd gemini-scraper
python -m venv venv && source venv/bin/activate
pip install -U google-genai requests beautifulsoup4 markdownify pydantic
Wichtig: Das einzig korrekte SDK im Jahr 2026 ist google-genai. Das ältere Paket google-generativeai hat am 2025-11-30 sein End-of-Life erreicht und gilt inzwischen als überholt. Taucht in einem Tutorial import google.generativeai as genai auf, ist der Code veraltet.
Hol dir als Nächstes deinen API-Key aus dem Google AI Studio. Klick auf „Get API Key", erzeuge einen neuen Schlüssel und leg ihn als Umgebungsvariable ab:
export GEMINI_API_KEY="your-key-here"
Damit steht eine funktionierende Python-Umgebung – samt aller Abhängigkeiten und einsatzbereitem API-Key.
Schritt 2: HTML der Zielseite abrufen
Lad die Seite mit requests herunter. Im Beispiel scrapen wir eine Produktseite:
import requests
url = "https://example.com/product/widget-pro"
response = requests.get(url, headers={"User-Agent": "Mozilla/5.0"}, timeout=30)
html = response.text
Setzt die Seite stark auf JavaScript-Rendering oder Anti-Bot-Schutz, liefert requests.get() womöglich nur eine leere Hülle oder einen 403-Fehler. Gegenmaßnahmen folgen weiter unten – bei vielen öffentlichen Seiten klappt das hier aber reibungslos.
Schritt 3: HTML bereinigen und in Markdown umwandeln
Diesen Schritt erwähnen die meisten Tutorials zwar, beziffern ihn aber nie. Rohes HTML einer typischen Produktseite liegt bei rund 20.000 Tokens. Nach dem Aussieben mit BeautifulSoup und der Markdown-Umwandlung landest du bei etwa 765–4.000 Tokens – also einer 5- bis 10-fachen Reduktion, die bares Geld spart und Halluzinationen dämpft.
from bs4 import BeautifulSoup
from markdownify import markdownify
soup = BeautifulSoup(html, "html.parser")
main = soup.select_one("main") or soup # nur den Inhaltsbereich nehmen
markdown_content = markdownify(str(main))
select_one("main") wirft Header, Footer, Navigationsleisten und Skripte raus – also den Lärm, der Tokens frisst und das Modell verwirrt. Nutzt die Seite kein <main>-Tag, probier .product-detail, #content oder den passenden Container um die eigentlichen Daten.
Nach diesem Schritt hast du einen sauberen Markdown-String mit genau dem Inhalt, der zählt.
Schritt 4: Datenschema definieren und an Gemini senden
Mit Pydantic legst du fest, was zurückkommen soll. Das google-genai-SDK nimmt ein Pydantic-BaseModel direkt als response_schema entgegen:
from google import genai
from google.genai import types
from pydantic import BaseModel
class Product(BaseModel):
name: str
price: str
sku: str | None = None
description: str
sizes: list[str] = []
colors: list[str] = []
client = genai.Client() # liest GEMINI_API_KEY aus der Umgebung
response = client.models.generate_content(
model="gemini-2.5-flash",
contents=f"Extrahiere die Produktdaten von dieser Seite:\n\n{markdown_content}",
config=types.GenerateContentConfig(
response_mime_type="application/json",
response_schema=Product,
),
)
product = response.parsed
print(product)
Ein paar Stolpersteine aus dem dokumentierten Bug-Register:
- Finger weg von
Field(default=...)in Schemata, die an Gemini gehen – sonst wirft die API einenValueError. Nimm stattdessen die Typdefinitionsku: str | None = None. - Halte die Verschachtelung flach (maximal 3 Ebenen). Tief verschachtelte Schemata enden bei Flash und Flash Lite oft in rekursivem Output oder offenen Klammern.
- Markiere Felder als erforderlich, sobald du Flash Lite verwendest, und arbeite mit leeren Platzhalterstrings statt weggelassenen Feldern – Flash Lites Umgang mit optionalen Feldern ist unzuverlässig.
Jetzt liegt dir ein geparstes Product-Objekt mit strukturierten Seitendaten vor.
Schritt 5: Daten exportieren und speichern
Sichere das Ergebnis als JSON oder CSV:
import json
with open("products.json", "w") as f:
json.dump(product.model_dump(), f, indent=2)
Für den Weg nach Google Sheets eignet sich die Bibliothek gspread. Für Datenbanken serialisierst du in das ORM deiner Wahl. Geminis strukturierter Output ist sauber genug, um direkt in die meisten Downstream-Tools zu fließen.
Schritt für Schritt: Gemini Web Scraping ohne Code (mit Thunderbit)
Dieser Weg ist für Business-User – oder für Entwickler, die keine Wegwerf-Skripte tippen wollen.
Bevor du startest:
- Schwierigkeit: Anfänger
- Zeitbedarf: ca. 5 Minuten für den ersten Scrape
- Was du brauchst: Chrome-Browser, Thunderbit-Erweiterung (Free-Tier reicht)
Schritt 1: Thunderbit Chrome Extension installieren
Geh in den Chrome Web Store und klick auf „Zu Chrome hinzufügen". Melde dich mit deiner E-Mail an – das Ganze dauert keine Minute. Halt das gegen die 15 bis 30 Minuten Python-Setup von oben.
Schritt 2: Zielseite öffnen und auf „AI Suggest Fields" klicken
Ruf die Website auf, die du scrapen willst – eine Produktliste, ein Immobilienverzeichnis, eine Lead-Datenbank, was auch immer. Klick auf das Thunderbit-Symbol in der Browser-Leiste und anschließend auf „AI Suggest Fields".
Thunderbits KI liest die Seite und schlägt von sich aus Spaltennamen und Datentypen vor – etwa „Product Name", „Price", „Rating", „Image URL". Spaltennamen lassen sich anpassen, überflüssige Felder entfernen und pro Spalte eigene KI-Prompts ergänzen, zum Beispiel „als High/Medium/Low kategorisieren" oder „ins Deutsche übersetzen".
Vor dem eigentlichen Scraping siehst du eine Tabellenvorschau mit den konfigurierten Spalten.
Schritt 3: Auf „Scrape" klicken und Ergebnisse prüfen
Ein Klick genügt. Thunderbit übernimmt die Pagination – sowohl klassische „Next"-Buttons als auch Infinite Scroll – und überführt die Daten in eine strukturierte Tabelle. Zur Wahl stehen:
- Cloud Scraping: Schneller, verarbeitet bis zu 50 Seiten parallel. Funktioniert für öffentliche Seiten.
- Browser Scraping: Läuft im aktuell eingeloggten Browser-Tab. Ideal für Seiten mit Login-Pflicht (CRMs, geschützte Verzeichnisse, interne Tools).
Die Ergebnisse erscheinen direkt als Tabelle in der Seitenleiste der Erweiterung. Wirf vor dem Export einen Blick auf offensichtliche Fehler.
Schritt 4: Nach Excel, Google Sheets, Airtable oder Notion exportieren
Klick auf den Export-Button und wähl dein Zielformat. Thunderbit exportiert nach Excel, Google Sheets, Airtable und Notion – kostenlos und ohne Paywall. Bildfelder wandern direkt in die Bildbibliotheken von Notion und Airtable, was beim Scrapen von Produktfotos oder Profilbildern besonders praktisch ist.
Kein JSON-Parsen, kein Skripting. Die Daten sind sofort einsatzbereit.
Multi-Page- und Subpage-Scraping mit Gemini
Die meisten Tutorials enden klammheimlich nach einer einzigen URL. Echte Scraping-Jobs ticken anders.
500 Produktseiten mit Pagination und Detail-Unterseiten zu scrapen, ist eine handfeste Aufgabe – und zwischen einer Single-URL-Demo und dieser Realität klafft ein gewaltiger Graben.
Pagination mit der Gemini API handhaben (Code-Ansatz)
Bei Seiten-URLs mit Seitennummern (dem häufigsten Muster) loopst du durch die Seiten, bis ein leeres Ergebnis kommt:
import time
all_products = []
for page in range(1, 101): # bis zu 100 Seiten
url = f"https://example.com/products?page={page}"
md = fetch_clean(url) # deine HTML→Markdown-Funktion von oben
response = client.models.generate_content(
model="gemini-2.5-flash-lite", # günstig für Listing-Seiten
contents=f"Extrahiere Produktnamen und URLs:\n\n{md}",
config=types.GenerateContentConfig(
response_mime_type="application/json",
response_schema=list[ListingItem],
),
)
items = response.parsed
if not items:
break
all_products.extend(items)
time.sleep(4) # Free-Tier-Limits respektieren
Bei Cursor-basierten oder Infinite-Scroll-Seiten fängst du den XHR-Endpunkt ab, den das Frontend aufruft (im Network-Tab deines Browsers sichtbar), und loopst direkt über diesen Endpunkt. Das ist günstiger als jedes Mal neu zu rendern, und du schickst nur dann etwas an Gemini, wenn Felder per LLM bereinigt werden müssen.
Behalte hier die Token-Kosten im Auge – jede Seite treibt die Rechnung hoch. Setz Flash Lite für einfache Listing-Seiten ein und wechsle erst zur Detail-Extraktion auf Flash.
Subpages für reichhaltigere Daten scrapen (Code-Ansatz)
Das bewährte Zwei-Stufen-Muster: Stufe 1 zieht aus einer Listing-Seite die URLs, Stufe 2 besucht jede Detailseite für umfangreichere Daten.
# Stufe 1: URLs günstig mit Flash Lite einsammeln
class Listing(BaseModel):
product_urls: list[str]
listing = client.models.generate_content(
model="gemini-2.5-flash-lite",
contents=f"Extrahiere Produkt-URLs:\n{listing_md}",
config=types.GenerateContentConfig(
response_mime_type="application/json",
response_schema=Listing,
),
).parsed
# Stufe 2: Details mit Flash extrahieren
class ProductDetail(BaseModel):
name: str
price: str
specs: dict[str, str]
reviews: list[str]
for url in listing.product_urls:
md = fetch_clean(url)
detail = client.models.generate_content(
model="gemini-2.5-flash",
contents=f"Extrahiere Produktdetails:\n{md}",
config=types.GenerateContentConfig(
response_mime_type="application/json",
response_schema=ProductDetail,
),
).parsed
# detail speichern...
time.sleep(0.5)
Das funktioniert, ist aber jede Menge Infrastruktur: URL-Deduplizierung, Fehlerbehandlung, Rate-Limits, Retry-Logik und Caching für rohes HTML, damit Schema-Änderungen nicht alles neu crawlen. Bei 50 Seiten ist das überschaubar. Bei 5.000 baust du schon eine Plattform.
Die No-Code-Alternative: Integrierte Pagination und Subpage-Scraping mit Thunderbit
Thunderbit erledigt klickbasierte wie Infinite-Scroll-Pagination automatisch – ohne Schleifen-Skripte. Für die Subpage-Anreicherung steuert „Scrape Subpages" jede verlinkte Detailseite an und ergänzt die ursprüngliche Tabelle um tiefere Felder. Ein Klick statt eines Skripts.
Der Cloud-Scraping-Modus verarbeitet bis zu 50 Seiten gleichzeitig – ein spürbarer Vorteil bei Produktkatalogen oder Immobilienverzeichnissen größeren Umfangs. Wer sich Python-Schleifen und Retry-Logik sparen will, fährt damit pragmatisch. (Mehr dazu in unserem Leitfaden zum Scrapen von Daten aus Websites nach Excel.)
Screenshot-Scraping: Geminis multimodaler Shortcut
Jetzt ein Ansatz, den die meisten Tutorials komplett auslassen: Statt rohem HTML schickst du einen Screenshot einer Webseite an Geminis Vision-API. Ein Entwickler berichtete, dass ein einzelner Screenshot nur rund 258 Tokens kostet – gegenüber Tausenden selbst bei bereinigtem Markdown. Für einfache Extraktionen ist das ein gewaltiger Kostenunterschied.
So nutzt du Geminis Vision-API für Web Scraping
Erzeug mit Playwright einen Screenshot, kodier ihn und schick ihn an Gemini:
from playwright.sync_api import sync_playwright
from google import genai
from google.genai import types
from pydantic import BaseModel
class Product(BaseModel):
title: str
price: str
with sync_playwright() as p:
page = p.chromium.launch().new_page()
page.goto("https://example.com/product/widget-pro")
page.wait_for_load_state("networkidle")
png_bytes = page.screenshot(full_page=False) # nur der sichtbare Bereich
client = genai.Client()
resp = client.models.generate_content(
model="gemini-2.5-flash",
contents=[
{"inline_data": {"mime_type": "image/png", "data": png_bytes}},
"Extrahiere Produkttitel und Preis als JSON.",
],
config=types.GenerateContentConfig(
response_mime_type="application/json",
response_schema=Product,
),
)
print(resp.parsed)
Laut Googles Dokumentation zu Bild-Tokens kostet ein Bild, dessen beide Seiten höchstens 384 Pixel messen, 258 Tokens. Größere Bilder zerfallen in 768×768-Blöcke, jeder Block schlägt mit 258 Tokens zu Buche. Ein kurzer Screenshot oberhalb der Falz (258–1.600 Tokens) ist damit deutlich günstiger als rohes HTML – ein sehr hoher Full-Page-Screenshot (~5.000 Tokens) kann gegenüber sauberem Markdown (~765–1.200 Tokens) jedoch ins Hintertreffen geraten.
Grenzen des Screenshot-Scrapings
- Geringere Präzision bei dichten Tabellen: Mehrspaltige Layouts, kleine Schrift und überlappende Elemente führen zu Teilfehlern – keine Halluzinationen unbedingt, eher übersehene Labels und verrutschte Überschriften.
- Keine Links verfolgen: Vision liefert Text, aber keine klickbaren Anker. Keine Pagination, keine Subpage-Anreicherung.
- Auflösungsgrenze: Text unter etwa 10 px wird oft falsch gelesen. Google skaliert auf der längsten Kante auf rund 1.568 px herunter.
- Capture-Overhead: Playwright zu starten und auf
networkidlezu warten kostet pro Seite 2–5 Sekunden, was sich im großen Maßstab läppert.
Seine Stärken spielt Screenshot-Scraping bei stark JS-lastigen Seiten aus, bei Bot-geschützten Websites (wenn requests.get() einen 403 liefert, ein Browser die Seite aber normal rendert) und bei Seiten mit Daten in Diagrammen oder Bildern. Für lange, textlastige Seiten bleibt Markdown die bessere Wahl.
Thunderbits Bild- und PDF-Scraping setzt auf einen ähnlichen AI-Vision-Ansatz – du lädst schlicht ein Bild oder PDF hoch und bekommst eine strukturierte Tabelle, ganz ohne Screenshot-Skripte oder Base64-Umwege. (Siehe auch: Wie man Bilder in Excel umwandelt.)
Wann Gemini Web Scraping scheitert und was du stattdessen tun solltest
Gemini ist eine Extraktions-Engine, keine Fetching-Engine. Schaffst du den Seiteninhalt nicht zu Gemini, kann es dir nicht helfen. Ende.
Es gibt mehrere typische Szenarien, in denen der ganze Ansatz scheitert – und die meisten Tutorials erwähnen sie erst ganz zum Schluss. Ich nenne sie lieber sofort.
| Einschränkung | Was passiert | Gegenmaßnahme |
|---|---|---|
| Anti-Bot / Cloudflare | API-Anfragen werden blockiert; requests.get() liefert 403 oder eine Challenge-Seite | Proxies mit TLS-Fingerprint-Rotation nutzen oder browserbasierte Tools einsetzen (Thunderbits Browser-Scraping-Modus verwendet deine eingeloggte Sitzung) |
| Grenzen des Token-Fensters | Große Seiten sprengen den nutzbaren Kontext (~200K–300K für zuverlässige Extraktion, auch wenn technisch 1M unterstützt wird) | HTML→Markdown-Bereinigung, Seiten aufteilen oder Screenshots verwenden |
| Halluzinationen bei visuellen Inhalten | Gemini rät aus Alt-Text oder Captions statt den tatsächlichen Bildinhalten | Ausgaben validieren; für Bilddaten explizit die Vision-API nutzen; Grounding-Validatoren ergänzen |
| API-Rate-Limits | Bei hoher Last gedrosselt — Free-Tier liegt bei ca. 100 RPD für Pro und 1.000 RPD für Flash Lite | Warteschlangen, Batching (50 % Rabatt) oder vorgefertigte Tools verwenden |
| Inkonsistente Extraktion (Lite-Modelle) | Optionale Felder, Zeitstempel und verschachtelte Daten werden übersehen oder erfunden | Auf Flash/Pro upgraden oder explizite Schema-Constraints hinzufügen |
| Geschützte Seiten (LinkedIn usw.) | Liefert Fehler oder leere Daten | Browserbasiertes Scraping mit aktiver Sitzung (Thunderbit unterstützt das); Nutzungsbedingungen beachten |
Einige dieser Punkte verdienen etwas mehr Kontext.
Anti-Bot ist heute aktiv LLM-bewusst. Cloudflare blockiert KI-Crawler standardmäßig seit Juli 2025; in den ersten fünf Monaten wurden 416 Milliarden KI-Bot-Anfragen abgewehrt. Datadome führte 2025 LLM-spezifische Erkennung ein und stellte fest, dass sich der LLM-Bot-Traffic vervierfacht hat. Ein simples requests.get() plus Gemini hat gegen Datadome-geschützte Seiten praktisch keine Chance. Schuld ist der Fingerprint, nicht die IP – reines IP-Rotieren bringt nichts, wenn der TLS-Fingerprint laut „Python requests" schreit.
Halluzinationen sind heimtückisch. LLMs, die auf Hilfsbereitschaft getrimmt sind, füllen optionale Felder lieber mit plausiblen Erfindungen, als null zurückzugeben. Ich habe erlebt, wie Modelle die Marke eines Produkts aus dem URL-Slug ableiteten, die Währung aus der TLD erschlossen und plausible, aber falsche Bewertungszahlen aus Skeleton-Loadern fabrizierten. Die Gegenmittel: strikte Pydantic-Schemata, Retry-Schleifen mit Validierungsfeedback, Grounding-Validatoren, die prüfen, ob extrahierte Werte wirklich im Quell-HTML stehen, und Zwei-Pass-Extraktion (Flash extrahiert, Pro validiert eine Stichprobe).
Das 1M-Token-Fenster ist nicht wirklich bis 1M nutzbar. Forschung von Chroma und anderen zeigt, dass die Denkqualität schon weit vor dem formalen Token-Limit nachlässt. Für strukturierte Extraktion solltest du etwa 200K–300K Tokens als praktische Obergrenze ansetzen.
Entscheidungshilfe: Welches Tool solltest du verwenden?
- Wenig Volumen + einfache Seiten + Entwickler → Gemini API Free-Tier + Python
- Mittleres Volumen + komplexe Schemata + Entwickler → Gemini 2.5 Flash kostenpflichtig + Python + strukturierte Ausgabe + Vorverarbeitung
- Beliebiges Volumen + kein Entwickler + Login-Sperren oder viel Pagination → Thunderbit
- Sehr hohes Volumen + starker Anti-Bot-Schutz + geschäftskritisch → Verwaltete Scraping-Infrastruktur (Proxy-Dienste) + Gemini als Extraktionsschicht
Gemini Web Scraping: Tipps, um Zeit und Geld zu sparen
Ob du Python schreibst oder Buttons klickst – diese Hinweise ersparen dir reichlich Ärger.
- Wandle HTML immer zuerst in Markdown um, bevor es an Gemini geht. 5–10× Token-Ersparnis sind die Regel; mit zusätzlichem Vorsortieren per BeautifulSoup sind sogar 95 % drin.
- Nimm ausschließlich
google-genai. Das veraltete Paketgoogle-generativeaiist EOL – Finger weg. - Starte mit Flash Lite nur bei flachen Schemata. Wechsle sofort zu Flash, sobald Verschachtelung oder optionale Felder ins Spiel kommen.
- Vermeide
Field(default=...)in Pydantic-Schemata, die an Gemini gehen. Nutze stattdessen die Typdefinitionsku: str | None = None. - Pydantic +
response_schemaist der Dreh- und Angelpunkt – Vertrag und Halluzinationsschutz in einem. - Nutze die Batch API für Jobs mit über 1.000 Seiten – 50 % günstiger und ohne Last auf der Echtzeit-RPM.
- Prüfe eine zufällige Stichprobe von 10–50 Zeilen von Hand, bevor du einen neuen Extraktor hochskalierst. Genauigkeitsdrift bleibt sonst unsichtbar.
- Cache rohes HTML auf der Festplatte – Schema-Änderungen sollten keine erneuten Abrufe erzwingen.
- Speichere bei jeder Zeile die Quell-URL, damit du einzelne Seiten neu crawlen kannst, ohne den ganzen Job neu zu starten.
- Für No-Code-Nutzer: Setz auf benutzerdefinierte KI-Prompts pro Spalte in Thunderbit und verlager das Prompt Engineering auf Tabellenebene – übersetzen, kategorisieren, zusammenfassen direkt pro Spalte.
Und noch eines: Schick das Free-Tier nicht in die Produktion. Die Limits wurden im Dezember 2025 um 50–80 % gesenkt und könnten ohne Vorwarnung erneut schrumpfen.
Fazit
Der Abstand zwischen einer einzelnen Gemini-Demo-URL und einer produktionsreifen Pipeline ist größer, als die meisten Tutorials einen glauben machen.
Der Python-Weg über die Gemini API gibt Entwicklern die volle Kontrolle über Modellwahl, Vorverarbeitung, Pagination und Schema-Design. Der No-Code-Weg – mit Tools wie Thunderbit – beschert Business-Usern dieselbe strukturierte Extraktion, ganz ohne Terminal.
Das nehme ich für mich mit:
- Die Modellwahl entscheidet. Flash Lite für Masse, Flash für die Balance, Pro für Komplexität. Nimm nicht stur das billigste Modell und wundere dich dann über falsche Daten.
- Multi-Page- und Subpage-Scraping ist der Punkt, an dem Tutorials reihenweise scheitern – und genau dort steckt in der Praxis die eigentliche Arbeit. Beide Wege hier schließen diese Lücke.
- Ehrliche Grenzen sparen Zeit. Blockt eine Website API-Anfragen, hilft auch das beste Prompt Engineering nicht. Greif zum richtigen Werkzeug, nicht zum schicksten.
- HTML in Markdown umzuwandeln ist die Optimierung mit dem größten Hebel – sie drückt die Kosten um mehr als 75 % und reduziert Halluzinationen.
Reizt dich der No-Code-Weg, kannst du mit Thunderbits Free-Tier ein paar Seiten scrapen und dir die Ergebnisse selbst ansehen. Codest du lieber, reicht das kostenlose Gemini-API-Tier, um an einem Nachmittag eine Pipeline zu prototypen. So oder so kommst du deutlich schneller an strukturierte Daten, als Copy-Paste es je erlauben würde. Mehr zum Extrahieren von Daten aus Websites nach Excel oder zu den besten AI-Web-Scrapern findest du ebenfalls ausführlich in unserem Blog.
Thunderbit für AI Web Scraping testen Get Started Free
FAQs
Wie viel kostet Gemini für Web Scraping?
Die Gemini API bietet ein Free-Tier mit rund 100 Anfragen pro Tag für Pro, 500 für Flash und 1.000 für Flash Lite (Stand Anfang 2026 – diese Limits wurden im Dezember 2025 gesenkt). In der kostenpflichtigen Nutzung kostet das Scrapen von 10.000 Produktseiten ungefähr 1,50 $ mit Flash Lite, 6 $ mit Flash oder 25 $ mit Pro – vorausgesetzt, du wandelst HTML zuerst in Markdown um. Ohne Vorverarbeitung steigen die Kosten um das 4- bis 5-Fache. Die Batch API gewährt 50 % Rabatt für Jobs ohne Echtzeit-Anforderungen.
Kann Gemini Websites scrapen, die ein Login erfordern?
Die Gemini API allein kann sich nicht einloggen – sie verarbeitet nur den Inhalt, den du ihr schickst. Das HTML musst du selbst mit deiner authentifizierten Sitzung abrufen (etwa per Headless-Browser und gespeicherten Cookies). Thunderbits Browser-Scraping-Modus erledigt das nativ: Er läuft in deinem eingeloggten Chrome-Tab, sodass sich jede Website, die du im Browser siehst, auch von Thunderbit scrapen lässt.
Ist Gemini Web Scraping legal?
Die Rechtmäßigkeit hängt von den Nutzungsbedingungen der Website, der Art der Daten und deiner Jurisdiktion ab. In den USA gilt das Scrapen öffentlich zugänglicher Daten ohne Login nach hiQ v. LinkedIn und Meta v. Bright Data grundsätzlich als eher zulässig – jeder Fall liegt dennoch anders. Scraping hinter einem Login ist rechtlich heikler. Persönliche Daten von EU-Bürgern unterliegen unabhängig davon, ob die Seite öffentlich ist, der DSGVO. Beachte stets robots.txt und die Nutzungsbedingungen und verzichte ohne Rechtsgrundlage auf das Scraping personenbezogener Daten.
Kann ich Gemini für dynamische, stark JavaScript-lastige Seiten verwenden?
Ja, du musst das JavaScript aber zuerst rendern – entweder mit einem Headless-Browser (Playwright, Puppeteer) oder indem du direkt die API-Endpunkte der Website abfängst. Sobald das gerenderte HTML vorliegt, bereinigst du es und schickst es wie gewohnt an Gemini. Alternativ umgeht Screenshot-Scraping per Vision-API das JS-Rendering komplett – ist es im Browser sichtbar, kann Gemini es sehen. Thunderbit verarbeitet JS-gerenderte Seiten automatisch, sowohl im Cloud- als auch im Browser-Scraping-Modus.
Was ist der Unterschied zwischen Gemini als Scraping-Tool und einem spezialisierten Scraper wie Thunderbit?
Gemini ist eine Extraktions-Engine – es deutet Inhalte und gibt strukturierte Daten zurück. Es besucht keine Websites, kümmert sich nicht um Pagination, übernimmt keine Authentifizierung und exportiert nicht direkt in Tabellen. Du brauchst also weiterhin etwas, das den Seiteninhalt zu Gemini bringt, und etwas, das mit der Ausgabe weiterarbeitet. Spezialisierte Tools wie Thunderbit bündeln Abruf, Rendering, KI-Extraktion, Pagination, Subpage-Anreicherung und Export in einem Paket – ohne technischen Unterbau.
Mehr erfahren


