Steam Store Game Reviews Full History Scraper
GAMESECOMMERCE
Steam Store Game Reviews Full History Scraper
Scrape the complete review history for any Steam game using Steam's official cursor-paginated JSON API. Unlike competitors that return a single page, this actor exhausts the full cursor chain — retrieving every review for titles with hundreds of thousands of entries.
What you get
Each output record includes the full review body plus reviewer-quality signals ideal for brigade detection:
- Review content — full text, recommended/not, language, timestamps
- Reviewer signals — total games owned, prior review count, playtime at time of review (key for detecting low-effort reviews from new accounts)
- Engagement metrics — helpful votes, funny votes, comment count, Steam-weighted helpfulness score
- Purchase context — Steam purchase vs. external key, received for free, Early Access flag
- Per-game aggregate — review score, score description (e.g. "Overwhelmingly Positive"), total positive, negative, and total reviews (joined onto every row for easy analysis)
Input
| Field | Type | Default | Description |
|---|---|---|---|
appIds |
string[] | ["440"] |
Steam app IDs. Find the ID in the store URL: store.steampowered.com/app/440/ → 440 |
maxItems |
integer | 10 |
Max reviews per game. Set to 0 to exhaust all reviews (may be slow for popular titles with 1M+ reviews) |
language |
string | all |
Language filter: all, english, schinese, russian, etc. |
reviewType |
string | all |
all, positive, or negative |
purchaseType |
string | all |
all, steam, or non_steam_purchase |
dateRangeStart |
string | — | Optional ISO date YYYY-MM-DD — only include reviews created on or after |
dateRangeEnd |
string | — | Optional ISO date YYYY-MM-DD — only include reviews created on or before |
Output
{
"steam_appid": 440,
"recommendation_id": "226055761",
"author_steamid": "76561198775042737",
"author_num_games_owned": 42,
"author_num_reviews": 4,
"author_playtime_forever_min": 1240,
"author_playtime_at_review_min": 92,
"review_text": "Best game ever.",
"voted_up": true,
"votes_up": 15,
"votes_funny": 2,
"weighted_vote_score": 0.812,
"comment_count": 0,
"steam_purchase": true,
"received_for_free": false,
"written_during_early_access": false,
"language": "english",
"timestamp_created": "2026-05-21T10:05:11.000Z",
"timestamp_updated": "2026-05-21T10:05:11.000Z",
"game_review_score": 8,
"game_review_score_desc": "Very Positive",
"game_total_positive": 1119661,
"game_total_negative": 111784,
"game_total_reviews": 1231445,
"source_url": ""
}
Use cases
- Review-bomb detection — filter by date range +
author_num_games_owned/author_playtime_at_review_minto identify coordinated low-quality reviews - Sentiment tracking over time — combine date range filters with full history to build time-series sentiment charts
- Competitive research — compare
game_review_score_descand positive/negative ratios across competing titles - QA & community signals — extract the most-voted reviews by
votes_upfor customer feedback analysis
Rate limits & performance
Steam's review API is unauthenticated and generous. The actor uses a 350ms inter-request delay and fetches 100 reviews per page. For a title with 100,000 reviews expect approximately 1,000 API calls; with maxItems set the run completes in seconds.
Multiple games
Pass multiple app IDs to process them in a single run:
{
"appIds": ["440", "570", "730"],
"maxItems": 500,
"language": "english"
}
Each app is processed sequentially; maxItems is applied per game.