Steam Insights Scraper — Games, Reviews, Players
Pricing
from $0.005 / game scraped
Steam Insights Scraper — Games, Reviews, Players
Steam games, paginated reviews, concurrent players & peaks, owner estimates, sentiment evolution, top reviewers by playtime, history deltas across runs. Multi-region pricing, multi-language reviews. Built for game studios, publishers, VCs hunting indie hits, and AI/RAG pipelines.
Pricing
from $0.005 / game scraped
Rating
0.0
(0)
Developer
Yuliia Kulakova
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Steam Insights Scraper
Games, reviews, concurrent players, owner estimates, sentiment trends and history deltas — turn Steam into a structured intelligence feed.

Why this scraper
Steam is the world's largest PC gaming platform — but the storefront only shows you the current state of a game. There's no easy way to track how a launch is performing day over day, who the most engaged reviewers are, when a price dropped, or which genres are heating up. Generic scrapers dump every game and let you sort it out downstream — and they don't tell you anything about velocity, sentiment shift, or aggregate developer reputation.
This scraper turns Steam into a structured data feed you can pipe straight into your CRM, dashboard, LLM, or spreadsheet. Pull catalog details and paginated user reviews, see live concurrent players and peaks, get owner estimates, compare recent sentiment vs lifetime, surface top long-playtime reviewers, and track how a game grows between runs.
What you get
Game records with rich context
- Name, type (game / DLC / hardware), short description, header image
- Developers, publishers, release date, "coming soon" flag
- Current price, original price, discount percent and tier (small / moderate / major / deep)
- Genres, Steam categories, supported platforms (Windows / Mac / Linux)
- Metacritic score (when available), total recommendations, age rating, content descriptors
- Multi-region pricing — pick any country code and language
Paginated user reviews (opt-in)
- Up to 5,000 reviews per game in a single run
- Full review text (HTML / BBCode stripped), language, vote counts
- Author profile per review: total games owned, lifetime playtime, playtime at the moment of the review, last-played timestamp
- Sort by "recent" (newest), "updated" (recently edited), or "all" (most helpful first)
- Filter reviews by language
Concurrent player counts (opt-in)
- Current live player count
- 24-hour peak
- All-time peak
Owner estimates (opt-in)
- Bucketed owners range (e.g. "20,000,000 .. 50,000,000")
- Lifetime positive vs negative review tallies
- Recent activity signal
Per-game analytics (computed for you)
pointsPerHour-equivalents: recommendations growth tracked across runs- Discount tier classification
- Sentiment evolution: recent fetched window vs lifetime positive ratio + trend label (improving / stable / declining)
- Top reviewers ranked by a "trusted reviewer score" — weighted by playtime, vote count, and whether they bought the game on Steam
- Steam-purchase share (how many reviews are from verified Steam buyers vs external gifts)
- Average playtime at the moment reviewers wrote their reviews
- Early-access review share
Developer rollups
- Per developer or publisher: total game count, aggregate Metacritic average, total recommendations across portfolio
- Useful for tracking entire studios (e.g. all CD PROJEKT RED titles, or every game from a small indie team)
History delta tracking across runs
- Persistent per-game snapshot store
- On every subsequent run, each game record includes
history.delta:playersDelta,peak24hDelta,recommendationsDelta,recommendationsPerHour,priceDeltaCents,priceDropDetected,discountChange,trend(up / down / flat / unknown) - See exactly how a release ramped overnight, when a sale started, or how player counts decayed over the long tail
Input-time filters (the headline differentiator)
- Minimum positive review percent
- Minimum total recommendations
- Minimum owner estimate
- Price range (in cents)
- "On sale only" toggle
- Genre whitelist
- Filters apply before expensive review fetches and third-party enrichment — you only pay for records that pass
Use cases
| Who | What they pull |
|---|---|
| Game studios | Competitor monitoring — full review streams from rival launches, sentiment drift over time |
| Publishers | Verified Steam-purchase review ratios, reviewer playtime distributions, multi-region pricing |
| PR & comms teams | When discount or rating shifts trigger media attention — track in real time |
| VC investors | Hit indie discovery — small studio with breakout recommendations growth, sub-10M owners but climbing |
| Game journalists | Sentiment shift signals; reviewer karma rankings; trending genres in featured lists |
| AI / RAG engineers | Multi-language opinion-rich text corpus (English, Russian, Chinese, Japanese, Polish, Spanish, …) for training and retrieval |
| Resellers & key sites | Discount tier tracking; deep-discount detection; price drop signals via history delta |
| Solo devs / indie studios | Portfolio analysis — see your aggregate review tone, owner estimates, time-on-front-page |
Quick start
Drop this into the Input panel and run:
{"lists": ["top_sellers"],"maxGamesPerList": 30,"includeSteamSpy": true}
You'll get the current Steam top sellers with owner estimates and discount classification — typically under 15 seconds.
Common input examples
One specific game with the full enrichment stack
{"appIds": ["413150"],"includeReviews": true,"maxReviewsPerGame": 100,"reviewFilter": "recent","includeSteamSpy": true,"includeConcurrentPlayers": true}
Pulls Stardew Valley plus the 100 newest reviews, live player count, owners range, and full analytics block (sentiment trend, top reviewers, average playtime at review).
A studio's complete portfolio
{"appIds": ["1091500", "292030", "20920"],"includeReviews": true,"maxReviewsPerGame": 20,"includeSteamSpy": true,"includeConcurrentPlayers": true}
Three CD PROJEKT RED titles — you get individual game records plus an aggregated developer record with average score and total recommendations across the portfolio.
Discover by genre with quality gate
{"lists": ["specials", "new_releases"],"maxGamesPerList": 20,"onSaleOnly": true,"genres": ["Indie", "RPG"],"includeSteamSpy": true}
Filters out anything that isn't on sale AND tagged Indie or RPG before any review fetches — cost-efficient discovery.
Hit-indie hunting (canonical / proven titles only)
{"queries": ["roguelike", "souls"],"minOwners": 500000,"includeSteamSpy": true,"maxGamesPerQuery": 15}
Search Steam for "roguelike" and "souls", keep only games with at least 500,000 estimated owners.
Daily monitor with history tracking
{"lists": ["top_sellers"],"maxGamesPerList": 50,"includeSteamSpy": true,"includeConcurrentPlayers": true,"enableHistory": true,"historyStoreName": "steam-daily-watch"}
Run on a schedule. Every run after the first includes history.delta showing how each game has moved.
Localized pricing and reviews
{"appIds": ["1091500", "413150"],"countryCode": "ru","language": "russian","includeReviews": true,"reviewLanguage": "russian","maxReviewsPerGame": 30}
Pull two games with Russian-language store descriptions, ruble pricing, and reviews filtered to Russian only.
Output overview
Three record types in the dataset:
Game
| Field | Description |
|---|---|
type | "game" |
appId | Steam app ID |
name, type_steam | Title and Steam type (game / dlc / hardware) |
shortDescription, headerImage, website | Marketing assets |
developers, publishers | Arrays (multi-dev co-productions supported) |
releaseDate, comingSoon, isFree | Release status |
currency, price, priceCents, priceInitialCents | Localized pricing |
discountPercent, isOnSale | Discount status |
genres, categories | Steam-side classification |
platforms | { windows, mac, linux } |
metacriticScore, metacriticUrl | If indexed by Metacritic |
totalRecommendations | Lifetime tally |
ageRequired, contentDescriptors | Age rating and content notes |
screenshotsCount, moviesCount | Asset counts |
supportEmail, supportUrl | Customer support contacts (when public) |
url, permalink | Public Steam store URL |
steamSpy | owners range, lifetime positive / negative tallies (when included) |
playerCounts | currentPlayers, peak24h, allTimePeak (when included) |
reviewSummary | Lifetime + fetched-window positive % (when reviews fetched) |
analytics | discountTier, sentimentTrend, topReviewers[], average playtime, Steam-purchase share, etc. |
history | isNew, snapshotCount, previous, delta, series (when tracking on) |
Review
| Field | Description |
|---|---|
type | "review" |
id, appId | Review ID + parent game |
language, text | Body (HTML / BBCode stripped) |
votedUp, votesUp, votesFunny, weightedVoteScore | Vote tallies |
steamPurchase, receivedForFree, earlyAccess | Source flags |
createdAt, updatedAt | ISO timestamps |
author | steamId, numGamesOwned, numReviews, playtimeAtReviewMinutes, playtimeForeverMinutes, playtimeLastTwoWeeksMinutes, lastPlayedAt |
Developer
| Field | Description |
|---|---|
type | "developer" |
name | Developer or publisher name |
gameCount | Number of titles in this run from this entity |
games | Array of { appId, name } |
averageScore | Average Metacritic across portfolio (when scores available) |
totalRecommendations | Sum of recommendations across portfolio |
Pricing
| Charge | Cost |
|---|---|
| Actor start | $0.01 per run |
| Game scraped | $0.005 per game (or job listing / DLC) |
| Review scraped | $0.001 per review |
| Developer profile scraped | $0.005 per developer |
Records are only counted after filters pass — you don't pay for games dropped by minOwners, genres, onSaleOnly, or priceMax. Reviews and developer rollups are opt-in.
Worked examples:
| Scenario | Games | Reviews | Devs | Cost |
|---|---|---|---|---|
| 30 top sellers, no reviews | 30 | 0 | ~25 | $0.29 |
| 100 search results (no reviews) | 100 | 0 | ~80 | $0.91 |
| 1 viral game + 500 reviews + author profile | 1 | 500 | 1 | $0.52 |
| Top 20 sellers + 50 reviews each | 20 | 1000 | 15 | $1.18 |
| Daily watchlist of 50 popular games | 50 | 0 | 30 | $0.41 |
| Deep weekly review: 200 games + 50 reviews each | 200 | 10,000 | 100 | $11.51 |
Reviews are intentionally priced low so that comment-stream analytics and AI/RAG workloads stay affordable.
Proxies
Proxies are included and configured automatically. No setup required.
FAQ
Do I need a Steam developer key or account? No. Everything this scraper reads is public data accessible without login. Pass an input, get a dataset.
Does it work for all regions?
Yes. Pass countryCode (two-letter ISO, e.g. us, gb, de, jp, ru) and language to get localized pricing and store descriptions. Reviews can be language-filtered independently with reviewLanguage.
How many reviews can I pull per game?
Up to 5,000 per game per run, capped by maxReviewsPerGame. The Steam reviews stream is paginated server-side and we walk the cursor for you.
Are concurrent player counts live?
Yes — currentPlayers reflects the live count at the moment of the run, and peak24h is the rolling 24-hour peak. Note that not every game on Steam has a tracked player-count history (small titles are sometimes missing); when that's the case the playerCounts field is simply absent.
Why is the owners field showing 0 .. 20,000 for a new release?
Owner estimates come from a daily-refreshed third-party index that lags by 1–7 days behind Steam launches. Games released this week often show the default 0 .. 20,000 bucket until the index catches up. For freshly-launched games, use minRecommendations instead of minOwners as your quality gate.
Does this do sentiment analysis with AI? No — and that's deliberate. We return raw review text, lifetime/recent positive ratios, and per-reviewer playtime weighting. Sentiment NLP is a downstream concern; bring your own model and feed it the corpus we provide. This keeps pricing flat and the data unopinionated.
How does history tracking work?
Turn on enableHistory: true and pick a historyStoreName. On every run, each game's current state (review score, recommendations, price, current player count, 24h peak) is snapshotted under that name. From the second run onward, every game record includes a history.delta block with the change since the previous run, expressed as raw deltas and per-hour rates.
Can I track price drops automatically?
Yes — when history tracking is enabled, every game record carries history.delta.priceDeltaCents and history.delta.priceDropDetected: true whenever the current price is lower than the previous snapshot. Schedule the actor every few hours and pipe to a webhook for instant alerts.
Can I get Workshop mods or community pages? No — those are out of scope here. This actor focuses on store content, reviews, and player metrics.
Can I export to CSV / XML / RSS? Apify supports all of those formats out of the box — pick your format in the "Export results" panel after a run finishes.
Will this work on a free Apify plan? Yes. Typical runs cost cents, well within the free tier's monthly compute budget.
Limits (the honest list)
- Owner estimates are bucketed ranges (e.g.
"5,000,000 .. 10,000,000"), not exact counts. The data source publishes them this way on purpose — Steam itself doesn't expose precise owner numbers. - Owner estimates lag 1–7 days behind fresh releases (see FAQ).
- Concurrent player history is not available for every game. Most popular titles are tracked; obscure small releases sometimes aren't. When unavailable, the
playerCountsfield is simply absent. - Sentiment analysis is not included. You get raw review text and aggregate positive/negative ratios — bring your own NLP if you need topic / emotion classification.
- Review trees / replies are not supported because Steam reviews are flat (no nested reply threads, unlike Reddit or YouTube).
- No Workshop / mod scraping. Out of scope.
- No real-time push / streaming. This is a batch scraper. Schedule it on Apify's cron and pipe to a webhook for near-real-time workflows.
- No login-required content. Everything we return is public — Steam doesn't gate most game data behind auth, so this is rarely a constraint.
Maintained by brilliant_gum on the Apify platform. Open an issue on the actor page for bugs, feature requests, or pricing questions.