Steam Reviews and Store Data Scraper for Games avatar

Steam Reviews and Store Data Scraper for Games

Pricing

from $0.60 / 1,000 review returneds

Go to Apify Store
Steam Reviews and Store Data Scraper for Games

Steam Reviews and Store Data Scraper for Games

Export Steam user reviews and store details (price, discounts, genres, review score) for any game, by App ID or search term, as JSON, CSV or Excel.

Pricing

from $0.60 / 1,000 review returneds

Rating

0.0

(0)

Developer

Bravona

Bravona

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 hours ago

Last modified

Share

Steam Reviews and Store Data Scraper exports Steam user reviews and store details (price, discounts, genres, review score) for any game. Enter Steam App IDs or a search term, choose reviews, details or both, and download the results as JSON, CSV or Excel.

Unofficial tool. Not affiliated with, endorsed by, or sponsored by Valve Corporation or Steam.

What does Steam Reviews and Store Data Scraper do?

  • Collects user reviews for one or more games, found by App ID or by search term.
  • Collects store details for each game: price, discounts, genres, categories, platforms and Metacritic score.
  • Adds review summary stats for your chosen language and for all languages.
  • Puts reviews and game details in one dataset, told apart by itemType.
  • Never outputs reviewer Steam IDs, usernames, profile links or other author data.
  • No login, no browser and no API key. Uses public Steam JSON endpoints.
  • Runs on Apify: call it via API, schedule runs, export to JSON, CSV or Excel, and connect integrations.

Who is it for?

Indie developers: read what players say about your game and your competitors. Game publishers and market researchers: compare prices, discounts, genres and review scores across a set of games. Data scientists: pull large sets of reviews for sentiment analysis.

What data can you get from Steam?

All records go to one dataset. Every record has itemType (review or game-details) and scrapedAt (ISO timestamp). Missing values are null.

Review records (itemType: review)

FieldTypeDescription
appIdintegerSteam App ID of the game
appNamestringGame name
reviewIdstringID of the review
votedUpbooleanWhether the review recommends the game
textstringReview text
languagestringReview language (the language the reviewer chose)
playtimeAtReviewHrsnumberHours played when the review was written (one decimal)
playtimeForeverHrsnumberTotal hours played so far (one decimal)
votesUpintegerNumber of "helpful" votes
votesFunnyintegerNumber of "funny" votes
weightedVoteScorenumberSteam's helpfulness score for the review
commentCountintegerNumber of comments on the review
steamPurchasebooleanWhether the game was bought on Steam
receivedForFreebooleanWhether the reviewer got the game for free
earlyAccessbooleanWhether the review was written during early access
writtenDuringEarlyAccessbooleanSame value as earlyAccess (Steam's longer name)
primarilySteamDeckbooleanWhether the reviewer played mostly on Steam Deck
refundedbooleanWhether the reviewer refunded the game
developerResponsestring or nullThe developer's public reply, if any
developerRespondedAtstring or nullWhen the developer replied
createdAtstringWhen the review was posted (ISO)
updatedAtstringWhen the review was last updated (ISO)
sourceUrlstringLink to the game's Steam store page

Game details records (itemType: game-details)

FieldTypeDescription
appId, appNameinteger, stringApp ID and name
typestringSteam item type, e.g. game
shortDescriptionstringThe store page's short description
developers, publisherslist of stringsAs listed on the store page
releaseDatestringRelease date as Steam shows it
releaseDateIsostring or nullRelease date as YYYY-MM-DD; null for vague dates such as "Coming soon"
comingSoonbooleanWhether the game is unreleased
isFreebooleanWhether the game is free to play
priceInitial, priceFinalnumber or nullPrice before and after discount, in major units (14.99); null for free games
discountPercentnumber or nullCurrent discount
currencystring or nullPrice currency for the chosen country
countrystringCountry used for prices
platformsobjectwindows, mac, linux true/false
genres, categorieslist of stringsSteam genres and store categories
metacriticScoreinteger or nullMetacritic score, when listed
recommendationsTotalinteger or nullNumber of recommendations
headerImage, storeUrlstringHeader image URL and store page link
summaryLanguage, summaryFilterstringLanguage and review filter used for the summary
reviewScore, reviewScoreDescinteger, stringSteam's review score and its label, e.g. "Very Positive"
totalPositive, totalNegative, totalReviews, positivePctnumberReview counts and positive % for the chosen language
allLanguagesReviewScore, allLanguagesReviewScoreDesc, allLanguagesTotalPositive, allLanguagesTotalNegative, allLanguagesTotalReviews, allLanguagesPositivePctnumber / stringThe same summary for all languages

Review counts include all purchase types (Steam purchases and keys or free copies). For Dota 2 that is about 843,000 English reviews.

Sources and terms

SourceAccess methodBravona's pacing
Steam reviewsSteam's IUserReviewsService/GetAppReviews JSON endpoint, no keyAbout 1 request per second (100 reviews per request)
Steam store detailsPublic JSON store.steampowered.com/api/appdetails (not in the Steam Web API docs, so it could change)1 request every 2 seconds
Steam store searchPublic JSON store.steampowered.com/api/storesearch1 request every 2 seconds

The Actor backs off on HTTP 429 and 5xx (up to 5 retries, honoring Retry-After). Pacing is the Actor's own rate, not a limit published by Steam.

Terms: the Steam Web API Terms of Use say you may not use the Steam Web API or Steam Data for unsolicited marketing communications, and limit use to 100,000 calls to the Steam Web API per day. See also the Steam Subscriber Agreement. You are responsible for how you use the data.

How to use Steam Reviews and Store Data Scraper

  1. Open the Actor and click Start.
  2. Enter one or more App IDs (e.g. 570) or a search term (e.g. "roguelike").
  3. Choose a mode: reviews, details or both.
  4. Set Max games per search if you use search terms, and the review filter, language and country if needed.
  5. Set Max reviews per app to cap the number of reviews and the cost.
  6. Start the run, then download the dataset as JSON, CSV or Excel, or fetch it via the Apify API.

Input

Enter at least one App ID or one search term.

FieldRequiredDefaultDescription
appIdsNo*noneSteam App IDs (integers), the number in a store URL: store.steampowered.com/app/570 → 570
searchTermsNo*noneGame names or keywords. Each term is looked up in Steam's store search; its top results are merged with appIds and duplicates removed
maxGamesPerSearchNo5Games to take from each search term (1 to 10). Steam's store search returns at most 10 results per term
modeNobothboth, reviews or details
reviewFilterNorecentrecent (newest first), updated (recently updated first) or all (Steam's "most helpful" sort over the full history)
languageNoenglishall, or one of Steam's 31 language codes: arabic, brazilian, bulgarian, czech, danish, dutch, english, finnish, french, german, greek, hungarian, indonesian, italian, japanese, koreana, latam, malay, norwegian, polish, portuguese, romanian, russian, schinese, spanish, swedish, tchinese, thai, turkish, ukrainian, vietnamese
maxReviewsPerAppNo100Maximum reviews per game (1 to 50,000); caps cost
countryNous2-letter country code for prices, currency and store search

* At least one of appIds or searchTerms is required.

Example input (the prefill):

{"appIds":[570],"mode":"both","maxReviewsPerApp":50}

On a test build this returned 51 items (50 reviews and 1 game-details record) in about 3 seconds.

Output examples

Real, unedited records from the example run above (Apify test build 0.1.2, Oct 30, 2026).

Review record:

{
"itemType": "review",
"appId": 570,
"appName": "Dota 2",
"reviewId": "238941653",
"votedUp": true,
"text": "really great game! but also stressful game! so if you love your life. dont play dota!",
"language": "english",
"playtimeAtReviewHrs": 3904.6,
"playtimeForeverHrs": 3904.6,
"votesUp": 0,
"votesFunny": 0,
"weightedVoteScore": 0.5,
"commentCount": 0,
"steamPurchase": true,
"receivedForFree": false,
"earlyAccess": false,
"writtenDuringEarlyAccess": false,
"primarilySteamDeck": false,
"refunded": false,
"developerResponse": null,
"developerRespondedAt": null,
"createdAt": "2026-10-30T18:29:24.000Z",
"updatedAt": "2026-10-30T18:29:24.000Z",
"sourceUrl": "https://store.steampowered.com/app/570",
"scrapedAt": "2026-10-30T19:51:01.465Z"
}

Game details record:

{
"itemType": "game-details",
"appId": 570,
"appName": "Dota 2",
"type": "game",
"shortDescription": "Every day, millions of players worldwide enter battle as one of over a hundred Dota heroes. And no matter if it's their 10th hour of play or 1,000th, there's always something new to discover. With regular updates that ensure a constant evolution of gameplay, features, and heroes, Dota 2 has taken on a life of its own.",
"developers": [
"Valve"
],
"publishers": [
"Valve"
],
"releaseDate": "Jul 9, 2013",
"releaseDateIso": "2013-07-09",
"comingSoon": false,
"isFree": true,
"priceInitial": null,
"priceFinal": null,
"discountPercent": null,
"currency": null,
"country": "us",
"platforms": {
"windows": true,
"mac": true,
"linux": true
},
"genres": [
"Action",
"Strategy",
"Free To Play"
],
"categories": [
"Multi-player",
"Co-op",
"Steam Trading Cards",
"Steam Workshop",
"SteamVR Collectibles",
"In-App Purchases",
"Camera Comfort",
"Color Alternatives",
"Custom Volume Controls",
"Valve Anti-Cheat enabled",
"Steam Timeline"
],
"metacriticScore": 90,
"recommendationsTotal": 14371,
"headerImage": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/570/header.jpg?t=1791407503",
"storeUrl": "https://store.steampowered.com/app/570",
"summaryLanguage": "english",
"summaryFilter": "recent",
"reviewScore": 8,
"reviewScoreDesc": "Very Positive",
"totalPositive": 740349,
"totalNegative": 102430,
"totalReviews": 842779,
"positivePct": 87.8,
"allLanguagesReviewScore": 8,
"allLanguagesReviewScoreDesc": "Very Positive",
"allLanguagesTotalPositive": 2256605,
"allLanguagesTotalNegative": 550146,
"allLanguagesTotalReviews": 2806751,
"allLanguagesPositivePct": 80.4,
"scrapedAt": "2026-10-30T19:51:01.465Z"
}

Each run also writes an OUTPUT record to its key-value store: the resolved input, each search term and the App IDs it produced, and per-game status for details and reviews (count, pages, stop reason and Steam's matching total). Per game, details.chargeRequested is true when the details record was saved with its charge event, and details.charged / reviews.charged show what Apify actually charged; charging.payPerEvent says whether the run had pay-per-event pricing at all.

How much does it cost to scrape Steam reviews?

You pay only for records saved to your dataset.

EventWhen it is chargedPrice
Actor startOnce per run$0.00005
Review returnedEach review saved$0.0006 ($0.60 per 1,000)
Game details returnedEach game's details record saved, once per game per run$0.002 ($2.00 per 1,000)

Examples (upper bounds: a game can have fewer reviews than the cap, and a search can return fewer games):

  • Prefilled run (1 game, mode both, 50 reviews): 50 × $0.0006 + 1 × $0.002 = $0.032, plus the $0.00005 start fee.
  • Defaults, 1 game (mode both, 100 reviews): up to 100 × $0.0006 + 1 × $0.002 = about $0.062, plus the start fee.
  • Defaults, 1 search term (5 games, mode both, 100 reviews each): up to 500 × $0.0006 + 5 × $0.002 = about $0.31, plus the start fee.
  • 1,000 reviews cost $0.60; details for 100 games cost $0.20.

Games Steam returns no details for (for example, not sold in your chosen country) get no details record and are not charged.

The Actor respects the maximum cost you set for the run (Apify's standard spending limit): when the limit is reached it stops cleanly.

Platform usage (compute, proxy, storage) is included in these prices. You pay only the event prices listed above, nothing extra on top.

Works on Apify's free plan; you pay a tiny start fee plus only for results returned (each review and each game-details record saved). Charges come out of your Apify account's prepaid usage; on the Free plan, once that monthly usage is used up, runs stop until the next billing cycle.

Limits

  • The Actor paces itself (about 1 request per second for reviews, 1 every 2 seconds for details and search), so large runs take time: 50,000 reviews for one game take about 9 minutes.
  • The store details endpoint is not part of Steam's documented Web API and could change or be throttled.
  • Up to 50,000 reviews per game, and up to 10 games per search term (Steam's store search returns at most 10).
  • Store search results can include DLC and soundtracks, not only games.
  • Games not sold in your chosen country get no details record (and no charge); their reviews are still collected.
  • Free games have null prices; vague release dates give a null releaseDateIso.
  • Reviewer Steam IDs, usernames, profile data and other author data are not included.

FAQ

Is it legal to use this data? The Actor reads public Steam data without logging in. Review text is public user content: use it for analysis, not republishing. The Steam Web API Terms of Use forbid using Steam Data for unsolicited marketing communications. You are responsible for how you use the data. This is not legal advice.

Does it include reviewer profiles or Steam IDs? No. No reviewer IDs, usernames, profile links or other author data are output.

Which languages are supported? all, or any of Steam's 31 language codes (default english). Steam tags each review with the language the reviewer chose.

Can I get every review for a game? In testing, yes: on Oct 30, 2026, a game with 2,301 English reviews returned 2,300 of them with each review filter, at about 6,000 reviews a minute. That is an observed test result on a mid-size game, not a guarantee for every game. Set Max reviews per app as high as 50,000.

Why are review totals higher than on some other tools? The Actor counts reviews from all purchase types, not only Steam purchases. Dota 2 shows about 843,000 English reviews.

Why do I get at most 10 games per search term? Steam's store search returns at most 10 results per term. Use App IDs for more games.

A game has reviews but no details record. Why? Steam returned no store details for it in your country (removed, region-locked or not a store app). Its reviews are still collected and no details are charged. Try another country.

Do I pay for Apify compute on top? No. Platform usage is included. You pay only the listed event prices: $0.00005 per run start, $0.0006 per review and $0.002 per game's details.

Can I use it via API or integrations? Yes, like any Apify Actor, through the API tab, schedules and integrations.

Something broke or a field is missing? Open an issue in the Issues tab.

Changelog

  • 0.1 (Unreleased): Initial release. Steam reviews and game details by App ID or store search term, in one dataset; review filters (recent, updated, all), 31 languages or all, up to 50,000 reviews per game; prices for any country; review summary stats for the chosen language and all languages; no reviewer IDs or author data; pay per event.

Disclaimer

Steam Reviews and Store Data Scraper is an unofficial tool built by Bravona. It is not affiliated with, endorsed by, or sponsored by Valve Corporation or Steam. All product names and trademarks belong to their owners and are used only to describe compatibility. The Actor reads publicly available data through public Steam endpoints without logging in, and follows a conservative request rate. Data is provided as-is; accuracy and availability depend on the source. You are responsible for using the data in line with Steam's terms and applicable law (including privacy law).