# Steam Reviews & Game Details Scraper

> Steam reviews scraper: export reviews with verdict, text, playtime, votes and date, plus price, genres and score per game. No login.

URL: https://cliqtomedia.com/actors/steam-reviews/

Category: Reviews & app stores · Status: coming soon · Apify profile: https://apify.com/cliqtomedia?fpr=cliqto

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.

## How to use it: 3 steps

1. **Follow us on Apify.** The 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 Start.** No 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 results.** When 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.

## 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.

## 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.

## Data fields

- `type` (string): Row kind: review, game (details), not_found or error (free status rows).
- `appId` (string): Steam app ID.
- `gameName` (string)
- `reviewId` (string)
- `steamId` (string): Reviewer's public SteamID64 only; no names or avatars.
- `recommended` (boolean)
- `text` (string)
- `language` (string)
- `playtimeHours` (number): Hours played when the review was written.
- `playtimeForeverHours` (number)
- `playtimeLastTwoWeeksHours` (number)
- `votesUp` (integer)
- `votesFunny` (integer)
- `helpfulScore` (number)
- `commentCount` (integer)
- `steamPurchase` (boolean)
- `receivedForFree` (boolean)
- `refunded` (boolean)
- `writtenDuringEarlyAccess` (boolean)
- `primarilySteamDeck` (boolean)
- `developerResponse` (string)
- `developerRespondedAt` (string)
- `createdAt` (string)
- `updatedAt` (string)
- `storeUrl` (string)
- `appType` (string)
- `isFree` (boolean)
- `price` (number): Current price in currency units; 0 for free games, null when not sold in the country.
- `initialPrice` (number)
- `currency` (string)
- `discountPercent` (integer)
- `priceFormatted` (string)
- `genres` (array)
- `categories` (array)
- `releaseDate` (string)
- `releaseDateIso` (string)
- `comingSoon` (boolean)
- `developers` (array)
- `publishers` (array)
- `platforms` (array)

## Input settings

- `appIds` (array): Numeric app IDs from the store URL, e.g. 730 for Counter-Strike 2 (store.steampowered.com/app/730/). Up to 100 games together with game URLs; duplicates are listed once.
- `gameUrls` (array): Store or community links such as https://store.steampowered.com/app/1091500/Cyberpunk_2077/ or https://steamcommunity.com/app/730/reviews/. Bundle, package and profile links are not supported.
- `maxReviews` (integer): Reviews to return for each game. 0 returns only the game details row. Big games have millions of reviews: a run stops at this number, at the end of the list, or at your maximum charge.
- `language` (string): Steam language name (english, russian, schinese, brazilian, koreana ...) or a code like en, ru, pt-br. all returns reviews in every language.
- `reviewType` (string): All reviews, only Recommended or only Not recommended.
- `sortBy` (string): recent: newest written first. updated: newest edited first. helpful: Steam's most helpful of all time, or of the reviewsSince period when it is set.
- `reviewsSince` (string): Only reviews created after this time. A date (2026-01-31), a full ISO time or a period like 7 days. For scheduled runs pass newestReviewAt from the last run report: the review it came from is not returned again.
- `purchaseType` (string): All reviews, only from Steam buyers, or only from keys bought elsewhere.
- `includeGameDetails` (boolean): One extra row per game with price, discount, genres, release date, developers, platforms, Metacritic and the whole-game review score.
- `countryCode` (string): Two-letter country for price and currency, e.g. us, de, gb. Games not sold there come without a game details row.

## 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

| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Find top complaints about a game | `appIds`, `reviewType: negative`, `language: english` | review rows | `text`, `votesUp`, `playtimeHours` | Topic or sentiment analysis in Sheets or an LLM |
| Check reaction to a patch | `reviewsSince: "2026-10-01"`, `sortBy: recent` | review rows | `recommended`, `createdAt` | Share of positive reviews per day |
| Compare a genre | 20–100 `appIds`, `maxReviews: 0` | game rows | `price`, `discountPercent`, `genres`, `positivePercent` | Price and score table |
| Track a competitor's sale | `appIds`, `countryCode`, scheduled | game rows | `price`, `initialPrice`, `discountPercent` | Alert when the discount changes |

## Tips

- 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



- 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`.

## Sample 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"
}
```

## Similar tools

- [Apple App Store Reviews Scraper](https://cliqtomedia.com/actors/apple-app-store-reviews-scraper/)
- [Google Play Reviews Scraper](https://cliqtomedia.com/actors/google-play-reviews-scraper/)
- [TrustRadius Reviews Scraper](https://cliqtomedia.com/actors/trustradius-reviews-scraper/)
- [App Store Search, Rank & App Details — No Login](https://cliqtomedia.com/actors/app-store-apps-search/)
- [Google Play Search, Rank & App Details — No Login](https://cliqtomedia.com/actors/google-play-apps-search/)
- [OpenTable Reviews & Restaurants Scraper, No Login](https://cliqtomedia.com/actors/opentable-reviews-scraper/)
