Steam Store Scraper 🎮
Pricing
from $0.90 / 1,000 results
Steam Store Scraper 🎮
Unlock comprehensive data from the Steam Store with ease. This efficient actor scrapes game details, pricing, reviews, and tags at high speed. Perfect for market research, price monitoring, and analyzing gaming trends without the hassle.
Pricing
from $0.90 / 1,000 results
Rating
5.0
(3)
Developer
Shahid Irfan
Maintained by CommunityActor stats
4
Bookmarked
44
Total users
10
Monthly active users
5.6 hours
Issues response
4 days ago
Last modified
Categories
Security
Limited permissionsShare
What does Steam Store Scraper do?
Steam Store Scraper collects structured game data from the Steam Store. Search by keyword or paste a Steam search URL, then export titles, prices, discounts, release dates, genres, platforms, developers, publishers, media links, and system requirements. Each dataset item includes a direct Steam URL, a source label, and an ISO timestamp.
Why use Steam Store Scraper?
- Build a game catalog - Collect Steam titles by keyword, sort order, or a custom search URL.
- Track prices and discounts - Save current prices, original prices, discount percentages, and sale status.
- Enrich an existing database - Add descriptions, genres, categories, media, requirements, and company names to game records you already own.
- Follow releases - Capture release dates and filter out unreleased titles when you need a released-only dataset.
- Localize prices - Choose the country code and language used for prices and text.
- Run at scale - Save progress after each search page. A long job can continue from the last saved position instead of restarting at page one.
What data can you extract from Steam?
Each record covers one app. Steam omits fields it does not publish.
| Field | Type | Description |
|---|---|---|
appId | String | Steam application identifier. |
url | String | Direct Steam Store URL for the app. |
title | String | Game or item title. |
type | String | Steam item type, such as game, dlc, or demo. |
description | String | Short store description. |
detailedDescription | String | Full store description converted to plain text. |
aboutTheGame | String | About This Game content when provided. |
headerImage | String | Header image URL. |
capsuleImage | String | Capsule image URL. |
screenshots | Array | Full-size screenshot URLs. |
movies | Array | Trailer URLs when available. |
releaseDate | String | Release date shown by Steam. |
comingSoon | Boolean | Whether the item is marked as unreleased. |
isFree | Boolean | Whether Steam marks the item as free. |
supportedLanguages | String | Languages listed by Steam. |
supportedPlatforms | Array | Platform keys: windows, mac, linux. |
platforms | Array | Same platform list, kept for dataset views. |
genres | Array | Steam genre labels. |
categories | Array | Steam feature and category labels. |
tags | Array | Community tags when the store page fallback is used. |
developers | Array | Developer names. |
publishers | Array | Publisher names. |
price | String | Current localized price or Free. |
priceCents | Number | Price in the smallest currency unit when available. |
currency | String | Currency code such as USD. |
originalPrice | String | Pre-discount price when a sale is active. |
discountPercent | String | Discount value such as 50%. |
sale | Boolean | Whether the item currently has a discount. |
reviewSummary | String | Steam review label such as Very Positive. |
recommendationsTotal | Number | Steam recommendation count when available. |
achievementsTotal | Number | Achievement count when available. |
metacriticScore | Number | Metacritic score when Steam publishes one. |
metacriticUrl | String | Metacritic page linked by Steam. |
website | String | Official website listed on the store page. |
supportInfo | Object | Support URL and email when provided. |
pcRequirements | Object | Minimum and recommended Windows requirements. |
macRequirements | Object | Minimum and recommended macOS requirements. |
linuxRequirements | Object | Minimum and recommended Linux requirements. |
systemRequirements | Object | Minimum requirements grouped by platform. |
isDLC | Boolean | Whether the item is downloadable content. |
dlc | Array | Related DLC application identifiers. |
packages | Array | Package identifiers associated with the item. |
packageGroups | Array | Purchase option details when available. |
contentDescriptors | Object | Content descriptors supplied by Steam. |
background | String | Background image URL. |
backgroundRaw | String | Raw background image URL. |
searchPosition | Number | Position of the item in the search results. |
source | String | Record source: steam-appdetails, steam-store-browse, steam-store-page, or steam-search-results. |
enrichmentFailed | Boolean | True when full details were unavailable and fallback data was used. |
scrapedAt | String | ISO timestamp for when the record was saved. |
How to use Steam Store Scraper
- Open the Actor in Apify Console.
- Enter a keyword, or paste a Steam search URL.
- Set the result limit and page limit.
- Choose the sort order, language, country, and optional sale or release filters.
- Start the run.
- Download the dataset or connect it to your workflow.
A supplied search URL takes precedence over the keyword. This keeps URL-only runs from picking up the prefilled keyword.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startUrl | String | No | - | A Steam search URL. Its filters are reused and take precedence over keyword. |
keyword | String | No | action | Search term such as action, RPG, or survival. Leave it empty to scan the whole store. |
sortBy | String | No | _ASC | Sort order: _ASC, Released_DESC, Price_ASC, Price_DESC, Name_ASC, or Reviews_DESC. |
maxResults | Integer | No | 20 | Overall number of games to collect. On a resumed run, this is the total target, not an extra count. |
maxPages | Integer | No | 5 | Maximum search pages to scan in one run. Steam returns up to 50 games per page. A resumed run continues from the saved page. |
onlyOnSale | Boolean | No | false | Save only items with an active discount. |
onlyReleased | Boolean | No | true | Exclude items marked as coming soon. |
language | String | No | english | Language used for localized fields. |
countryCode | String | No | us | Two-letter country code used for prices and availability. |
proxyConfiguration | Object | No | Apify Proxy | Apify Proxy is used by default. The Actor prefers the DATACENTER group, falls back to the account default group, and uses custom proxy URLs when supplied. |
Usage Examples
Basic keyword run
Collect 20 action games with the default release filter:
{"keyword": "action","maxResults": 20,"maxPages": 5}
Large resumable job
Collect up to 50,000 games from the whole store. The search URL has no term, so discovery is not limited to one keyword. Set the Apify run timeout to 6 hours. If the job stops early, run it again with the same search. Resume is automatic.
{"startUrl": "https://store.steampowered.com/search/?sort_by=_ASC","maxResults": 50000,"maxPages": 1200,"onlyReleased": true,"proxyConfiguration": {"useApifyProxy": true}}
Discounted RPG catalog
Return released RPGs with an active discount and scan more pages:
{"keyword": "RPG","sortBy": "Price_ASC","maxResults": 500,"maxPages": 20,"onlyOnSale": true,"onlyReleased": true}
Custom search URL with localization
Reuse a Steam search URL and collect prices for the United Kingdom:
{"startUrl": "https://store.steampowered.com/search/?sort_by=Reviews_DESC&term=survival","maxResults": 100,"maxPages": 10,"language": "english","countryCode": "gb"}
Sample Output
Prices, counts, and available fields vary by title, country, and collection time.
{"appId": "413150","url": "https://store.steampowered.com/app/413150/Stardew_Valley/","title": "Stardew Valley","type": "game","description": "You've inherited your grandfather's old farm plot in Stardew Valley. Armed with hand-me-down tools and a few coins, you set out to begin your new life.","releaseDate": "Feb 26, 2016","comingSoon": false,"isFree": false,"supportedLanguages": "English, German, Spanish - Spain, Japanese, Portuguese - Brazil, Russian, Simplified Chinese, French, Italian, Hungarian, Korean, Turkish","supportedPlatforms": ["windows", "mac", "linux"],"platforms": ["windows", "mac", "linux"],"genres": ["Indie", "RPG", "Simulation"],"categories": ["Single-player", "Multi-player", "Co-op", "Online Co-op"],"developers": ["ConcernedApe"],"publishers": ["ConcernedApe"],"price": "$14.99","priceCents": 1499,"currency": "USD","sale": false,"reviewSummary": "Overwhelmingly Positive","recommendationsTotal": 903228,"achievementsTotal": 49,"metacriticScore": 89,"website": "http://www.stardewvalley.net","screenshots": ["https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/413150/ss_b887651a93b0525739049eb4194f633de2df75be.1920x1080.jpg"],"pcRequirements": {"minimum": "Minimum: OS *: Windows Vista or greater Processor: 2 Ghz Memory: 2 GB RAM Graphics: 256 mb video memory, shader model 3.0+ DirectX: Version 10 Storage: 500 MB available space"},"searchPosition": 1,"source": "steam-appdetails","enrichmentFailed": false,"scrapedAt": "2026-11-03T06:02:30.461Z"}
Large runs and resume behavior
Steam limits how many requests one IP can make in a five-minute window. The Actor tracks a separate request budget per proxy session, rotates its request profile when Steam applies a block, and slows down before it hits a wall. A 5,000 game run took 4m 24s with 6 proxy sessions; without a proxy it is slower.
The Actor saves its position after each search page. If a run stops because of the Apify timeout or a sustained Steam block, the next run with the same search continues from the saved position. The summary reports two numbers: games saved by the current run, and overall progress toward maxResults.
The Actor always uses fast batched data. It fetches core records in batches of 50 app IDs, avoiding one request per game. In a 20-game comparison it returned 33 fields, compared with 51 from per-game detail records. It keeps names, descriptions, developers, publishers, release dates, platforms, prices, discounts, reviews, tags, images, screenshots, and trailers. It omits achievements, categories, content descriptors, currency, DLC lists, genres, macOS and Linux requirements, Metacritic, packages, recommendations, required age, support details, supported languages, system requirements, and website.
Each Apify run writes its own dataset. When a job spans several runs, export or merge those datasets if you need one combined file.
Tips for Best Results
- Start with
maxResults: 20and a lowmaxPagesvalue to check the result shape. - Use a focused keyword or search URL for a narrow catalog.
- Keep language and country consistent so prices stay comparable.
- Raise
maxPageswhen a keyword returns more results than the first page. - For a 50,000 game released-only job, use at least 1,200 search pages. Filters and delisted titles reduce the number of saved records below the raw page count of 50 per page.
- Expect missing fields on delisted or region-locked titles.
- Check
sourceandenrichmentFailedto judge record completeness.
Integrations and Export Formats
- Google Sheets - Review prices, release dates, and classifications in a shared spreadsheet.
- Airtable - Build a searchable game catalog with filters and linked records.
- Make or Zapier - Start downstream workflows when a run completes.
- Webhooks - Send dataset and run events to your own services.
- Apify API - Start runs and retrieve dataset items programmatically. Datasets can be exported as JSON, CSV, Excel, XML, and other supported formats.
Frequently Asked Questions
Is there a fixed five-minute timeout?
No. The Actor uses the run timeout set in Apify. It stops shortly before that timeout so it can save progress and finish cleanly.
Can the Actor process 50,000 games in one run?
Yes, with a long run timeout. A 6-hour run with the built-in 6 proxy sessions is a realistic 50,000 game setup. If it does not finish, rerun and resume continues.
Does the Actor resume from the last search page?
Yes. Progress is saved after each page and after each saved batch. A new run with the same search, sort, language, country, and filters continues from that point.
Why did I get fewer records than maxResults?
The usual causes are a low maxPages, sale or release filters, fewer Steam results, or the run timeout. Check the run summary for the stop reason and filter counts.
Can I scan the whole Steam store instead of one keyword?
Yes. Leave keyword empty, or supply a Steam search URL without a term in startUrl, for example https://store.steampowered.com/search/?sort_by=_ASC. A supplied URL takes precedence over the keyword.
Can I use my own Steam search URL?
Yes. Put a public Steam search URL in startUrl. The Actor keeps its filters and controls pagination from the input fields. startUrl wins when both a URL and a keyword are present.
Can I collect only discounted or released games?
Set onlyOnSale to true for discounts. Keep onlyReleased set to true to exclude unreleased titles.
Are prices localized?
Yes. Set countryCode for the market and language for localized text. Steam decides which fields and currencies are available for that market.
Why are some fields missing?
Steam does not publish every field for every app. Missing descriptions, scores, media, requirements, or package details are omitted when the source does not provide them.
Related Actors
- itch.io Games Scraper - Collect indie game listings, metadata, and pricing from itch.io.
- Xbox Games Scraper - Collect Xbox titles, prices, release dates, and catalog details.
Support
For issues, missing fields, or feature requests, use the Issues tab on the Actor page. Include the input used, the affected Steam URL, and the run ID when possible.
Legal Notice
This Actor is intended for legitimate collection and analysis of publicly available Steam Store information. You are responsible for complying with Steam's terms, applicable laws, privacy requirements, and any rules that apply to your use of the data.