Steam Store Scraper avatar

Steam Store Scraper

Pricing

from $0.35 / 1,000 results

Go to Apify Store
Steam Store Scraper

Steam Store Scraper

Get structured data for Steam games and other apps from charts, keyword searches, or a list of app IDs. Each record can include descriptions, genres, tags, regional price details, review totals, and optional recent reviews. Chart and search results can include rank.

Pricing

from $0.35 / 1,000 results

Rating

0.0

(0)

Developer

Axiom Works

Axiom Works

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Returns: one row per Steam app with title, appType, genres, tags, pricesByRegion, reviewScoreDesc, platforms, pcRequirements. Input: {"mode": "specials", "countries": ["us", "gb"], "maxItems": 10} Best for: price monitoring, release calendars, game market research.

{"id": "730", "title": "Counter-Strike 2", "appType": "game", "isFree": true, "platforms": ["windows", "linux"], "requiredAge": 0, "reviewScoreDesc": "Very Positive", "website": "http://counter-strike.net/"}

What does Steam Store Scraper do?

Steam Store Scraper collects public Steam app information. It can start from the current top sellers list, the new releases list, a keyword search, or a list of known Steam app IDs and URLs. For every app that Steam returns, the Actor requests the public app details JSON endpoint and produces one record with a stable Steam app ID. It can also request regional prices for your chosen country codes, review totals, and recent review text.

For example, a catalog analyst can compare the listed price of the same app in several storefront regions, while a researcher can follow the current top sellers chart and preserve the app IDs and rank in a dataset. All records retain the public Steam app page in sourceUrl so that you can inspect a result in context.

Each run reflects current public Steam data. It needs no login and is not affiliated with Valve or Steam.

What data can you get?

The dataset has one item per unique Steam app ID. Most fields come from Steam's app details endpoint. Rank comes from search rows; ID-only runs have no rank and read tags from app pages. Search mode supports non-English keywords. Review summary fields come from Steam's public review endpoint. Recent review objects appear only when includeReviews is enabled. Some titles omit optional fields, and a regional price can be unavailable for a free game, an unreleased game, or a region where Steam does not expose a price.

FieldMeaning
idStable numeric Steam app ID, represented as a string.
sourceUrlPublic Steam app page for this ID.
titleApp name returned by Steam.
appTypeSteam app classification such as game or software.
isFreeWhether Steam marks the app free.
developersNames in the Steam developer list.
publishersNames in the Steam publisher list.
releaseDateRelease date as displayed by Steam.
releaseDateIsoRelease date as YYYY-MM-DD when Steam gives an exact date in either month-first or day-first English format, otherwise null.
shortDescriptionSteam's short description text.
genresGenre names from the app details response.
tagsPopular tag names attached to a chart or search row.
headerImageHeader image URL from app details.
pricesByRegionCountry-code keys with price and currency details, or null where no price is returned.
reviewScoreDescSteam's summary wording for the review score.
totalPositivePositive review count returned by the review summary.
totalNegativeNegative review count returned by the review summary.
rankOne-based position in the chosen chart or search results, when applicable.
metacriticScoreMetacritic score when included in Steam app details.
reviewsRecent review ID, text, vote direction, and creation timestamp when requested.
marketSegmentOptional AI classification of market positioning.
platformsSupported platforms (windows, mac, linux).
categoriesSteam feature categories such as Single-player.
supportedLanguagesLanguages listed on the store page.
requiredAgeMinimum age required.
websiteOfficial game website.
screenshotsUp to 10 full-size screenshot URLs.
dlcAppIdsApp IDs of DLC.
recommendationsTotalTotal user recommendations.
comingSoonTrue if the game is not yet released.
pcRequirementsWindows minimum and recommended system requirements as original Steam HTML.
macRequirementsmacOS requirements as original Steam HTML, or null.
linuxRequirementsLinux requirements as original Steam HTML, or null.
achievementsTotalTotal Steam achievements when published, otherwise null.

pricesByRegion keeps numeric initial and final price values in Steam's minor currency units, the returned currency, discountPercent, and the store's formatted display text. A null region value means the endpoint did not provide a price_overview; it should not be read as a zero amount. Free status is reported separately in isFree.

System requirements contain minimum and recommended keys, each nullable. Their values preserve Steam HTML, including lists and emphasis; sanitize it before rendering. Empty requirements objects become null. achievementsTotal is the published count, not player achievement progress. These fields reuse the app details response without extra requests.

How to use

Choose a mode first. topSellers, newReleases, specials and comingSoon scan Steam's corresponding search chart. search uses searchTerm as a keyword phrase. appDetails accepts numeric IDs in appIds, app URLs in startUrls, or both. IDs repeated within the same input are emitted once. For chart and search modes, the Actor walks result pages in steps of 50 until it has enough distinct candidates or Steam reports the end of the results.

Set maxItems to the number of app records you need. The Actor stops pushing records at that limit. If Steam does not return enough valid apps, a run may have fewer records. The limit applies to output items, not to the number of requests: additional public requests are needed for app details, each selected region, and reviews. Choose a short country list for a quick chart snapshot, and add more regions when you need a broader comparison.

Review summaries are collected for every item because they make the overall score and review totals useful. Set includeReviews to true to collect review text as well. maxReviewsPerGame bounds the review objects attached to each app; it does not change the number of app records. If the review endpoint is temporarily unavailable, other app fields can still be returned. When a request is blocked or throttled, the Actor waits and tries a new proxy session. It logs a warning for an app that cannot be read, then continues to the next candidate.

The optional marketSegment is only produced when you set enrichWithAI to true; otherwise it is null. It uses a third-party AI processor, TypeSafe Jev, to classify the app from its short description, tags, and price. The value is one of AAA, AA, indie, hobbyist/low-effort, or free-to-play live service. It is an analytical judgment rather than a Steam field. If enrichment is unavailable or fails, the field is null and the ordinary record is still returned. The Actor caps Jev requests per run.

Input

InputDescriptionDefault
modeSelect topSellers, newReleases, specials (discounted games), comingSoon (upcoming releases), search, or appDetails.topSellers
appIdsNumeric Steam app IDs for appDetails.Empty
startUrlsSteam app URLs for appDetails.Empty
searchTermKeyword phrase required for search.Empty
countriesOne to ten two-letter storefront country codes.us, gb, de
includeReviewsInclude recent review text per app.false
maxReviewsPerGameReview objects per app, from 0 to 100.20
enrichWithAIAdd an AI market segment to each app; costs extra per enriched result.false
maxItemsMaximum output app records, from 1 to 1000.50
proxyConfigurationApify proxy settings for requests to Steam.Apify datacenter proxy

For a small comparison of known apps, enter an input like this:

{
"mode": "appDetails",
"appIds": ["730", "570", "1091500"],
"countries": ["us", "br", "jp"],
"includeReviews": false,
"maxItems": 3
}

In a search run, set mode to search and provide searchTerm. A nonsense phrase can produce an empty dataset and a warning. A dead or malformed app URL fails with an input error or is skipped if Steam has no corresponding app details. The Actor never adds error objects to the dataset. If you supply both appIds and startUrls, their app IDs are combined in the order provided.

Output

Here is a real item from a local appDetails run. This excerpt shows the shape of the record; the live dataset also carries the remaining fields in the table above. Values can change between runs as the Steam Store changes.

{
"id": "620",
"sourceUrl": "https://store.steampowered.com/app/620/",
"title": "Portal 2",
"appType": "game",
"isFree": false,
"platforms": [
"windows",
"linux"
],
"achievementsTotal": 51,
"pcRequirements": {
"minimum": "<strong>Minimum:</strong><br><ul class=\"bb_ul\"><li><strong>OS *:</strong> Windows 7 / Vista / XP<br></li><li><strong>Processor:</strong> 3.0 GHz P4, Dual Core 2.0 (or higher) or AMD64X2 (or higher)<br></li><li><strong>Memory:</strong> 2 GB RAM<br></li><li><strong>Graphics:</strong> Video card must be 128 MB or more and with support for Pixel Shader 2.0b (ATI Radeon X800 or higher / NVIDIA GeForce 7600 or higher / Intel HD Graphics 2000 or higher).<br></li><li><strong>DirectX:</strong> Version 9.0c<br></li><li><strong>Storage:</strong> 8 GB available space<br></li><li><strong>Sound Card:</strong> DirectX 9.0c compatible</li></ul>",
"recommended": null
}
}

The id is a stable join key across runs. rank is a position in that run's list. reviews is empty because review text was disabled.

The dataset is plain JSON and exports to CSV or spreadsheets through Apify.

How much does it cost?

The Actor is charged per result record. Market segment enrichment is off by default. When you turn on enrichWithAI, it has its own event and is charged only when that field was actually produced. Opening the Pricing tab on the Actor page shows the current terms. A run with zero records has no result records to charge. maxItems is the simplest way to cap the number of output records for a run.

The number of HTTP requests is not the number of result events. One app can involve its details request, regional price lookups, and a review request, while still producing one result record. When the Actor skips an unavailable app, it does not push a placeholder item. The dataset and run log show what was produced.

Use with AI agents (MCP)

You can make this Actor available as a tool through Apify MCP. Configure an MCP server URL with the Store path in the tools parameter:

https://mcp.apify.com/?tools=axiomworks/steam-store-scraper

An agent can ask for a bounded chart snapshot, a specific app comparison, or a keyword search. Give the agent the mode, target IDs or phrase when relevant, country codes, and an item limit. Example prompts include “Collect the first ten Steam top sellers and show their titles, genres, and US and GB prices” and “Compare the Steam Store details for app IDs 730 and 570 in US and JP regions.” A search prompt can say “Find up to fifteen Steam apps for the phrase tactical strategy and include review score descriptions.”

The MCP tool presents the input descriptions and the output schema. Values such as marketSegment are judgments by a third-party AI processor, so treat them as optional classifications. If you need exact public fields, ask the agent to use title, appType, releaseDate, pricesByRegion, and the review totals as returned. The stable id helps your agent merge records from separate runs without relying on names, which can change or collide.

Integrations and API

Apify stores results in the run's default dataset. You can use scheduled runs for repeated snapshots and retrieve dataset items in your application. Keep API tokens in your environment.

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("axiomworks/steam-store-scraper").call(run_input={"mode": "topSellers", "maxItems": 10})
items = list(client.dataset(run["defaultDatasetId"]).iterate_items())

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('axiomworks/steam-store-scraper').call({ mode: 'topSellers', maxItems: 10 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

cURL:

curl -X POST 'https://api.apify.com/v2/acts/axiomworks~steam-store-scraper/run-sync-get-dataset-items' \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"mode":"topSellers","maxItems":10}'

If you need to compare snapshots over time, save each run's creation time alongside its dataset and join items on id. For regional analysis, keep the country code, currency, formatted display text, and numeric price together. For review analysis, distinguish Steam's aggregate totalPositive and totalNegative from the small sample of recent reviews requested in a run.

FAQ

Can I pass a Steam app URL? Yes. Use appDetails mode and put it in startUrls. The Actor extracts the numeric ID from a public store.steampowered.com/app/... URL. Other URL shapes are rejected so that a typo does not silently fetch a different site.

Where do tags come from? Chart and search runs use Steam's tag map. ID-only runs read tags from the public app page; unavailable tags remain empty.

Why is a regional price null? Steam may not provide price_overview for an app in a given country. This is common for free apps and can also happen with availability or release status. Read isFree and releaseDate separately rather than treating missing price data as free.

Are the review totals the same as the returned review list? No. The totals describe Steam's aggregate summary. The reviews array contains at most maxReviewsPerGame recent review objects when enabled. It is a sample and should not be used to recompute the total score.

Can I request more than one country? Yes. Supply two-letter country codes in countries, up to ten. Each app record gets one key per requested code in pricesByRegion. The Actor does not convert values between currencies.

Does an empty search create items? No. The Actor warns that the search returned no results and completes with an empty dataset. It does not add an artificial record describing the error.

This Actor reads public Steam Store endpoints without a login. Whether a particular use is permitted depends on your jurisdiction, Steam's current terms, and what you do with the data. Consider request volume, attribution, rights in descriptions and images, and any restrictions that apply to your project. This documentation is practical product guidance, not legal advice. The Actor uses modest request pacing and backs off when the public endpoint throttles or blocks a request.

The returned descriptions, images, and reviews can have rights held by Valve, publishers, or users. Receiving a field through an API does not transfer those rights. If you publish or redistribute the collected material, assess those rights for your use case. For analytics, keep the app ID and source URL with the copied fields so you can trace where they came from and review changes later.

Feedback

Use the Apify Actor page to report a failed run, an unexpected field value, or a missing Steam app. Include the input mode, app ID or search phrase, country codes, and the relevant log lines. A concrete app ID and field name make a data issue easier to reproduce. Steam can change its endpoint responses, so examples from a recent run are helpful when reporting a change.