# Steam Games Scraper - Prices, Discounts, Reviews & Top Sellers (`flash_scraper/steam-games-scraper`) Actor

Steam discounts scraper: search by keyword, pass app IDs, or pull top sellers, new releases and specials. Get price, discount %, genres, developer, publisher, release date, platforms, Metacritic, review score and recent reviews. Keyless public Steam API - no key, no proxy.

- **URL**: https://apify.com/flash\_scraper/steam-games-scraper.md
- **Developed by:** [Flash Scrape](https://apify.com/flash_scraper) (community)
- **Categories:** E-commerce, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.50 / 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?

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 Discounts Scraper - Games, Prices, Reviews & Specials

Pull structured data on Steam games — current price, discount, review score and count, release date, genres, platforms and more — straight from Steam's own public APIs. No API key, no login, no browser.

- **Discover modes built in** — top sellers, new & trending, specials, or search by keyword
- **Real prices with discounts** — current price, original price and discount percent per title
- **Review signals** — score summary and review counts where Steam publishes them
- **29 stable columns** on every row - a missing field is null, never a shifted column

### Quick start

Open the actor, keep the defaults, press **Save & start**. The reference run below is exactly that. Then adjust the input for your own search and export **CSV, JSON or Excel** from the dataset tab - or call it from the API and read the dataset programmatically.

### A real row

Straight from a reference run, trimmed to the highlights:

```json
{
  "app_id": 1145350,
  "name": "Hades II",
  "type": "game",
  "is_free": false,
  "price_formatted": "$29.99",
  "price_final_cents": 2999,
  "price_initial_cents": 2999,
  "discount_percent": 0,
  "currency": "USD",
  "on_sale": false,
  "short_description": "Battle beyond the Underworld using dark sorcery to take on the Titan of Time in this bewitching sequel to the award-winning rogue-like dungeon crawler.",
  "developers": "Supergiant Games"
}
```

### How it works

The actor calls Steam's own public storefront endpoints (the same JSON the store site uses), walks the chosen discover mode or search, normalizes every title into the fixed column set and pushes rows as they are parsed.

### Every column, with measured fill

| Column | Filled on the reference run |
|---|---|
| `app_id` | 100% |
| `name` | 100% |
| `type` | 100% |
| `is_free` | 100% |
| `price_formatted` | 60% |
| `price_final_cents` | 60% |
| `price_initial_cents` | 60% |
| `discount_percent` | 60% |
| `currency` | 60% |
| `on_sale` | 100% |
| `short_description` | 100% |
| `developers` | 100% |
| `publishers` | 90% |
| `genres` | 90% |
| `categories` | 100% |
| `release_date` | 100% |
| `coming_soon` | 100% |
| `windows` | 100% |
| `mac` | 100% |
| `linux` | 100% |
| `required_age` | 100% |
| `metacritic_score` | 20% |
| `recommendations_total` | 30% |
| `header_image` | 100% |
| `steam_url` | 100% |
| `country` | 100% |
| `scraped_at` | 100% |
| `actor_build` | 100% |
| `actor_run_id` | 100% |

*A missing value is null; the column set never shifts, so your CSV import is stable across runs.*

### Input reference

| Field | Type | Default | Notes |
|---|---|---|---|
| `searchTerms` | array | \['Hades'] | Keywords to search the Steam store, e.g. 'Hades', 'roguelike', 'Baldur's Gate'. Each term returns its best-mat |
| `appIds` | array |  | Exact Steam app IDs to fetch, e.g. 413150 (Stardew Valley), 1145360 (Hades). Found in a game's store URL: stor |
| `discover` | string | none | Pull a ready-made list from the Steam storefront instead of (or in addition to) searching. |
| `countryCode` | string | us | Two-letter country code for pricing and availability (Steam 'cc' param), e.g. us, gb, de, ma, in. |
| `language` | string | english | Steam content language for names/descriptions, e.g. english, french, german, spanish. |
| `includeReviews` | boolean | False | Add a review summary (score, positive %, totals) to each game, and optionally recent review texts. |
| `maxReviewsPerGame` | integer | 10 | When 'Include reviews' is on, how many recent reviews to attach to each game (0 = summary only). |
| `maxItems` | integer | 50 | Maximum number of games to return across all inputs. |

### Pricing

**Pay per result** - charged only for rows delivered; the current rate is on this page's Pricing tab. Zero results cost zero, and failed fetches are never billed.

### Use cases

- **Market research** - Track pricing and discount depth across a genre before launching or repricing
- **Deal aggregation** - Feed a deals site or newsletter from the specials list
- **Wishlist intelligence** - Watch competitors' launch-window pricing and review velocity

### Honest limits

We would rather say it here than have you find out on a paid run:

- Steam serves regional pricing; runs read the store as a US visitor unless your proxy says otherwise
- Review counts are Steam's public aggregates - per-review text is out of scope for this actor

### Scheduling & integrations

Every input works identically from the API, so this actor drops into schedules and pipelines: run it on an Apify **Schedule** for a recurring export, point a **webhook** at the finished run to push rows into Slack, Google Sheets (via Zapier/Make/n8n) or your warehouse, and page through the dataset with the standard Dataset API. Saved tasks keep your configuration one click away.

### FAQ

**Do I need a Steam account or API key?**
No. The actor reads Steam's public storefront APIs.

**How fresh is the data?**
Live at run time - each run queries Steam directly.

### Related actors from this account

- [Google Play Scraper](https://apify.com/flash_scraper/google-play-scraper)
- [App Store Scraper](https://apify.com/flash_scraper/app-store-scraper)
- [Hn Scraper](https://apify.com/flash_scraper/hn-scraper)

***

*Built by [Flash Scrape](https://apify.com/flash_scraper) - measured claims, stable columns, no API keys. Something missing? Open an issue on this actor and ask.*

***

### More from Flash Scrape

Same publisher, same rules: no API keys, pay per row, filters run before billing.

- [Multi Job Board Scraper](https://apify.com/flash_scraper/multi-jobboard-scraper) - LinkedIn, Indeed, Glassdoor and 9 more boards in one deduplicated table
- [Local Business Leads Scraper](https://apify.com/flash_scraper/local-business-leads) - local businesses in any category and city with MX-verified emails, phones and socials
- [Remote Jobs Aggregator](https://apify.com/flash_scraper/remote-job-aggregator) - 10 remote job boards in one feed, only-new-jobs monitoring
- [Creator Leads Scraper](https://apify.com/flash_scraper/creator-leads-scraper) - YouTube, TikTok and Instagram creator emails in one run

# Actor input Schema

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

Keywords to search the Steam store, e.g. 'Hades', 'roguelike', 'Baldur's Gate'. Each term returns its best-matching games.

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

Exact Steam app IDs to fetch, e.g. 413150 (Stardew Valley), 1145360 (Hades). Found in a game's store URL: store.steampowered.com/app/\<APP\_ID>.

## `discover` (type: `string`):

Pull a ready-made list from the Steam storefront instead of (or in addition to) searching.

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

Two-letter country code for pricing and availability (Steam 'cc' param), e.g. us, gb, de, ma, in.

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

Steam content language for names/descriptions, e.g. english, french, german, spanish.

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

Add a review summary (score, positive %, totals) to each game, and optionally recent review texts.

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

When 'Include reviews' is on, how many recent reviews to attach to each game (0 = summary only).

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

Maximum number of games to return across all inputs.

## Actor input object example

```json
{
  "searchTerms": [
    "Hades"
  ],
  "discover": "none",
  "countryCode": "us",
  "language": "english",
  "includeReviews": false,
  "maxReviewsPerGame": 10,
  "maxItems": 50
}
```

# 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": [
        "Hades"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("flash_scraper/steam-games-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": ["Hades"] }

# Run the Actor and wait for it to finish
run = client.actor("flash_scraper/steam-games-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": [
    "Hades"
  ]
}' |
apify call flash_scraper/steam-games-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,flash_scraper/steam-games-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/MG9VC912cjRZlFF0j/builds/EqeduPzyarok8rfJC/openapi.json
