# Steam Store Scraper: Games, Charts & Reviews (`scrapingmonkey/steam-store-scraper`) Actor

Scrape Steam games with 84-field details, multi-country prices, reviews, charts, news, similar games, and community content. No login or API key.

- **URL**: https://apify.com/scrapingmonkey/steam-store-scraper.md
- **Developed by:** [ScrapingMonkey](https://apify.com/scrapingmonkey) (community)
- **Categories:** Automation, Developer tools, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 steam search results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Steam Games Store Scraper

Collect Steam search results, complete game records, regional prices, reviews, charts, news, similar games, live player counts, SteamSpy metrics, and public Steam Community content. The Actor uses lightweight HTTP requests, processes independent targets concurrently, and routes every target request through the built-in Apify Proxy.

### What can you do with this Actor?

- Discover games for multiple keywords and Steam price regions
- Compare localized prices and discounts across one or every supported country
- Extract complete product metadata, requirements, media, ratings, tags, packages, and release data
- Track Top Sellers, New Releases, Specials, Coming Soon, and Featured collections
- Analyze positive or negative reviews by date, language, purchase type, and keyword
- Add public reviewer profiles and review comments when required
- Collect announcements, similar games, screenshots, videos, artwork, guides, and broadcasts
- Detect new, changed, and unchanged records across scheduled runs

### Modes

| Mode | Input | Dataset row | Typical use |
|---|---|---|---|
| `search` | `searchTerms` | 38-field ranked search row | Discovery, keyword tracking, sales research |
| `details` | `appIds` | 84-field full game row | Catalogs, pricing, product intelligence |
| `reviews` | `appIds` | 42-field public review row | Sentiment, issue, and feedback analysis |
| `charts` | `chartCollections` | 84-field ranked full game row | Rank and launch monitoring |
| `news` | `appIds` | 22-field announcement row | Update and release monitoring |
| `similar` | `appIds` | 28-field recommended-game row | Competitor and market mapping |
| `community` | `appIds`, `communityTypes` | 26-field community row | UGC, media, guide, and broadcast research |

Across these schemas, the Actor documents 154 unique top-level output fields. Failed targets are reported in the run log and never mixed into business data as error rows.

### Quick start

#### Search

```json
{
  "mode": "search",
  "searchTerms": ["fitness game", "workout simulator"],
  "maxResults": 20,
  "countries": ["US", "DE"],
  "language": "en",
  "searchMinReviewScore": 70,
  "maxConcurrency": 8
}
```

#### Details with regional prices

```json
{
  "mode": "details",
  "appIds": ["730", "https://store.steampowered.com/app/570/Dota_2/"],
  "countries": ["US", "GB", "DE", "JP"],
  "includeSteamSpy": true,
  "includeCurrentPlayers": true,
  "maxConcurrency": 8
}
```

#### Filter reviews

```json
{
  "mode": "reviews",
  "appIds": ["730"],
  "maxResults": 100,
  "reviewSort": "newest",
  "reviewType": "negative",
  "reviewKeywords": ["crash", "performance"],
  "reviewKeywordMatch": "any",
  "reviewsSince": "2026-01-01",
  "resolveGameNames": true
}
```

#### Charts and monitoring

```json
{
  "mode": "charts",
  "chartCollections": ["topSellers", "newReleases", "specials"],
  "maxResults": 20,
  "countries": ["US", "DE"],
  "monitoring": true,
  "monitoringOnlyChanges": true,
  "monitorStoreName": "weekly-steam-charts"
}
```

### Complete output examples

Every top-level field returned by every schema is shown below. Fields can be `null` or empty when Steam does not publish the value for that item.

#### Complete Search row — 38 top-level fields

```json
{
  "recordType": "search",
  "searchTerm": "car simulator",
  "searchRank": 1,
  "searchPage": 1,
  "totalResults": 7273,
  "appId": "1190000",
  "itemType": "app",
  "itemKey": "App_1190000",
  "title": "Car Mechanic Simulator 2021",
  "url": "https://store.steampowered.com/app/1190000/",
  "capsuleImage": "https://shared.fastly.steamstatic.com/store_item_assets/steam/apps/1190000/capsule_231x87.jpg",
  "releaseDateText": "11 Aug, 2021",
  "platforms": {
    "windows": true,
    "mac": false,
    "linux": false
  },
  "reviewSummary": "Overwhelmingly Positive",
  "reviewSentiment": "positive",
  "positiveReviewPercentage": 95,
  "reviewCount": 16804,
  "price": 3.74,
  "priceText": "$3.74",
  "originalPrice": 24.99,
  "originalPriceText": "$24.99",
  "discountPercent": 85,
  "currency": "USD",
  "isFree": false,
  "isDiscounted": true,
  "tagIds": [599, 699],
  "creatorIds": [40373729],
  "descriptorIds": [5],
  "steamDeckCompatibilityHandled": true,
  "country": "US",
  "language": "en",
  "searchSort": "relevance",
  "source": "steam-store",
  "schemaVersion": 2,
  "scrapedAt": "2026-08-10T12:00:00Z",
  "monitorStatus": null,
  "changedFields": [],
  "previousSnapshot": null
}
```

#### Complete Details or Chart row — 84 top-level fields

Charts use the same complete shape with `recordType: "chart"`, a non-null `chartCollection`, and a non-null `chartRank`.

```json
{
  "recordType": "details",
  "appId": "730",
  "type": "game",
  "name": "Counter-Strike 2",
  "url": "https://store.steampowered.com/app/730/",
  "requiredAge": 0,
  "isFree": true,
  "controllerSupport": null,
  "hasControllerSupport": false,
  "dlcAppIds": ["267860"],
  "hasDlc": true,
  "detailedDescription": "<p>Counter-Strike 2 is a competitive action game.</p>",
  "aboutTheGame": "<p>Built on the Source 2 engine.</p>",
  "shortDescription": "A competitive tactical action game.",
  "supportedLanguages": ["English", "French", "German"],
  "supportedLanguagesText": "English, French, German",
  "fullAudioLanguages": ["English"],
  "headerImage": "https://shared.fastly.steamstatic.com/store_item_assets/steam/apps/730/header.jpg",
  "capsuleImage": "https://shared.fastly.steamstatic.com/store_item_assets/steam/apps/730/capsule_231x87.jpg",
  "capsuleImageV5": "https://shared.fastly.steamstatic.com/store_item_assets/steam/apps/730/capsule_184x69.jpg",
  "website": "https://www.counter-strike.net/",
  "pcRequirements": {
    "minimumHtml": "<strong>OS:</strong> Windows 10",
    "minimumText": "OS: Windows 10",
    "recommendedHtml": null,
    "recommendedText": null
  },
  "macRequirements": {
    "minimumHtml": null,
    "minimumText": null,
    "recommendedHtml": null,
    "recommendedText": null
  },
  "linuxRequirements": {
    "minimumHtml": "64-bit Linux",
    "minimumText": "64-bit Linux",
    "recommendedHtml": null,
    "recommendedText": null
  },
  "legalNotice": "Valve and Steam are trademarks of Valve Corporation.",
  "developers": ["Valve"],
  "publishers": ["Valve"],
  "demos": [
    {
      "appId": "123",
      "description": "Public demo"
    }
  ],
  "price": 0.0,
  "priceText": "Free",
  "originalPrice": 0.0,
  "originalPriceText": "Free",
  "discountPercent": 0,
  "currency": null,
  "packages": [298963],
  "packageGroups": [
    {
      "name": "default",
      "title": "Play Counter-Strike 2",
      "description": "",
      "selectionText": "Select a purchase option",
      "saveText": "",
      "displayType": 0,
      "isRecurringSubscription": false,
      "packages": [
        {
          "packageId": 298963,
          "percentSavings": 0,
          "percentSavingsText": "",
          "optionText": "Counter-Strike 2 - Free",
          "optionDescription": "",
          "canGetFreeLicense": true,
          "isFreeLicense": true,
          "priceInCentsWithDiscount": 0
        }
      ]
    }
  ],
  "platforms": {
    "windows": true,
    "mac": false,
    "linux": true
  },
  "metacritic": {
    "score": 83,
    "url": "https://www.metacritic.com/game/counter-strike-2/"
  },
  "categories": [
    {
      "id": 1,
      "description": "Multi-player"
    }
  ],
  "genres": [
    {
      "id": 1,
      "description": "Action"
    }
  ],
  "screenshots": [
    {
      "id": 0,
      "thumbnailUrl": "https://shared.fastly.steamstatic.com/store_item_assets/steam/apps/730/ss_thumb.jpg",
      "fullUrl": "https://shared.fastly.steamstatic.com/store_item_assets/steam/apps/730/ss_full.jpg"
    }
  ],
  "movies": [
    {
      "id": 256972299,
      "name": "Launch Trailer",
      "thumbnailUrl": "https://shared.fastly.steamstatic.com/store_item_assets/steam/apps/730/movie.jpg",
      "webm480Url": "https://video.fastly.steamstatic.com/store_trailers/730_480.webm",
      "webmMaxUrl": "https://video.fastly.steamstatic.com/store_trailers/730_max.webm",
      "mp4480Url": "https://video.fastly.steamstatic.com/store_trailers/730_480.mp4",
      "mp4MaxUrl": "https://video.fastly.steamstatic.com/store_trailers/730_max.mp4",
      "hlsUrl": "https://video.fastly.steamstatic.com/store_trailers/730.m3u8",
      "dashUrl": "https://video.fastly.steamstatic.com/store_trailers/730.mpd",
      "highlight": true
    }
  ],
  "recommendationsTotal": 8695087,
  "achievements": {
    "total": 1,
    "highlighted": [
      {
        "name": "A New Beginning",
        "imageUrl": "https://shared.fastly.steamstatic.com/steamcommunity/public/images/apps/730/achievement.jpg"
      }
    ]
  },
  "hasAchievements": true,
  "releaseDateText": "21 Aug, 2012",
  "released": true,
  "support": {
    "url": "https://help.steampowered.com/",
    "email": "support@steampowered.com"
  },
  "background": "https://shared.fastly.steamstatic.com/store_item_assets/steam/apps/730/page_bg.jpg",
  "backgroundRaw": "https://shared.fastly.steamstatic.com/store_item_assets/steam/apps/730/page_bg_raw.jpg",
  "contentDescriptors": {
    "ids": [2, 5],
    "notes": "Includes intense violence and online interaction."
  },
  "ratings": [
    {
      "system": "esrb",
      "rating": "M",
      "descriptors": "Blood, Intense Violence",
      "requiredAge": 17,
      "useAgeGateImage": true
    }
  ],
  "tags": ["FPS", "Shooter", "Multiplayer"],
  "isEarlyAccess": false,
  "allReviews": {
    "label": "Very Positive",
    "positivePercentage": 87,
    "count": 8695087
  },
  "recentReviews": {
    "label": "Mostly Positive",
    "positivePercentage": 79,
    "count": 92543
  },
  "country": "US",
  "language": "en",
  "available": true,
  "htmlEnriched": true,
  "enrichmentError": null,
  "includedReviews": [],
  "includedReviewCount": 0,
  "reviewEnrichmentError": null,
  "chartCollection": null,
  "chartRank": null,
  "prices": [
    {
      "country": "US",
      "currency": null,
      "price": 0.0,
      "priceText": "Free",
      "originalPrice": 0.0,
      "originalPriceText": "Free",
      "discountPercent": 0,
      "isFree": true,
      "available": true
    },
    {
      "country": "DE",
      "currency": null,
      "price": 0.0,
      "priceText": "Free",
      "originalPrice": 0.0,
      "originalPriceText": "Free",
      "discountPercent": 0,
      "isFree": true,
      "available": true
    }
  ],
  "priceByCountry": {
    "US": {
      "country": "US",
      "currency": null,
      "price": 0.0,
      "priceText": "Free",
      "originalPrice": 0.0,
      "originalPriceText": "Free",
      "discountPercent": 0,
      "isFree": true,
      "available": true
    },
    "DE": {
      "country": "DE",
      "currency": null,
      "price": 0.0,
      "priceText": "Free",
      "originalPrice": 0.0,
      "originalPriceText": "Free",
      "discountPercent": 0,
      "isFree": true,
      "available": true
    }
  },
  "countriesPriced": ["US", "DE"],
  "lowestPrice": 0.0,
  "lowestPriceCountry": "US",
  "isOnSaleAnywhere": false,
  "currentPlayers": 1013936,
  "currentPlayersFetchedAt": "2026-08-10T12:00:00Z",
  "steamSpy": {
    "appId": "730",
    "name": "Counter-Strike: Global Offensive",
    "developer": "Valve",
    "publisher": "Valve",
    "scoreRank": null,
    "positive": 7642084,
    "negative": 1173003,
    "userScore": 0,
    "owners": "100,000,000 to 200,000,000",
    "averagePlaytimeForeverMinutes": 0,
    "averagePlaytimeTwoWeeksMinutes": 0,
    "medianPlaytimeForeverMinutes": 0,
    "medianPlaytimeTwoWeeksMinutes": 0,
    "price": 0.0,
    "originalPrice": 0.0,
    "discountPercent": 0,
    "concurrentUsers": 1013936,
    "languages": ["English", "French", "German"],
    "genres": ["Action", "Free To Play"],
    "tags": {
      "FPS": 92351,
      "Shooter": 68244
    }
  },
  "news": [],
  "similarGames": [],
  "communityMedia": [],
  "source": "steam-store",
  "schemaVersion": 2,
  "scrapedAt": "2026-08-10T12:00:00Z",
  "monitorStatus": "changed",
  "changedFields": ["prices"],
  "previousSnapshot": {
    "name": "Counter-Strike 2",
    "available": true,
    "prices": [],
    "chartRank": null,
    "releaseDateText": "21 Aug, 2012",
    "recommendationsTotal": 8600000
  }
}
```

#### Complete Review row — 42 top-level fields

```json
{
  "recordType": "review",
  "appId": "730",
  "appUrl": "https://store.steampowered.com/app/730/",
  "reviewId": "231351915",
  "author": {
    "steamId": "76561197986365624",
    "profileUrl": "https://steamcommunity.com/profiles/76561197986365624/",
    "numGamesOwned": 150,
    "numReviews": 12,
    "playtimeForeverMinutes": 600,
    "playtimeForeverHours": 10.0,
    "playtimeLastTwoWeeksMinutes": 60,
    "playtimeLastTwoWeeksHours": 1.0,
    "playtimeAtReviewMinutes": 540,
    "playtimeAtReviewHours": 9.0,
    "deckPlaytimeAtReviewMinutes": 30,
    "deckPlaytimeAtReviewHours": 0.5,
    "lastPlayedAt": "2024-03-09T16:00:00Z"
  },
  "language": "english",
  "reviewText": "Performance improved after the latest update.",
  "createdAt": "2026-08-01T10:00:00Z",
  "updatedAt": "2026-08-02T10:00:00Z",
  "isPositive": true,
  "recommendation": "Recommended",
  "votesUp": 42,
  "votesFunny": 3,
  "weightedVoteScore": 0.876,
  "commentCount": 2,
  "steamPurchase": true,
  "receivedForFree": false,
  "writtenDuringEarlyAccess": false,
  "primarilySteamDeck": true,
  "developerResponseText": "Thank you for the report.",
  "developerResponseDate": "2026-08-03T10:00:00Z",
  "reviewSort": "newest",
  "reviewType": "all",
  "purchaseType": "all",
  "requestedReviewLanguage": "all",
  "requestedCountry": "US",
  "totalReviews": 100,
  "totalPositive": 90,
  "totalNegative": 10,
  "reviewScore": 8,
  "reviewScoreDescription": "Very Positive",
  "gameName": "Counter-Strike 2",
  "reviewUrl": "https://steamcommunity.com/profiles/76561197986365624/recommended/730/",
  "matchedKeywords": ["performance", "update"],
  "authorProfile": {
    "steamId": "76561197986365624",
    "name": "Example Player",
    "customUrl": "example-player",
    "profileUrl": "https://steamcommunity.com/profiles/76561197986365624/",
    "avatarIcon": "https://avatars.fastly.steamstatic.com/example.jpg",
    "avatarMedium": "https://avatars.fastly.steamstatic.com/example_medium.jpg",
    "avatarFull": "https://avatars.fastly.steamstatic.com/example_full.jpg",
    "onlineState": "offline",
    "stateMessage": "Offline",
    "privacyState": "public",
    "visibilityState": 3,
    "vacBanned": false,
    "tradeBanState": "None",
    "limitedAccount": false,
    "memberSince": "November 25, 2006",
    "hoursPlayedLastTwoWeeks": 1.0,
    "headline": "Tactical games fan",
    "location": "United States",
    "realName": "",
    "summary": "Public profile summary"
  },
  "comments": [
    {
      "commentId": "581679037480446648",
      "authorSteamId": "76561198067720346",
      "authorName": "Example Commenter",
      "authorUrl": "https://steamcommunity.com/profiles/76561198067720346/",
      "authorAvatarUrl": "https://avatars.fastly.steamstatic.com/commenter.jpg",
      "text": "This fix worked for me too.",
      "createdAt": "10 August, 2026 @ 12:00 pm"
    }
  ],
  "source": "steam-store",
  "schemaVersion": 2,
  "scrapedAt": "2026-08-10T12:00:00Z",
  "monitorStatus": null,
  "changedFields": [],
  "previousSnapshot": null
}
```

#### Complete News row — 22 top-level fields

```json
{
  "recordType": "news",
  "appId": "730",
  "gameName": "Counter-Strike 2",
  "newsId": "692016318956701713",
  "title": "Counter-Strike 2 Update",
  "url": "https://store.steampowered.com/news/app/730/view/692016318956701713",
  "isExternalUrl": false,
  "author": "Valve",
  "contents": "This update includes gameplay and map fixes.",
  "feedLabel": "Community Announcements",
  "publishedAt": "2026-08-03T18:00:00Z",
  "feedName": "steam_community_announcements",
  "feedType": 1,
  "tags": ["patchnotes"],
  "country": "US",
  "language": "en",
  "source": "steam-news",
  "schemaVersion": 2,
  "scrapedAt": "2026-08-10T12:00:00Z",
  "monitorStatus": "new",
  "changedFields": ["title", "contents", "publishedAt", "url"],
  "previousSnapshot": null
}
```

#### Complete Similar row — 28 top-level fields

```json
{
  "recordType": "similar",
  "sourceAppId": "730",
  "appId": "359550",
  "rank": 1,
  "title": "Tom Clancy's Rainbow Six Siege",
  "url": "https://store.steampowered.com/app/359550/",
  "capsuleImage": "https://shared.fastly.steamstatic.com/store_item_assets/steam/apps/359550/capsule_616x353.jpg",
  "releaseDateText": "1 Dec, 2015",
  "platforms": {
    "windows": true,
    "mac": false,
    "linux": false
  },
  "reviewSummary": null,
  "positiveReviewPercentage": null,
  "reviewCount": 1250000,
  "price": 19.99,
  "priceText": "$19.99",
  "originalPrice": 19.99,
  "originalPriceText": "$19.99",
  "discountPercent": 0,
  "currency": "USD",
  "isFree": false,
  "isDiscounted": false,
  "country": "US",
  "language": "en",
  "source": "steam-store",
  "schemaVersion": 2,
  "scrapedAt": "2026-08-10T12:00:00Z",
  "monitorStatus": null,
  "changedFields": [],
  "previousSnapshot": null
}
```

#### Complete Community row — 26 top-level fields

```json
{
  "recordType": "community",
  "appId": "730",
  "communityType": "screenshots",
  "itemId": "3777669442",
  "rank": 1,
  "title": "Screenshot",
  "url": "https://steamcommunity.com/sharedfiles/filedetails/?id=3777669442",
  "imageUrl": "https://images.steamusercontent.com/ugc/example/screenshot.jpg",
  "thumbnailUrl": "https://images.steamusercontent.com/ugc/example/screenshot.jpg",
  "bodyText": "Screenshot",
  "authorName": "Example Creator",
  "authorUrl": "https://steamcommunity.com/profiles/76561197980846728/",
  "authorAvatarUrl": "https://avatars.fastly.steamstatic.com/creator.jpg",
  "publishedAt": "2026-08-09T12:00:00Z",
  "views": 77,
  "votes": 28,
  "commentCount": 0,
  "awardCount": 4,
  "country": "US",
  "language": "en",
  "source": "steam-community",
  "schemaVersion": 2,
  "scrapedAt": "2026-08-10T12:00:00Z",
  "monitorStatus": null,
  "changedFields": [],
  "previousSnapshot": null
}
```

### Input parameters

#### Core

| Parameter | Type | Default | Description |
|---|---|---:|---|
| `mode` | string | `search` | `search`, `details`, `reviews`, `charts`, `news`, `similar`, or `community` |
| `searchTerms` | string\[] | `['car simulator']` | Keywords for Search mode |
| `appIds` | string\[] | empty | Numeric IDs or Steam Store/Community URLs |
| `maxResults` | integer | `50` | Maximum rows per input; `0` follows public pagination until it ends |
| `maxConcurrency` | integer | `8` | Simultaneous independent operations, from 1 to 20 |
| `country` | string | `US` | Primary two-letter Steam price region |
| `countries` | string\[] | primary country | Search, Chart, and price-comparison regions |
| `allCountries` | boolean | `false` | Use every supported Steam price region |
| `language` | string | `en` | Store localization |

#### Search filters

| Parameter | Type | Default | Description |
|---|---|---:|---|
| `searchSort` | string | `relevance` | Relevance, release date, name, price, reviews, or Deck ordering |
| `searchSpecialsOnly` | boolean | `false` | Keep discounted rows |
| `searchFreeOnly` | boolean | `false` | Keep free rows |
| `searchMinPrice`, `searchMaxPrice` | number | unset | Numeric range in each requested country's currency |
| `searchMinDiscountPercent` | integer | `0` | Minimum current discount |
| `searchMinReviewScore` | integer | `0` | Minimum positive-review percentage |
| `searchMinReviews` | integer | `0` | Minimum displayed review count |
| `searchTagIds` | string\[] | empty | Numeric Steam tag IDs |
| `searchTagMatch` | string | `any` | Match any or all requested tags |
| `searchPlatforms` | string\[] | empty | Required `windows`, `mac`, or `linux` support |

#### Details and Charts enrichment

| Parameter | Type | Default | Description |
|---|---|---:|---|
| `includeSteamSpy` | boolean | `true` | Public SteamSpy owner, playtime, tag, and concurrent-user metrics |
| `includeCurrentPlayers` | boolean | `true` | Live player count from Steam |
| `includeReviews` | boolean | `false` | Embed matching Review rows |
| `includeNews` | boolean | `false` | Embed News rows |
| `includeSimilarGames` | boolean | `false` | Embed Similar rows |
| `includeCommunityMedia` | boolean | `false` | Embed selected Community rows |
| `chartCollections` | string\[] | `['topSellers']` | `topSellers`, `newReleases`, `specials`, `comingSoon`, `featured` |

#### Reviews

| Parameter | Type | Default | Description |
|---|---|---:|---|
| `reviewSort` | string | `newest` | `newest`, `updated`, or `helpful` |
| `reviewType` | string | `all` | `all`, `positive`, or `negative` |
| `purchaseType` | string | `all` | `all`, `steam`, or `nonSteam` |
| `reviewLanguage` | string | `all` | Steam review language code or `all` |
| `reviewDayRange` | integer | `365` | Helpful-sort lookback from 1 to 365 days |
| `includeOfftopicReviews` | boolean | `false` | Include off-topic review activity |
| `reviewsSince`, `reviewsUntil` | string | unset | Inclusive `YYYY-MM-DD` creation-date filters |
| `reviewKeywords` | string\[] | empty | Case-insensitive text terms or phrases |
| `reviewKeywordMatch` | string | `any` | Require any or all terms |
| `resolveGameNames` | boolean | `true` | Add `gameName` to Review rows |
| `includeAuthorProfiles` | boolean | `false` | Add public Steam Community profile fields |
| `includeReviewComments` | boolean | `false` | Add public comments embedded on the review page |
| `maxCommentsPerReview` | integer | `10` | Maximum comments stored in each Review row |

#### Community and monitoring

| Parameter | Type | Default | Description |
|---|---|---:|---|
| `communityTypes` | string\[] | `['screenshots']` | Screenshots, videos, artwork, announcements, guides, or broadcasts |
| `communitySort` | string | `popular` | `popular` or `recent` |
| `monitoring` | boolean | `false` | Persist fingerprints and classify rows |
| `monitoringOnlyChanges` | boolean | `false` | Save and bill only new or changed rows |
| `monitorStoreName` | string | `steam-games-monitor` | Named key-value store shared across scheduled runs |

### Regional pricing

Steam selects currency and price from the store country. The Actor therefore lets you choose countries, not an arbitrary currency disconnected from a region. `prices` preserves each source-native amount and currency. Compare numeric amounts only after applying your own exchange rates.

### Monitoring

Enable `monitoring` and reuse the same `monitorStoreName` across scheduled runs. Each emitted row gets:

- `monitorStatus`: `new`, `changed`, or `unchanged`
- `changedFields`: the monitored fields whose values changed
- `previousSnapshot`: the prior compact state used for comparison

Set `monitoringOnlyChanges` to `true` to omit unchanged rows before Dataset storage and event charging.

### Performance and billing behavior

The Actor uses lightweight HTTP requests and processes independent work up to `maxConcurrency`. Pagination for one Search, Reviews, or Community target remains sequential because the next page depends on source state. Multi-country Details prices and independent enrichment calls run concurrently.

Pay-per-event integration uses these event names:

| Event | Emitted for |
|---|---|
| `search-result` | One accepted Search row |
| `game-detail` | One complete Details row |
| `review` | One standalone or embedded Review row |
| `chart-result` | One ranked complete Chart game row |
| `news-item` | One standalone or embedded News row |
| `similar-game` | One standalone or embedded Similar row |
| `community-item` | One standalone or embedded Community row |

Before saving a row with nested billable arrays, the Actor trims those arrays to the run's remaining maximum charge budget. It stops cleanly when the event charge limit is reached. Operational failures appear only in logs and are not charged as custom events.

### API usage

Run the Actor through the Apify API and download the complete default Results view:

```text
GET https://api.apify.com/v2/datasets/DATASET_ID/items?view=overview&clean=true&format=json
```

The first and only Dataset view is `Results`. It exposes the full 154-field union used by all runtime row schemas, so descriptions, regional prices, nested metadata, review text, and enrichment fields are visible without switching to an All fields tab.

### Limits and good to know

- Steam controls source availability, chart size, pagination, localization, and whether individual values are published.
- SteamSpy metrics are public third-party estimates and are clearly nested under `steamSpy`.
- Current player counts are point-in-time values and include `currentPlayersFetchedAt`.
- Setting `maxResults` to `0` can produce long runs and high event counts.
- Community statistics vary by content type; unavailable counters remain `null`.
- Private reviewer profile data is never bypassed. Only publicly returned profile fields are stored.
- The Actor does not expose a proxy input. Every target request uses the built-in Apify Proxy, with no direct-traffic fallback.

### Responsible use

Use public data responsibly and follow applicable laws, contracts, privacy requirements, and Steam platform terms. Do not use the Actor to identify, harass, or profile individuals in harmful ways.

### Support

For reproducible support, include the Actor run ID, mode, sanitized input, affected App ID or term, and the relevant log message. Never send account credentials or private session cookies.

# Actor input Schema

## `mode` (type: `string`):

Choose the dataset you want to collect.

## `searchTerms` (type: `array`):

Keywords to search for. Used in Search mode; maxResults applies to each term and country.

## `appIds` (type: `array`):

Numeric Steam App IDs or full Steam Store/Community URLs. Used by Details, Reviews, News, Similar, and Community modes.

## `maxResults` (type: `integer`):

Maximum rows per term, app, chart, or community type. Use 0 to continue until the public source ends.

## `maxConcurrency` (type: `integer`):

Independent terms, apps, regions, charts, and enrichments processed simultaneously.

## `country` (type: `string`):

Two-letter Steam region such as US, DE, JP, or PH. Controls the primary price and storefront.

## `countries` (type: `array`):

Optional country list for regional price comparison and country-specific Search/Charts runs. Defaults to the primary country.

## `allCountries` (type: `boolean`):

Use every supported Steam country. This can create many requests, especially in Search and Charts modes.

## `language` (type: `string`):

ISO or Steam language code such as en, de, ru, pt-BR, zh-CN, or japanese.

## `searchSort` (type: `string`):

Steam ordering for Search mode.

## `searchSpecialsOnly` (type: `boolean`):

Return Search rows currently on sale.

## `searchFreeOnly` (type: `boolean`):

Return Search rows marked free by Steam.

## `searchMinPrice` (type: `number`):

Optional minimum numeric price in the selected Steam region currency.

## `searchMaxPrice` (type: `number`):

Optional maximum numeric price in the selected Steam region currency.

## `searchMinDiscountPercent` (type: `integer`):

Filter Search results by current discount percentage.

## `searchMinReviewScore` (type: `integer`):

Filter Search results by Steam's displayed positive-review percentage.

## `searchMinReviews` (type: `integer`):

Filter Search results by displayed review count.

## `searchTagIds` (type: `array`):

Optional numeric Steam tag IDs used to filter Search rows.

## `searchTagMatch` (type: `string`):

Require any or all requested tag IDs.

## `searchPlatforms` (type: `array`):

Optional values: windows, mac, linux. Every selected platform must be available.

## `includeReviews` (type: `boolean`):

Embed matching public reviews in each full game record. Reviews are billed as Review events.

## `includeSteamSpy` (type: `boolean`):

Add public owner range, playtime, sentiment, tags, and concurrent-user estimates from SteamSpy.

## `includeCurrentPlayers` (type: `boolean`):

Add Steam's current live player count to Details and Charts rows.

## `includeNews` (type: `boolean`):

Embed full public announcements. Embedded items are billed as News events.

## `includeSimilarGames` (type: `boolean`):

Embed Steam's related-game recommendations. Embedded items are billed as Similar Game events.

## `includeCommunityMedia` (type: `boolean`):

Embed selected public Steam Community cards. Embedded items are billed as Community events.

## `reviewSort` (type: `string`):

Review order used by Reviews mode and embedded reviews.

## `reviewType` (type: `string`):

Return all, positive, or negative recommendations.

## `purchaseType` (type: `string`):

Filter by whether the reviewer purchased on Steam.

## `reviewLanguage` (type: `string`):

Review language code, or all. Independent from storefront localization.

## `reviewDayRange` (type: `integer`):

Steam lookback window for helpful sorting, from 1 through 365 days.

## `includeOfftopicReviews` (type: `boolean`):

Include reviews Steam normally filters as off-topic activity.

## `reviewsSince` (type: `string`):

Optional inclusive review creation date in YYYY-MM-DD format.

## `reviewsUntil` (type: `string`):

Optional inclusive review creation date in YYYY-MM-DD format.

## `reviewKeywords` (type: `array`):

Case-insensitive keywords or phrases that must occur in review text.

## `reviewKeywordMatch` (type: `string`):

Require any or all review keywords.

## `resolveGameNames` (type: `boolean`):

Add gameName to every Review row.

## `includeAuthorProfiles` (type: `boolean`):

Enrich reviews with public Steam Community XML profile data.

## `includeReviewComments` (type: `boolean`):

Collect the public comments embedded on each review page.

## `maxCommentsPerReview` (type: `integer`):

Maximum embedded public comments per review.

## `chartCollections` (type: `array`):

Collections used in Charts mode: topSellers, newReleases, specials, comingSoon, featured.

## `communityTypes` (type: `array`):

Used by Community mode and Details enrichment: screenshots, videos, artwork, announcements, guides, broadcasts.

## `communitySort` (type: `string`):

Order public community cards by popularity trend or recency.

## `monitoring` (type: `boolean`):

Compare records with a persistent named key-value store and add new, changed, or unchanged status.

## `monitoringOnlyChanges` (type: `boolean`):

When monitoring is enabled, omit unchanged records from the Dataset and billing.

## `monitorStoreName` (type: `string`):

Named Apify key-value store reused across scheduled runs.

## Actor input object example

```json
{
  "mode": "search",
  "searchTerms": [
    "car simulator"
  ],
  "appIds": [],
  "maxResults": 50,
  "maxConcurrency": 8,
  "country": "US",
  "countries": [],
  "allCountries": false,
  "language": "en",
  "searchSort": "relevance",
  "searchSpecialsOnly": false,
  "searchFreeOnly": false,
  "searchMinDiscountPercent": 0,
  "searchMinReviewScore": 0,
  "searchMinReviews": 0,
  "searchTagIds": [],
  "searchTagMatch": "any",
  "searchPlatforms": [],
  "includeReviews": false,
  "includeSteamSpy": true,
  "includeCurrentPlayers": true,
  "includeNews": false,
  "includeSimilarGames": false,
  "includeCommunityMedia": false,
  "reviewSort": "newest",
  "reviewType": "all",
  "purchaseType": "all",
  "reviewLanguage": "all",
  "reviewDayRange": 365,
  "includeOfftopicReviews": false,
  "reviewKeywords": [],
  "reviewKeywordMatch": "any",
  "resolveGameNames": true,
  "includeAuthorProfiles": false,
  "includeReviewComments": false,
  "maxCommentsPerReview": 10,
  "chartCollections": [
    "topSellers"
  ],
  "communityTypes": [
    "screenshots"
  ],
  "communitySort": "popular",
  "monitoring": false,
  "monitoringOnlyChanges": false,
  "monitorStoreName": "steam-games-monitor"
}
```

# Actor output Schema

## `dataset` (type: `string`):

Complete Steam search, game, review, chart, news, similar-game, and community rows.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapingmonkey/steam-store-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("scrapingmonkey/steam-store-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call scrapingmonkey/steam-store-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapingmonkey/steam-store-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/kbwl1YweTpLesmJlp/builds/hqp7K9Tuncla1e9IJ/openapi.json
