OrbTop

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_min to 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_desc and positive/negative ratios across competing titles
  • QA & community signals — extract the most-voted reviews by votes_up for 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.