Steam Reviews Scraper - Playtime, Votes & Sentiment avatar

Steam Reviews Scraper - Playtime, Votes & Sentiment

Pricing

from $1.60 / 1,000 scraped reviews

Go to Apify Store
Steam Reviews Scraper - Playtime, Votes & Sentiment

Steam Reviews Scraper - Playtime, Votes & Sentiment

Scrape Steam game reviews: recommended or not, full text, helpful and funny votes, and the author's playtime AT THE TIME OF REVIEW in hours. Filter by language, sentiment and sort. Bulk apps, no API key. $0.002 per review.

Pricing

from $1.60 / 1,000 scraped reviews

Rating

0.0

(0)

Developer

Broke to Built

Broke to Built

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 hours ago

Last modified

Share

Steam Reviews Scraper — Playtime, Votes & Sentiment

Scrape reviews for any Steam game: recommended or not, the full review text, helpful and funny votes, and — the field that actually matters — how many hours the author had played at the moment they wrote it.

No API key, no login. $0.002 per review — an app with no matching reviews is recorded and not charged.

Input

{ "appId": "570", "maxReviews": 200, "language": "english" }

Bulk, negative reviews only, by store URL:

{
"appIds": ["570", "https://store.steampowered.com/app/440/Team_Fortress_2/"],
"reviewType": "negative",
"sort": "recent",
"maxReviews": 500
}
FieldTypeNotes
appIdstringApp id, or any store.steampowered.com/app/... URL.
appIdsstring[]Up to 10 apps per run.
maxReviewsinteger1–1000 per app. You are charged per review returned.
languagestringSteam language name — english, german, schinese, or all.
sortenumrecent, updated, all (Steam's helpfulness ranking).
reviewTypeenumall, positive, negative.

Output

{
"ok": true,
"appId": "570",
"totalReviews": 838200,
"reviewScoreDesc": "Very Positive",
"recommendationId": "232971383",
"recommended": false,
"review": "…",
"createdAt": "2026-08-14T18:05:33.000Z",
"helpfulVotes": 1030,
"funnyVotes": 387,
"helpfulnessScore": 0.9164,
"steamPurchase": true,
"receivedForFree": false,
"onSteamDeck": false,
"authorName": "…",
"authorPlaytimeHours": 7724.5,
"authorPlaytimeAtReviewHours": 7680.8,
"authorGamesOwned": 5,
"authorReviewCount": 1
}

What it gets right

  • ⭐ Playtime at the time of review. Steam stores it and almost nothing surfaces it. It is the single number that separates a considered 400-hour review from a refund-window rant, and it is returned in hours — Steam's own unit is minutes, which nobody thinks in.
  • ⭐ Totals are always present. Steam silently drops total_reviews, the positive/negative split and the score label from its summary whenever review_type is not all — measured. Those totals are what make a sample mean anything (42 negative reviews reads very differently against 800 than against 838,200), so they are fetched in their own request rather than reported as null.
  • helpfulnessScore is a number. Steam sends it as a string; a score you cannot sort is not a score.
  • Dates are ISO. Steam sends epoch seconds; read as milliseconds they land in 1970, and the spec asserts nothing predates Steam itself.
  • Cursor paging is de-duplicated. Steam repeats its cursor at the end of a result set, so a naive pager loops and re-bills the same reviews. This stops on a repeated cursor and on a page that adds nothing new.
  • Store URLs are resolved to app ids, so pasting a link works.

Pricing

$0.002 per review returned. 100 reviews is 20 cents. An app with no reviews under your filters produces a reviewCount: 0 record and is not charged.

Limits

  • 10 apps per run, up to 1000 reviews each.
  • Reviews only. Not store metadata, prices, or player counts.
  • language uses Steam's own names (english, schinese), not ISO codes.
  • Bundles and DLC pages are not review-bearing app ids; those return a clear error.

FAQ

Do I need a Steam API key? No — the review endpoint is public.

Can I get every review of a huge game? Up to 1000 per run; run again with a different sort or language for more.

Why is authorPlaytimeAtReviewHours sometimes null? Steam does not record it on older reviews.

Changelog

  • 0.1 (2026-09-10) — first release. Playtime-at-review in hours, totals fetched independently of filters, numeric helpfulness score, de-duplicated cursor paging, store-URL resolution.