Tony Wang5 Min. LesezeitSteam scrapen 2026 (Reviews, Charts & Spielerzahlen)
Steam 2026 scrapen: Store-Daten, Reviews, Spielerzahlen und Charts — DIY mit drei APIs oder eine normalisierte API.
Warum Steam scrapen?
Steam-Daten sind die Basisschicht für PC-Gaming-Recherche und -Produkte:
- Markt- und Wettbewerbsrecherche — verfolge Reviewscores, Preise und Tags über ein Genre oder den Katalog eines Wettbewerbers hinweg.
- Live-Rankings und Trend-Erkennung — beobachte die gleichzeitigen Spielerzahlen sowie die Most-Played- und Top-Seller-Charts während sie sich bewegen.
- Review- und Sentiment-Analyse — lies, was Spieler tatsächlich sagen, und wie sich die Stimmung nach einem Patch oder einem Sale verschiebt.
- Besitzer- und Marktgrößen-Schätzungen — SteamSpys gesampelte Besitzerzahlen sind das Nächste an einer öffentlichen Zahl für „wie viele Leute besitzen das".
Ist es legal, Steam zu scrapen?
Option 1: DIY gegen drei separate Datenquellen
Steam hat keine einheitliche API — am Ende integrierst du drei:
import requests
# 1. Store-Details — undokumentiert, aber stabil, adressiert über appid
app = requests.get("https://store.steampowered.com/api/appdetails", params={"appids": 570}).json()
# 2. Community-Reviews — ein anderer Host, andere Response-Struktur, Cursor-Pagination
reviews = requests.get("https://store.steampowered.com/appreviews/570", params={
"json": 1, "filter": "recent", "language": "english", "cursor": "*",
}).json()
# 3. SteamSpy — ein dritter Host, für Besitzer-Schätzungen
spy = requests.get("https://steamspy.com/api.php", params={"request": "appdetails", "appid": 570}).json()
Drei Clients für einen Datensatz sind die eigentlichen Kosten, nicht irgendeine Anti-Bot-Abwehr:
- Kein einheitliches Schema.
appdetailsliefert Preise/Genres/Plattformen verschachtelt unter einemsuccess/data-Wrapper;appreviewsliefert eine flache Liste mit einemcursor, den du für die nächste Seite hin- und herschicken musst; SteamSpy liefert noch eine weitere Struktur mit Feldern wieownersals Textbereich ("1,000,000 .. 2,000,000"), nicht als Zahl. Alle drei in einen einzigen Datensatz zu normalisieren ist der Großteil der Arbeit. - SteamSpy ist eine gesampelte, inoffizielle Schätzung. Sie leitet die Besitzerzahl aus einer öffentlichen Stichprobe von Steam-Profilen ab, sodass Zahlen für Nischentitel oder frisch veröffentlichte Titel veraltet, lückenhaft oder komplett fehlend sein können — baue für
null, nicht für eine garantierte Zahl. - Reviews paginieren über einen opaken Cursor, nicht über eine Seitenzahl. Du musst den
cursor-String zwischen den Aufrufen speichern; es gibt keine „gib mir Seite 5"-Abkürzung, also bedeutet das Fortsetzen eines unterbrochenen Pulls, den letzten Cursor zu speichern. - Live-Spielerzahlen und Charts sind wieder eigene Endpunkte (
ISteamUserStats/GetNumberOfCurrentPlayersfür eine App; die öffentlichen Chart-Seiten für Rankings), jeweils mit eigenen Eigenheiten, und keiner davon ist als stabiler öffentlicher Vertrag dokumentiert.
Option 2: No-Code-Tools
Generische Scraper können einzelne Store- oder Review-Seiten abrufen, aber Steams Daten sind von Natur aus multi-source — ein No-Code-Tool, das für eine Seitenstruktur gebaut wurde, hilft dir nicht dabei, Store-Details, Reviews, Live-Spielerzahlen und SteamSpy-Schätzungen zu einem Datensatz zusammenzuführen, was den Großteil der eigentlichen Arbeit ausmacht.
Option 3: Eine strukturierte Steam-API
Eine Steam-Scraping-API normalisiert alle drei Quellen — plus die offiziellen Charts — hinter einem Key, sodass App-Details, Reviews und Rankings sich einen Client und eine Response-Struktur teilen.
Store nach Titel durchsuchen:
curl "https://api.crawlora.net/api/v1/steam/search?term=hollow%20knight" \
-H "x-api-key: $CRAWLORA_API_KEY"
Store-Details und Reviews für eine App in Python abrufen:
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/steam"
app = requests.get(f"{base}/app", headers=h, params={"appid": 570}).json()["data"]
reviews = requests.get(f"{base}/reviews", headers=h, params={
"appid": 570, "filter": "recent", "language": "english", "num_per_page": 50,
}).json()["data"]
players = requests.get(f"{base}/players", headers=h, params={"appid": 570}).json()["data"]
Die Live-Charts für Bewegungen und Rankings abrufen:
concurrent = requests.get(f"{base}/charts/concurrent", headers=h).json()["data"]
most_played = requests.get(f"{base}/charts/most-played", headers=h).json()["data"]
reviews akzeptiert filter (recent/updated/all), review_type, purchase_type und cursor für die Pagination — der Endpunkt übernimmt das Hin- und Herschicken des Cursors, sodass du wie bei jeder anderen Liste einfach durchblätterst. charts/concurrent und charts/most-played akzeptieren beide ein optionales enrich-Flag, um jeder Rangzeile Store-Metadaten (Name, Preis, Genres) statt einer nackten appid anzuhängen, sodass du keinen zweiten app-Aufruf pro Zeile brauchst.
Was du sammeln kannst
Store-Details (Name, Preis, Genres, Plattformen, Erscheinungsdatum, Review-Zusammenfassung), einzelne Reviews (Autor, Spielzeit, empfohlen/nicht empfohlen, Text, Zeitstempel), aktuelle gleichzeitige Spielerzahlen, Live-Charts (gleichzeitige Spieler, Most-Played, Top-Seller nach Umsatz), News-Beiträge und Community-Tags — ein angereicherter Datensatz pro App, Review oder Chart-Zeile, adressiert über appid.
Einschränkungen und häufige Herausforderungen
- Kein einheitliches offizielles Schema. Die Store-API, die Reviews und SteamSpy haben jeweils eine eigene Response-Struktur, und keine davon ist formal versionierte Dokumentation — rechne mit Normalisieren, nicht nur mit Parsen.
- SteamSpy schätzt, misst nicht. Behandle Besitzerzahlen als richtungsweisende Marktgrößen-Signale, nicht als exakte Verkaufszahlen, besonders bei Nischentiteln oder sehr aktuellen Titeln.
- Reviews paginieren über Cursor. Speichere den Cursor, um einen unterbrochenen Pull fortzusetzen; es gibt keine Abkürzung über eine Seitenzahl.
- Charts bewegen sich schnell. Rankings für gleichzeitige Spieler und Most-Played ändern sich fortlaufend — mache eine geplante Snapshot-Reihe, wenn du eine Zeitreihe brauchst, keinen Einzelpull.
Wo das eingesetzt wird
- App-Intelligence — verfolge den App-Markt, einschließlich PC-Gaming, über Bewertungen, Preise und Rankings hinweg. Siehe die App-Intelligence-Produktseite.
- Wettbewerbs- und Marktrecherche — vergleiche Reviewscores und Spielerzahlen gegen vergleichbare Titel. Siehe Wettbewerbs-Tracking.
- Das Steam-Games-Dataset und das Steam-Charts-Dataset — die gleichen Daten bereits gesammelt und abfragbar, ohne einen Crawl auszuführen.
Quellen
Jetzt sammeln
Erst kostenlos ausprobieren: führe eine beliebige öffentliche URL durch den Free Web Scraper, oder prüfe mit dem Anti-Bot Checker, ob eine Seite Bots blockiert — ohne Anmeldung.
Teste die App- und Review-Endpunkte im Playground, prüfe das Schema in den API-Docs und schau dir die Preise an. Steam ist ein Storefront in einem Markt, der sich über drei erstreckt: how to scrape Google Play behandelt den Android-Katalog, Listings und Bewertungen, und how to scrape App Store reviews behandelt den iOS-Review-Stream — derselbe Titel erscheint oft auf allen drei, und die Scores stimmen selten überein. Auf der Konsolenseite desselben Games-Katalogs behandelt how to scrape PlayStation Store Preise, Editionen und Deals für dieselben Titel. Für das breitere Toolkit: how to choose a web scraping API, und is web scraping legal.
Teil unserer how-to-scrape-Guide-Serie — jede Plattform, die wir abdecken, in einem Index.
Häufig gestellte Fragen
Ist es legal, Steam zu scrapen?
Die Store-API und die Reviews sind öffentliche, unauthentifizierte Endpunkte — es gibt keine Login-Sperre zu umgehen, und Valve verlangt dafür keinen API-Key. Fakten wie Preis und Reviewscore sind nicht urheberrechtlich geschützt; Store-Beschreibungen und Screenshots können es sein, veröffentliche sie also nicht wortwörtlich weiter. Respektiere die Rate-Limits.
Hat Steam eine offizielle API?
Nein. Die Daten sind auf die Store-API (App-Details), die Community-Reviews-API und das Drittanbieter-Tool SteamSpy (inoffizielle Besitzer-Schätzungen) verteilt — jede mit eigener Response-Struktur und eigenem Host, plus separate Endpunkte für Live-Spielerzahlen und Charts.
Wie genau sind SteamSpys Besitzerzahlen?
Es sind Schätzungen aus einer gesampelten öffentlichen API, keine exakten Verkaufszahlen. Zahlen können bei Nischentiteln oder frisch veröffentlichten Titeln hinterherhinken oder fehlen — behandle sie als Richtwert.
Wie paginieren Steam-Reviews?
Über einen opaken Cursor-String, nicht über eine Seitenzahl. Du speicherst den Cursor zwischen den Aufrufen, um die nächste Seite zu bekommen und einen unterbrochenen Pull fortzusetzen.
Was kann ich von Steam ohne Browser abrufen?
Store-Details, Reviews, aktuelle Spielerzahlen und die offiziellen Charts sind alle einfache HTTP-JSON-Endpunkte — für keinen davon brauchst du einen Headless-Browser oder JavaScript-Rendering.