# Steam Game Scraper - Reviews & Players (`maximedupre/steam-games`) Actor

Get Steam games with current prices, discounts, and live player counts. Find games by keyword, app ID, name, store link, store list, or the most played chart. Each row also has a review summary, tags, editions, and system requirements.

- **URL**: https://apify.com/maximedupre/steam-games.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** Games, E-commerce, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.60 / 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.
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

### 🎮 Steam game prices, player counts, and store data in one table

Steam Games helps game makers, publishers, market researchers, and deal trackers get Steam store data without copying it by hand. You get one row per game with its current price and discount, live player count, review summary, tags, editions, system requirements, and more. Find games by search keyword, app ID, game name, store link, Steam store list, or the Steam most played chart.

- Track the price and discount of every game in your genre for each store country.
- Watch live player counts and the most played chart ranks, like a Steam charts page you can export.
- Build a list of top sellers, new releases, or specials with full store details.
- Compare review scores, tags, and editions of competing games before you set a price.
- Check Steam Deck, controller, and Windows, macOS, or Linux support for a list of app IDs.

#### 📦 What data you get for each Steam game

- **Game basics:** app ID, name, store link, short description, header image, developers, publishers, release date, and coming-soon status.
- **Prices:** current price, original price, discount percent, and currency for the store country you pick, plus the price of each edition or bundle.
- **Players:** players online right now, and the rank and peak players today for games from the most played chart.
- **Reviews:** Steam review label, positive percent, total reviews, recommendations, and the Metacritic score when Steam shows one.
- **Details:** genres, feature categories, user tags, platforms, Steam Deck compatibility, controller support, mature content notice, DLC count, achievement count, required age, website, languages, system requirements, screenshots, and trailers.

#### 🚀 How to get Steam games data

1. Open the Actor and pick a choice in **Find games by**.
2. Fill in the options section for that choice. **Most played chart** needs no other input.
3. Set **Maximum games** and **Store country** if you want.
4. Start the run and download your games as JSON, CSV, Excel, or another format.

#### ⚙️ Input

**Input fields**

| Field | Type | What it does |
| --- | --- | --- |
| `findBy` | string | How to find games: `searchKeyword`, `appId`, `gameName`, `storeLink`, `storeList`, or `mostPlayed`. Default is `searchKeyword`. The Actor ignores the options of the other choices. |
| `maxItems` | integer | The run stops after this many games. The form prefills 20. Leave it empty or set 0 to get all games that match. |
| `searchKeywords` | array of strings | Search keyword: words to search for on the Steam store. Each keyword is one search. Needed when `findBy` is `searchKeyword`. |
| `tags` | array of strings | Search keyword: only return games that have all of these Steam store tags. Type each tag as Steam shows it, such as `Indie`. If Steam has no tag with that name, the run saves no games. |
| `onSaleOnly` | boolean | Search keyword: only return games that have a discount right now. Default is `false`. |
| `appIds` | array of strings | App ID: Steam app IDs, such as `570`. Each ID has only digits. |
| `gameNames` | array of strings | Game name: exact game names, such as `Dota 2`. The name must match exactly, including capital letters. |
| `startUrls` | array | Store link: full Steam store game links, such as `https://store.steampowered.com/app/570/Dota_2/`. |
| `storeList` | string | Store list: `topSellers`, `newReleases`, or `specials`. Default is `topSellers`. |
| `country` | string | Two-letter store country code, such as `US`, `GB`, or `DE`. Prices and currency show as the Steam store shows them in this country. Default is `US`. |

**Example input**

```json
{
  "maxItems": 20,
  "findBy": "searchKeyword",
  "searchKeywords": [
    "roguelike"
  ],
  "onSaleOnly": false,
  "storeList": "topSellers",
  "country": "US"
}
```

#### 🧾 Output

**Output fields**

| Field | Type | What it does |
| --- | --- | --- |
| `appId` | integer | Steam app ID of the game. |
| `name` | string | Game name. |
| `url` | string | Link to the game page on the Steam store. |
| `searchKeyword` | string or null | The search keyword that found this game. Empty when the game was not found by a keyword search. |
| `mostPlayedRank` | integer or null | Place of the game in the Steam most played chart. Empty when the game did not come from that chart. |
| `playersOnline` | integer or null | Number of players in the game right now. Empty when Steam does not report it. |
| `peakPlayersToday` | integer or null | Highest number of players today, from the most played chart. Empty when the game did not come from that chart. |
| `shortDescription` | string or null | Short description of the game. |
| `headerImage` | string or null | Link to the header image of the game. |
| `isFree` | boolean | True when the game is free to play. |
| `price` | object or null | Current price in the chosen store country. Empty when the game has no price, such as a free or unreleased game. |
| `price.currency` | string | Currency code, such as `USD`. |
| `price.final` | number | Current price after any discount. |
| `price.initial` | number | Original price before any discount. |
| `price.discountPercent` | integer | Discount in percent. 0 means no discount. |
| `editions` | array of objects | Each edition or bundle of the game that you can buy, with its price. |
| `editions.name` | string | Name of the edition or bundle. |
| `editions.currency` | string or null | Currency code. |
| `editions.final` | number or null | Current price after any discount. |
| `editions.initial` | number or null | Original price before any discount. |
| `editions.discountPercent` | integer or null | Discount in percent. |
| `developers` | array of strings | Developers of the game. |
| `publishers` | array of strings | Publishers of the game. |
| `releaseDate` | string or null | Release date as the Steam store shows it, such as `Jul 9, 2013`. |
| `comingSoon` | boolean | True when the game is not released yet. |
| `genres` | array of strings | Genres of the game. |
| `categories` | array of strings | Steam feature categories, such as Single-player, Co-op, Steam Achievements, or Steam Cloud. |
| `tags` | array of strings | Steam user tags of the game. |
| `platforms.windows` | boolean | True when the game runs on Windows. |
| `platforms.mac` | boolean | True when the game runs on macOS. |
| `platforms.linux` | boolean | True when the game runs on Linux. |
| `steamDeckCompatibility` | string or null | Steam Deck rating: `verified`, `playable`, `unsupported`, or `unknown`. |
| `controllerSupport` | string or null | Controller support level, such as `full` or `partial`. Empty when Steam shows none. |
| `matureContent` | object or null | Mature content notice. Empty when the game has none. |
| `matureContent.descriptorIds` | array of integers | Steam content descriptor IDs. 1 is some nudity or sexual content, 2 is frequent violence or gore, 3 is adult only sexual content, 4 is frequent nudity or sexual content, and 5 is general mature content. |
| `matureContent.note` | string or null | Mature content note from the publisher. |
| `reviews` | object or null | Summary of Steam user reviews. Empty when the game has no reviews. |
| `reviews.label` | string or null | Review label, such as `Very Positive`. |
| `reviews.positivePercent` | integer or null | Share of positive reviews in percent. |
| `reviews.totalReviews` | integer or null | Total number of user reviews. |
| `recommendations` | integer or null | Total number of Steam recommendations. |
| `metacritic` | object or null | Metacritic score that Steam shows. Empty when Steam shows none. |
| `metacritic.score` | integer | Metacritic score. |
| `metacritic.url` | string or null | Link to the Metacritic page of the game. |
| `dlcCount` | integer or null | Number of DLC items for the game. |
| `achievementCount` | integer or null | Number of Steam achievements in the game. |
| `requiredAge` | integer or null | Minimum age to buy the game. 0 means no age limit. |
| `website` | string or null | Link to the official website of the game. |
| `supportedLanguages` | array of strings | Languages the game supports. |
| `systemRequirements.windows` | object or null | Windows requirements, with `minimum` and `recommended` text. |
| `systemRequirements.mac` | object or null | macOS requirements, with `minimum` and `recommended` text. |
| `systemRequirements.linux` | object or null | Linux requirements, with `minimum` and `recommended` text. |
| `screenshots` | array of strings | Links to screenshots of the game. |
| `trailers` | array of strings | Links to trailer videos of the game. |

**Example game**

```json
{
  "appId": 4075620,
  "name": "Combolands: Roguelike Citybuilder",
  "url": "https://store.steampowered.com/app/4075620/",
  "searchKeyword": "roguelike",
  "mostPlayedRank": null,
  "playersOnline": 543,
  "peakPlayersToday": null,
  "shortDescription": "A mini citybuilding roguelike. Place buildings, stack combos, and master deep strategy in short bursts to create a tiny thriving metropolis!",
  "headerImage": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/4075620/94f8d81bbadbc37f1f0ae0a5df30bda1ff4af186/header.jpg?t=1787743588",
  "isFree": false,
  "price": {
    "currency": "USD",
    "final": 9.99,
    "initial": 9.99,
    "discountPercent": 0
  },
  "editions": [
    {
      "name": "Combolands: Roguelike Citybuilder",
      "currency": "USD",
      "final": 9.99,
      "initial": 9.99,
      "discountPercent": 0
    },
    {
      "name": "ComboPit",
      "currency": "USD",
      "final": 17.98,
      "initial": 19.98,
      "discountPercent": 10
    },
    {
      "name": "TerraLands",
      "currency": "USD",
      "final": 31.48,
      "initial": 34.98,
      "discountPercent": 10
    },
    {
      "name": "Zoolands",
      "currency": "USD",
      "final": 22.48,
      "initial": 24.98,
      "discountPercent": 10
    },
    {
      "name": "Order Automatica x Combolands",
      "currency": "USD",
      "final": 14.38,
      "initial": 15.98,
      "discountPercent": 10
    },
    {
      "name": "Tiny Kingdom & Combolands",
      "currency": "USD",
      "final": 18.88,
      "initial": 20.98,
      "discountPercent": 10
    },
    {
      "name": "Combolands + Dawnfolk",
      "currency": "USD",
      "final": 22.48,
      "initial": 24.98,
      "discountPercent": 10
    }
  ],
  "developers": [
    "Crux Games"
  ],
  "publishers": [
    "Crux Games"
  ],
  "releaseDate": "Aug 24, 2026",
  "comingSoon": false,
  "genres": [
    "Indie",
    "Strategy"
  ],
  "categories": [
    "Single-player",
    "Steam Achievements",
    "Custom Volume Controls",
    "Mouse Only Option",
    "#category_playable_at_your_own_pace",
    "Playable without Timed Input",
    "Steam Cloud",
    "Family Sharing"
  ],
  "tags": [
    "Strategy",
    "City Builder",
    "Roguelite",
    "Roguelike",
    "Roguelike Deckbuilder",
    "Pixel Graphics",
    "Deckbuilding",
    "2D",
    "Singleplayer",
    "Card Game",
    "Turn-Based",
    "Card Battler",
    "Turn-Based Strategy",
    "Replay Value",
    "Casual",
    "Difficult",
    "Procedural Generation",
    "Management",
    "Fantasy",
    "Indie"
  ],
  "platforms": {
    "windows": true,
    "mac": false,
    "linux": false
  },
  "steamDeckCompatibility": "playable",
  "controllerSupport": null,
  "matureContent": null,
  "reviews": {
    "label": "Overwhelmingly Positive",
    "positivePercent": 96,
    "totalReviews": 1932
  },
  "recommendations": 1933,
  "metacritic": null,
  "dlcCount": null,
  "achievementCount": 21,
  "requiredAge": 0,
  "website": null,
  "supportedLanguages": [
    "English"
  ],
  "systemRequirements": {
    "windows": {
      "minimum": "Minimum:\nRequires a 64-bit processor and operating system\nOS: Windows 10/11\nProcessor: Intel Core i5-7500, AMD Ryzen 5 3600\nMemory: 8 GB RAM\nGraphics: Nvidia GeForce GTX 1060 3gb, AMD Radeon R9 Fury\nStorage: 1 GB available space",
      "recommended": "Recommended:\nRequires a 64-bit processor and operating system\nOS: Windows 10/11\nProcessor: Intel Core i5-7500, AMD Ryzen 5 3600 or better\nMemory: 8 GB RAM\nGraphics: Nvidia GeForce RTX 2060，AMD Radeon 5600XT or better\nStorage: 1 GB available space"
    },
    "mac": null,
    "linux": null
  },
  "screenshots": [
    "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/4075620/218e90ea9cd9c3d34a1627097bdcad2a90134fd6/ss_218e90ea9cd9c3d34a1627097bdcad2a90134fd6.1920x1080.jpg?t=1787743588",
    "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/4075620/7c4dc9691dee36cf189e7c6d63a8171b0eed27f5/ss_7c4dc9691dee36cf189e7c6d63a8171b0eed27f5.1920x1080.jpg?t=1787743588",
    "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/4075620/53696379f2524e19f062a90d2afd1c323855e5b6/ss_53696379f2524e19f062a90d2afd1c323855e5b6.1920x1080.jpg?t=1787743588",
    "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/4075620/2499f80e445060bad6f180ea7b60f63507de3a8d/ss_2499f80e445060bad6f180ea7b60f63507de3a8d.1920x1080.jpg?t=1787743588",
    "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/4075620/8811216dcee58c0bc6897263e13189337f0a0e2f/ss_8811216dcee58c0bc6897263e13189337f0a0e2f.1920x1080.jpg?t=1787743588",
    "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/4075620/8e42c13caac27fceeb395d79ef6b0234815ff6cf/ss_8e42c13caac27fceeb395d79ef6b0234815ff6cf.1920x1080.jpg?t=1787743588"
  ],
  "trailers": [
    "https://video.akamai.steamstatic.com/store_trailers/4075620/79749931/2038624039a612d35f891856bcf5519f792325ab/1785571656/hls_264_master.m3u8?t=1785572586"
  ]
}
```

#### 💳 Pricing

This Actor uses pay per event pricing. You pay for each **Game** event: one game saved to your dataset with its store data. You do not pay for games that fail or for a run that saves no games. The price per game goes down on higher Apify plans. Set **Maximum games** to control how many games, and so how many events, one run can have. The run also stops when it reaches your maximum cost per run.

#### 🔌 Integrations

You can connect Steam Games to other apps with Apify integrations, such as Make, Zapier, Slack, Google Sheets, Google Drive, and webhooks. You can also start runs and read results with the Apify API.

https://www.youtube.com/watch?v=bNACk1_S_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ FAQ

##### Can I get the Steam most played games right now?

Yes. Pick **Most played chart** in **Find games by**. Each game shows its chart rank, players online right now, and peak players today. This works like a Steam charts page for games such as Marathon, Battlefield 6, Arc Raiders, or Call of Duty when they are in the chart.

##### Can I get player counts for one game that is not in the chart?

Yes. Look the game up by app ID, game name, or store link. The `playersOnline` field shows the players in the game right now. It is empty when Steam does not report a number.

##### Why are prices in a different currency?

Prices show as the Steam store shows them in the **Store country** you pick. Set `US` for US dollars or `DE` for euros, for example.

##### What happens when one game shows up for two keywords?

You get the game only once in a run. The `searchKeyword` field shows the keyword that found it.

##### Why did a game name return nothing?

The name must match the Steam name exactly, including capital letters. For example, `Dota 2` works and `dota 2` does not. You can use the app ID or store link instead.

##### Does it collect the text of user reviews?

No. You get the review summary: label, positive percent, and total reviews. To get the review text, use Steam Reviews Scraper in the list below.

##### Do I need a Steam account?

No. The Actor reads public Steam store data and needs no login.

### 📝 Changelog

**v0.0** (31-10-2026)

- Initial release.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~steam-games/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [Steam Reviews Scraper](https://apify.com/maximedupre/steam-reviews): get the full text of Steam user reviews for the games you find here.
- [ProtonDB Steam Deck & Linux Compatibility Scraper](https://apify.com/maximedupre/protondb): check community Linux and Steam Deck ratings for a list of Steam app IDs.
- [Twitch Scraper](https://apify.com/maximedupre/twitch-scraper): see which games people stream and watch on Twitch.
- [Microsoft Store App Scraper](https://apify.com/maximedupre/microsoft-store-apps): get game and app prices and ratings from the Microsoft Store.
- [Steam Game Price Tracker — Official API, Regional Pricing](https://apify.com/bovi/steam-scraper): track Steam game prices across many regions.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

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

The run stops after this many games. Leave it empty or set 0 to get all games that match.

## `findBy` (type: `string`):

Choose how to find games. Each choice except Most played chart has its own options section below.

## `searchKeywords` (type: `array`):

Words to search for on the Steam store, such as "roguelike". Each keyword is one search. The Actor returns one row for each matching game.

## `tags` (type: `array`):

Only return games that have all of these Steam store tags. Type each tag as Steam shows it, such as "Indie" or "Co-op".

## `onSaleOnly` (type: `boolean`):

Only return games that have a discount right now.

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

Steam app IDs, such as 570. You can find the ID in the store link: store.steampowered.com/app/570/.

## `gameNames` (type: `array`):

Exact game names, such as "Dota 2". The Actor returns the game whose name matches each entry.

## `startUrls` (type: `array`):

Full Steam store game links, such as https://store.steampowered.com/app/570/Dota_2/.

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

The Steam store list to get games from.

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

Two-letter country code, such as US, GB, or DE. Prices and currency show as the Steam store shows them in this country.

## Actor input object example

```json
{
  "maxItems": 20,
  "findBy": "searchKeyword",
  "searchKeywords": [
    "roguelike"
  ],
  "onSaleOnly": false,
  "storeList": "topSellers",
  "country": "US"
}
```

# Actor output Schema

## `games` (type: `string`):

One row for each Steam game, with its store data, prices, and player numbers.

# 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 = {
    "maxItems": 20,
    "searchKeywords": [
        "roguelike"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/steam-games").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 = {
    "maxItems": 20,
    "searchKeywords": ["roguelike"],
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/steam-games").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 '{
  "maxItems": 20,
  "searchKeywords": [
    "roguelike"
  ]
}' |
apify call maximedupre/steam-games --silent --output-dataset

```

## MCP server setup

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

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/ax60BSYcUDcCI4eet/builds/Gdb5xyVnTC8zYkbfn/openapi.json
