
Steam Reviews Scraper
hipersoft/steam-reviews-scraper
Scrape user reviews and ratings for any game on Steam. Get the review text, recommended/not-recommended, helpful & funny votes, author playtime, purchase type, language, early-access flag and dates. One clean row per review as JSON, CSV or Excel.
Total users
2Monthly users
1Total runs
45Per review scraped
$0.0008Last rebuilt
Oct 26, 2026Overview
Extract user reviews and ratings for any game on Steam. Paste one or more store links (or App IDs), choose your filters, and get one clean row per review — the review text, whether it's recommended, helpful and funny votes, the author's playtime, purchase type, language, early-access flag and dates. Export to JSON, CSV or Excel, or pull straight from the API.
Perfect for game market research, competitor analysis, community sentiment tracking, spotting bugs and feature requests, review monitoring around launches and updates, and building review datasets for dashboards or LLMs.
What you get
One flat, ready-to-use record per review:
| Field | Description |
|---|---|
appId / appName |
Steam App ID and game title |
recommendationId |
Unique review ID |
steamId |
Reviewer's Steam ID |
language |
Review language |
votedUp |
true = Recommended, false = Not Recommended |
review |
Full review text |
votesUp / votesFunny |
"Helpful" and "Funny" vote counts |
weightedScore |
Steam's helpfulness score (0–1) |
commentCount |
Comments on the review |
playtimeForeverMin / playtimeAtReviewMin |
Author playtime, total and at review time (minutes) |
authorGamesOwned / authorReviews |
Reviewer's library size and review count |
steamPurchase / receivedForFree / earlyAccess / steamDeck |
Review context flags |
createdAt / updatedAt |
Posted and last-edited dates (ISO 8601) |
reviewUrl |
Link to the review |
collectedAt |
When the row was scraped |
How to use
1. Add games
Paste Steam store links or numeric App IDs:
{
"appUrls": [
"https://store.steampowered.com/app/570/Dota_2/",
"730"
],
"filterBy": "recent",
"maxItems": 500
}
2. Filter & order
- Order reviews by — Most recent, Recently updated, or All (helpfulness).
- Recommendation — all reviews, positive (recommended) only, or negative (not recommended) only.
- Purchase type — all, players who bought on Steam, or key activations only.
- Language —
all, or a Steam language code such asenglish,spanish,german,french,schinese,russian,japanese,koreana,brazilian. - Max reviews — cap the total (0 = no limit).
Example output
{
"appId": "570",
"appName": "Dota 2",
"recommendationId": "187654321",
"language": "english",
"votedUp": true,
"review": "Best MOBA out there once it clicks.",
"votesUp": 42,
"votesFunny": 3,
"weightedScore": 0.61,
"playtimeForeverMin": 69765,
"playtimeAtReviewMin": 41230,
"steamPurchase": true,
"earlyAccess": false,
"createdAt": "2026-09-19T14:10:00.000Z",
"reviewUrl": "https://steamcommunity.com/profiles/7656119.../recommended/570/",
"collectedAt": "2026-09-20T03:15:00.000Z"
}
Common use cases
- Game market research — measure sentiment, review volume and recommendation ratio across titles.
- Competitor analysis — pull rivals' reviews to find complaints, praised features and churn drivers.
- Launch & patch monitoring — track how each update lands by filtering recent and updated reviews.
- QA & feedback — surface bug reports and feature requests straight from players.
- Player insight — segment by playtime, purchase type and language.
- Datasets — build clean, labelled review corpora for analysis or model training.
Frequently asked questions
Do I need any login, account or key? No. Just paste game links and run.
How many reviews can I get? Set Max reviews to whatever you need (0 = no limit) — the scraper pages through a game's entire review history.
Can I get only positive or only negative reviews? Yes — use the Recommendation filter.
Can I scrape reviews in one language only? Yes — set the Language field to a Steam language code.
What format is the data? A flat table you can export as JSON, CSV or Excel, or fetch from the Apify API.
Related scrapers
Building review intelligence across platforms? Pair this with our App Store reviews scraper and Google Play reviews scraper for mobile, all with the same clean, one-row-per-review output.
Input
| Field | Type | Description |
|---|---|---|
appUrlsGames (Steam store URLs or App IDs) | array | One or more Steam games to scrape reviews for. Paste the store page URL (e.g. https://store.steampowered.com/app/570/Dota_2/) or a bare numeric App ID (570). |
filterByOrder reviews by | string · recent, updated, all | Recent (newest first), Updated (recently edited first), or All (Steam's relevance/helpfulness order). Default: "recent" |
reviewTypeRecommendation | string · all, positive, negative | Keep all reviews, only positive (recommended), or only negative (not recommended). Default: "all" |
purchaseTypePurchase type | string · all, steam, non_steam_purchase | All reviews, only reviews from players who bought the game on Steam, or only those who activated a key elsewhere. Default: "all" |
languageLanguage | string | Review language — use 'all' for every language, or a Steam language code such as english, spanish, german, french, schinese, russian, japanese, koreana, brazilian. Default: "all" |
maxItemsMax reviews | integer | Maximum number of reviews to collect across all games (0 = no limit; collect everything). Default: 200 |
API
curl -X POST "https://api.apify.com/v2/acts/hipersoft~steam-reviews-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"appUrls": [
"https://store.steampowered.com/app/570/Dota_2/"
]
}'from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("hipersoft/steam-reviews-scraper").call(run_input={
"appUrls": [
"https://store.steampowered.com/app/570/Dota_2/"
]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('hipersoft/steam-reviews-scraper').call({
"appUrls": [
"https://store.steampowered.com/app/570/Dota_2/"
]
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Pricing
| Event | Price | Paid plans from |
|---|---|---|
| Review scraped Charged for each Steam review returned. | $0.0008 | $0.0004 |
You pay only for what the run returns. Set a maximum cost per run and it stops cleanly at that limit.
Related scrapers
Stack Overflow & Stack Exchange Scraper
Scrape questions from Stack Overflow and any Stack Exchange site by tag or full-text search: title, tags, score, views, answer count, accepted answer, author, dates, link and full question body. Fast clean HTTP via the Stack Exchange API; optional key for higher quota.
117 runs · 1 users · $0.004 / question scrapedLobsters Scraper
Scrape stories from Lobsters (lobste.rs): title, link, score, comments, submitter, tags and description. Pull the Hottest or Newest feed, or filter by tag. One clean row per story as JSON, CSV or Excel.
41 runs · 2 users · $0.0015 / story scrapedRotten Tomatoes Scraper
Scrape Rotten Tomatoes movie and TV data: Tomatometer critics score, audience score, sentiment, title, year, genres, content rating, director, cast, description and poster. Just pass titles or URLs. One row per title as JSON, CSV or Excel.
38 runs · 2 users · $0.002 / title scrapedAniList Scraper
Scrape anime and manga data from AniList: title, score, popularity, format, status, episodes/chapters, genres, studios, season, start/end dates, description and cover image. Search by title. One row per title as JSON, CSV or Excel.
38 runs · 2 users · $0.001 / title scrapedReadability Scorer
Score how easy any text is to read. Get Flesch Reading Ease, Flesch-Kincaid Grade, Gunning Fog, SMOG, Coleman-Liau and ARI, plus word, sentence and syllable counts and a plain-English difficulty label. Score one text or many at once. Output JSON, CSV or Excel.
37 runs · 2 users · $0.001 / text scoredChess.com Player Scraper
Scrape Chess.com player data in bulk: name, title, country, followers, join date, and ratings for rapid, blitz, bullet and daily plus win/loss/draw records, best ratings, tactics and puzzle rush. Just pass usernames. One row per player as JSON, CSV or Excel.
37 runs · 2 users · $0.001 / player scrapedSend the site and the fields. We build it and you get it first.