Steam Reviews Scraper [$0.8/1k💰] | WAF Bypass | Sentiment avatar

Steam Reviews Scraper [$0.8/1k💰] | WAF Bypass | Sentiment

Pricing

from $0.77 / 1,000 results

Go to Apify Store
Steam Reviews Scraper [$0.8/1k💰] | WAF Bypass | Sentiment

Steam Reviews Scraper [$0.8/1k💰] | WAF Bypass | Sentiment

Scrape Steam game reviews with anti-bot TLS fingerprinting that bypasses Steam's WAF. Dual-mode JSON API + Cheerio fallback with date, language, sentiment, and playtime filters. No API key, no login. Structured output for sentiment analysis, NLP datasets, and game market research.

Pricing

from $0.77 / 1,000 results

Rating

0.0

(0)

Developer

Ahmed Jasarevic

Ahmed Jasarevic

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Steam Reviews Scraper — Dual-Mode WAF Bypass + Cheerio Fallback

Apify Actor License: MIT

Extract Steam game reviews at scale using two extraction modes: a high-speed JSON API with TLS fingerprinting (got-scraping) that bypasses Steam's Custom WAF, and a Cheerio-based HTML fallback for when API access is blocked. No API key, no login, no cookies. Supports date window filtering, language/sentiment/purchase filters, and playtime-based review quality scoring.

Main Use Cases

  • Sentiment analysis — build labeled review corpora (positive/negative) for NLP model training and fine-tuning
  • Game market research — compare review sentiment, volume, and themes across competing titles
  • Player feedback intelligence — surface recurring bugs, feature requests, and praise from real player reviews
  • Competitor monitoring — track rival game review sentiment and complaint trends over time
  • Voice-of-customer datasets — structured review data for BI dashboards, Tableau, or data warehouses
  • Review bomb detection — isolate off-topic or coordinated review campaigns using date and purchase filters

How It Works

Mode 1: JSON API (Default — Fastest)

Uses got-scraping to hit Steam's public store.steampowered.com/appreviews/{appid} endpoint with Chrome TLS fingerprint impersonation. This bypasses Steam's Custom WAF that blocks requests with non-browser TLS signatures (JA3/JA4 detection).

got-scraping → Steam APITLS fingerprint bypass → JSON response → Cheerio parse

Mode 2: HTML/Cheerio (Fallback)

When the API returns 403 or WAF blocks the request, the Actor automatically falls back to CheerioCrawler which renders the HTML review page and extracts reviews using CSS selectors.

Steam Store HTML → CheerioCrawler → CSS selector extraction → Review objects

Anti-Bot Bypass Stack

  1. TLS Fingerprintinggot-scraping uses curl_cffi to impersonate Chrome 120+ TLS fingerprints, bypassing WAF detection that rejects non-browser TLS
  2. Apify Proxy Rotation — Residential IPs prevent datacenter IP detection
  3. Complete Headers — Proper Sec-Fetch-*, Accept, Origin, Referer headers
  4. Rate Limiting — Configurable delays between requests to avoid 429 responses
  5. Exponential Backoff — Retry logic with increasing wait times on 429/5xx errors
  6. Session Persistence — Cookie jar maintained across requests

Input

FieldTypeRequiredDefaultNotes
appIdsarrayYesSteam App IDs (e.g. 570) or store URLs
maxItemsintegerNo1000Hard cap across every app
languagestringNoallSteam language code: english, german, french, spanish, russian, schinese, etc.
reviewTypestringNoallall, positive, negative
purchaseTypestringNoallall, steam, non_steam_purchase
filterstringNorecentrecent, updated, all (sorted by helpfulness)
modestringNoautoapi (fastest), html (WAF bypass), auto (try API, fallback to HTML)
onlyReviewsAfterstringNoStart date window (YYYY-MM-DD)
onlyReviewsBeforestringNoEnd date window (YYYY-MM-DD)
includeOffTopicbooleanNofalseInclude review bombs
useReviewQualitybooleanNotrueUse Steam's helpfulness filter
playtimeFilterMinintegerNo0Min playtime in hours
playtimeFilterMaxintegerNo0Max playtime in hours
numPerPageintegerNo50Reviews per API call (1–100)
requestDelayMsintegerNo1000Delay between requests
maxRetriesintegerNo3Retry attempts on errors
proxyConfigurationobjectNo{useApifyProxy: true}Apify proxy settings

Output

Each review row contains:

FieldTypeDescription
review_textstringFull review body
voted_upbooleanRecommendation (true = positive)
votes_helpfulintegerHelpful vote count
votes_funnyintegerFunny vote count
weighted_vote_scorenumberSteam's weighted helpfulness score
comment_countintegerComment count
timestamp_createdintegerUnix timestamp — review creation
timestamp_updatedintegerUnix timestamp — last edit
authorstringUsername
author_steamidstringSteam ID
author_playtime_forever_hoursnumberTotal hours played
author_playtime_at_review_hoursnumberHours played at review time
languagestringReview language code
steam_purchasebooleanPurchased on Steam
received_freebooleanReceived for free
written_during_early_accessbooleanEarly access flag
steam_deckbooleanPlayed on Steam Deck
app_idstringSteam App ID
review_scoreintegerSummary score
review_score_pctnumberScore percentage
total_positiveintegerTotal positive reviews
total_negativeintegerTotal negative reviews
total_reviewsintegerTotal review count
_metadataobjectRun metadata: mode used, pages walked, API fallback count

Example Input

{
"appIds": ["570", "292030"],
"maxItems": 500,
"language": "english",
"reviewType": "all",
"purchaseType": "all",
"filter": "recent",
"onlyReviewsAfter": "2025-01-01",
"onlyReviewsBefore": "2026-01-01",
"includeOffTopic": false,
"useReviewQuality": true,
"playtimeFilterMin": 10,
"numPerPage": 50,
"requestDelayMs": 1000,
"maxRetries": 3,
"mode": "auto",
"proxyConfiguration": {
"useApifyProxy": true
}
}

Example Output

{
"review_text": "After the patches this is exactly the game I hoped for. 120 hours in and Night City still surprises me.",
"voted_up": true,
"votes_helpful": 412,
"votes_funny": 33,
"weighted_vote_score": 0.87,
"comment_count": 5,
"timestamp_created": 1718390400,
"timestamp_updated": 1718390400,
"author": "CyberFan2077",
"author_steamid": "76561198012345678",
"author_playtime_forever_hours": 7284,
"author_playtime_at_review_hours": 6100,
"language": "english",
"steam_purchase": true,
"received_free": false,
"written_during_early_access": false,
"steam_deck": false,
"app_id": "1091500",
"review_score": 8,
"review_score_pct": 86.5,
"total_positive": 642000,
"total_negative": 101000,
"total_reviews": 743000,
"_metadata": {
"mode": "api",
"apps_scraped": 2,
"pages_walked": 10,
"api_fallback_count": 0,
"reviews_trimmed": 0,
"total_reviews": 500,
"total_summaries": 2,
"timestamp": "2026-09-11T12:00:00Z"
}
}

Integrations & Automation

  • Webhooks — trigger downstream processing (data warehouse loads, Slack alerts) when a run finishes
  • Schedules — set up daily or weekly scraping to track review sentiment over time around game launches and patches
  • Google Sheets / Airtable — export dataset directly to spreadsheets for non-technical stakeholders
  • Zapier / Make — connect review data to CRM, notification, or reporting workflows
  • API — call this Actor programmatically from any stack via the Apify API with your token

Frequently Asked Questions

Why use this Actor instead of the official Steam API?

Steam's appreviews endpoint is publicly accessible, but it has no official SDK, no published rate limits (just undocumented 403/429 blocks), and the TLS fingerprint of standard HTTP clients (Python requests, Node axios) gets flagged by Steam's Custom WAF. This Actor solves that with got-scraping TLS impersonation + CheerioCrawler HTML fallback, so you get consistent results without managing proxy rotation, header spoofing, or retry logic yourself.

What are alternatives to this Actor?

For Steam review data, alternatives include the Python steamreviews PyPI package (manual, no WAF bypass), the official Steamworks Web API (requires developer key), SteamApis.com (paid API with key), or building your own Scrapy/Cheerio pipeline. On Apify, competitors include logiover/steam-game-reviews-scraper, danek/steam-reviews-ppr, and automation-lab/steam-game-reviews-scraper.

How do I scrape all reviews for a specific Steam game?

Set appIds to the game's numeric App ID (find it in the store URL: store.steampowered.com/app/{APP_ID}/). Set maxItems high enough to cover the full review count (check the store page for the total), and use mode: "auto" for the best balance of speed and reliability.

Can I filter reviews by date range?

Yes. Set onlyReviewsAfter and onlyReviewsBefore to ISO date strings (e.g. "2025-06-01"). Only reviews created within that window will be included in the dataset.

Does this work without proxies?

The Actor includes Apify Proxy rotation by default. You can disable it by setting proxyConfiguration: { useApifyProxy: false }, but Steam's WAF will likely block requests from datacenter IPs without TLS fingerprinting.

Can I use this for NLP or sentiment analysis training data?

Yes. The output includes full review text, sentiment labels (voted_up), playtime context, helpfulness votes, and language codes — everything you need for labeled sentiment classification datasets.

What is the difference between mode: "api", mode: "html", and mode: "auto"?

  • api — forces the JSON API path (fastest, but may get blocked by WAF)
  • html — forces CheerioCrawler HTML extraction (slower, but more resilient)
  • auto — tries API first, automatically falls back to HTML on 403/WAF blocks

How does playtime filtering work?

Set playtimeFilterMin and playtimeFilterMax (in hours) to include only reviews from players within that playtime range. Useful for filtering out refund-window reviews (<2h) or isolating hardcore player feedback.

SEO Keywords

steam reviews scraper, steam game review data, steam review sentiment analysis, steam api alternative, steam reviews api, steam game reviews download, steam review data extraction, steam reviews csv export, steam reviews nlp dataset, steam review text scraping, game review data collection, steam player feedback analysis, steam reviews by app id, steam reviews without api key, steam review monitoring, steam game sentiment tracking, steam reviews for machine learning, steam review corpus, steam review text analysis, steam reviews api bypass, got-scraping steam, tls fingerprinting steam, cheerio crawler steam reviews, steam review data pipeline

For AI Agents & LLM Apps

Purpose: Extract structured Steam game review data (review text, sentiment, playtime, helpfulness votes, timestamps, language) for any game by Steam App ID. Dual-mode: fast JSON API with TLS fingerprinting + Cheerio HTML fallback.

Minimal input:

{ "appIds": ["570"], "maxItems": 100 }

With filters:

{ "appIds": ["730"], "language": "english", "reviewType": "negative", "maxItems": 500, "onlyReviewsAfter": "2025-01-01" }

Output fields: review_text, voted_up, votes_helpful, votes_funny, weighted_vote_score, comment_count, timestamp_created, timestamp_updated, author, author_steamid, author_playtime_forever_hours, author_playtime_at_review_hours, language, steam_purchase, received_free, written_during_early_access, steam_deck, app_id, review_score, review_score_pct, total_positive, total_negative, total_reviews, _metadata

Non-obvious behaviors:

  • mode: "auto" (default) tries API first; falls back to HTML on 403 — use mode: "api" for speed when WAF isn't blocking, mode: "html" when consistently blocked
  • requestDelayMs defaults to 1000ms — lowering it increases speed but raises 429 risk
  • includeOffTopic: true adds review-bomb reviews; default false excludes them
  • useReviewQuality: true filters out low-helpfulness reviews
  • playtimeFilterMin/Max are in hours, not minutes
  • Reviews outside the onlyReviewsAfter/onlyReviewsBefore window are filtered before being pushed to dataset (not billed)

Pricing: Pay-per-event — $0.00005 per actor start + $0.0008 per review result. No charges for filtered-out reviews.

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Valve Corporation or the Steam platform. It accesses only publicly available Steam Store pages and API endpoints — no login bypass, no private API access, no CAPTCHA solving. Users are responsible for their own compliance with Steam's Terms of Service and applicable data-protection laws (including GDPR/CCPA where review data may contain personal information). Do not use scraped review data for unsolicited commercial outreach in violation of applicable law (e.g. CAN-SPAM, GDPR, TCPA).