Steam Reviews Scraper
Pricing
Pay per usage
Steam Reviews Scraper
Scrape Steam game reviews and details. Extract review text, playtime, recommendations, ratings, and game metadata. Export to JSON, CSV, Excel.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Glass Ventures
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Scrape Steam game reviews, ratings, and game details using the Steam public API. Extract review text, playtime, recommendations, and full game metadata.
What does Steam Reviews Scraper do?
Steam Reviews Scraper is an Apify actor that extracts reviews and game information from the Steam Store. It uses Steam's public API endpoints to collect review data including the full review text, author playtime, recommendation status, and language, along with comprehensive game details like price, developer, genres, and aggregate ratings.
This actor is ideal for game developers, market researchers, and data analysts who need to analyze player sentiment, track game reception over time, or compare reviews across different titles. It supports filtering by positive or negative reviews, searching for games by name, and processing multiple games in a single run.
The actor uses BasicCrawler with gotScraping to hit Steam's JSON API endpoints directly, making it fast and efficient with minimal resource usage.
Use Cases
- Game developers -- analyze player feedback and sentiment for your own or competitor games
- Market researchers -- study gaming trends, pricing strategies, and player reception across genres
- Data analysts -- build datasets of review text for NLP/sentiment analysis projects
- Business owners -- evaluate game quality and community reception before partnership or investment decisions
Features
- Extract reviews with full text, playtime, recommendation, and author details
- Fetch game metadata including price, developer, publisher, genres, and tags
- Filter reviews by sentiment (all, positive only, negative only)
- Search for games by name using Steam's search API
- Support for multiple input methods: URLs, App IDs, or search terms
- Proxy support with automatic rotation
- Handles pagination and large datasets automatically
- Exports to JSON, CSV, Excel, or connect via API
How much will it cost?
Steam has a public API with generous rate limits, making this actor very cost-effective.
| Results | Estimated Cost |
|---|---|
| 100 | ~$0.01 |
| 1,000 | ~$0.05 |
| 10,000 | ~$0.40 |
| Cost Component | Per 1,000 Results |
|---|---|
| Platform compute | ~$0.03 |
| Proxy (datacenter) | ~$0.02 |
| Total | ~$0.05 |
How to use
- Go to the Steam Reviews Scraper page on Apify Store
- Click "Start" or "Try for free"
- Enter Steam App IDs (e.g., "730" for Counter-Strike 2), store URLs, or search terms
- Choose your review filter (all, positive, or negative)
- Set the maximum number of items
- Click "Start" and wait for the results
Input parameters
| Parameter | Type | Description | Default |
|---|---|---|---|
| startUrls | array | Steam store URLs to scrape | - |
| appIds | stringList | Steam App IDs (e.g., 730) | - |
| searchTerms | array | Search queries to find games | - |
| reviewFilter | select | Filter: all, positive, negative | all |
| maxItems | number | Max results to return | 100 |
| maxConcurrency | number | Parallel request limit | 10 |
| proxyConfig | object | Proxy settings | Apify Proxy |
Output
The actor produces a dataset with two item types: reviews and games.
Review output
{"type": "review","url": "https://store.steampowered.com/app/730","reviewId": "123456789","author": {"steamId": "76561198012345678","profileUrl": "https://steamcommunity.com/profiles/76561198012345678","playtimeForever": 5432,"playtimeLastTwoWeeks": 120,"playtimeAtReview": 4000,"lastPlayed": 1700000000,"numGamesOwned": 150,"numReviews": 12},"hoursPlayed": 90.53,"votedUp": true,"text": "Great game, highly recommend!","timestampCreated": "2024-01-15T10:30:00.000Z","steamPurchase": true,"language": "english","appId": "730","scrapedAt": "2024-01-20T15:00:00.000Z"}
Game output
{"type": "game","url": "https://store.steampowered.com/app/730","name": "Counter-Strike 2","appId": "730","price": "Free to Play","releaseDate": "Aug 21, 2012","developer": "Valve","publisher": "Valve","genres": ["Action", "Free to Play"],"tags": ["Multi-player", "Online Multi-Player"],"rating": {"description": "Very Positive (8/10)","percentage": 87,"totalPositive": 7500000,"totalNegative": 1100000,"totalReviews": 8600000},"scrapedAt": "2024-01-20T15:00:00.000Z"}
| Field | Type | Description |
|---|---|---|
| type | string | "review" or "game" |
| url | string | Steam store URL |
| reviewId | string | Unique review ID |
| author | object | Author details with Steam ID and playtime |
| hoursPlayed | number | Total hours played (converted from minutes) |
| votedUp | boolean | true = positive, false = negative |
| text | string | Full review text |
| timestampCreated | string | ISO 8601 review creation date |
| steamPurchase | boolean | Whether purchased on Steam |
| language | string | Review language |
| name | string | Game name |
| appId | string | Steam App ID |
| price | string | Current price |
| releaseDate | string | Game release date |
| developer | string | Game developer |
| publisher | string | Game publisher |
| genres | array | Game genres |
| tags | array | Steam tags/categories |
| rating | object | Aggregate rating summary |
| scrapedAt | string | ISO 8601 scrape timestamp |
Integrations
Connect Steam Reviews Scraper with other tools:
- Apify API -- REST API for programmatic access
- Webhooks -- get notified when a run finishes
- Zapier / Make -- connect to 5,000+ apps
- Google Sheets -- export directly to spreadsheets
API Example (Node.js)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('YOUR_USERNAME/steam-reviews-scraper').call({appIds: ['730'],maxItems: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();
API Example (Python)
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('YOUR_USERNAME/steam-reviews-scraper').call(run_input={'appIds': ['730'],'maxItems': 100,})items = client.dataset(run['defaultDatasetId']).list_items().items
API Example (cURL)
curl "https://api.apify.com/v2/acts/YOUR_USERNAME~steam-reviews-scraper/runs" \-X POST \-H "Content-Type: application/json" \-H "Authorization: Bearer YOUR_TOKEN" \-d '{"appIds": ["730"], "maxItems": 100}'
Tips and tricks
- Start with a small
maxItems(10-20) to test before running large scrapes - Use App IDs for the fastest and most reliable results
- Filter by "positive" or "negative" to focus on specific sentiment
- Steam's API is public and generous -- datacenter proxies work fine
FAQ
Q: Does this actor require login credentials? A: No. Steam's store API is publicly accessible without authentication.
Q: How fast is the scraping? A: Approximately 500-1,000 reviews per minute, depending on concurrency settings.
Q: What should I do if I get rate limited? A: Reduce maxConcurrency to 3-5 and enable proxy rotation in Proxy Configuration settings.
Q: Can I scrape reviews for multiple games at once? A: Yes. Provide multiple App IDs, URLs, or search terms and the actor will process all of them.
Is it legal to scrape Steam?
Web scraping of publicly available data is generally legal based on precedents like the LinkedIn v. HiQ Labs case. This actor only accesses Steam's public API endpoints, which are designed for programmatic access. Always review and respect Steam's Terms of Service. For more information, see Apify's blog on web scraping legality.
Limitations
- Steam API rate limits may slow down very large scrapes (100,000+ reviews)
- Some games with age-gating may return limited data
- Review text is returned as-is (may contain formatting characters)
- Search results are limited to what Steam's search API returns (typically top ~10 matches)
Changelog
- v0.1 (2026-04-23) -- Initial release