Steam Game Price Tracker — Official API, Regional Pricing
Pricing
from $1.99 / 1,000 game-items
Steam Game Price Tracker — Official API, Regional Pricing
Scrape **Steam Store** game details via the **official Steam API** — no proxy, no auth required. Returns **price, discount %, Metacritic score, genres, platforms, and review summary** per game. Lookup by App ID or search by name. Supports regional pricing (US, DE, GB, TR, BR, and more).
Pricing
from $1.99 / 1,000 game-items
Rating
0.0
(0)
Developer
Vitalii Bondarev
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
3
Monthly active users
15 days ago
Last modified
Categories
Share
Steam Game Price Tracker — Official API | from $1.50/1K | Regional Pricing
Built for game developers tracking competitor pricing, gaming media building review aggregators, wishlisting bots detecting Steam sales, and traders researching regional pricing arbitrage.
Pricing: Pay per game — $1.50/1K (basic), $2.50/1K (with reviews). First 10 results free.
Official Steam API. No proxy needed. No Steam account required.
Scrape Steam Store game data via the official Steam Store API — no proxy required, no authentication needed. Returns price, discount percentage, Metacritic score, genres, platforms, release date, and review summary for any game on Steam. Lookup by App ID or search by name. Supports regional pricing for any country. Pay per game result.
The only Steam scraper built on the official store.steampowered.com/api — not fragile DOM parsing that breaks every time Valve redesigns the store.
Why Use the Steam Store API Scraper
- Official API — not HTML scraping. No CSS selectors that break on store redesigns.
- No proxy required — Steam's public API doesn't block datacenter IPs. Zero extra cost.
- Regional pricing — set
countryto any ISO code (us,de,gb,ru,br,tr) and get local prices. - Bulk lookup by App ID — scrape hundreds of games in one run, no browser overhead.
- Review summaries included —
review_score_desc("Very Positive", "Overwhelmingly Positive") + total review counts per game. parse_confidencein every record — machine-readable quality signal for pipeline health.
What You Get Per Game
| Field | Description |
|---|---|
app_id | Steam App ID |
name | Game title |
type | game / dlc / demo / application |
is_free | True for Free-to-Play |
price_final | Final price in currency's smallest unit (e.g. 5999 = $59.99 USD) |
price_currency | Currency code (USD, EUR, GBP, etc.) |
discount_pct | Current discount percentage (0–100) |
developers | Developer name(s) |
publishers | Publisher name(s) |
genres | Genre list (e.g. ["Action", "RPG"]) |
release_date | ISO date YYYY-MM-DD |
platforms | Enabled platforms: ["windows", "mac", "linux"] |
metacritic_score | Metacritic score (0–100), if available |
recommendations_total | Total Steam thumbs-up (recommendations) |
total_positive | Positive review count (when includeReviews=true) |
total_negative | Negative review count |
total_reviews | Total review count |
review_score_desc | "Very Positive", "Overwhelmingly Positive", etc. |
header_image | URL to header image (460×215 JPG) |
short_description | Store short description |
parse_confidence | 0–1 parse quality score (1.0 = perfect) |
warnings | Quality warning codes (empty = clean) |
How to Use
By App ID (fastest, most precise)
{"appIds": ["730", "1245620", "440"],"country": "us","includeReviews": true}
Find App IDs in any Steam URL: store.steampowered.com/app/730/ → App ID is 730.
By search term
{"searchTerms": ["cyberpunk", "elden ring", "minecraft"],"country": "de","maxSearchResults": 5}
Regional pricing comparison
{"appIds": ["730", "1245620"],"country": "tr","includeReviews": false}
Use tr, br, ar for low-price regions often used in pricing arbitrage research.
Mixed input
{"appIds": ["730"],"searchTerms": ["hollow knight"],"country": "us","includeReviews": true,"maxItems": 50}
Use Cases
Price monitoring & sale detection
Track price_final and discount_pct over time across App IDs. Detect Steam sale events as they happen — ideal for wishlist bots and arbitrage trackers.
Game database enrichment
Bulk-fetch metadata for app catalogues, review aggregators, or game recommendation systems. Get genres, platforms, Metacritic score, and release date in one API call per game.
Competitor market research
Analyze competitor pricing strategy: release pricing vs. current price, discount frequency, Metacritic score correlation with review volume.
Review sentiment tracking
Monitor review_score_desc and total_reviews week over week. Identify games gaining or losing community trust before it shows in mainstream media.
Regional arbitrage research
Compare price_final across us, de, tr, ru, br for the same App ID. Understand Steam's regional pricing tiers.
Pricing
This actor uses pay-per-result pricing — you are charged per game successfully scraped (game-item event), not per query or page.
You only pay for games that return data. Age-gated apps, region-blocked titles, or API failures are skipped and not charged.
Reliability
- Uses official Steam Store API (
store.steampowered.com/api) — no DOM scraping, no browser - No proxy required — Steam's public API is accessible from any datacenter IP
parse_confidencefield in every record — machine-readable quality signal- Polite inter-request delays (0.5s) to stay within Steam's undocumented soft rate limits
skipFailedApps=true(default) skips age-gated and region-blocked apps without crashing the run
Pricing example
| Volume | Mode | Cost |
|---|---|---|
| 100 games | Basic (no reviews) | $0.15 |
| 1,000 games | Basic (no reviews) | $1.50 |
| 1,000 games | With review summary | $2.50 |
| 1,000 games | Regional pricing (non-US) | $2.00 |
First 10 results are free. Age-gated or region-blocked apps are skipped and not charged.
FAQ
Do I need a Steam account or API key?
No. The Steam Store API endpoints used by this actor are fully public. No account, no key, no session cookie.
What format are prices in?
Prices are in the currency's smallest unit (cents for USD). price_final=5999 means $59.99. Divide by 100 for the human-readable amount.
Can I get prices for multiple regions in one run?
Not in a single run — Steam returns one currency per run based on country. Run the actor multiple times with different country values to compare regions.
Does this scrape the Steam community market?
No. This actor covers the Steam Store (game purchases). The Community Market (tradeable items) is a separate endpoint and not supported here.
vs. competitors
| Feature | This actor | epctex/steam-scraper |
|---|---|---|
| Data source | Official Steam Store API | HTML parsing |
| Regional pricing | Any country code | Usually US only |
| Review sentiment included | Yes | Rarely |
| Metacritic score | Yes | No |
| Age-gated apps | Gracefully skipped | Crash or return empty |
| Price | $1.50/1K | $3–5/1K |
Regional arbitrage research
Use tr (Turkey), br (Brazil), ar (Argentina) as the country input for the lowest regional price tiers. Compare with us to find Steam's pricing spread across regions.
Use with AI agents (MCP)
This actor is tagged MCP_SERVERS — compatible with Claude, GPT-4o, and other MCP-aware agents:
https://mcp.apify.com/?tools=bovi/steam-scraper
Not affiliated with Valve or Steam. Data is retrieved from publicly accessible Steam Store APIs.
Integrations
Built for game developers and analysts tracking competitor pricing, discounts, reviews, and regional price differences — the JSON/dataset output drops into the tools you already run, no glue code:
- n8n / Make / Zapier — trigger a run or pipe every new dataset item into 500+ apps (Google Sheets, Airtable, Slack, HubSpot, your database) with no code: n8n, Make, Zapier.
- Webhooks — fire your own endpoint the moment a run finishes, to push results straight into your pipeline (docs).
- MCP server — expose this actor as a tool to Claude, Cursor, or any MCP client so an AI agent can pull this data mid-conversation (guide).
- API & SDKs — fetch the dataset as JSON, CSV, or Excel through the Apify REST API or the Python / JS SDKs.
See all Apify integrations.
Usage statistics
This Actor creates a small, content-free summary at the end of each run. It is used only to monitor reliability and improve this Actor. A copy is saved as USAGE_STATS in your own Apify key-value store, so you can see the exact record created for your run.
Set disableUsageStats to true in the input to opt out. Nothing is sent then; your USAGE_STATS record only says that statistics were disabled.
Only these fields are recorded:
- schema version, Actor name and build number;
- UTC start and finish hour (not a precise timestamp);
- run duration, number of results and time to the first result, each as a coarse range;
- whether the result was empty, the end status, and an error type from a fixed list;
- memory setting and counts of charged events;
- names of the input fields you set, never their values;
- the selected option for input fields that offer a fixed list of choices (for example a sort order).
We do not collect input text, search terms, URLs, domains, usernames, email addresses, names, proxy credentials, tokens, scraped records, output items, raw error messages, stack traces, or hashes of any of those values. Records are kept for no longer than 13 months, used only as aggregated operational statistics, and never sold or shared.
Additional fields (Phase 2)
This Actor also records your Apify user ID, whether Apify marks the account as paying, the size range of list inputs, the selected country when the input offers a fixed list of countries, and one category from a fixed Actor taxonomy. We use these fields only for aggregate reliability, repeat-use and cross-Actor analysis; reports suppress any cell with fewer than five distinct users.
The same disableUsageStats: true input flag turns these fields off too. The user ID is removed after 13 months; we do not export, sell, share, or attempt to re-identify this data.
Run-outcome signals (v2)
To learn whether a run did what it was asked to do, the record also holds a few more coarse ranges and yes/no flags. None of them contains content:
- the result limit you asked for (a range, when the input has one) and what share of it was delivered;
- results delivered per input item you listed (a range);
- output quality as ranges: how fully the result fields were filled, the share of rows that look like errors, the share of duplicate rows, and how many different fields appeared. These are counted in memory while results are saved; no result content is kept;
- how the run was started (console, API, schedule, webhook, another Actor);
- how it ended: stopped by you, timed out, reached the requested limit, stopped by the charge limit, and how many times the platform moved the run;
- if this Actor reports it: how many items to process worked or failed (ranges) and one failure reason from a fixed list;
- a short code made from the names of the input fields you set, never their values.
Repeat-run fingerprint (v2)
When your Apify user ID is recorded (see above), the record also holds an 8-character one-way code made from your input (proxy settings left out) and this Actor's name. It only lets us see that the same account ran the same input again soon after an unsatisfying run; we never see the input itself. It is stored only in the database, never published, and reports use it in aggregate with the same five-user minimum. It is the one exception to the statement above that no hashes are collected, and disableUsageStats: true turns it off.