Steam Reviews Scraper
Pricing
from $0.25 / 1,000 reviews
Steam Reviews Scraper
Collect public Steam game reviews by App ID, Steam store URL, or game name. Filter by language, recommendation, purchase status, review order, dates, and off-topic activity. Export normalized review rows with links, engagement, game details, and reviewer context when available.
Pricing
from $0.25 / 1,000 reviews
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
🎮 Steam reviews for game research
Use this Actor if you are a game developer, publisher, researcher, journalist, or data analyst who needs public Steam review data. Each saved row represents a public Steam review with review text, recommendation outcome, source links, engagement, and game details. Reviewer context and developer responses appear when Steam provides them, giving you structured feedback for comparison and analysis.
Use cases
- Compare player feedback for a selected game with Steam Game Reviews.
- Sort reviews by helpfulness and inspect their engagement with Steam Review Rankings.
- Review humorous player feedback and funny-vote counts with Funny Steam Reviews.
- Check recommendation outcomes and game review summaries with Steam Ratings.
- Collect normalized review text, source links, and reviewer context with Steam Reviews.
🧾 Structured Steam review rows
What you get
Every row has a stable review ID and direct review link, review text, recommendation outcome, source language, creation and update dates, engagement counts, and game identity. Steam review context, reviewer details, and developer responses appear when the source provides them. Game details can include genres, developers, publishers, release date, free-to-play status, and review totals and label. Optional source values stay unavailable when Steam does not provide them.
▶️ Collect reviews from selected games
How to run
- Choose one discovery method: Steam App IDs, Steam store URLs, or game names.
- Add one or more values only to the section for that method. Do not mix discovery methods in one run.
- Choose a language, recommendation setting, purchase status, review order, date range, and whether to include off-topic activity.
- Set a positive
maxReviewsPerGamevalue when you want a per-game limit. The schema has no fixed upper bound. Leave it empty to get all publicly available reviews until the source is exhausted. - Start the run and open the
datasetlink in the output.
⚙️ Input
Use one discovery method per run. Values in sections for other discovery methods are ignored. Date fields use YYYY-MM-DD and define an inclusive source review date range.
Input fields
| Field | Type | What it does |
|---|---|---|
discoveryMethod | select | Chooses appIds, storeUrls, or gameNames. The form starts with appIds, and only the selected method's values are used. |
appIds | array of strings | Add at least one digit-only Steam App ID, such as 730. |
storeUrls | array of objects | Add at least one object with a public Steam store /app/ URL in url. |
gameNames | array of strings | Add at least one game name. Steam uses one best match for each submitted name. |
language | select | Choose one listed Steam language or all. The default is all, and each row keeps its source language. |
reviewType | select | Choose all reviews, recommended reviews, or not-recommended reviews. The default is all. |
purchaseType | select | Choose all reviews, Steam purchases, or non-Steam purchases. The default is all. |
reviewOrder | select | Choose recent, recently updated, or most helpful reviews. The default is recent. |
fromDate | string | Optional inclusive start date for source reviews. Use YYYY-MM-DD. |
toDate | string | Optional inclusive end date for source reviews. Use YYYY-MM-DD. |
includeOfftopicActivity | boolean | Include Steam activity marked as off-topic when this is on. The default is off. |
maxReviewsPerGame | integer | Optional positive limit for reviews from each game. The schema has no fixed upper bound. Leave it empty to get all publicly available reviews until the source is exhausted. The form pre-fills 100. |
Successful default input
This example is copied from a successful default-input run on the current beta build.
{"discoveryMethod": "appIds","appIds": ["730"],"language": "all","reviewType": "all","purchaseType": "all","reviewOrder": "recent","includeOfftopicActivity": false,"maxReviewsPerGame": 100}
🧾 Output
Run output
| Field | Type | What it does |
|---|---|---|
dataset | URL string | Opens the normalized Steam review rows in the default dataset. |
Review row fields
| Field | Type | What it does |
|---|---|---|
reviewId | string | Stable Steam ID for the review. |
reviewUrl | URL string | Direct public link to the review. |
reviewText | string | Text written by the Steam user. |
recommended | boolean | Whether the user recommends the game. |
language | string | Language selected by the user for the review. |
createdAt | ISO 8601 date-time string | Date and time when the review was created. |
updatedAt | ISO 8601 date-time string | Date and time when the review was last updated. |
engagement | object | Vote and comment counts recorded by Steam. |
engagement.helpfulVotes | integer | Number of users who marked the review helpful. |
engagement.funnyVotes | integer | Number of users who marked the review funny. |
engagement.weightedHelpfulness | number | Steam's weighted helpfulness score for the review. |
engagement.commentCount | integer | Number of comments on the review. |
reviewer | object, optional | Public reviewer details when available. |
reviewer.steamId | string | Stable public Steam ID for the reviewer. |
reviewer.displayName | string, optional | Public Steam display name shown for the reviewer. |
reviewer.profileUrl | URL string, optional | Direct public link to the reviewer's Steam profile. |
reviewer.avatarUrl | URL string, optional | Public URL of the reviewer's Steam avatar. |
reviewer.gamesOwned | integer, optional | Number of games Steam reports for the reviewer's account. |
reviewer.reviewCount | integer, optional | Number of reviews Steam reports for the reviewer's account. |
reviewer.playtimeAtReviewMinutes | integer, optional | Minutes played before the review was posted. |
reviewer.playtimeMinutes | integer, optional | Total minutes played for the game when Steam reports it. |
reviewer.recentPlaytimeMinutes | integer, optional | Minutes played in the recent period reported by Steam. |
reviewContext | object, optional | Purchase and access details supplied by Steam. |
reviewContext.steamPurchase | boolean | Whether Steam marks the game as purchased on Steam. |
reviewContext.receivedForFree | boolean | Whether Steam marks the game as received for free. |
reviewContext.earlyAccess | boolean | Whether Steam marks the review as written during early access. |
reviewContext.steamDeck | boolean | Whether Steam marks the review as written on Steam Deck. |
reviewContext.refunded | boolean, optional | Whether Steam reports that the purchase was refunded. |
developerResponse | object, optional | Official developer response shown with the review when one is present. |
developerResponse.text | string | Text of the official developer response. |
developerResponse.createdAt | ISO 8601 date-time string | Date and time when the developer response was posted. |
game | object | Steam game associated with the review. |
game.appId | integer | Steam App ID for the game. |
game.name | string | Public Steam name of the game. |
game.storeUrl | URL string | Direct public Steam store link for the game. |
game.genres | array of strings, optional | Steam genres listed for the game. |
game.developers | array of strings, optional | Developers listed by Steam for the game. |
game.publishers | array of strings, optional | Publishers listed by Steam for the game. |
game.releaseDate | string, optional | Release date supplied by Steam for the game. |
game.isFreeToPlay | boolean, optional | Whether Steam marks the game as free to play. |
game.reviewSummary | object, optional | Steam review totals and rating for the game. |
game.reviewSummary.positiveReviews | integer | Number of positive reviews reported by Steam. |
game.reviewSummary.negativeReviews | integer | Number of negative reviews reported by Steam. |
game.reviewSummary.score | integer | Steam review score for the game. |
game.reviewSummary.label | string | Steam text label for the game's review score. |
Example review row
This complete row is copied from a successful current-beta run. Optional fields shown here were provided by Steam.
{"reviewId": "223696996","reviewUrl": "https://steamcommunity.com/profiles/76561198934704395/recommended/1366540/?recommendationid=223696996","reviewText": "很好的游戏,使我时间大把消耗。游戏好玩,但对于我这个偏向于建造的玩家而言,求求你出个功能把黑雾模式关了,我不太想花心思在对付黑雾上,好不容易建一个星际运输线结果被黑雾打没了太受挫,我能理解其他玩家想要更多的挑战,但是也请理解理解我这样的。我很喜欢之前那种纯建造的感觉,看着自己的球一点点成型,很有成就感的说,所以请出一个黑雾的开关功能。","recommended": true,"language": "schinese","createdAt": "2026-04-20T11:50:55.000Z","updatedAt": "2026-04-20T11:50:55.000Z","engagement": {"helpfulVotes": 55,"funnyVotes": 10,"weightedHelpfulness": 0.8308402895927429,"commentCount": 0},"reviewer": {"steamId": "76561198934704395","profileUrl": "https://steamcommunity.com/profiles/76561198934704395/","displayName": "李狗蛋","gamesOwned": 23,"reviewCount": 1,"playtimeAtReviewMinutes": 1074,"playtimeMinutes": 17033,"recentPlaytimeMinutes": 701},"game": {"appId": 1366540,"name": "Dyson Sphere Program","storeUrl": "https://store.steampowered.com/app/1366540/","genres": ["Indie","Simulation","Strategy","Early Access"],"developers": ["Youthcat Studio"],"publishers": ["Gamirror Games"],"releaseDate": "Jan 20, 2021","isFreeToPlay": false,"reviewSummary": {"positiveReviews": 89354,"negativeReviews": 2365,"score": 9,"label": "Overwhelmingly Positive"}},"reviewContext": {"steamPurchase": true,"receivedForFree": false,"earlyAccess": true,"steamDeck": false,"refunded": false},"developerResponse": {"text": "感谢反馈,非常理解您的挫败感。\n其实游戏已支持关黑雾或设成活靶子:\n\n新开档:不勾选“黑雾” 或 选“活靶子”难度(黑雾不攻击)。\n\n已有存档:回母星系找 “黑雾通讯器”,直接改成活靶子即可。\n\n这样就能安心纯建造了,祝您玩得开心!","createdAt": "2026-04-27T11:34:01.000Z"}}
💳 Pricing
Billing event
Each saved public Steam review uses one steam-review-extracted event. The buyer-facing event is called Review in the pricing panel. The current pricing file uses tiered per-event prices and has no separate one-time start event. Check the live pricing panel for the price on your Apify plan.
🔌 Integrations
Dataset access
Open the dataset link in the run output to browse the rows. You can export the dataset as JSON or CSV, or read it through the Apify API.
Video guide
❓ FAQ
How do I choose a game?
Choose one discovery method and enter App IDs, public Steam store URLs, or game names in its matching section.
Can I mix App IDs, store URLs, and game names?
No. Select one discovery method per run. Values in other discovery sections are ignored.
What happens when I submit a game name?
Steam uses one best match for each submitted game name. Use an App ID or store URL when you need to point to a specific game.
What does leaving Max reviews per game empty do?
It returns all publicly available reviews until the source is exhausted for each selected game. A positive value limits reviews from each game.
How do date filters work?
Enter fromDate and toDate as YYYY-MM-DD values. The selected range is inclusive of the source review dates.
What does the All languages choice do?
It requests reviews across the available Steam language scope. Each saved row still shows its source language in language.
Why can reviewer, context, or developer response fields be missing?
Steam does not provide every optional field for every review. The Actor keeps source values when available and does not invent missing data.
Do I need Steam credentials?
No buyer-supplied Steam credentials are needed. The Actor reads publicly available Steam review data.
How can I read or export the rows?
Open the dataset link in the run output, export the rows as JSON or CSV, or read them through the Apify API.
📝 Changelog
v0.0 (16-09-2026)
- Initial release.
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Related Actors
- Yelp Business Review Scraper: Compare public business review text, ratings, dates, and source links with Steam review rows.
- Google Play Store Scraper: Analyze Android app reviews, ratings, reviewer details, and developer replies alongside game feedback.
- Apple App Store Scraper: Compare public iOS App Store reviews with Steam feedback during product research.
- Facebook Reviews Scraper: Study public Page recommendations and reviewer details alongside Steam reviews.
- BoardGameGeek (BGG) Board Game Reviews Scraper: Collect public board game reviews and ratings for a second game community.
Made with ❤️ by Maxime Dupré