App Store & Google Play Bewertungen scrapen: Endpunkte, Begrenzungen, Geo

App-Bewertungen sind die günstigste Produktforschung, die Sie kaufen können - wenn Sie die Paginierungsbegrenzungen, Token-Barrieren und länderspezifischen Storefronts überwinden können. Hier ist die gesamte Karte.

App-Bewertungen sind die günstigste Kundenforschung: ungefilterte Funktionsanfragen, Bug-Reports, die an eine bestimmte Version gebunden sind, und eine laufende Stimmungsanalyse für jeden Konkurrenten in Ihrer Kategorie. Der Haken ist der Zugang. Beide Stores zeigen nur eine Handvoll Bewertungen auf der Seite und verstecken den Rest hinter Feeds, Tokens und länderspezifischen Storefronts. Dieser Leitfaden zeigt, wie man App Store und Google Play Bewertungen scrapen kann - die echten Endpunkte, die Paginierungsbegrenzungen, über die niemand spricht, und die Geo- und Ratenbegrenzungsrealitäten, die entscheiden, ob Ihre Pipeline über ein paar hundert Zeilen hinaus überlebt.

Apple, der einfache Weg: der RSS-Feed

Apple bietet einen öffentlichen JSON-Feed von Kundenbewertungen, der kein Token benötigt. Es ist der schnellste Weg, um zu starten, und liefert saubere, strukturierte Datensätze - Bewertung, Titel, Text, Autor, App-Version. Die Einschränkung ist eine harte Obergrenze: Der Feed liefert maximal 10 Seiten mit etwa 50 Bewertungen, also etwa 500 Bewertungen pro App und Storefront, die zu den neuesten tendieren. Für das Monitoring von frischem Feedback reicht das oft aus; für eine vollständige Historie nicht.

import requests

def apple_rss_reviews(app_id, country="us", pages=10):
    out = []
    for page in range(1, pages + 1):  # feed caps out around page 10
        url = (f"https://itunes.apple.com/{country}/rss/customerreviews/"
               f"page={page}/id={app_id}/sortby=mostrecent/json")
        # route through a residential exit in the target storefront's country
        proxy = f"http://USER-country-{country}:PASS@gate.quantumproxies.io:8000"
        r = requests.get(url, proxies={"https": proxy}, timeout=20)
        entries = r.json().get("feed", {}).get("entry", [])
        for e in entries[1:]:  # first entry is app metadata, skip it
            out.append({
                "rating":  e["im:rating"]["label"],
                "version": e["im:version"]["label"],
                "title":   e["title"]["label"],
                "text":    e["content"]["label"],
                "author":  e["author"]["name"]["label"],
            })
        if len(entries) <= 1:
            break
    return out

Apple, der tiefe Weg: die App-Store API und ihr Token

Um über 500 hinauszugehen, nutzen Sie denselben Endpunkt, den die App Store-Webseite aufruft (die AMP / MZStore API). Sie liefert reichhaltigere Datensätze - Bewertungs-ID, Bearbeitungsflag, Entwicklerantworten - erfordert jedoch ein Bearer-Token, das Sie zuerst von der öffentlichen Webseite der App scrapen und dann wiedergeben. Bewertungen kommen in Chargen von etwa zwanzig, und Sie paginieren tiefer mit einem offset; je größer der Offset, desto älter sind die Bewertungen, da Apple diesen Endpunkt nicht direkt nach Datum sortieren lässt.

Die eigentliche Einschränkung hier ist die Ratenbegrenzung, und sie tritt schnell von einer einzelnen IP aus auf. Die Lösung ist kein Zauber - es ist eine bewusste Verzögerung plus exponentielles Backoff und das Verteilen von Anfragen über IPs. Praktiker, die beides hinzufügen, haben etwa 15.000 Bewertungen für eine App abgerufen, ohne den Begrenzer auszulösen. Genau hier zahlt sich ein rotierender Wohnpool aus: Jede Charge kann von einer anderen sauberen IP ausgehen, sodass der Zähler pro IP nie in den Blockbereich steigt.

import time, requests

# token is scraped once from the app's App Store web page, then reused
HEADERS = {"Authorization": "Bearer TOKEN_FROM_APP_PAGE",
           "Origin": "https://apps.apple.com"}

def apple_deep_reviews(app_id, country="us", target=2000):
    reviews, offset = [], None
    while len(reviews) < target:
        params = {"l": "en-US", "offset": offset} if offset else {"l": "en-US"}
        url = (f"https://amp-api.apps.apple.com/v1/catalog/{country}/apps/"
               f"{app_id}/reviews")
        proxy = f"http://USER:PASS@rotating.quantumproxies.io:8000"
        r = requests.get(url, headers=HEADERS, params=params,
                         proxies={"https": proxy}, timeout=25)
        if r.status_code == 429:            # rate limited
            time.sleep(8); continue          # back off, gateway rotates the IP
        data = r.json()
        reviews += data.get("data", [])
        offset = data.get("next", "").split("offset=")[-1] or None
        if not offset:
            break
        time.sleep(1.5)                      # be a polite client
    return reviews
Vergleich von Apples RSS-Kundenbewertungs-Feed mit der AMP App-Store API, die Paginierungsbegrenzungen und Token-Anforderungen zeigt
Der RSS-Feed ist schnell, aber auf ~500 begrenzt; die Token-API geht tief, aber begrenzt hart von einer IP aus.

Google Play: Hydriertes JSON, kein HTML

Play-Bewertungen befinden sich nicht im HTML der Seite. Der Store lädt sie über einen internen Batch-Endpunkt, der verschachteltes JSON zurückgibt, paginiert mit einem Fortsetzungstoken anstelle von Seitennummern und gefiltert nach Sortierreihenfolge (neueste, Bewertung, Nützlichkeit). Diese Anfragen manuell zu rekonstruieren ist knifflig, daher verlassen sich die meisten Teams auf die gut gepflegten Open-Source-google-play-scraper-Bibliotheken (Node und Python), die den Endpunkt umschließen und country und lang Parameter bereitstellen. Wie bei Apple unterscheiden sich die Ergebnisse je nach Land, daher sollten beide explizit gesetzt werden.

# pip install google-play-scraper
from google_play_scraper import reviews, Sort

result, token = reviews(
    "com.example.app",
    lang="en",       # review language
    country="us",    # storefront
    sort=Sort.NEWEST,
    count=200,       # per call; loop with continuation_token for more
)
for r in result[:3]:
    print(r["score"], r["reviewCreatedVersion"], r["content"][:80])

Bei echtem Volumen drosselt der Play-Endpunkt auch nach IP, und die JSON-Struktur ändert sich regelmäßig. Wenn Sie diese Wartung nicht selbst übernehmen möchten, entfernt eine Scraper API, die die hydrierten Daten als sauberes JSON rendert und zurückgibt, beide Probleme - sie übernimmt das Proxying und das Parsen, sodass Sie eine stabile Form konsumieren. Die gleiche Abwägungslogik, die wir für das Scrapen von Produktbewertungen im großen Stil beschreiben, gilt direkt hier.

Ein Feldpaar bringt die Leute durcheinander: Sprache und Land sind nicht dasselbe. Die Storefront (Land) entscheidet, welche Bewertungen überhaupt existieren; der Sprachparameter entscheidet, welche davon Sie zurückbekommen. In einem zweisprachigen Markt wie Kanada oder der Schweiz möchten Sie oft beide Sprachen, also setzen Sie sie unabhängig voneinander, anstatt anzunehmen, dass ein Land eine einzige Sprache impliziert. Auf Apples Seite zeigen die reicheren Datensätze auch Entwicklerantworten - die öffentliche Antwort, die ein Anbieter unter einer Bewertung postet - was ein stillschweigend wertvolles Signal dafür ist, wie Konkurrenten Beschwerden priorisieren und welche Probleme sie öffentlich beantworten.

Geo-Storefronts sind der ganze Punkt

Beide Stores sind nach Länder-Storefronts organisiert, die durch einen zweibuchstabigen Code gekennzeichnet sind. Die US-Bewertungen einer App sagen Ihnen nichts darüber, wie sie in Deutschland, Japan oder Brasilien ankommt - unterschiedliche Sprachen, unterschiedliche Beschwerden, unterschiedliche Funktionslücken. Um jede Storefront ehrlich zu lesen, fordern Sie von einer Exit-IP in diesem Land an; eine Rechenzentrums-IP in der falschen Region liefert Ihnen eine inkonsistente oder blockierte Antwort. Mit Wohn-Exits in über 200 Ländern können Sie dieselbe App durch jeden Markt schleifen und eine länderspezifische Stimmungslandkarte erstellen - das Rohmaterial ernsthafter ASO-Arbeit.

Pipeline vom Auswählen der Storefronts über das Abrufen von Bewertungen bis zum App-Store-Optimierungssignal
Der Wert liegt im Nachhinein: Bewertung und Version analysieren, dann Bewertungen in Themen und versionsspezifische Regressionen zusammenfassen.

Von Bewertungen zum ASO-Signal

Die Extraktion ist die langweilige Hälfte. Der Gewinn liegt in dem, was Sie darauf aufbauen: Bewertungstexte in wiederkehrende Themen clustern, Stimmung nach App-Version verfolgen, um die Veröffentlichung zu erkennen, die Ihre Bewertung gesenkt hat, Konkurrenten auf Funktionsanfragen beobachten, die Ihr Produkt bereits beantwortet, und Beschwerdemuster über Storefronts hinweg vergleichen. Verknüpfen Sie jede Bewertung mit ihrem version-Feld und Sie erhalten eine Regressionszeitleiste, die Ihnen kein Analyse-Dashboard bietet. Verwandte Reputationsarbeit - Trustpilot-Bewertungen abbauen - fügt sich nahtlos neben App-Store-Daten für ein vollständiges Kundenstimmenbild ein.

Erhalten Sie Wohn-IPs für jede App-Storefront

Häufig gestellte Fragen

Wie scrapt man App Store Bewertungen in Python?

Beginnen Sie mit Apples öffentlichem RSS-Kundenbewertungs-JSON-Feed - kein Token, strukturierte Ausgabe, aber auf etwa 500 aktuelle Bewertungen pro App und Storefront begrenzt. Um tiefer zu gehen, rufen Sie die AMP App-Store API mit einem Bearer-Token auf, das von der Webseite der App gescrapt wurde, paginieren Sie mit einem offset und fügen Sie Verzögerung plus Backoff hinzu. Leiten Sie jede Storefront über eine Wohn-IP in diesem Land.

Gibt es eine offizielle App Store Bewertungen API?

Apples öffentlicher RSS-Feed ist das, was einem offiziellen, tokenlosen Bewertungskanal am nächsten kommt, aber er ist begrenzt. Der reichhaltigere AMP-Endpunkt ist das, was die eigene Webseite des Stores verwendet und erfordert ein gescraptes Bearer-Token. Keiner ist ein dokumentiertes Entwicklerprodukt für die Sammlung von Bewertungen durch Dritte in großen Mengen, daher sollten Ratenbegrenzungen und Bedingungen mit Vorsicht behandelt werden.

Wie scrapt man Google Play Bewertungen?

Play liefert Bewertungen von einem internen Batch-Endpunkt, der verschachteltes JSON zurückgibt, paginiert durch ein Fortsetzungstoken und filterbar nach Sortierreihenfolge. Die gepflegten Open-Source-google-play-scraper-Bibliotheken umschließen es und stellen country und lang bereit. Setzen Sie beide, schleifen Sie das Fortsetzungstoken für Volumen und verteilen Sie Anfragen über IPs, da der Endpunkt pro Adresse drosselt.

Warum brauche ich Proxies, um App-Bewertungen zu scrapen?

Zwei Gründe. Ratenbegrenzung: Beide Stores drosseln eine einzelne IP schnell, sodass rotierende Wohn-Exits den Zähler pro IP niedrig genug halten, um Tausende von Bewertungen abzurufen. Geographie: Bewertungen sind storefront-spezifisch, daher bedeutet das genaue Lesen der Bewertungen eines Landes, dass von einer IP in diesem Land angefordert wird. Rechenzentrums-IPs in der falschen Region liefern inkonsistente oder blockierte Antworten.

App-Store-Daten sind eine Goldgrube, die durch drei einfache Hindernisse gesperrt ist - Begrenzungen, Tokens und Storefronts. Wissen, welchen Endpunkt man ansteuern muss, korrekt paginieren und aus dem richtigen Land auf sauberen IPs austreten, und Sie verwandeln verstreute Sternebewertungen in einen kundenstimmenbasierten Feed pro Version und Markt.

Lassen Sie die Scraper API Bewertungsdaten als JSON zurückgeben