# Steam Scraper — Games, Prices, Discounts & Reviews (`technicaldost/steam-scraper-games-prices-reviews`) Actor

Scrape Steam games and reviews without an API key: prices, discounts, tags, review scores, developers, plus review text, playtime and votes. Works after Valve retired the appreviews JSON endpoint (Oct 2026). Search, top sellers, specials or app URLs.

- **URL**: https://apify.com/technicaldost/steam-scraper-games-prices-reviews.md
- **Developed by:** [Technical Dost Solutions](https://apify.com/technicaldost) (community)
- **Categories:** E-commerce
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 games

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

Steam Scraper extracts **games and user reviews from the Steam store**, with no API key or login. For each game it returns the **current price, discount, original price, review score (all-time and last 30 days), user tags, genres, developers, publishers, release date, platforms, Metacritic score** and more. Turn on reviews to get **full review text, recommended or not, hours played, helpful and funny votes and the post date**. Find games by **keyword search, Steam store lists (top sellers, new releases, specials, upcoming, most played)** or paste **store URLs / app IDs**.

> **Steam reviews API not working?** Valve retired the public `store.steampowered.com/appreviews/<appid>?json=1` endpoint on 22 October 2026: it now redirects to the store front page (HTTP 302), so many review scrapers and scripts return nothing. This Actor reads reviews from Steam's community review pages instead and keeps working: same fields (recommended, hours played, helpful/funny votes, date, text), sorting and language filters.

### What you get

- Search Steam by keyword with sort (relevance, newest, price, reviews) and an on-sale filter.
- Store lists: Top sellers, Popular new releases, Specials (discounts), Popular upcoming, Most played.
- Game rows: price, discount, original price, currency for 40+ store countries, tags, genres, categories, review scores, Metacritic, developers, publishers, platforms, languages, achievements, DLC count.
- Reviews from Steam's community pages (works after Steam's 2026 change to the old reviews JSON feed): text, recommended, hours on record, helpful/funny votes, awards, comments, post date.
- Review sorting (most recent, top rated, funniest, trending this week) and language filter.
- Fair billing: only saved games and reviews are charged; invalid IDs and empty searches are free.

### How to use Steam Scraper

1. Enter **Search terms** (e.g. `roguelike`), pick a **Store list**, and/or paste **Games** as Steam URLs or app IDs.
2. Choose **What to save**: games, reviews, or both, and set **Max reviews per game**.
3. Optionally set the **Country** for prices (e.g. `us`, `gb`, `de`, `in`) and review sorting and language.
4. Run the Actor and export to JSON, CSV or Excel, or connect Google Sheets, Make, Zapier or an AI agent.

### Input example

```json
{
  "searchTerms": [
    "roguelike"
  ],
  "storeList": "specials",
  "output": "both",
  "maxGamesPerSearch": 20,
  "maxReviewsPerGame": 50,
  "reviewSort": "toprated",
  "country": "us"
}
```

All fields are described in the **Input** tab.

### Output example

```json
{
  "type": "game",
  "appId": 3247750,
  "name": "Mycopunk",
  "url": "https://store.steampowered.com/app/3247750/",
  "appType": "game",
  "isFree": false,
  "price": 7.49,
  "originalPrice": 14.99,
  "discountPercent": 50,
  "currency": "USD",
  "priceFormatted": "$7.49",
  "releaseDate": "Oct 20, 2026",
  "comingSoon": false,
  "developers": [
    "Pigeons at Play"
  ],
  "publishers": [
    "Devolver Digital"
  ],
  "genres": [
    "Action",
    "Indie"
  ],
  "categories": [
    "Single-player",
    "Multi-player",
    "Co-op",
    "Online Co-op",
    "Steam Achievements",
    "Full controller support",
    "DualShock Controller Support",
    "DualSense Controller Support",
    "Steam Cloud",
    "Family Sharing"
  ],
  "tags": [
    "Action",
    "Online Co-Op",
    "FPS",
    "Looter Shooter",
    "Shooter",
    "PvE",
    "Colorful",
    "Co-op",
    "Indie",
    "Abstract",
    "First-Person",
    "Funny",
    "Space",
    "Combat",
    "Roguelike",
    "Controller",
    "Singleplayer",
    "Sci-fi",
    "Extraction Shooter",
    "Early Access"
  ],
  "platforms": {
    "windows": true,
    "mac": false,
    "linux": false
  },
  "reviewSummary": "Very Positive",
  "reviewPositivePercent": 91,
  "reviewCount": 3297,
  "recentReviewSummary": "Very Positive",
  "recentReviewPositivePercent": 83,
  "recentReviewCount": 432,
  "recommendationsTotal": 4519,
  "metacriticScore": null,
  "shortDescription": "Cut through fungal aliens in this hyper-customizable, mission based looter shooter. Hundreds of hand-crafted upgrades, 4-player co-op, and a little roach man. What’s not to love?",
  "headerImage": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3247750/67b1dc819a93d4e855b213b518f25a9700f46434/header.jpg?t=1792787251",
  "screenshots": [
    "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3247750/96b7543e6d29105f92c5395000db2691910519fe/ss_96b7543e6d29105f92c5395000db2691910519fe.1920x1080.jpg?t=1792787251",
    "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3247750/964f7099f78eea50fd4906bec2ec64820da01e86/ss_964f7099f78eea50fd4906bec2ec64820da01e86.1920x1080.jpg?t=1792787251"
  ],
  "website": "https://www.mycopunkgame.com/",
  "requiredAge": 0,
  "controllerSupport": "full",
  "achievementsTotal": 48,
  "dlcCount": 2,
  "supportedLanguages": [
    "English",
    "French",
    "German",
    "Spanish - Spain",
    "Japanese",
    "Korean",
    "Russian",
    "Simplified Chinese",
    "Traditional Chinese",
    "Portuguese - Brazil"
  ],
  "source": "roguelike",
  "scrapedAt": "2026-10-26T21:09:27.354Z"
}
```

#### Output fields

| Field | Description |
|---|---|
| `type` | game or review. |
| `appId` | Steam app ID. |
| `name` | Game name (game rows). |
| `url` | Store page URL. |
| `appType` | game, dlc, demo, music... |
| `isFree` | Free to play. |
| `price` | Current price in the store country's currency. |
| `originalPrice` | Price before discount. |
| `discountPercent` | Current discount, %. |
| `currency` | Currency code. |
| `priceFormatted` | Price as shown on Steam. |
| `releaseDate` | Release date as shown on Steam. |
| `comingSoon` | Not released yet. |
| `developers` | Developers. |
| `publishers` | Publishers. |
| `genres` | Steam genres. |
| `categories` | Steam features (single-player, co-op, achievements...). |
| `tags` | Top user tags. |
| `platforms` | windows, mac, linux. |
| `reviewSummary` | Review score label, e.g. Very Positive. |
| `reviewPositivePercent` | Share of positive reviews, %. |
| `reviewCount` | Number of reviews behind the score. |
| `recentReviewSummary` | Score of the last 30 days. |
| `recentReviewPositivePercent` | Positive share, last 30 days. |
| `recentReviewCount` | Reviews in the last 30 days. |
| `recommendationsTotal` | All-language review total. |
| `metacriticScore` | Metacritic score. |
| `shortDescription` | Short description. |
| `headerImage` | Header image URL. |
| `screenshots` | Up to 6 screenshot URLs. |
| `website` | Official website. |
| `requiredAge` | Age requirement. |
| `controllerSupport` | Controller support. |
| `achievementsTotal` | Number of achievements. |
| `dlcCount` | Number of DLCs. |
| `supportedLanguages` | Interface languages. |
| `source` | Search term, list or input that found the game. |
| `gameName` | Game name (review rows). |
| `reviewUrl` | Review URL. |
| `recommended` | Thumbs up (true) or down. |
| `hoursOnRecord` | Reviewer's total hours in the game. |
| `postedDate` | Review date, YYYY-MM-DD. |
| `postedText` | Date as shown. |
| `text` | Review text. |
| `earlyAccess` | Written during Early Access. |
| `helpfulCount` | People who found it helpful. |
| `funnyCount` | People who found it funny. |
| `awardsCount` | Awards received. |
| `commentCount` | Comments. |
| `authorName` | Reviewer's public Steam name. |
| `authorProfileUrl` | Reviewer's public profile URL. |
| `authorProductsInAccount` | Games the reviewer owns, when shown. |
| `reviewSort` | Review sort used. |
| `reviewLanguage` | Review language filter used. |
| `scrapedAt` | When the row was scraped. |

Export results as JSON, CSV, Excel, XML or HTML, or read them with the API.

### Use cases

- Price tracking: monitor discounts and price history for games or whole genres; schedule daily runs.
- Market research for game developers: tags, prices and review scores of competing games in your genre.
- Review mining and sentiment analysis: what players praise or complain about, with playtime context.
- Deal sites and bots: feed Steam specials and top sellers to your website, Discord or Telegram.
- Publishers and investors: track new releases and how their review scores develop.

### How much does Steam Scraper cost?

This Actor uses **pay-per-event** pricing: **$0.001 per game** ($1 per 1,000). Platform usage is included. Reviews cost **$0.0003 each** ($0.30 per 1,000). There is no start fee, and games or searches that return nothing are free.

Set **Maximum cost per run** in the run options to cap your spend; the Actor stops when the limit is reached.

### Use Steam Scraper with AI agents (MCP)

Give Claude, ChatGPT, Cursor or any MCP client this Actor as a tool through the hosted [Apify MCP server](https://mcp.apify.com):

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=technicaldost/steam-scraper-games-prices-reviews" --header "Authorization: Bearer YOUR_APIFY_TOKEN"
```

Or in a JSON MCP config:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com/?tools=technicaldost/steam-scraper-games-prices-reviews",
      "headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
    }
  }
}
```

The tool is named `technicaldost--steam-scraper-games-prices-reviews`. Ask your agent, for example, to *"run Steam Scraper with {"searchTerms": \["roguelike"], "storeList": "specials", "output": "both", "maxGamesPerSearch": 20, "maxReviewsPerGame": 50, "reviewSort": "toprated", "country": "us"}"*.

### Run Steam Scraper via API

```bash
curl -X POST "https://api.apify.com/v2/acts/technicaldost~steam-scraper-games-prices-reviews/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchTerms": ["roguelike"], "storeList": "specials", "output": "both", "maxGamesPerSearch": 20, "maxReviewsPerGame": 50, "reviewSort": "toprated", "country": "us"}'
```

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("technicaldost/steam-scraper-games-prices-reviews").call(run_input={"searchTerms": ["roguelike"], "storeList": "specials", "output": "both", "maxGamesPerSearch": 20, "maxReviewsPerGame": 50, "reviewSort": "toprated", "country": "us"})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

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

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('technicaldost/steam-scraper-games-prices-reviews').call({"searchTerms": ["roguelike"], "storeList": "specials", "output": "both", "maxGamesPerSearch": 20, "maxReviewsPerGame": 50, "reviewSort": "toprated", "country": "us"});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### Integrations

Schedule runs (daily, hourly) in Apify Console and send results to Google Sheets, Slack, Make, Zapier, n8n, Airbyte or your own webhook.

### FAQ

#### Do I need a Steam API key or account?

No. The Actor reads public Steam store and community pages as a logged-out visitor.

#### Why do other Steam review scrapers fail?

Steam's old public reviews JSON feed (store.steampowered.com/appreviews) now redirects to the store front page. This Actor reads reviews from the Steam community review pages instead, which still work.

#### Which prices do I get?

Prices for the store country you set (default US, in USD). Set Country to `gb`, `de`, `in`, `br` etc. to get local prices and currency.

#### Are review scores for all languages?

The review summary on a game row is the one Steam shows for the chosen store language (English by default). recommendationsTotal is Steam's all-language total.

#### How many reviews can I get?

Up to 20,000 per game. Steam serves reviews 10 per page; the Actor pages through them automatically. Note: with sort *Top rated* and language *All languages*, Steam only returns the first 10, so pick a language for deeper top-rated pulls.

#### Is there a start fee?

No. You pay per saved game and per saved review only.

#### Is it legal to scrape this data?

The Actor collects publicly available information only and does not log in or bypass access controls. Use the data in line with the website's terms and the laws that apply to you, especially when processing personal data.

### Related Actors

More tools from the same developer that work well together with this one:

- [App Store Review Scraper (Apple iOS)](https://apify.com/technicaldost/app-store-review-scraper): Scrape Apple App Store reviews and app metadata: rating, title, text, author, version, plus average rating and total ratings.
- [Competitor Review Analyzer: Brand Comparison](https://apify.com/technicaldost/competitor-review-gap-analyzer): Compare imported customer-feedback records by brand to surface recurring complaints, strengths and product gaps with traceable evidence.
- [YouTube Comments Scraper](https://apify.com/technicaldost/youtube-comments-scraper): Scrape comments from any YouTube video: text, author, likes, replies, pinned/hearted status.
- [Google Trends Daily Scraper API](https://apify.com/technicaldost/google-trends-scraper): Get daily Google trending searches (RSS) and interest-over-time timelines for keywords.

# Actor input Schema

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

Keywords to search on the Steam store, e.g. roguelike, city builder, horror co-op.

## `storeList` (type: `string`):

Optional Steam list. Combined with search terms when both are set.

## `games` (type: `array`):

Steam store or community URLs, or numeric app IDs, e.g. https://store.steampowered.com/app/1245620/ELDEN_RING/ or 730.

## `output` (type: `string`):

Game rows, review rows, or both.

## `sortBy` (type: `string`):

Order of search results.

## `onlyOnSale` (type: `boolean`):

Keep only discounted games.

## `maxGamesPerSearch` (type: `integer`):

Per search term or list. Up to 5,000.

## `includeDetails` (type: `boolean`):

Adds genres, categories, user tags, developers, publishers, recent review score, Metacritic, description, screenshots and more (2 extra requests per game). Turn off for a fast, search-results-only list.

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

Two-letter country code for prices and currency, e.g. us, gb, de, fr, in, br, jp.

## `maxReviewsPerGame` (type: `integer`):

Used when What to save includes reviews. Up to 20,000.

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

Which reviews to fetch first.

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

Language of reviews.

## Actor input object example

```json
{
  "searchTerms": [
    "roguelike"
  ],
  "storeList": "none",
  "games": [],
  "output": "games",
  "sortBy": "relevance",
  "onlyOnSale": false,
  "maxGamesPerSearch": 10,
  "includeDetails": true,
  "country": "us",
  "maxReviewsPerGame": 100,
  "reviewSort": "mostrecent",
  "reviewLanguage": "english"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "searchTerms": [
        "roguelike"
    ],
    "games": [],
    "maxGamesPerSearch": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("technicaldost/steam-scraper-games-prices-reviews").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 = {
    "searchTerms": ["roguelike"],
    "games": [],
    "maxGamesPerSearch": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("technicaldost/steam-scraper-games-prices-reviews").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 '{
  "searchTerms": [
    "roguelike"
  ],
  "games": [],
  "maxGamesPerSearch": 10
}' |
apify call technicaldost/steam-scraper-games-prices-reviews --silent --output-dataset

```

## MCP server setup

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

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/wL6vRw0yoafYWX3x8/builds/8sJrxC0M3sfHS9dzN/openapi.json
