
Website Content Crawler
scrape.ly/store/querystone/website-content-crawlerAIDeveloper tools
1 monthly user

Scrape Steam store games by keyword, tag, store list (top sellers, specials, upcoming) or app ID. Get prices per country, discounts, tags, review scores, genres, developers and full details.
Pull clean, structured game data from the Steam store: prices and discounts in any country, user tags, review scores, genres, developers, release dates, screenshots, trailers, system requirements and more. Search by keyword or tag, grab whole store lists like Top Sellers or Specials, or feed in app IDs and URLs. No login, no API key, and 20 fully detailed games take a few seconds.
roguelike), pick store lists such as Top sellers or Specials, and/or paste app IDs or Steam URLs.| Field | What it does |
|---|---|
searchTerms | Keywords to search on the Steam store. Each term is its own search. |
storeLists | topsellers, globaltopsellers, specials, newandtrending, popularupcoming, upcoming, mostplayed. |
startUrls | App IDs, store app URLs, or Steam search URLs (their filters are kept). |
maxResults | Games per search term, list or search URL (0 = all). App IDs are always scraped in full. |
countryCode / extraCountryCodes | Store country for prices, plus up to 20 countries to compare. |
language | Language for titles, descriptions, genres and tags. |
sortBy, tags, itemType, onlyOnSale, minDiscountPercent, maxPrice, hideFreeToPlay, onlyReleased, platforms, steamDeckVerified, supportedLanguage | Filters for searches and lists. |
includeDetails | Full store details (on by default). Off = faster feed of prices, discounts, tags and review scores. |
{
"searchTerms": ["roguelike"],
"storeLists": ["specials"],
"startUrls": ["https://store.steampowered.com/app/1145360/Hades/"],
"maxResults": 20,
"countryCode": "US",
"extraCountryCodes": ["DE", "GB", "TR"],
"tags": ["Co-op"],
"minDiscountPercent": 30
}
One row per Steam app.
| Field | Description |
|---|---|
appId, title, url, type | Steam app ID, title, store URL and type (game, dlc, software, music, demo, ...) |
price, priceValue, originalPrice, originalPriceValue, currency | Current and regular price, formatted and as numbers |
discountPercent, sale, discountEndsAt | Discount, on-sale flag and when the sale ends |
prices | Price, regular price and discount per extra country |
releaseDate, releaseDateIso, comingSoon, earlyAccess | Release information |
reviewScore, reviewPositivePercent, reviewCount | Steam review summary |
tags, genres, categories | User tags, genres and store features |
developers, publishers, franchises | Companies and franchise |
supportedPlatforms, steamDeck, controllerSupport | Windows/macOS/Linux and Steam Deck rating |
metacriticScore, recommendationsTotal, achievementsTotal | Metacritic, recommendations and achievements |
description, detailedDescription, aboutTheGame | Store texts as plain text |
headerImage, screenshots, movies | Images and trailers (HLS, DASH, MP4) |
supportedLanguages, fullAudioLanguages | Languages |
pcRequirements, macRequirements, linuxRequirements | System requirements |
dlc, dlcCount, parentAppId, packages, packageGroups | DLC, base game and purchase options |
website, supportInfo, requiredAge, ageRating, contentDescriptors | Other store facts |
source, searchPosition, scrapedAt | Which input found the game, its position and when |
Example (trimmed):
{
"appId": 1145360,
"title": "Hades",
"url": "https://store.steampowered.com/app/1145360/Hades/",
"type": "game",
"isFree": false,
"countryCode": "US",
"currency": "USD",
"price": "$24.99",
"priceValue": 24.99,
"originalPrice": null,
"originalPriceValue": 24.99,
"discountPercent": 0,
"sale": false,
"discountEndsAt": null,
"prices": {
"US": {
"currency": "USD",
"price": "$24.99",
"priceValue": 24.99,
"originalPrice": null,
"originalPriceValue": 24.99,
"discountPercent": 0
},
"DE": {
"currency": "EUR",
"price": "24,50€",
"priceValue": 24.5,
"originalPrice": null,
"originalPriceValue": 24.5,
"discountPercent": 0
}
},
"releaseDate": "Sep 17, 2020",
"releaseDateIso": "2020-09-17T14:38:27Z",
"comingSoon": false,
"earlyAccess": false,
"reviewScore": "Overwhelmingly Positive",
"reviewPositivePercent": 97,
"reviewCount": 287069,
"tags": [
"Action Roguelike",
"Roguelite",
"Hack and Slash",
"Indie",
"Mythology",
"Action"
],
"genres": [
"Action",
"Indie",
"RPG"
],
"categories": [
"Single-player",
"Steam Achievements",
"Full controller support",
"Steam Trading Cards"
],
"developers": [
"Supergiant Games"
],
"publishers": [
"Supergiant Games"
],
"developer": "Supergiant Games",
"franchises": [
"Hades"
],
"supportedPlatforms": [
"windows",
"mac"
],
"steamDeck": "Verified",
"metacriticScore": 93,
"metacriticUrl": "https://www.metacritic.com/game/pc/hades?ftag=MCD-06-10aaa1f",
"recommendationsTotal": 287109,
"achievementsTotal": 49,
"requiredAge": 0,
"ageRating": "ESRB T",
"description": "Defy the god of the dead as you hack and slash out of the Underworld in this rogue-like dungeon crawler from the creators of Bastion, Transistor, and Pyre.",
"detailedDescription": "Hades is a god-like rogue-like dungeon crawler that combines the best aspects of Supergiant's critically acclaimed titles, including the fast-paced action of Ba...",
"aboutTheGame": "Hades is a god-like rogue-like dungeon crawler that combines the best aspects of Supergiant's critically acclaimed titles, including the fast-paced action of Ba...",
"supportedLanguages": [
"English",
"French",
"Italian",
"German"
],
"fullAudioLanguages": [
"English"
],
"controllerSupport": "full",
"headerImage": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/1145360/header.jpg?t=1758127023",
"screenshots": [
"https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/1145360/ss_c0fed447426b69981cf1721756acf75369801b31.1920x1080.jpg?t=1758127023"
],
"movies": [
{
"name": "Hades - v1.0 Launch Trailer",
"thumbnail": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/256801252/movie.293x165.jpg?t=1600353465",
"hls": "https://video.akamai.steamstatic.com/store_trailers/1145360/312686/b0312c49135823cc34946e98148abfb8da71f0fb/1750627549/hls_264_master.m3u8?t=1600353465",
"dash": "https://video.akamai.steamstatic.com/store_trailers/1145360/312686/b0312c49135823cc34946e98148abfb8da71f0fb/1750627549/dash_h264.mpd?t=1600353465"
}
],
"website": "http://www.supergiantgames.com",
"supportInfo": {
"url": "https://www.supergiantgames.com/contact/",
"email": "support@supergiantgames.com"
},
"isDLC": false,
"parentAppId": null,
"parentTitle": null,
"dlc": [
1206340
],
"dlcCount": 1,
"packageGroups": [
{
"name": "default",
"title": "Buy Hades",
"options": [
{
"packageId": 415372,
"title": "Hades - $24.99",
"priceValue": 24.99,
"discountPercent": 0,
"isFreeLicense": false
}
]
}
],
"pcRequirements": {
"minimum": "Minimum:\nOS *: Windows 7 SP1\nProcessor: Dual Core 2.4 GHz\nMemory: 4 GB RAM\nGraphics: 1GB VRAM / DirectX 10+ support\nStor...",
"recommended": "Recommended:\nOS *: Windows 7 SP1\nProcessor: Dual Core 3.0 GHz+\nMemory: 8 GB RAM\nGraphics: 2GB VRAM / DirectX 10+ support..."
},
"systemRequirements": {
"windows": "Minimum:\nOS *: Windows 7 SP1\nProcessor: Dual Core 2.4 GHz\nMemory: 4 GB RAM\nGraph...",
"mac": "Minimum:\nOS: 10.13.6+\nProcessor: Dual Core 2.4GHz\nMemory: 4 GB RAM\nGraphics: Int..."
},
"source": "search \"roguelike\"",
"searchPosition": 3,
"scrapedAt": "2026-10-14T21:10:27Z"
}
You pay $0.60 per 1,000 games ($0.0006 per game) plus a little platform usage (compute and datacenter proxy traffic, typically a fraction of a cent per run). Example: 1,000 fully detailed games cost about $0.60 in game fees plus well under a cent of usage. Inputs that return nothing cost nothing beyond the small usage of the run, and you can cap any run with a maximum total charge.
Is it legal to scrape Steam? The actor reads only public store pages and Steam's public store data feeds, the same data any visitor sees without logging in. Check Steam's terms and your local laws for your use case.
Do I need a Steam account, API key or my own proxy? No. The default datacenter proxy works well for Steam.
How many games can I get? Searches and lists page through everything Steam returns: tens of thousands of games for broad searches. Set maxResults to 0 for all of them.
Why is a field empty? Steam does not have it for that game, for example no Metacritic score, no discount, or no macOS requirements. Prices are empty for games that are not sold in the chosen country.
Why do prices differ between countries? Steam sets regional prices. Use countryCode for the main price and extraCountryCodes to compare.
Can I schedule it or use the API? Yes. Schedule daily runs to track prices and discounts, and fetch results through the API or integrations.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchTermsarrayOptionalSearch terms
Keywords to search on the Steam store, for example roguelike, cozy farming or Cyberpunk. Each term is a separate search.
storeListsarrayOptionalStore lists
Steam store charts and lists to scrape: top sellers, specials (games on sale), new & trending, upcoming and more.
startUrlsarrayOptionalApp IDs or Steam URLs
Steam app IDs (1145360), store app pages (https://store.steampowered.com/app/1145360/Hades/) or Steam search URLs (https://store.steampowered.com/search/?tags=1716&specials=1). Search URLs keep their filters.
maxResultsintegerOptionaldefault 20Max results per search or list
Stop each search term, store list or search URL after this many games. 0 means every game Steam returns. App IDs are always scraped in full.
Prices, discounts and currency follow the store country. Add more countries to compare regional prices.
countryCodestringOptionaldefault "US"Country for prices
Two-letter store country code: US, GB, DE, FR, JP, BR, TR, ... Prices and currency come from this store.
extraCountryCodesarrayOptionalCompare prices in more countries
Extra country codes (up to 20). Each game gets a prices object with the price, original price and discount in every country.
languageenumOptionaldefault "english"Language
Language for titles, descriptions, genres and tags.
Steam applies these filters to searches, store lists and search URLs before results are counted, so you only pay for matching games.
sortByenumOptionaldefault "relevance"Sort searches by
Order of search results. Store lists such as top sellers keep Steam's own ranking.
tagsarrayOptionalTags
Only games with all of these Steam tags, for example Roguelike, Co-op, Pixel Graphics. Names or tag IDs.
itemTypeenumOptionaldefault "all"Item type
Limit searches to games, DLC, software, soundtracks or demos.
onlyOnSalebooleanOptionaldefault falseOnly games on sale
Only games with an active discount.
minDiscountPercentintegerOptionalMinimum discount (%)
Only games discounted at least this much, for example 50. Implies on sale.
maxPricenumberOptionalMaximum price
Only games that cost at most this much in the store country's currency (after discount). 0 means free games only.
hideFreeToPlaybooleanOptionaldefault falseHide free-to-play games
Leave out free-to-play games.
onlyReleasedbooleanOptionaldefault falseOnly released games
Leave out games that are not released yet.
platformsarrayOptionalPlatforms
Only games that run on all of these platforms.
steamDeckVerifiedbooleanOptionaldefault falseOnly Steam Deck Verified
Only games Valve rates as Verified on Steam Deck.
supportedLanguageenumOptionaldefault "any"Supports language
Only games available in this language.
includeDetailsbooleanOptionaldefault trueInclude full game details
Add descriptions, genres, categories, screenshots, trailers, system requirements, supported languages, DLC, Metacritic, achievements and packages from each game's store page data. Turn off for a faster price, discount, tag and review-score feed.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies work well for Steam and are the cheapest option.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| appId | integer | null | Steam app ID |
| title | string | null | Game title |
| url | string | null | Steam store URL |
| type | string | null | Item type: game, dlc, software, music, demo, ... |
| isFree | boolean | null | Free to play or free |
| countryCode | string | null | Store country used for prices |
| currency | string | null | Currency code |
| price | string | null | Current price as shown on Steam |
| priceValue | number | null | Current price as a number |
| originalPrice | string | null | Price before discount (only while on sale) |
| originalPriceValue | number | null | Regular price as a number |
| discountPercent | integer | null | Discount in percent |
| sale | boolean | null | Currently discounted |
| discountEndsAt | string | null | When the discount ends (ISO 8601) |
| prices | object | null | Prices per country when extra countries are requested |
| releaseDate | string | null | Release date as shown on Steam |
| releaseDateIso | string | null | Release date (ISO 8601) |
| comingSoon | boolean | null | Not released yet |
| earlyAccess | boolean | null | In Early Access |
| reviewScore | string | null | Steam review summary, e.g. Very Positive |
| reviewPositivePercent | integer | null | Share of positive reviews (%) |
| reviewCount | integer | null | Number of user reviews |
| tags | array | null | User tags, most voted first |
| genres | array | null | Genres |
| categories | array | null | Store features and categories |
| developers | array | null | Developers |
| publishers | array | null | Publishers |
| developer | string | null | Developers joined |
| franchises | array | null | Franchises |
| supportedPlatforms | array | null | windows, mac, linux |
| steamDeck | string | null | Steam Deck compatibility: Verified, Playable, Unsupported, Unknown |
| metacriticScore | integer | null | Metacritic score |
| metacriticUrl | string | null | Metacritic URL |
| recommendationsTotal | integer | null | Steam recommendations |
| achievementsTotal | integer | null | Number of achievements |
| requiredAge | integer | null | Required age |
| ageRating | string | null | Age rating, e.g. ESRB T |
| description | string | null | Short description |
| detailedDescription | string | null | Full description (plain text) |
| aboutTheGame | string | null | About this game (plain text) |
| supportedLanguages | array | null | Supported languages |
| fullAudioLanguages | array | null | Languages with full audio |
| controllerSupport | string | null | Controller support |
| headerImage | string | null | Header image URL |
| capsuleImage | string | null | Capsule image URL |
| background | string | null | Store page background URL |
| backgroundRaw | string | null | Raw background URL |
| screenshots | array | null | Full-size screenshot URLs |
| movies | array | null | Trailers with HLS/DASH/MP4 URLs |
| website | string | null | Official website |
| supportInfo | object | null | Support URL and email |
| isDLC | boolean | null | Is DLC |
| parentAppId | integer | null | Base game app ID (for DLC) |
| parentTitle | string | null | Base game title (for DLC) |
| dlc | array | null | DLC app IDs |
| dlcCount | integer | null | Number of DLC |
| packages | array | null | Package IDs |
| packageGroups | array | null | Purchase options |
| pcRequirements | object | null | Windows requirements |
| macRequirements | object | null | macOS requirements |
| linuxRequirements | object | null | Linux requirements |
| systemRequirements | object | null | Minimum requirements per platform |
| contentDescriptors | object | null | Mature content descriptors |
| legalNotice | string | null | Legal notice |
| source | string | null | Search term, store list or input that found the game |
| searchPosition | integer | null | Position in the search or list |
| scrapedAt | string | null | Scraped at (ISO 8601) |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Game | One saved Steam store game with prices, tags and review score (and full details when enabled). | $0.0006 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('shelfbright/steam-store-scraper').call({
"searchTerms": [
"roguelike"
],
"maxResults": 20,
"countryCode": "US",
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run shelfbright/steam-store-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=shelfbright/steam-store-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Discounted RPG games with German prices and details.
Roguelike games sorted by user reviews with US prices.
The current top-selling games on Steam.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.