Steam Store Game Search Scraper
Pricing
from $2.99 / 1,000 games
Steam Store Game Search Scraper
Collects public Steam Store game search results with titles, App IDs, links, prices, discounts, review summaries, release dates, and platform labels.
Pricing
from $2.99 / 1,000 games
Rating
0.0
(0)
Developer
w3crawler
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Features
Share
Search the official Steam Store catalogue and save public game listing records: App ID, title, canonical store URL, displayed price, discount, review label, release text, platform labels, and search position. The Actor uses the Store search page as its source and keeps the source URL, final URL, page URL, source kind, query, sort, and collection timestamp with each saved row.
Get started
- Open the Actor Store page and select Try for free or open the Input tab.
- Set
searchQueryto the game or phrase you need. An empty value lists games using the selected sort. - Choose
sortByand keepmaxItemssmall for a first test. - Start the Actor, open the dataset, and export the saved records as JSON, CSV, or Excel. Open Run summary (
OUTPUT) to check the outcome and counts.
Input
All fields are optional; the defaults below are ready to use. Unsupported field names and out-of-range values are rejected before requests start.
| Field | Type | Required? | Default | Meaning |
|---|---|---|---|---|
searchQuery | string | Optional | "" | Public Steam Store search text; an empty value lists games using the selected sort. Up to 200 characters. |
query | string | Optional | Not supplied | Compatibility alias for searchQuery, up to 200 characters. |
sortBy | string enum | Optional | Review_Score_DESC | Review_Score_DESC, Released_DESC, Price_ASC, Price_DESC, or _ASC. |
maxItems | integer | Optional | 50 | Maximum unique public game rows to save, 1–500. |
delayMs | integer | Optional | 750 | Minimum serial delay between Steam requests, 250–10,000 ms. |
maxRequestRetries | integer | Optional | 1 | Bounded retries for transient responses only, 0–3. |
timeoutMs | integer | Optional | 30000 | Maximum time for one public Steam response, 5,000–120,000 ms. |
maxResponseBytes | integer | Optional | 5000000 | Maximum response size accepted for parsing, 100,000–30,000,000 bytes. |
Example input matching the saved portal run:
{"searchQuery": "portal","sortBy": "Review_Score_DESC","maxItems": 2,"delayMs": 250,"maxRequestRetries": 1,"timeoutMs": 30000,"maxResponseBytes": 5000000}
The Actor reads the official public Steam Store search page. It does not log in or bypass access controls.
Output
The dataset contains one row per saved game search result. Optional values are omitted when Steam does not publish them; they are not inferred. No diagnostic or placeholder rows are written.
| Field | Type | Availability | Meaning |
|---|---|---|---|
recordType | string | Always | Record type; always steam-game. |
sourceName | string | Always | Human-readable source name. |
sourceUrl | string | Always | Exact public search URL requested. |
sourceFinalUrl | string | Always | Final public URL after redirects. |
sourceKind | string | Always | Source kind, search_html. |
pageUrl | string | Always | Public search page URL. |
appId | integer | Always | Steam application ID. |
title | string | Always | Public game title. |
url | string | Always | Canonical public Steam Store game URL. |
headerImage | string | Always | Public capsule image URL. |
releaseDate | string | Always | Release text shown in the search result. |
reviewSummary | string | Always | Review label shown by Steam, such as Overwhelmingly Positive. |
reviewScore | string | Always | Review percentage shown by Steam. |
price | string | Always | Displayed price string, including currency symbol. |
originalPrice | string | When published | Original price string when a discount is shown. |
discountPercent | integer | When published | Discount percentage when a discount is shown. |
platforms | string | Always | Platform labels shown by Steam. |
searchQuery | string | Always | Search term used for the request. |
sortBy | string | Always | Sort parameter used for the request. |
position | integer | Always | One-based position in the saved search results. |
scrapedAt | string | Always | Time the record was saved, in ISO UTC. |
The example below is a real saved row from the 2026-10-25 run. Every value is unchanged.
{"recordType": "steam-game","sourceName": "Steam Store game search","sourceUrl": "https://store.steampowered.com/search/?term=portal&sort_by=Review_Score_DESC&start=0&category1=998","sourceFinalUrl": "https://store.steampowered.com/search/?term=portal&sort_by=Review_Score_DESC&start=0&category1=998","sourceKind": "search_html","pageUrl": "https://store.steampowered.com/search/?term=portal&sort_by=Review_Score_DESC&start=0&category1=998","appId": 400,"title": "Portal","url": "https://store.steampowered.com/app/400/Portal/","headerImage": "https://shared.fastly.steamstatic.com/store_item_assets/steam/apps/400/capsule_231x87.jpg?t=1745368554","releaseDate": "Oct 10, 2007","reviewSummary": "Overwhelmingly Positive","reviewScore": "98%","price": "$9.99","platforms": "Windows, Linux/SteamOS","searchQuery": "portal","sortBy": "Review_Score_DESC","position": 1,"scrapedAt": "2026-10-25T21:13:17.994Z"}
Run summary
Run summary is stored separately from the dataset in the run's key-value store under OUTPUT (and mirrored to OUTPUT_SUMMARY).
| Field | Meaning |
|---|---|
recordType | Summary record type, runSummary. |
status | Run outcome: SUCCEEDED or FAILED. |
runStatus | Canonical run status; matches status. |
dataStatus | Dataset completeness: COMPLETE, PARTIAL, NO_RESULTS, or FAILED. |
itemCount | Game rows saved to the dataset. |
uniqueAppIds | Distinct app IDs among the saved rows. |
pagesScraped | Search pages processed. |
requestCount | Public requests attempted. |
responseCount | Public responses received. |
failedRequestCount | Requests that failed before a usable response. |
diagnosticCount | Operational issues recorded outside the dataset. |
recordsStored | Complete records saved to the dataset. |
searchQuery | Search term used for the run. |
sortBy | Sort parameter used for the run. |
maxItems | Configured item cap. |
fixtureMode | Whether a bundled QA fixture was used. |
sourceWebsite | Steam Store source website. |
sourceEndpoint | Public search endpoint. |
includeDiagnostics | Whether diagnostic detail was retained for the run. |
outputWriteFailureCount | Summary writes that failed. |
completedAt | UTC summary creation time. |
| Status | Data status | Meaning |
|---|---|---|
SUCCEEDED | COMPLETE | Games were saved without an extraction problem. |
SUCCEEDED | PARTIAL | Games were saved, but a later problem prevented a complete run. Saved rows remain available. |
SUCCEEDED | NO_RESULTS | The search completed cleanly and returned no matching games. |
FAILED | FAILED | A fatal error occurred before any usable game was saved. |
Example OUTPUT from the 2026-10-25 run:
{"recordType": "runSummary","status": "SUCCEEDED","runStatus": "SUCCEEDED","dataStatus": "COMPLETE","itemCount": 2,"uniqueAppIds": 2,"pagesScraped": 1,"requestCount": 2,"responseCount": 2,"failedRequestCount": 0,"diagnosticCount": 0,"recordsStored": 2,"searchQuery": "portal","sortBy": "Review_Score_DESC","maxItems": 2,"fixtureMode": false,"sourceWebsite": "https://store.steampowered.com/","sourceEndpoint": "https://store.steampowered.com/search/","includeDiagnostics": true,"outputWriteFailureCount": 0,"completedAt": "2026-10-25T21:13:18.155Z"}
Coverage and limitations
The Actor reads the public Steam Store game search page (category1=998). It does not crawl every Store category, follow app pages for extra details, log in, use a proxy, or bypass access controls. Requests are direct HTTPS calls with a robots preflight, bounded same-host redirects, a response-size cap, serial delays, and transient-only retries. Prices are display strings for the storefront returned to this request, not normalized currency amounts; originalPrice and discountPercent appear only when a discount is shown. Review labels and positions reflect the Store response at collection time. Empty or unobserved values are omitted, and failures never create diagnostic or placeholder dataset rows.
Usage and support
Run cost depends on Apify compute and the number of search pages requested. Start with a small maxItems, inspect the dataset and OUTPUT, then raise the cap or widen the query. See the Actor's Pricing tab for current account rates. Use the Actor Issues page to report a problem. Include the run ID, the input used, and the run summary; do not include tokens, cookies, or private data. This Actor is not affiliated with Valve or Steam. Use it only for public data and in accordance with Steam's terms, robots guidance, and applicable law.