# Steam Store Game Scraper (`acquistion-automation/steam-store-scraper`) Actor

Scrapes Steam Store game listings by search terms or app IDs. Returns each game as a flat row with title, price, discount, release date, and optional review scores.

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

## Pricing

from $3.00 / 1,000 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/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

![Acquisition Automation Co. Search less. Close more.](https://api.apify.com/v2/key-value-stores/AOdPHdOpeDpzEPS5f/records/banner.jpg)

## 🎮 Steam Store Game Scraper

> **Export Steam store pages as flat rows: price, discount, developer, publisher, release date, genres, platforms, Metacritic score and the full review counts, positive and negative.** Search by term or go straight to app IDs. No API key, no registration, no login.

When the business being bought is a game studio or a publisher, the catalogue is the asset, and Steam is where the public evidence sits. Review counts are the closest public proxy to units sold, price and discount history show how a title is being managed, and the publisher field shows who actually owns the back catalogue. The store shows one title per page and nothing is exportable. This Actor reads the store and the review summary for each title and writes one row per game.

| Who uses it | What they use the store for |
|---|---|
| 💼 Buyers of studios and publishers | Checking a seller's catalogue: price point, review volume and who is named as publisher on each title |
| 📈 Analysts and investors | Tracking review counts and price across a slate of titles on a schedule |
| 🏷 Publishers and BD teams | Sizing a developer's back catalogue before an offer or a licence |
| 🛒 Price and market researchers | Comparing the same title across ten country stores in one run |

### 📋 What it does

> 💡 **Why it matters:** a studio's revenue claim is hard to check, and its review count is not. Pull the catalogue, sort by `totalReviews`, and you can see which titles are carrying the business.

- 🔎 **Searches by term.** `searchTerms` takes one or more queries, for example `elden ring` or `roguelike`, and runs each as its own search.
- 🆔 **Or goes straight to app IDs.** `appIds` skips discovery for titles you already know.
- 💵 **Price in ten country stores.** `countryCode` sets which store's price and currency you get, with `priceFormatted` carrying the store's own formatting.
- ⭐ **Full review breakdown.** `includeReviews` adds the aggregate summary: total reviews, positive, negative and Steam's own wording, at one extra request per game.
- 🏢 **Developers and publishers as arrays**, so a title with two publishers keeps both.
- 💾 **Exports to CSV, Excel, JSON or XML**, from the run page or the API.

### 📊 Output

Every game is one flat row with 30 fields. `null` means Steam publishes no value for that title.

| Field | Type | Description |
|---|---|---|
| 🏷 `name` | string | Title as Steam shows it |
| 🆔 `appId` | integer | Steam app ID, the key to rejoin runs |
| 🔗 `appUrl` | string | Direct link to the store page |
| 📦 `type` | string | Store item type, for example `game` |
| 🆓 `isFree` | boolean | Whether the title is free to play |
| 💵 `price` | number | Price in the chosen country store, as a number |
| 💱 `currency` | string | Currency of that price, for example `USD` |
| 🏷 `priceFormatted` | string | Price as the store prints it, for example `$59.99` |
| 🔻 `discountPercent` | integer | Current discount, `0` when there is none |
| 🛠 `developers` | array | Developer names |
| 🏢 `publishers` | array | Publisher names, which is where a back catalogue owner shows up |
| 📅 `releaseDate` | string | Release date as Steam writes it, for example `Feb 24, 2022` |
| 🔜 `comingSoon` | boolean | Whether the title is unreleased |
| 🔞 `requiredAge` | string | Age gate value, as a string |
| 🎯 `genres` | array | Store genres, for example `Action` and `RPG` |
| 🗂 `categories` | array | Store feature categories, for example `Single-player` or `Steam Cloud` |
| 💻 `platforms` | array | Platforms the title lists, for example `windows` |
| 🥇 `metacriticScore` | integer | Metacritic score where Steam carries one |
| 👍 `recommendationsTotal` | integer | Steam's recommendation count |
| 📝 `reviewScoreDesc` | string | Steam's own summary wording, for example `Very Positive` |
| 📊 `totalReviews` | integer | Total reviews in the aggregate summary |
| ✅ `totalPositive` | integer | Positive reviews |
| ❌ `totalNegative` | integer | Negative reviews |
| 🌐 `website` | string | Official site where the page lists one |
| 📄 `shortDescription` | string | The store's short description text |
| 🖼 `imageUrl` | string | Header image |
| 📸 `screenshots` | array | Full resolution screenshot URLs, in store order |
| 🔤 `searchTerm` | string | The term that produced the row, so merged runs stay traceable |
| 🕒 `scrapedAt` | string | ISO timestamp of collection |
| ⚠️ `error` | string | `null` on a normal row |

#### Example rows

```json
{
  "imageUrl": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/1245620/f0b19c231f86fa0e633ff88a1a63459443017728/header_alt_assets_3.jpg?t=1789162449",
  "name": "ELDEN RING",
  "appUrl": "https://store.steampowered.com/app/1245620",
  "appId": 1245620,
  "type": "game",
  "isFree": false,
  "price": 59.99,
  "currency": "USD",
  "discountPercent": 0,
  "priceFormatted": "$59.99",
  "developers": [
    "FromSoftware, Inc."
  ],
  "publishers": [
    "FromSoftware, Inc.",
    "Bandai Namco Entertainment"
  ],
  "releaseDate": "Feb 24, 2022",
  "comingSoon": false,
  "requiredAge": "16",
  "genres": [
    "Action",
    "RPG"
  ],
  "categories": [
    "Single-player",
    "Multi-player",
    "PvP",
    "Online PvP",
    "Co-op",
    "Online Co-op",
    "Steam Achievements",
    "Full controller support",
    "Steam Trading Cards",
    "Camera Comfort",
    "Custom Volume Controls",
    "Playable without Timed Input",
    "Save Anytime",
    "Stereo Sound",
    "Surround Sound",
    "Steam Cloud",
    "Family Sharing"
  ],
  "platforms": [
    "windows"
  ],
  "metacriticScore": 94,
  "recommendationsTotal": 831276,
  "reviewScoreDesc": "Very Positive",
  "totalReviews": 1154736,
  "totalPositive": 1074374,
  "totalNegative": 80362,
  "website": null,
  "shortDescription": "THE CRITICALLY ACCLAIMED FANTASY ACTION RPG. Rise, Tarnished, and be guided by grace to brandish the power of the Elden Ring and become an Elden Lord in the Lands Between.",
  "searchTerm": "elden ring",
  "screenshots": [
    "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/1245620/ss_943bf6fe62352757d9070c1d33e50b92fe8539f1.1920x1080.jpg?t=1789162449",
    "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/1245620/ss_dcdac9e4b26ac0ee5248bfd2967d764fd00cdb42.1920x1080.jpg?t=1789162449",
    "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/1245620/ss_3c41384a24d86dddd58a8f61db77f9dc0bfda8b5.1920x1080.jpg?t=1789162449",
    "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/1245620/ss_e0316c76f8197405c1312d072b84331dd735d60b.1920x1080.jpg?t=1789162449",
    "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/1245620/ss_ef61b771ee6b269b1f0cb484233e07a0bfb5f81b.1920x1080.jpg?t=1789162449",
    "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/1245620/ss_b1b91299d7e4b94201ac840aa64de54d9f5cb7f3.1920x1080.jpg?t=1789162449",
    "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/1245620/ss_510a02cf3045e841e180f2b77fb87545e0c8b59d.1920x1080.jpg?t=1789162449",
    "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/1245620/ss_c494372930ca791bdc6221eca134f2270fb2cb9f.1920x1080.jpg?t=1789162449",
    "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/1245620/ss_fa6b881ef7c30522012ab2b2b83001e79baee093.1920x1080.jpg?t=1789162449",
    "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/1245620/ss_c2baf8aada6140beee79d701d14043899e91af47.1920x1080.jpg?t=1789162449"
  ],
  "scrapedAt": "2026-09-14T16:08:26.324Z",
  "error": null
}
```

```json
{
  "imageUrl": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/2622380/header.jpg?t=1773099036",
  "name": "ELDEN RING NIGHTREIGN",
  "appUrl": "https://store.steampowered.com/app/2622380",
  "appId": 2622380,
  "type": "game",
  "isFree": false,
  "price": 39.99,
  "currency": "USD",
  "discountPercent": 0,
  "priceFormatted": "$39.99",
  "developers": [
    "FromSoftware, Inc."
  ],
  "publishers": [
    "FromSoftware, Inc.",
    "Bandai Namco Entertainment"
  ],
  "releaseDate": "May 29, 2025",
  "comingSoon": false,
  "requiredAge": "17",
  "genres": [
    "Action",
    "RPG"
  ],
  "categories": [
    "Single-player",
    "Multi-player",
    "Co-op",
    "Online Co-op",
    "Steam Achievements",
    "Full controller support",
    "Camera Comfort",
    "Custom Volume Controls",
    "Gamepad Recommended",
    "Playable without Timed Input",
    "DualShock Controller Support",
    "DualShock Controller Support",
    "DualSense Controller Support",
    "DualSense Controller Support",
    "Steam Input API Support",
    "Stereo Sound",
    "Surround Sound",
    "Steam Cloud",
    "Family Sharing"
  ],
  "platforms": [
    "windows"
  ],
  "metacriticScore": null,
  "recommendationsTotal": 129421,
  "reviewScoreDesc": "Very Positive",
  "totalReviews": 191055,
  "totalPositive": 156093,
  "totalNegative": 34962,
  "website": null,
  "shortDescription": "ELDEN RING NIGHTREIGN is a standalone adventure within the ELDEN RING universe, crafted to offer players a new gaming experience by reimagining the game’s core design.",
  "searchTerm": "elden ring",
  "screenshots": [
    "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/2622380/ss_0b9594934db8a1457c915e200f9d0d9b447a3df4.1920x1080.jpg?t=1773099036",
    "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/2622380/ss_1deefb0b7ea597f4227777239910b4990aa0cc77.1920x1080.jpg?t=1773099036",
    "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/2622380/ss_802cd66236d951fba204fb9980e2c0c9213a264c.1920x1080.jpg?t=1773099036",
    "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/2622380/ss_b3ed8ab522f5965e46bc7c090cad9d018f937ae2.1920x1080.jpg?t=1773099036",
    "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/2622380/ss_edfd360b92d6f9b983b759fd837e664b86cd9563.1920x1080.jpg?t=1773099036",
    "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/2622380/ss_7a6e385e299b4848943daf2c6bc8218c16cd9497.1920x1080.jpg?t=1773099036",
    "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/2622380/ss_592648ca7867f7efc92c14166b254bb01ddab65a.1920x1080.jpg?t=1773099036",
    "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/2622380/ss_123c13ef085accee034632b6ce5d67e017dabc73.1920x1080.jpg?t=1773099036",
    "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/2622380/ss_4a88be86fecee192e41ed84607ce255e933cee3b.1920x1080.jpg?t=1773099036"
  ],
  "scrapedAt": "2026-09-14T16:08:40.332Z",
  "error": null
}
```

### ✨ Why choose this Actor

| | What you get |
|---|---|
| **The store's own numbers** | Price, discount and review counts come from Steam, not from a tracker that samples it. |
| **Reviews split three ways** | Total, positive and negative, not only the summary word, so you can compute the ratio yourself. |
| **Ten country stores** | The same title priced in the store you care about, with the currency attached. |
| **Search or direct** | Discover by term, or pass app IDs when you already know the catalogue. |
| **You pay per row** | No subscription. A search that returns nothing costs nothing. |

### 🚀 How to use it

1. [Create a free Apify account](https://console.apify.com/sign-up). New accounts start with $5 of credit.
2. Open the Actor and select **Try for free**.
3. Put your queries in `searchTerms`, or your known titles in `appIds`.
4. Set `countryCode` for the pricing you want, and `maxItems` to cap the run.
5. Select **Start**, then export from the **Dataset** tab as CSV, Excel, JSON or XML.

A first run:

```json
{
  "searchTerms": ["elden ring"],
  "maxItems": 10
}
```

A catalogue you already know, priced in the UK store:

```json
{
  "searchTerms": [],
  "appIds": ["1245620", "2622380", "570"],
  "countryCode": "gb",
  "includeReviews": true,
  "maxItems": 100
}
```

A genre sweep without the extra review request:

```json
{
  "searchTerms": ["roguelike", "city builder"],
  "includeReviews": false,
  "maxItems": 500
}
```

### ⚙️ Input

| Field | Required | Description |
|---|---|---|
| `searchTerms` | Yes | Search queries to run on the store. One result set per term |
| `appIds` | No | Specific Steam app IDs to read directly, skipping search |
| `countryCode` | No | Two-letter country for pricing and currency: `us`, `gb`, `de`, `fr`, `ca`, `au`, `br`, `in`, `jp` or `mx` |
| `language` | No | Language for store text: `english`, `spanish`, `french`, `german`, `portuguese`, `italian` or `japanese` |
| `includeReviews` | No | Fetch the aggregate review summary per game. One extra request per title |
| `maxItems` | No | Maximum rows per run. Free plan is limited to 10 as a preview, paid plans up to 1,000,000 |

### 💰 Pricing

Pay per result. No subscription, and no Apify platform usage on top.

| Apify plan | Free | Bronze | Silver | Gold | Platinum | Diamond |
|---|---|---|---|---|---|---|
| Per game row | $0.004 | $0.00367 | $0.00333 | $0.003 | $0.003 | $0.003 |

| Rows collected | Cost on the Free plan |
|---|---|
| 100 | $0.40 |
| 1,000 | $4.00 |
| 10,000 | $40.00 |

**Free plan runs** return up to 10 rows as a preview. Any paid Apify plan lifts that to 1,000,000 per run.

### 🔌 Integrate with any app

The dataset is available through the Apify API as soon as the run finishes. Use `run-sync-get-dataset-items` for a one-shot call, webhooks to trigger what happens next, or the Make, Zapier, Airbyte and LangChain integrations listed on the Actor page. A weekly schedule on the same app IDs gives you a price and review history per title.

### 🤖 Use with an AI agent

Give an agent live access to the store over the Model Context Protocol:

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=acquistion-automation/steam-store-scraper"
```

Then ask it in plain language what a studio's titles are priced at and have it read the rows back.

### ❓ Frequently asked questions

**Does this return sales figures or revenue?**
No. Steam does not publish either. What you get is price, discount and the full review counts, which is the public evidence most people use as a proxy. Treat it as a proxy, not as a unit count.

**Why is `metacriticScore` empty on some titles?**
Steam only carries a Metacritic score for titles that have one on the store page. Newer and smaller releases usually do not.

**Can I get the individual reviews?**
No. `includeReviews` adds the aggregate summary only: `totalReviews`, `totalPositive`, `totalNegative` and Steam's summary wording. Individual review text is not collected.

**Why does one search return titles I did not ask for?**
Steam's own search decides what matches a term. A broad query returns the store's associations. Use `appIds` when you know exactly which titles you want.

**Does `price` account for regional discounts?**
`price` and `priceFormatted` are what the store shows for the `countryCode` you set, with `discountPercent` alongside. Change the country code and run again to compare stores.

**What can I export?**
CSV, Excel, JSON and XML from the run page, or JSON straight from the API.

### 🔗 More from Acquisition Automation Co.

- [RAWG Games Database Scraper](https://apify.com/acquistion-automation/rawg-scraper)
- [Mojang Minecraft Profile Scraper](https://apify.com/acquistion-automation/mojang-minecraft-profile-scraper)
- [Tunefind Soundtracks Scraper](https://apify.com/acquistion-automation/tunefind-soundtracks-scraper)
- [Clutch Agencies Scraper](https://apify.com/acquistion-automation/clutch-agencies-scraper)
- [BizBuySell Scraper](https://apify.com/acquistion-automation/bizbuysell-scraper)

### About Acquisition Automation Co.

We build automation for people buying businesses. The repetitive part of an acquisition search, checking listings, pulling public records, tracking owners and assets, is work a machine should do, so the buyer's time goes into judging deals instead of collecting them.

We add new Actors regularly. If there is a source you need and do not see here, tell us.

### 🆘 Support

Open an issue in the **Issues** tab of this Actor with your run ID, the input you used, and what you expected to get back.

### ⚠️ Disclaimer

This Actor is independent and is not affiliated with, endorsed by, or sponsored by Valve Corporation or Steam. It collects only publicly available data. You are responsible for using that data in compliance with the source's terms of service and applicable law.

# Actor input Schema

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

Game search queries to run on the Steam store (e.g. "elden ring", "roguelike"). One result set per term.

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

Optional. Specific Steam app IDs to scrape directly (e.g. "1245620", "570").

## `maxItems` (type: `integer`):

Free users: limited to 10 items (preview). Paid users: optional, max 1,000,000.

## `countryCode` (type: `string`):

Two-letter country code used for store pricing and currency.

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

Language for store text fields.

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

Fetch the aggregate review summary for each game (one extra request per game).

## Actor input object example

```json
{
  "searchTerms": [
    "elden ring"
  ],
  "maxItems": 10,
  "countryCode": "us",
  "language": "english",
  "includeReviews": true
}
```

# 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": [
        "elden ring"
    ],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("acquistion-automation/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 = {
    "searchTerms": ["elden ring"],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("acquistion-automation/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 '{
  "searchTerms": [
    "elden ring"
  ],
  "maxItems": 10
}' |
apify call acquistion-automation/steam-store-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,acquistion-automation/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/frP6TKvYhZ4jNJPWc/builds/T06kLCAyHbaG1mcb8/openapi.json
