Amazon-Bewertungen mit Python scrapen: Der praktische Leitfaden für 2025

Zuletzt aktualisiert am August 21, 2026
Amazon-Bewertungen mit Python scrapen: Der praktische Leitfaden für 2025

Mein Amazon-Bewertungs-Scraper lief sechs Wochen lang ohne Probleme — bis er eines Morgens zwar 200 OK zurückgab, aber nur noch eine leere Seite. Kein Fehler, kein CAPTCHA, einfach nur leeres HTML genau dort, wo vorher Hunderte von Rezensionen standen.

Falls dir das bekannt vorkommt: Du bist nicht allein. Ende 2025 hat Amazon damit begonnen, seine kompletten Bewertungsseiten hinter eine Login-Schranke zu setzen, und unzählige Python-Skripte sind über Nacht kaputtgegangen. Ich habe in den letzten Monaten bei Thunderbit an diesem Problem von beiden Seiten gearbeitet — wir bauen unseren AI Scraper, und ich pflege gleichzeitig meine eigene Python-Pipeline für Bewertungen — deshalb wollte ich endlich den Leitfaden schreiben, den ich mir gewünscht hätte, als mein Skript zum ersten Mal nicht mehr funktionierte. Dieser Beitrag zeigt den Ansatz, der wirklich funktioniert: Cookie-basierte Authentifizierung, stabile Selektoren trotz Amazons CSS-Verschleierung, Workarounds für das 10-Seiten-Limit, Anti-Bot-Schutz und ein Bonus-Abschnitt zur Sentimentanalyse, der rohe Rezensionstexte in echte Business-Erkenntnisse verwandelt. Und falls du nach der Hälfte denkst: „Ehrlich gesagt habe ich keine Lust, diesen ganzen Code zu warten“, zeige ich dir auch, wie Thunderbit dieselbe Aufgabe in etwa zwei Minuten ganz ohne Python erledigt.

Was ist Amazon Review Scraping – und warum ist es wichtig?

Amazon Review Scraping bedeutet, Kundenbewertungen und dazugehörige Daten automatisiert aus Amazon-Produktseiten zu extrahieren — also Sternebewertungen, Rezensionstexte, Autorennamen, Daten, Verifizierungs-Badges und mehr. Seit Amazon die Bewertungsinhalte 2010 aus der Product Advertising API entfernt hat (und nie wieder zurückgebracht hat), ist Web Scraping der einzige programmatische Weg zu diesen Daten.

Die Zahlen sprechen für sich. 95 % der Käufer lesen vor dem Kauf Bewertungen, und 94 % nennen Amazon als ihre wichtigste Quelle für Produktbewertungen. Schon 5 angezeigte Rezensionen auf einer Produktseite können die Conversion um 270 % steigern. Unternehmen, die Bewertungen systematisch auf Sentiment analysieren, erreichen bis zu 15 % höhere Kundenbindung. Das ist keine abstrakte Data Science — das sind Wettbewerbsinformationen, Hinweise für Produktverbesserungen und Marketing-Sprache, alles offen lesbar auf Amazons Servern.

Warum Amazon-Bewertungen mit Python scrapen?

Python ist für diese Aufgabe nach wie vor die erste Wahl. Es ist die am meisten gewünschte Sprache im Stack Overflow Developer Survey 2024, und sein Ökosystem — requests, BeautifulSoup, pandas, Scrapy — macht Web Scraping auch für Menschen zugänglich, die nicht Vollzeit entwickeln.

Verschiedene Teams nutzen diese Daten auf unterschiedliche Weise:

TeamAnwendungsfallWas extrahiert wird
Produkt / R&DWiederkehrende Beschwerden erkennen, Prioritäten setzen1–2-Sterne-Rezensionen, Schlüsselworthäufigkeit
SalesKonkurrenz-Sentiment beobachtenBewertungen, Trends beim Rezensionsvolumen
MarketingKundenformulierungen für Werbetexte nutzenPositive Formulierungen, Feature-Erwähnungen
Ecommerce OpsSentiment der eigenen Produkte über die Zeit verfolgenSternverteilung, Anteil verifizierter Käufe
MarktforschungMarktführer nach Features vergleichenMulti-ASIN-Rezensionsdatensätze

Eine Küchenwarenmarke wertete negative Rezensionen aus und stellte fest, dass 22 % „die Antihaftbeschichtung nutzt sich ab“ erwähnten, überarbeitete das Produkt und eroberte innerhalb von 60 Tagen wieder Platz 1 der Bestseller-Rangliste. Ein Fitness-Tracker-Anbieter fand über Rezensionstexte „Reizungen durch das Band“, identifizierte ein Latexallergie-Problem, brachte eine hypoallergene Version heraus und senkte die Retouren um 40 %. Genau dieser ROI macht den technischen Aufwand lohnenswert.

Login-Schranke: Warum dein Amazon Review Scraper plötzlich nicht mehr funktioniert

Am 14. November 2024 begann Amazon damit, für die vollständige Produkt-Bewertungsseite eine Anmeldung zu verlangen. Die Änderung wurde in Community-Foren und von Scraping-Anbietern bestätigt. Wenn du /product-reviews/{ASIN}/ in einem Inkognito-Fenster aufrufst, landest du statt bei den Bewertungen auf einer Login-Seite.

python-web-scraping-diagram.webp

Die Symptome sind tückisch: Dein Skript erhält ein 200 OK, aber im HTML steht ein Login-Formular (name="email", id="ap_password") statt Rezensionen. Kein Fehlercode. Kein CAPTCHA. Einfach… nichts Brauchbares.

Amazon macht das aus Anti-Bot- und regionalen Compliance-Gründen. Die Durchsetzung ist inkonsistent — manchmal lädt ein frisches Browserfenster noch ein paar Rezensionen, bevor die Schranke greift, besonders auf der ersten Seite — aber für jeden Scraper im größeren Maßstab solltest du davon ausgehen, dass die Schranke immer aktiv ist.

Auch die einzelnen Amazon-Länderdomains (.de, .co.uk, .co.jp) setzen die Schranke jeweils unabhängig durch. Ein Forennutzer brachte es so auf den Punkt: „Für jedes Land ist ein eigener Login erforderlich.“ Deine .com-Cookies funktionieren also nicht auf .co.uk.

Featured Reviews vs. Full Reviews: Was ohne Login noch erreichbar ist

Amazon-Produktseiten (/dp/{ASIN}/) zeigen weiterhin ungefähr 8 „Featured Reviews“ ohne Authentifizierung an. Diese werden von Amazons Algorithmus ausgewählt und eignen sich für einen schnellen Sentiment-Check, sind aber weder sortierbar, noch filterbar, noch paginiert.

Die vollständigen Bewertungsseiten (/product-reviews/{ASIN}/) — mit Sortierung nach Neuheit, Filterung nach Sternebewertung und Seitennavigation über Hunderte von Rezensionen — erfordern einen Login.

Wenn du nur ein paar Bewertungen für einen kurzen Stimmungscheck brauchst, scrape die Produktseite. Für Hunderte oder Tausende brauchst du Authentifizierung.

Was du vor dem Start brauchst: Python-Setup und Libraries

Bevor wir Code schreiben, hier das Setup:

  • Schwierigkeit: Mittelstufe (Python-Kenntnisse, grundlegendes HTML-Verständnis)
  • Zeitaufwand: ca. 45 Minuten für die komplette Pipeline; ca. 10 Minuten für ein Basis-Scraping
  • Du brauchst: Python 3.8+, Chrome-Browser, ein gültiges Amazon-Konto

Installiere die Kernbibliotheken:

pip install requests beautifulsoup4 lxml pandas textblob

Optional (für fortgeschrittene Sentimentanalyse):

pip install transformers torch

Was ist eine ASIN? Das ist Amazons 10-stellige Produktkennung. Du findest sie in jeder Produkt-URL — zum Beispiel ist in amazon.com/dp/B0BCNKKZ91 die ASIN B0BCNKKZ91. Diese Kennung setzt du später in die Bewertungs-URL ein.

Schritt 1: Die Login-Schranke mit Cookie-basierter Authentifizierung umgehen

Der zuverlässigste Ansatz ist: In Amazon im Browser einloggen, die Session-Cookies kopieren und in deine Python-requests.Session() einfügen. So vermeidest du CAPTCHAs und SMS-2FA, die bei Selenium-basierten Login-Automationen häufig auftreten.

Du brauchst diese sieben Cookies:

Cookie-NameZweck
session-idRotierende Session-ID
session-id-timeZeitstempel der Session
session-tokenRotierendes Session-Token
ubid-mainNutzer-Browsing-Kennung
at-mainPrimäres Auth-Token
sess-at-mainSitzungsgebundene Authentifizierung
x-mainAn die E-Mail gebundene Kennung

So extrahierst du Cookies aus Chrome DevTools

  1. Logge dich in Chrome bei amazon.com ein
  2. Öffne DevTools (F12 oder Rechtsklick → Untersuchen)
  3. Gehe zu ApplicationStorageCookieshttps://www.amazon.com
  4. Suche die Cookie-Namen aus der Tabelle und kopiere die Werte
  5. Formatiere sie als durch Semikolons getrennte Zeichenkette für Python

Richte deine Session so ein:

import requests

session = requests.Session()

# Cookie-Werte hier einfügen
cookies = {
    "session-id": "YOUR_SESSION_ID",
    "session-id-time": "YOUR_SESSION_ID_TIME",
    "session-token": "YOUR_SESSION_TOKEN",
    "ubid-main": "YOUR_UBID_MAIN",
    "at-main": "YOUR_AT_MAIN",
    "sess-at-main": "YOUR_SESS_AT_MAIN",
    "x-main": "YOUR_X_MAIN",
}

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
    "Accept-Language": "en-US,en;q=0.5",
}

session.cookies.update(cookies)
session.headers.update(headers)

Wichtig: Verwende für alle Anfragen dasselbe session-Objekt. So bleiben die Cookies konsistent und das Verhalten ähnelt einem echten Browser. Cookies halten unter Scraping-Last oft Tage bis Wochen, aber wenn wieder Login-Weiterleitungen auftauchen, solltest du sie im Browser erneuern.

Für andere Amazon-Marktplätze als .com ändern sich die Cookie-Namen leicht — amazon.de nutzt at-acbde statt at-main, amazon.co.uk verwendet at-acbuk und so weiter. Jeder Marktplatz braucht seine eigene unabhängige Session.

Schritt 2: Die Anfrage bauen und Rezensionen mit BeautifulSoup parsen

Die Amazon-Bewertungs-URL folgt diesem Muster:

https://www.amazon.com/product-reviews/{ASIN}/ref=cm_cr_arp_d_viewopt_srt?sortBy=recent&pageNumber=1

Die Kernfunktion:

from bs4 import BeautifulSoup
import time, random

def get_soup(session, url):
    time.sleep(random.uniform(2, 5))  # Höfliche Pause
    response = session.get(url, timeout=15)

    # Login-Schranke erkennen
    if "ap_email" in response.text or "Amazon Sign-In" in response.text:
        raise Exception("Login-Schranke erkannt — bitte Cookies aktualisieren")

    if response.status_code != 200:
        raise Exception(f"HTTP {response.status_code}")

    return BeautifulSoup(response.text, "lxml")

Ein kleiner Trick, der hilft: Besuche vor der Bewertungsseite zuerst die Produktseite. Das erzeugt ein natürlicheres Browsing-Muster in deiner Session.

# Erst die Produktseite besuchen (wirkt wie normales Browsing)
product_url = f"https://www.amazon.com/dp/{asin}"
session.get(product_url, timeout=15)
time.sleep(random.uniform(1, 3))

# Dann die Bewertungsseite aufrufen
reviews_url = f"https://www.amazon.com/product-reviews/{asin}/ref=cm_cr_arp_d_viewopt_srt?sortBy=recent&pageNumber=1"
soup = get_soup(session, reviews_url)

Schritt 3: Stabile Selektoren verwenden, um Bewertungsdaten zu extrahieren (nicht auf CSS-Klassen verlassen)

Hier scheitern die meisten Tutorials aus 2022–2023. Amazon verschleiert CSS-Klassennamen — sie ändern sich regelmäßig, und wie ein frustrierter Entwickler in einem Forenbeitrag schrieb: „Keiner von ihnen hatte auch nur ein einziges Muster bei den Klassennamen der span-Tags.“

Die Lösung: Amazon nutzt für Bewertungselemente data-hook-Attribute, und die sind bemerkenswert stabil. Das sind semantische Kennungen, auf die der eigene Frontend-Code von Amazon angewiesen ist, deshalb werden sie nicht randomisiert.

BewertungsfeldStabiler Selektor (data-hook)Anfälliger Selektor (class)
Rezensionstext[data-hook="review-body"].review-text-content (ändert sich)
Sternebewertung[data-hook="review-star-rating"].a-icon-alt (mehrdeutig)
Rezensionstitel[data-hook="review-title"].review-title (manchmal)
Autorennamespan.a-profile-nameRelativ stabil
Rezensionsdatum[data-hook="review-date"].review-date (abhängig von der Region)
Verifizierter Kauf[data-hook="avp-badge"]span.a-size-mini

Der Extraktionscode mit data-hook-Selektoren:

import re

def extract_reviews(soup):
    reviews = []
    review_divs = soup.select('[data-hook="review"]')

    for div in review_divs:
        # Sternebewertung
        rating_el = div.select_one('[data-hook="review-star-rating"]')
        rating = None
        if rating_el:
            rating_text = rating_el.get_text(strip=True)
            match = re.search(r'(\d\.?\d?)', rating_text)
            if match:
                rating = float(match.group(1))

        # Titel
        title_el = div.select_one('[data-hook="review-title"]')
        title = title_el.get_text(strip=True) if title_el else ""

        # Text
        body_el = div.select_one('[data-hook="review-body"]')
        body = body_el.get_text(strip=True) if body_el else ""

        # Autor
        author_el = div.select_one('span.a-profile-name')
        author = author_el.get_text(strip=True) if author_el else ""

        # Datum und Land
        date_el = div.select_one('[data-hook="review-date"]')
        date_text = date_el.get_text(strip=True) if date_el else ""
        # Format: "Reviewed in the United States on January 15, 2025"
        country_match = re.search(r'Reviewed in (.+?) on', date_text)
        date_match = re.search(r'on (.+)$', date_text)
        country = country_match.group(1) if country_match else ""
        date = date_match.group(1) if date_match else ""

        # Verifizierter Kauf
        verified_el = div.select_one('[data-hook="avp-badge"]')
        verified = bool(verified_el)

        reviews.append({
            "author": author,
            "rating": rating,
            "title": title,
            "content": body,
            "date": date,
            "country": country,
            "verified": verified,
        })

    return reviews

Ich verwende diese Selektoren nun seit Monaten für mehrere ASINs, und die data-hook-Attribute haben sich kein einziges Mal geändert. Die CSS-Klassen dagegen wurden im selben Zeitraum mindestens zweimal ausgetauscht.

Schritt 4: Pagination behandeln und Amazons 10-Seiten-Limit umgehen

Amazon begrenzt den Parameter pageNumber auf 10 Seiten mit jeweils 10 Rezensionen — also ein hartes Limit von etwa 100 Bewertungen pro Filterkombination. Der „Nächste Seite“-Button verschwindet nach Seite 10 einfach.

Einfache Pagination-Schleife:

all_reviews = []

for page in range(1, 11):
    url = f"https://www.amazon.com/product-reviews/{asin}/ref=cm_cr_arp_d_viewopt_srt?sortBy=recent&pageNumber={page}"
    soup = get_soup(session, url)
    page_reviews = extract_reviews(soup)

    if not page_reviews:
        break  # Keine weiteren Bewertungen auf dieser Seite

    all_reviews.extend(page_reviews)
    print(f"Seite {page}: {len(page_reviews)} Bewertungen")

Wie du mehr als 10 Seiten Amazon-Bewertungen abrufst

Der Workaround ist das Bucketing über Filter. Jede Kombination aus filterByStar und sortBy erhält ihr eigenes unabhängiges 10-Seiten-Fenster.

Stern-Filterwerte: one_star, two_star, three_star, four_star, five_star
Sortierwerte: recent, helpful (Standard)

Wenn du alle 5 Sternfilter × 2 Sortierungen kombinierst, kannst du bis zu 100 Seiten, also 1.000 Bewertungen pro Produkt, erreichen — und bei Produkten mit ungleichmäßiger Sterneverteilung kommst du oft ziemlich nah an den vollständigen Datensatz heran.

star_filters = ["one_star", "two_star", "three_star", "four_star", "five_star"]
sort_orders = ["recent", "helpful"]
all_reviews = []
seen_titles = set()  # Einfache Duplikaterkennung

for star in star_filters:
    for sort in sort_orders:
        for page in range(1, 11):
            url = (
                f"https://www.amazon.com/product-reviews/{asin}"
                f"?filterByStar={star}&sortBy={sort}&pageNumber={page}"
            )
            soup = get_soup(session, url)
            page_reviews = extract_reviews(soup)

            if not page_reviews:
                break

            for review in page_reviews:
                # Duplikate über Titel + Autor erkennen
                key = (review["title"], review["author"])
                if key not in seen_titles:
                    seen_titles.add(key)
                    all_reviews.append(review)

            print(f"[{star}/{sort}] Seite {page}: {len(page_reviews)} Bewertungen")

print(f"Gesamtzahl einzigartiger Bewertungen: {len(all_reviews)}")

Zwischen den Buckets gibt es Überschneidungen, daher ist Duplikaterkennung wichtig. Ich nutze dafür schnell und pragmatisch eine Kombination aus Rezensionstitel + Autorenname — nicht perfekt, aber sie fängt den Großteil der Duplikate ab.

Schritt 5: Anti-Bot-Schutz umgehen (Rotieren, drosseln, wiederholen)

Amazon verwendet AWS WAF Bot Control, und das System ist deutlich aggressiver geworden. Einfache Gegenmaßnahmen auf nur einer Ebene — etwa nur User-Agents wechseln oder nur Verzögerungen einbauen — reichen nicht mehr aus.

TechnikUmsetzung
Rotierende User-AgentsZufällige Auswahl aus 10+ echten Browser-Strings
Exponentielles Backoff2s → 4s → 8s Retry-Verzögerung bei 503s
Request-Throttlingrandom.uniform(2, 5) Sekunden zwischen Seiten
Proxy-RotationResidential Proxies im Wechsel
Session-FingerprintKonsistente Cookies + Header pro Session
TLS-EmulationFür Produktion curl_cffi statt Standard-requests verwenden

Ein produktionsreifer Retry-Wrapper:

import time, random

USER_AGENTS = [
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36",
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 15_7_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Safari/605.1.15",
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36",
]

def scrape_with_retries(session, url, max_retries=3):
    for attempt in range(max_retries):
        try:
            session.headers["User-Agent"] = random.choice(USER_AGENTS)
            time.sleep(random.uniform(2, 5))

            response = session.get(url, timeout=15)

            # Blockierungen erkennen
            if "validateCaptcha" in response.url or "Robot Check" in response.text:
                wait = (2 ** attempt) * 5
                print(f"CAPTCHA erkannt. Warte {wait}s...")
                time.sleep(wait)
                continue

            if response.status_code in (429, 503):
                wait = (2 ** attempt) * 2
                print(f"Rate-Limit ({response.status_code}). Warte {wait}s...")
                time.sleep(wait)
                continue

            if "ap_email" in response.text:
                raise Exception("Login-Schranke — Cookies sind abgelaufen")

            return BeautifulSoup(response.text, "lxml")

        except Exception as e:
            if attempt == max_retries - 1:
                raise
            print(f"Versuch {attempt + 1} fehlgeschlagen: {e}")

    return None

Ein Hinweis zu Proxies: Amazon blockiert bekannte Rechenzentrums-IP-Bereiche (AWS, GCP, Azure, DigitalOcean) bereits auf Netzwerkebene. Wenn du mehr als ein paar Hundert Seiten scrapst, sind Residential Proxies praktisch Pflicht — rechne je nach Volumen mit 50–200+ US-Dollar pro Monat. Für kleinere Projekte (unter 100 Requests/Tag) funktioniert vorsichtiges Throttling von deiner Heim-IP oft völlig ausreichend.

Amazon prüft außerdem TLS-Fingerprints. Das Standard-requests-Paket von Python hat einen bekannten JA3-Hash, den WAFs oft vorab blockieren. Für produktive Scraper solltest du curl_cffi in Betracht ziehen, weil es echte Browser-TLS-Stacks emuliert. Für Scraping im Tutorial-Umfang (ein paar Hundert Seiten) reicht requests mit guten Headern meistens aus.

Schritt 6: Deine Amazon-Bewertungen als CSV oder Excel exportieren

Sobald du die Bewertungen gesammelt hast, ist der Export in ein nutzbares Format mit pandas ganz einfach:

import pandas as pd

df = pd.DataFrame(all_reviews)
df.to_csv("amazon_reviews.csv", index=False)
print(f"{len(df)} Bewertungen nach amazon_reviews.csv exportiert")

Beispielausgabe:

authorratingtitlecontentdatecountryverified
Sarah M.5.0Bester Kauf des JahresDer Akku hält den ganzen Tag, das Display ist wunderschön...January 15, 2025the United StatesTrue
Mike T.2.0Nach 2 Wochen enttäuschtDer Ladeanschluss hat aufgehört zu funktionieren...February 3, 2025the United StatesTrue
Priya K.4.0Gutes Preis-Leistungs-VerhältnisMacht alles, was ich brauche, nur bei schweren Apps etwas langsam...March 10, 2025the United StatesFalse

Für den Excel-Export: df.to_excel("amazon_reviews.xlsx", index=False) (benötigt openpyxl).

Für Google Sheets funktioniert die Bibliothek gspread, erfordert aber 8+ Schritte Google-Cloud-Konfiguration — Projekt anlegen, zwei APIs aktivieren, Service-Account-Zugangsdaten erstellen, Tabelle freigeben. Wenn sich das nach mehr Aufwand anhört als das eigentliche Scraping, liegst du nicht falsch. (Genau an solchen Punkten wirkt ein Tool wie Thunderbit, das mit einem Klick nach Google Sheets exportiert, plötzlich sehr attraktiv.)

Bonus: In 5 Zeilen Python eine Sentimentanalyse auf deine Bewertungen anwenden

Die meisten Scraping-Tutorials enden beim CSV-Export. Aber erst die Sentimentbewertung macht aus Rohdaten echte Geschäftsentscheidungen.

Die schnellste Basislösung nutzt TextBlob:

from textblob import TextBlob

df["sentiment"] = df["content"].apply(lambda x: TextBlob(str(x)).sentiment.polarity)

Das ergibt für jede Bewertung einen Polaritätswert von -1.0 (sehr negativ) bis +1.0 (sehr positiv). Beispielausgabe:

content (gekürzt)ratingsentiment
"Battery lasts all day, screen is gorgeous..."5.00.65
"The charging port stopped working after..."2.0-0.40
"Does everything I need, minor lag on..."4.00.25
"Absolute garbage. Returned immediately."1.0-0.75
"It's okay. Nothing special but works."3.00.10

Spannend sind die Abweichungen — etwa eine 3-Sterne-Bewertung mit positivem Ton oder eine 5-Sterne-Bewertung mit negativer Wortwahl. Solche Unterschiede zeigen oft feinere Kundenmeinungen, die Sterne allein nicht erfassen.

ai-review-analysis.webp

Für produktionsreife Genauigkeit empfehle ich Hugging Face Transformers. VADER wurde auf Tweets trainiert, nicht auf Produktbewertungen, und Transformer-Modelle erreichen über 98 % Genauigkeit bei der Klassifikation von Reviews — deutlich besser als lexikonbasierte Tools. Das Modell nlptown/bert-base-multilingual-uncased-sentiment kann sogar direkt 1–5 Sterne vorhersagen:

from transformers import pipeline

clf = pipeline("sentiment-analysis",
               model="nlptown/bert-base-multilingual-uncased-sentiment")
df["predicted_stars"] = df["content"].apply(
    lambda x: int(clf(str(x)[:512])[0]["label"][0])
)

Amazon-Bewertungen folgen einer J-förmigen Verteilung — ein starker Peak bei 5 Sternen, ein kleinerer bei 1 Stern und ein Tal in der Mitte. Deshalb ist der Durchschnittswert oft ein schlechter Indikator für die tatsächliche Produktqualität. Segmentiere den 1-Stern-Cluster und suche nach wiederkehrenden Mustern — dort steckt meist der eine behebbare Defekt.

Die ehrliche Abwägung: DIY-Python vs. kostenpflichtige Scraping-APIs vs. Thunderbit

Ich habe Python-Scraper für Amazon gepflegt, und ich sage es offen: Sie brechen. Selektoren ändern sich, Cookies laufen ab, Amazon rollt eine neue Bot-Erkennung aus, und plötzlich verbringst du deinen Samstagmorgen mit Debugging statt Datenanalyse. Auch in Foren berichten Nutzer über dieselbe Frustration — DIY-Skripte, die „letzten Monat noch funktioniert haben“, brauchen nun ständig Nachbesserungen.

So schneiden die drei Hauptansätze ab:

KriteriumDIY Python (BS4/Selenium)Paid Scraping APIThunderbit (No-Code)
Einrichtungszeit1–3 Stunden30 Min. (API-Key)2 Minuten
KostenKostenlos (+ Proxy-Kosten)50–200+ $/MonatFreier Tarif verfügbar
Login-SchrankeManuelles Cookie-ManagementMeist gelöstAutomatisch gelöst
WartungHoch (Selektoren brechen)Niedrig (Anbieter wartet)Keine (AI passt sich an)
PaginationEigener Code nötigIntegriertIntegriert
Multi-Länder-SupportSeparate Sessions pro DomainMeist unterstütztBrowserbasiert = dein Locale
SentimentanalyseEigenen Code hinzufügenTeilweise enthaltenNach Excel/Sheets exportieren, überall analysieren
Am besten fürLernen, volle KontrolleSkalierung/ProduktionspipelinesSchnelle Datenzüge, Non-Dev-Teams

Python gibt dir maximale Kontrolle und ist tatsächlich der beste Weg, um Web Scraping im Inneren zu verstehen. Bezahlte APIs (ScrapingBee, Oxylabs, Bright Data) lohnen sich für Produktionspipelines, bei denen Verfügbarkeit wichtiger ist als Kosten. Und für Teams, die Bewertungsdaten ohne Entwicklungsaufwand brauchen — etwa Ecommerce-Teams, die wöchentlich Wettbewerber beobachten, oder Marketing-Teams, die Kundensprache für Anzeigen sammeln — gibt es einen dritten Weg.

Amazon-Bewertungen mit Thunderbit scrapen (ohne Code, ohne Wartung)

Wir haben Thunderbit genau für die Fälle gebaut, in denen ein Python-Scraper zu aufwendig wird. Der Ablauf sieht so aus:

  1. Installiere die Thunderbit Chrome Extension
  2. Öffne die Amazon-Produktbewertungsseite in deinem Browser (du bist bereits eingeloggt, also ist die Login-Schranke kein Thema)
  3. Klicke auf „AI Suggest Fields“ — Thunderbit liest die Seite und schlägt Spalten wie Autor, Bewertung, Titel, Rezensionstext, Datum und Verifizierter Kauf vor
  4. Klicke auf „Scrape“ — die Daten werden sofort extrahiert, inklusive integrierter Pagination
  5. Exportiere nach Excel, Google Sheets, Airtable oder Notion

Der größte Vorteil: Die KI von Thunderbit liest die Seitenstruktur jedes Mal frisch ein. Keine CSS-Selektoren, die gewartet werden müssen, kein Cookie-Management, kein Anti-Bot-Code. Wenn Amazon sein HTML ändert, passt sich die KI an. Für Leser, die programmatischen Zugriff ohne komplettes Do-it-yourself wollen, bietet Thunderbit außerdem eine Extract API — strukturierte Datenerfassung per API mit KI-gestützter Felderkennung, ganz ohne Selektorpflege.

Für tiefere Einblicke in Amazon-Daten siehe auch unsere Anleitungen zu Amazon-Produkten und -Bewertungen scrapen und Amazon-Verkaufsdaten extrahieren und analysieren.

Tipps für das Scrapen von Amazon-Bewertungen im großen Maßstab mit Python

Wenn du Bewertungen über viele ASINs hinweg scrapen willst, helfen dir ein paar Gewohnheiten, Kopfschmerzen zu vermeiden:

  • Batch deine ASINs und baue Pausen zwischen den Produkten ein, nicht nur zwischen den Seiten. Ich verwende 10–15 Sekunden Pause zwischen ASINs.
  • Dedupliziere aggressiv. Wenn du mehrere Sternfilter- und Sortierkombinationen zusammenführst, gibt es Überschneidungen. Nutze ein Set aus (title, author, date)-Tupeln als Deduplikationsschlüssel.
  • Protokolliere Fehler. Halte fest, welche ASIN-/Seiten-/Filterkombinationen fehlgeschlagen sind, damit du sie später gezielt neu versuchen kannst.
  • Speichere große Projekte in einer Datenbank. Eine einfache SQLite-Datenbank skaliert deutlich besser als immer weiter wachsende CSV-Dateien:
import sqlite3

conn = sqlite3.connect("reviews.db")
df.to_sql("reviews", conn, if_exists="append", index=False)
  • Plane wiederkehrende Scrapes. Für laufendes Monitoring kannst du einen Cronjob einrichten oder Thunebit’s Scheduled Scraper nutzen — URL und Zeitplan beschreiben, und der Rest läuft ohne Server.

Weitere Ansätze findest du in unseren Beiträgen zu den besten automatisierten Web-Scraping-Tools und Daten von Websites nach Excel scrapen.

Ein kurzer Hinweis zu rechtlichen und ethischen Fragen

Amazons Nutzungsbedingungen verbieten ausdrücklich „die Verwendung von Robotern, Spider, Scraper oder anderen automatisierten Mitteln, um auf Amazon Services zuzugreifen“. Gleichzeitig war die jüngere US-Rechtsprechung für Scraper öffentlich zugänglicher Daten eher günstig. In Meta Platforms v. Bright Data (Januar 2024) entschied ein Bundesgericht, dass das Scraping öffentlich zugänglicher Daten nicht gegen die Nutzungsbedingungen verstößt, wenn der Scraper kein eingeloggter „User“ ist.

Die Feinheit: Scraping hinter einem Login — genau das behandelt dieses Tutorial — bewegt sich im Vertragsrecht, weil du Amazons Nutzungsbedingungen beim Erstellen deines Kontos akzeptiert hast. Öffentlich sichtbare Featured Reviews zu scrapen ist rechtlich weniger heikel als Scraping hinter der Login-Schranke.

Praktische Leitlinien: Veröffentliche gescrapte Daten nicht kommerziell weiter, scrape keine personenbezogenen Daten über das öffentlich Sichtbare hinaus, beachte robots.txt und hole dir bei größeren oder kommerziellen Projekten rechtlichen Rat. Das ist keine Rechtsberatung. Mehr zum rechtlichen Umfeld findest du in unserem Überblick zu rechtlichen Implikationen von Web Scraping.

Fazit: Amazon-Bewertungen mit Python scrapen oder den Code ganz überspringen

Kurze Zusammenfassung dessen, was dieser Leitfaden behandelt hat:

  • Die Login-Schranke ist real, aber mit Cookie-basierter Authentifizierung lösbar — kopiere 7 Cookies aus deinem Browser und füge sie in eine requests.Session() ein
  • Verwende data-hook-Selektoren statt CSS-Klassen, damit das Extrahieren nicht alle paar Wochen kaputtgeht
  • Kombiniere Sternfilter und Sortieroptionen, um das 10-Seiten-Limit zu umgehen und über 500 Bewertungen pro Produkt zu erreichen
  • Ergänze die Daten mit Sentimentanalyse via TextBlob für einen schnellen Einstieg oder Hugging Face Transformers für produktionsreife Genauigkeit
  • Pflege Anti-Bot-Schutz: Throttling, User-Agent-Rotation, exponentielles Backoff und Residential Proxies für größere Skalen

Python gibt dir volle Kontrolle und ist der beste Weg, um zu verstehen, was unter der Haube passiert. Aber wenn dein Use Case eher lautet: „Ich brauche bis Freitag Wettbewerber-Bewertungsdaten in einer Tabelle“ statt „Ich will eine Produktionsdaten-Pipeline bauen“, dann ist der Wartungsaufwand eines eigenen Scrapers vielleicht nicht gerechtfertigt.

Thunderbit übernimmt Authentifizierung, Selektoren, Pagination und Export per Klick — probiere den Free-Tier aus und schau, ob er zu deinem Workflow passt. Während Amazon seine Anti-Bot-Maßnahmen weiter verschärft, werden KI-gestützte Tools, die sich in Echtzeit anpassen, immer weniger ein Nice-to-have und immer mehr eine Notwendigkeit.

Du kannst auch unseren Thunderbit YouTube-Kanal für Video-Anleitungen zu Scraping-Workflows ansehen.

FAQs

1. Kann man Amazon-Bewertungen ohne Login scrapen?

Ja, aber nur die etwa 8 „Featured Reviews“, die auf der Produktdetailseite (/dp/{ASIN}/) angezeigt werden. Die vollständigen Bewertungsseiten mit Sortierung, Filtern und Pagination erfordern seit Ende 2024 eine Authentifizierung. Für die meisten Business-Anwendungen musst du also die Login-Schranke umgehen.

2. Ist das Scrapen von Amazon-Bewertungen legal?

Amazons Nutzungsbedingungen verbieten automatisiertes Scraping. Jüngere US-Rechtsprechung (Meta v. Bright Data, 2024; hiQ v. LinkedIn) stützt jedoch das Scraping öffentlich zugänglicher Daten. Scraping hinter einem Login ist rechtlich riskanter, da du Amazons ToS bereits zugestimmt hast. Für kommerzielle Nutzung solltest du juristischen Rat einholen.

3. Wie viele Amazon-Bewertungen kann ich pro Produkt scrapen?

Amazon begrenzt Bewertungsseiten auf 10 pro Sortier- und Sternfilter-Kombination. Mit allen 5 Sternfiltern × 2 Sortierungen kannst du bis zu 100 Seiten (also ungefähr 1.000 Bewertungen) pro Produkt abrufen. Mit Keyword-Filtern liegt die theoretische Obergrenze deutlich höher, allerdings auch mit erheblichen Überschneidungen.

4. Welche Python-Bibliothek eignet sich am besten für Amazon Review Scraping?

requests + BeautifulSoup für das Parsen statischer HTML-Seiten ist die gebräuchlichste und zuverlässigste Kombination. Selenium ist hilfreich, wenn JavaScript-Rendering nötig ist. Für eine No-Code-Alternative, die Login-Schranken und Pagination automatisch übernimmt, probiere Thunderbit.

5. Wie vermeide ich Blockierungen beim Scraping von Amazon?

Wechsle User-Agent-Strings aus einem Pool von 10+ echten Browser-Strings aus, füge zufällige Pausen von 2–5 Sekunden zwischen den Requests ein, implementiere exponentielles Backoff bei 503/429-Fehlern, nutze für größere Mengen Residential Proxies (Rechenzentrums-IP-Bereiche werden oft vorab blockiert) und halte die Session-Cookies konsistent. Für einen wartungsfreien Ansatz übernimmt Thunderbit den Anti-Bot-Schutz automatisch über deine Browser-Session.

Mehr erfahren

Fawad Khan
Fawad Khan
Fawad verdient seinen Lebensunterhalt mit Schreiben und liebt es ehrlich gesagt ziemlich. Seit Jahren beschäftigt er sich damit, was gute Texte einprägsam macht – und was dazu führt, dass Leser einfach weiterscrollen. Frag ihn nach Marketing, und er redet stundenlang. Frag ihn nach Carbonara, und er redet noch länger.
Inhaltsverzeichnis
Thunderbit · KI-Web-Daten-Agent

Daten von jeder Seite in 1 Klick extrahieren

Vertraut von über 250.000 Nutzern
kostenloser Plan verfügbar
Von der Webseite zur Tabelle
Beschreibe einfach, was du brauchst — Thunderbits KI-Agent erfasst es und exportiert es nach Excel, Google Sheets, Airtable oder Notion. Kostenlos loslegen.
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week