Steam Reviews Scraper — Exact Date Windows, No Key avatar

Steam Reviews Scraper — Exact Date Windows, No Key

Pricing

from $1.00 / 1,000 review scrapeds

Go to Apify Store
Steam Reviews Scraper — Exact Date Windows, No Key

Steam Reviews Scraper — Exact Date Windows, No Key

Scrape reviews for any Steam game by app id. Filter by language, positive/negative, purchase type and an exact date range. No API key, no login.

Pricing

from $1.00 / 1,000 review scrapeds

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

a day ago

Last modified

Share

Scrape reviews for any game on Steam. Give it an app id or a store URL and get back the review text, the verdict, the vote counts, and a full author block — playtime, games owned, review history, Steam profile. No API key, no login, no cookies.

Ask for a date range and get that date range. Steam's own day_range filter leaks badly — asking for 3 days returned reviews up to 3,515 days old, and a 30-day request let 33 of 60 through from outside the window — so this scraper does not use it at all. It walks reviews newest-first and enforces your window itself. Anything outside is never delivered and never charged, and the run log says how many were trimmed.

What you can filter on

FieldTypeDefaultNotes
appIdsarray— (required)Numeric ids (570) or store URLs (…/app/292030/…). Several games per run
maxItemsinteger1000Hard cap across the whole run
languageselectallSteam language code, or every language
reviewTypeselectallPositive only, negative only, or both
purchaseTypeselectallBought on Steam, activated from a key, or either
onlyReviewsAfterdateStart of the window, e.g. 2026-01-01
onlyReviewsBeforedateEnd of the window; a bare date includes that whole day
includeOffTopicbooleanfalseInclude bursts Steam classes as off-topic review bombing

All of these are verified live, not assumed. On The Witcher 3: negative returned 200 rows with none recommended, positive + german returned 100 with all recommended and all German, and non_steam_purchase returned 100 with none marked as a Steam purchase.

One caveat worth knowing. purchaseType only separates anything on a paid game. Every acquisition of a free-to-play title counts as a Steam purchase, so on something like Dota 2 all three settings return identical rows. That is Steam's behaviour, not a bug here.

A second one. Steam serves reviews newest-first, so a window well in the past means paging down through everything newer to reach it — a window from three weeks ago took 16 pages to fill 300 rows, where a recent one fills immediately. The upside of walking in order is that the crawl knows when it is finished: asking for a two-day window with a cap of 5,000 stopped after 6 pages and 191 reviews rather than running to the cap. The log reports both the pages walked and the rows trimmed.

What you get per review

Review: id, permalink, text, language, recommended or not, created and updated timestamps.

Engagement: helpful votes, funny votes, Steam's weighted vote score, comment count.

Context flags: bought on Steam, received free, written during early access, played mainly on Steam Deck, refunded.

Author: Steam id, display name, profile URL, avatar, games owned, reviews written, and playtime — at the time of the review, lifetime, and last two weeks — reported in hours rather than Steam's raw minutes.

Example input

{
"appIds": ["292030"],
"maxItems": 500,
"language": "english",
"reviewType": "negative",
"onlyReviewsAfter": "2026-06-01",
"onlyReviewsBefore": "2026-08-31"
}

Notes

  • Steam's public review endpoint is used directly, so runs are fast and need no proxy.
  • Reviews are deduplicated by recommendationid within a run.
  • Cursor pagination stops when Steam stops advancing the cursor, rather than spinning on the last page.
  • A run that finds nothing says why in its status rather than returning a silent empty dataset.