Steam Reviews Scraper - With Playtime Data avatar

Steam Reviews Scraper - With Playtime Data

Pricing

from $1.33 / 1,000 reviews

Go to Apify Store
Steam Reviews Scraper - With Playtime Data

Steam Reviews Scraper - With Playtime Data

Scrape Steam reviews with the hours the player had when writing them, how long they kept playing afterwards, the early access flag, and whether they bought the game on Steam or received it. Filter by language and minimum playtime. No API key needed.

Pricing

from $1.33 / 1,000 reviews

Rating

0.0

(0)

Developer

Tom Awake

Tom Awake

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

19 hours ago

Last modified

Share

What does Steam Reviews Scraper do?

Steam reviews with the hours the player had when they wrote them — and how long they kept playing afterwards.

Steam is the only major store that publishes this, and almost nobody uses it. It changes what a review means. A negative review at two hours says the game disappoints immediately. The same review at five hundred hours says it was loved for a long time and then spoiled — by a patch, a monetisation change, an abandonment. Both count as one thumb-down in the average.

No API key. No account.


What playtime does to the numbers

400 recent reviews of Cyberpunk 2077:

Hours at reviewReviewsPositive
2–10h3388%
10–50h11694%
50–200h21197%
200–1000h3795%

Nine points between players passing through and players who know the game. The store's headline percentage shows one number for all of them.

Median playtime at review in that run: 71.8 hours.

And 38% kept playing after posting — including five negative reviews followed by another 4 to 12 hours. A complaint from someone who came back is a different signal from one who left.


The four things this does that the source does not

1. Playtime in hours, with a readable tier.

Steam returns minutes. playtimeAtReviewHours converts, and playtimeTier buckets it — the first boundary at 2 hours, because that is Steam's own refund window and the line between trying a game and playing it.

2. What happened after.

The API gives playtime at review and playtime now, and never subtracts them. playtimeSinceReviewHours and keptPlayingAfterReview do.

3. Purchase context, surfaced.

Four flags buried in the response that qualify every review: purchasedOnSteam (90% in the measured run), receivedForFree, refunded, writtenDuringEarlyAccess. A review from a free key and one from a paid copy are not the same evidence.

4. Cursor pagination, exhausted safely.

Steam pages by cursor, and the cursor eventually repeats. Without a guard the loop runs forever on the same page; this one stops.


Field coverage

Measured on 400 reviews.

FieldCoverage
playtimeAtReviewHours, playtimeTotalHours100%
recommended, language, createdAt100%
weightedVoteScore, reviewUrl100%
review text99%
playtimeSinceReviewHours51%
authorGamesOwned50%
votesUp8%

Three of those need explaining rather than hiding:

playtimeSinceReviewHours at 51% — half the players have not played since. That absence is the finding, not a gap.

authorGamesOwned at 50% — private Steam profiles. Not retrievable.

votesUp at 8% — recent reviews have not been voted on yet. Sort by Most helpful if you need that field; those reviews are older by construction.


What it is for

  • Post-patch triage. Negative reviews from players with 50+ hours are about what you changed. Negative reviews under 2 hours are about onboarding. They are different problems and different teams.
  • Competitive research. What players actually dislike about a rival game, weighted by whether they know it.
  • Review-bomb analysis. A sudden wave of sub-2-hour negatives from non-Steam keys looks nothing like genuine dissatisfaction, and the fields to tell them apart are all here.
  • Community management. Run daily with Most recent and read what arrived overnight.
  • Store page research. Which languages your complaints come from.

Three dataset views ship with the Actor: Reviews, Playtime context and Complaints.

Pairs with Steam Regional Pricing, which covers the store listing — price per market, discounts and review totals.


Limits

Stated plainly, because they affect what you can conclude.

  • This is a sample, not a census. Cyberpunk 2077 has 980,377 reviews; a run takes hundreds. Which order you sample in matters more than how many you take, and the sort you choose decides the bias.
  • Recent reviews skew negative and short. People motivated to write today are disproportionately people with a problem, and their reviews have no votes yet.
  • Reviews are not translated. Russian reviews come back in Russian, Chinese in Chinese. That is the real text; translating it is your choice.
  • postedWithinDays only works server-side with Most helpful. Steam ignores day_range on the other sorts, so it is applied to the results instead — which means it filters a sample rather than selecting one.
  • Playtime is for that game only, and comes from the player's profile at the time Steam served the response. A private profile still reports playtime but not games owned.
  • Author names are not included. The Steam ID and profile link are, because they are how you verify a review; nothing else about the person is collected.
  • 30 games per run. Beyond that, split the work.

How much does it cost?

You pay per review returned: $0.002 each, that is $2.00 per 1,000. There is no start fee, and subscription plans pay less per review.

The example input below asks for up to 1,000 reviews, so it costs $2.00 at most.

If a run reaches the spending limit you set, the output stops at that limit and never goes past it. You are never charged for rows that were not delivered.

Use Steam Reviews Scraper as an API

Call it from your own code with the Apify client, here in Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("DataIO/steam-reviews-playtime-scraper").call(run_input={
'appIds': ['1091500'],
'reviewsPerGame': 300,
'maxItems': 1000,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

It also works from JavaScript, Make, Zapier, n8n, and from AI agents through the Apify MCP server.

Other actors you might like

FAQ

The actor reads public data from its official source, without logging in and without bypassing any access control. What you do with the data, for example contacting people listed in it, is your responsibility under the laws that apply to you, such as GDPR in Europe.

Can I run it on a schedule?

Yes. Create a schedule in Apify Console, daily or weekly for example, and each run delivers a fresh dataset, which you can send by email, webhook or integration.

Can AI agents use it?

Yes. It is available through the Apify MCP server, and every input field is described in its input schema, so an agent can call it directly.

Source

Steam's public review API (store.steampowered.com/appreviews), the same endpoint behind the review section of every store page. No authentication. This Actor is not affiliated with Valve.