Steam Game Reviews Scraper
Pricing
from $6.80 / 1,000 results
Steam Game Reviews Scraper
Scrape Steam game reviews by app ID or game name. Filter by review type, language, purchase type and recency, and export author, playtime, review text, votes, weighted score, timestamps and a per-app review summary. Export to JSON, CSV or Excel.
Pricing
from $6.80 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Steam Game Reviews Scraper
Here is one real result, with every field the actor returns:
{"appId": "730","appName": "Counter-Strike 2","recommendationId": "232505657","authorSteamId": "76561199327340135","authorNumGamesOwned": 7,"authorNumReviews": 3,"authorPlaytimeForeverMin": 937,"authorPlaytimeAtReviewMin": 937,"authorPlaytimeLastTwoWeeksMin": 937,"authorLastPlayed": "2026-08-10T11:32:26.000Z","reviewText": "Even kids love this game.","language": "english","votedUp": true,"votesHelpful": 0,"votesFunny": 0,"weightedVoteScore": 0.5,"commentCount": 0,"steamPurchase": true,"receivedForFree": false,"writtenDuringEarlyAccess": false,"refunded": false,"primarilySteamDeck": false,"timestampCreated": "2026-08-10T13:44:02.000Z","timestampUpdated": "2026-08-10T13:44:02.000Z","developerResponse": null,"developerResponseDate": null,"reviewUrl": "https://steamcommunity.com/profiles/76561199327340135/recommended/730/","summaryReviewScore": 8,"summaryReviewScoreDesc": "Very Positive","summaryTotalPositive": 2231526,"summaryTotalNegative": 358808,"summaryTotalReviews": 2590334,"searchTerm": null,"source": "Steam","observedAt": "2026-08-10T14:36:39.641Z","error": null}
The most complete Steam game reviews scraper available. It returns every field a Steam review exposes, including full review text, thumbs up/down, helpful and funny votes, the author's playtime and library stats, purchase and refund flags, developer responses, and the game's overall review-score summary, with filters for type, language, purchase, date, playtime and developer replies.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor collects Steam game reviews for the app IDs (or game names) you pass and writes one normalized record per review to the run's dataset. Each record carries the full review text, the recommendation (thumbs up/down), helpful and funny votes, the weighted vote score, the author's Steam id and playtime and library stats, purchase, free-copy, early-access, refund and Steam Deck flags, creation and update timestamps, and any developer response. Every record also carries the game's overall review-score summary so you get sentiment context without a second call.
Filters let you keep positive or negative reviews only, one language or all, a purchase type, a date range, a playtime filter, only reviews with a developer response, and optionally include off-topic review-bombing activity that Steam hides by default.
Quickstart
Open the actor, paste this into the input, and press Run. It returns the 10 most recent English reviews for Counter-Strike 2 (app ID 730).
{"appIds": ["730"],"reviewType": "all","language": "english","sortBy": "recent","maxReviews": 10}
Provide one or more numeric app IDs in appIds, or use searchTerms to look up games by name. Add several app IDs to collect reviews for multiple games in one run.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
appIds | string[] | no | ["730"] | One or more numeric Steam app IDs, for example 730 for Counter-Strike 2. Add several to cover multiple games in one run. |
searchTerms | string[] | no | (empty) | Optional. Search Steam by game name instead of app id; the top matching game is used for each term. |
reviewType | enum | no | all | all, positive (thumbs up), or negative (thumbs down). |
language | string | no | english | Review language (for example english, schinese, spanish) or all for every language. |
purchaseType | enum | no | all | all, steam (purchased on Steam), or non_steam_purchase. |
sortBy | enum | no | recent | recent, updated (recently updated), or helpful (most helpful within the day range). |
dayRange | integer | no | (none) | When sorting by helpful, only consider reviews from the last N days (1 to 365). |
playedFilter | enum | no | any | any, played (has playtime at review), or notPlayed (no recorded playtime). |
reviewsFromDate | string | no | (empty) | Only keep reviews created on or after this date, for example 2025-01-01. |
reviewsToDate | string | no | (empty) | Only keep reviews created on or before this date, for example 2025-12-31. |
onlyWithDeveloperResponse | boolean | no | false | Only keep reviews the developer/publisher has replied to. |
includeReviewBombing | boolean | no | false | Include off-topic review-bombing activity that Steam hides by default. |
maxReviews | integer | no | 40 | Maximum number of reviews to collect across the whole run (spread across all apps). Free Apify plans are capped at 10 per run. |
Output reference
One dataset item per review. Types: string, integer, number, boolean, or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
appId | string | Steam app id of the game. |
appName | string | Game name. |
recommendationId | string | Unique id of the review. |
authorSteamId | string | SteamID64 of the review author. |
authorNumGamesOwned | integer | Number of games the author owns. |
authorNumReviews | integer | Number of reviews the author has written. |
authorPlaytimeForeverMin | integer | Author total playtime for this game, in minutes. |
authorPlaytimeAtReviewMin | integer | Author playtime for this game at the time of the review, in minutes. |
authorPlaytimeLastTwoWeeksMin | integer | Author playtime in the last two weeks, in minutes. |
authorLastPlayed | string | ISO 8601 timestamp the author last played, or null. |
reviewText | string | Full review text. |
language | string | Review language. |
votedUp | boolean | true for a positive (thumbs up) review, false for negative. |
votesHelpful | integer | Number of helpful votes. |
votesFunny | integer | Number of funny votes. |
weightedVoteScore | number | Steam weighted helpfulness score (0 to 1). |
commentCount | integer | Number of comments on the review. |
steamPurchase | boolean | true when the copy was purchased on Steam. |
receivedForFree | boolean | true when the reviewer received the game for free. |
writtenDuringEarlyAccess | boolean | true when the review was written during early access. |
refunded | boolean | true when the reviewer later refunded. |
primarilySteamDeck | boolean | true when the review was primarily played on Steam Deck. |
timestampCreated | string | ISO 8601 timestamp the review was created. |
timestampUpdated | string | ISO 8601 timestamp the review was last updated. |
developerResponse | string | Developer/publisher reply text, or null. |
developerResponseDate | string | ISO 8601 date of the developer reply, or null. |
reviewUrl | string | Public URL of the review. |
summaryReviewScore | integer | Game overall review score (0 to 9). |
summaryReviewScoreDesc | string | Game overall review score label, for example Very Positive. |
summaryTotalPositive | integer | Total positive reviews for the game. |
summaryTotalNegative | integer | Total negative reviews for the game. |
summaryTotalReviews | integer | Total reviews for the game. |
searchTerm | string | The searchTerms value that matched this game, or null. |
source | string | Data source label (Steam). |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null on success. On a failed run, a single item with a populated error field is written instead. |
Example output record
Real record from a live run (input {"appIds": ["730"], "language": "english", "sortBy": "recent", "maxReviews": 10}):
{"appId": "730","appName": "Counter-Strike 2","recommendationId": "232505657","authorSteamId": "76561199327340135","authorNumGamesOwned": 7,"authorNumReviews": 3,"authorPlaytimeForeverMin": 937,"authorPlaytimeAtReviewMin": 937,"reviewText": "Even kids love this game.","language": "english","votedUp": true,"votesHelpful": 0,"votesFunny": 0,"weightedVoteScore": 0.5,"steamPurchase": true,"receivedForFree": false,"refunded": false,"primarilySteamDeck": false,"timestampCreated": "2026-08-10T13:44:02.000Z","developerResponse": null,"reviewUrl": "https://steamcommunity.com/profiles/76561199327340135/recommended/730/","summaryReviewScore": 8,"summaryReviewScoreDesc": "Very Positive","summaryTotalPositive": 2231526,"summaryTotalNegative": 358808,"summaryTotalReviews": 2590334,"source": "Steam","observedAt": "2026-08-10T14:36:39.641Z","error": null}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~steam-game-reviews-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"appIds":["730"],"reviewType":"negative","language":"english","maxReviews":25}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~steam-game-reviews-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchTerms":["Elden Ring"],"sortBy":"helpful","dayRange":30,"maxReviews":100}'
Apify CLI:
apify call scrapers_lat/steam-game-reviews-scraper \--input '{"appIds":["730"],"onlyWithDeveloperResponse":true}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per review returned (
resultevent). See the pricing tab for the current per-result price. - No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 reviews per run. Upgrade for higher
maxReviews.
FAQ and troubleshooting
How do I find a game's app ID?
It is the number in the store URL, for example 730 in store.steampowered.com/app/730. Or pass the game name in searchTerms and the actor resolves the top match.
Can I get only negative reviews?
Yes. Set reviewType to negative. Use positive for thumbs-up only.
How do I get the most useful reviews?
Set sortBy to helpful and optionally dayRange to focus on recent, upvoted reviews.
What is weightedVoteScore?
Steam's helpfulness score for the review, from 0 to 1. Higher means the community found it more helpful.
Why is developerResponse null?
The developer has not replied to that review. Set onlyWithDeveloperResponse to true to keep only reviews that have a reply.
Is this an official Steam or Valve tool? No. This actor is independent and has no affiliation with Valve or Steam. It reads only publicly available review data. Use the results in accordance with the source's terms.
Related scrapers
- Steam Games Scraper: Steam game details, prices and metadata.
- Google Play Reviews Scraper: App reviews from the Google Play Store.
- App Store Reviews Scraper: App reviews from the Apple App Store.
- IMDb Reviews Scraper: Movie and TV reviews from IMDb.
- Google Maps Reviews Scraper: Business reviews from Google Maps.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with Valve or Steam. Accesses only publicly available review data. Use the results in accordance with the source's terms.
