Reviews & apps · Coming soon

Steam Reviews & Game Details Scraper

Add a Steam app ID or store link. Get each review with verdict, text, playtime and votes. Each game also gets one row with price, genres and review score.

Built and tested. Prices will be shown after release.

Coming soon to the Apify StoreFollow us on Apify

What you get, for example

typereview
appId730
gameNameCounter-Strike 2

How it will work: 3 steps

  1. Follow us on ApifyThe tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: 730 in Steam app IDs. Each start is one run.
  3. Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.

What it does

Steam Reviews & Game Details exports Steam game reviews by app ID or store link. Each review comes with the verdict, text, language, playtime, helpful votes and date, and each game gets one row with price, genres, release date and review score.

Good for

  • Read player feedback for your game or a competitor's game in one table.
  • Collect only reviews written after a date, for example after a patch or sale.
  • Compare price, discount, genres and review score of many games at once.
  • Build a sentiment or topic dataset in one language.

Not a good fit

  • Only the Steam store. Bundles, packages, DLC lists, workshop items and player profiles are not supported.
  • Player data stays minimal: you get the reviewer's steamId and the public review link, not names, avatars or friend lists.
  • Steam decides which reviews it shows. Reviews that Steam hides (for example off-topic review bombs) or deletes are not returned.

Who uses it

Game developers

Read player feedback for your game or a rival game in one table.

Publishers

Compare price, discount, genres and score of many games.

Data analysts

Build a sentiment or topic dataset in one language.

Price

Prices will be shown after release.

Questions

Do I need a Steam account or API key?

No. It reads public Steam store data. No login, cookies or key.

Is personal data included?

Only the public steamId and the public review link. No names or avatars.

Are the numbers live?

Yes. Each run reads Steam at that moment. The fetchedAt field shows when.

Does it work with DLC or bundles?

No. It supports games from the Steam store only.

Why are the playtime numbers decimals?

Steam stores minutes. The Actor turns them into hours with one decimal place.

Details

Step by step on Apify
  1. Open the Input tab.
  2. In Steam app IDs keep the prefilled 730 (Counter-Strike 2) or add your own ID. The ID is the number in the store link: store.steampowered.com/app/730/.
  3. Keep Max reviews per game at the prefilled 20.
  4. Click Start.
  5. Open the Reviews view of the output and check recommended, text and playtimeHours. Open Game details on the Output tab for the price and review score.
Use cases
TaskInputYou getKey fieldsNext step
Find top complaints about a gameappIds, reviewType: negative, language: englishreview rowstext, votesUp, playtimeHoursTopic or sentiment analysis in Sheets or an LLM
Check reaction to a patchreviewsSince: "2026-10-01", sortBy: recentreview rowsrecommended, createdAtShare of positive reviews per day
Compare a genre20–100 appIds, maxReviews: 0game rowsprice, discountPercent, genres, positivePercentPrice and score table
Track a competitor's saleappIds, countryCode, scheduledgame rowsprice, initialPrice, discountPercentAlert when the discount changes
Tips for better results
  • Use the date filter to get reviews after a patch or sale.
  • Pick one language to keep your dataset clean.
  • Playtime is in hours with one decimal place.
Limits and good to know
  • Up to 100 games per run and up to 50,000 reviews per game in the input. In our tests 1,000 reviews took about 6 seconds and 5,551 reviews about 38 seconds (roughly 145 reviews per second), so the default 300-second timeout should fit roughly 24,000 reviews (an estimate from that rate; an earlier 3 games × 8,000 test on a previous version took about 170 seconds). For more reviews, raise the run timeout or split the games over several runs
  • Steam limits the request rate. The Actor waits between requests and slows down on rate limits, so big runs take minutes, not seconds
  • If the run reaches its time limit, it stops about 15 seconds before the timeout and keeps all saved rows. The Apify run then shows FAILED, while RUN_SUMMARY says PARTIAL with reason DEADLINE when rows were saved (or ERROR when none were). Raise the timeout or split the games for long runs
  • If the run reaches your maximum charge, it stops, keeps all saved rows and ends as PARTIAL with reason CHARGE_LIMIT
  • If Steam fails for one game, other games continue; the failed game gets an error row and the run is PARTIAL with SOME_GAMES_FAILED

For developers

Sample result

One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.

one result · JSON
{
  "type": "review",
  "appId": "730",
  "gameName": "Counter-Strike 2",
  "reviewId": "219989924",
  "steamId": "76561198351194597",
  "recommended": false,
  "text": "The gameplay is nice but the game is infested with cheaters :(",
  "language": "english",
  "playtimeHours": 3097.1,
  "playtimeForeverHours": 3108.1,
  "playtimeLastTwoWeeksHours": 0,
  "votesUp": 940,
  "votesFunny": 57,
  "helpfulScore": 0.9106771349906921,
  "commentCount": 22,
  "steamPurchase": true,
  "receivedForFree": false,
  "refunded": false,
  "writtenDuringEarlyAccess": false,
  "primarilySteamDeck": false,
  "developerResponse": null,
  "developerRespondedAt": null,
  "createdAt": "2026-03-06T15:36:44.000Z",
  "updatedAt": "2026-03-06T15:36:44.000Z",
  "url": "https://steamcommunity.com/profiles/76561198351194597/recommended/730/",
  "storeUrl": "https://store.steampowered.com/app/730/",
  "source": "steam",
  "fetchedAt": "2026-10-17T11:57:22.670Z"
}
Data fields (40)
FieldTypeMeaning
typestringRow kind: review, game (details), not_found or error (free status rows).
appIdstringSteam app ID.
gameNamestring
reviewIdstring
steamIdstringReviewer's public SteamID64 only; no names or avatars.
recommendedboolean
textstring
languagestring
playtimeHoursnumberHours played when the review was written.
playtimeForeverHoursnumber
playtimeLastTwoWeeksHoursnumber
votesUpinteger
votesFunnyinteger
helpfulScorenumber
commentCountinteger
steamPurchaseboolean
receivedForFreeboolean
refundedboolean
writtenDuringEarlyAccessboolean
primarilySteamDeckboolean
developerResponsestring
developerRespondedAtstring
createdAtstring
updatedAtstring
storeUrlstring
appTypestring
isFreeboolean
pricenumberCurrent price in currency units; 0 for free games, null when not sold in the country.
initialPricenumber
currencystring
discountPercentinteger
priceFormattedstring
genresarray
categoriesarray
releaseDatestring
releaseDateIsostring
comingSoonboolean
developersarray
publishersarray
platformsarray
Input settings (10)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
Steam app IDsappIdsarray["730"]
Steam store URLsgameUrlsarray
Max reviews per gamemaxReviewsinteger20
Review languagelanguagestring"all"
VerdictreviewTypestring"all"
OrdersortBystring"recent"
Only reviews sincereviewsSincestring
Purchase typepurchaseTypestring"all"
Add game details rowincludeGameDetailsbooleantrue
Store countrycountryCodestring"us"

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure