Steam Reviews Scraper – Game Reviews, Filters & Only-New Mode
Pricing
from $0.20 / 1,000 reviews
Steam Reviews Scraper – Game Reviews, Filters & Only-New Mode
Scrape Steam user reviews for any game by app ID, store URL or name. Filter by language, positive/negative, Steam purchase and date; get playtime, votes and helpfulness, plus a per-game summary with score, price and genres. Only-new mode for monitoring. No login.
Pricing
from $0.20 / 1,000 reviews
Rating
0.0
(0)
Developer
Cemal Atakli
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Share
Scrape Steam user reviews for any game, DLC or software on Steam. Paste app IDs, Steam store URLs or simply game names, and get every review as clean JSON, CSV or Excel: recommendation (👍/👎), full review text, language, dates, helpful and funny votes, Steam's weighted helpfulness score, comment count, purchase flags and the reviewer's playtime at review time. A summary row per game adds the Steam review score ("Overwhelmingly Positive"), positive/negative totals, price, discount, genres and developers.
It reads Valve's public store endpoints, so it needs no login, no API key, no browser and no proxy. It costs $0.20 per 1,000 reviews.
What it does
- Any input: app ID (
620), store URL (https://store.steampowered.com/app/1145360/Hades/), community or SteamDB URL, or a game name (Stardew Valley, resolved via the Steam store search). - Steam's own filters: language (30 Steam languages, or all), positive / negative, bought on Steam vs. keys and gifts, sort by most recent, recently updated or most helpful,
dayRangefor helpful reviews, and optional off-topic review-bomb activity. - Date range:
reviewsAfter/reviewsBefore(2026-09-01or30 days). Paging stops at the first review older than your range, so you do not pay for scanning old pages. - Full paging: cursor paging with 100 reviews per request, duplicates removed.
maxReviewsPerApp: 0downloads the complete review history. - Only-new mode for monitoring: review IDs already delivered are remembered in a named key-value store. Scheduled runs return only reviews posted since the last run.
- Per-game summary row: review score, totals for your language/purchase filters, % positive, price and discount in your country, genres, developers, publishers, release date, Metacritic score, header image, and counts for this run (new negative reviews, languages).
- Privacy by default: reviewer Steam IDs, names and avatars are not output. Opt in to a pseudonymous hash or to the raw Steam ID if you need it.
- Polite and robust: honest User-Agent with a contact address, global throttling (max 2.5 review pages per second), retries with backoff on 429/5xx, per-game
errorrows instead of crashes.
Use cases
- Game developers and publishers: track new negative reviews after a patch, export all reviews of your game for analysis, compare languages and regions.
- Review monitoring: schedule daily with
onlyNewand send new reviews to Slack, Discord (via webhook), email or Google Sheets. - Market research: compare competitors' sentiment, playtime at review, Early Access reviews and refund rates.
- Sentiment analysis and LLM summaries: clean review text + language + votes is ideal input for topic modelling or AI summaries ("what do players complain about?").
- Academic research and datasets: large, filterable review datasets with timestamps and playtime.
Input example
{"apps": ["https://store.steampowered.com/app/1145360/Hades/","620","Stardew Valley"],"maxReviewsPerApp": 500,"sortBy": "recent","languages": ["english", "german"],"reviewType": "negative","purchaseType": "all","reviewsAfter": "30 days","onlyNew": false,"includeAppSummary": true,"authorIdMode": "omit"}
The default input reads the 100 most recent reviews of Hades and Portal 2 in about 3 seconds.
| Field | Default | Notes |
|---|---|---|
apps | 2 samples | App IDs, store/community/SteamDB URLs or game names |
maxReviewsPerApp | 100 | Per game and language, 0 = all |
maxItems | 0 | Total cap across games, 0 = no limit |
sortBy | recent | recent, updated, all (most helpful) |
languages | all | Steam language names; ISO codes (de, pt-br) also work |
reviewType | all | positive, negative |
purchaseType | all | steam, non_steam_purchase |
reviewsAfter / reviewsBefore | – | 2026-09-01 or 30 days |
dayRange | 0 | Only with sortBy: all, max 365 |
includeOffTopicActivity | false | Include reviews from detected review bombs |
onlyNew / stateKey | false / – | Monitoring memory |
includeAppSummary | true | One summary row per game (charged once per game) |
country | us | Price currency and store search country |
authorIdMode | omit | omit, hashed, raw |
Output example
One row per review. The Reviews, Game summaries and Errors views are in the Output tab.
{"type": "review","appId": "1145360","appName": "Hades","recommendationId": "236570899","votedUp": true,"recommendation": "Recommended","review": "i like it","language": "english","createdAt": "2026-09-30T19:55:18Z","updatedAt": "2026-09-30T19:55:18Z","votesUp": 0,"votesFunny": 0,"weightedVoteScore": 0.5,"commentCount": 0,"steamPurchase": true,"receivedForFree": false,"refunded": false,"writtenDuringEarlyAccess": false,"primarilySteamDeck": false,"authorPlaytimeAtReviewHours": 16.3,"authorPlaytimeForeverHours": 26.0,"authorPlaytimeLastTwoWeeksMinutes": 1559,"authorLastPlayed": "2026-10-02T01:45:10Z","authorNumGamesOwned": 0,"authorNumReviews": 3,"developerResponse": null,"appReviewsUrl": "https://steamcommunity.com/app/1145360/reviews/","fetchedAt": "2026-10-03T09:40:34Z"}
Also included: timestampCreated / timestampUpdated (Unix), playtime in minutes (authorPlaytimeForeverMinutes, authorPlaytimeAtReviewMinutes) and developerRespondedAt.
Summary row per game:
{"type": "app-summary","appId": "1145360","appName": "Hades","developers": ["Supergiant Games"],"genres": ["Action", "Indie", "RPG"],"releaseDate": "Sep 17, 2020","priceFormatted": "$6.24","discountPercent": 75,"metacriticScore": 93,"reviewScoreDesc": "Overwhelmingly Positive","totalPositive": 151727,"totalNegative": 2485,"totalReviews": 154212,"positivePercent": 98.39,"totalsFilter": {"languages": ["english"], "purchaseType": "all"},"reviewsDelivered": 2,"deliveredNegative": 0,"storeUrl": "https://store.steampowered.com/app/1145360/"}
- Errors: rows with
"type": "error",input,appId,error. Not charged. - The key-value store record
OUTPUTholds the run summary: per game reviews scanned / saved / already seen / outside the date range.
Pricing
Pay per event. You pay only for rows saved.
| Event | Price |
|---|---|
| Review | $0.0002 ($0.20 / 1,000) |
| Game summary (optional, once per game per run) | $0.002 |
| Actor start | $0.00005 |
Compared with other Store Actors (public Store prices, 2026-10-01):
| Actor | Price per 1,000 reviews |
|---|---|
| Steam Reviews Scraper (this Actor) | $0.20 |
| automation-lab Steam reviews | $0.57 |
| memo23/steam-reviews-scraper | $1.00 |
Set Maximum cost per run in the run options to cap spending. The Actor stops cleanly when the limit is reached, and in only-new mode the reviews it could not save are returned on the next run.
FAQ
How many reviews can I get?
All of them: Steam's cursor paging goes through the whole history (popular games have several hundred thousand reviews). Set maxReviewsPerApp: 0 and a maximum cost per run. Throughput is about 250 reviews per second at most, because requests are throttled politely.
Why are the totals in the summary different from the store page?
totalPositive / totalNegative / totalReviews are Steam's numbers for your language and purchase-type filters (see totalsFilter). The store page usually shows English or Steam-purchase-only numbers. Choose languages: ["all"] and purchaseType: "all" for the widest totals.
How does only-new mode work?
Review IDs are stored per game and language in the named key-value store steam-reviews-scraper-state (key derived from your games and filters, or your stateKey). With sortBy: recent paging stops as soon as it reaches reviews delivered before, so scheduled runs are fast and cheap. With sortBy: updated, an edited review is returned again.
Why are reviewer IDs not included?
A Steam ID identifies a person, and most analyses do not need it. authorIdMode: "hashed" adds authorIdHash, a keyed HMAC-SHA256 that lets you count repeat reviewers without storing IDs (the secret salt stays in your Apify account). authorIdMode: "raw" adds authorSteamId, authorProfileUrl and reviewUrl; use it only if you have a lawful basis under GDPR or similar laws. Persona names and avatars are never output.
Do I need a proxy or a Steam account? No. The Actor uses public JSON endpoints without login. If Steam ever answers with HTTP 429, the Actor waits and slows down automatically.
Is it legal? Is it allowed by Steam? The Actor reads only public data from endpoints Valve documents for third parties (User Reviews – Get List). Valve's Steam Web API Terms of Use do not prohibit commercial use; they cap use at 100,000 calls per day and forbid implying that Valve endorses you. This Actor is not affiliated with or endorsed by Valve; Steam is a trademark of Valve Corporation. It uses no Steam account. Review texts are written by Steam users and belong to them: quote responsibly, and check the Steam Subscriber Agreement and your local law for your use case.
What if Valve changes the endpoint?
Valve marks the appreviews endpoint as superseded by IUserReviewsService/GetAppReviews. It still works, and the Actor will be switched over if it is ever turned off; the output format stays the same.
Use with AI agents / Apify MCP
- Apify MCP server: add
gazidev/steam-reviews-scraperto your MCP client (Claude Desktop, Cursor, VS Code) viahttps://mcp.apify.com?actors=gazidev/steam-reviews-scraper. An agent can call it with{"apps":["Hollow Knight"],"reviewType":"negative","reviewsAfter":"30 days"}and summarise what players complain about. - API:
POST https://api.apify.com/v2/acts/gazidev~steam-reviews-scraper/run-sync-get-dataset-items?token=...with the input JSON returns the reviews directly; works as a tool for LangChain, LlamaIndex or n8n. - Scheduled monitoring: create a Task with
onlyNew: trueandsortBy: recent, schedule it daily, and connect the Slack, Google Sheets or webhook integration.
More review and app data
- App Store Reviews Scraper & Monitor: Apple App Store reviews across all countries, only-new alerts.
- App Store Scraper: app details and search results from the Apple App Store.