# Steam Game Scraper - Reviews, Players & Owners

Steam game scraper with no API key: merge store details, reviews, live player counts, and SteamSpy owner estimates into one row per game. Export CSV or JSON.

Canonical product page: https://mayd-it.com/data-tools/actors/steam-game-intelligence-scraper/
Public Actor: https://apify.com/maydit/steam-game-intelligence-scraper

## Example input

```json
{
  "appIds": [
    "646570",
    "2379780",
    "1794680",
    "1145360",
    "588650",
    "367520",
    "1966720",
    "105600",
    "892970",
    "413150",
    "1868140"
  ],
  "includeReviews": true,
  "maxReviewsPerGame": 8,
  "includeSteamSpy": true,
  "includePlayerCount": true,
  "country": "us",
  "maxResults": 10
}
```

## Full guide

![Put a game's market signals together — illustrative workflow](https://api.apify.com/v2/key-value-stores/YGxD9JRpduom8Q5Zd/records/steam-game-intelligence-scraper-dbb236910568.png?signature=opANbUT1eCBWW1dcZ55B)

## Put a game's market signals together

For game-market research: combine Steam store details, review signals and current player counts, with optional SteamSpy ownership estimates. Optional review text is saved as separate review records alongside game rows.

[Open this Actor in Console](https://console.apify.com/actors/a6QAP6terwrvApVPq/input) · [First run](#try-this-actor) · [Results](#result-preview) · [Cost](#usage-and-pricing) · [Full guide](#full-guide)

## Try this Actor

- **First run:** Use the existing default app ID **730** to inspect one game. Leave review-text collection off for the first run, then enable only the additional sources you need.
- **API selection:** Empty input uses the one-game demo, **730**. Supplying only `searchTerms` collects only the matching games; the demo is not added. Supplying both `appIds` and `searchTerms` combines them and removes duplicates. The Console sample still prefills 730, so clear it when you want a search-only Console run.
- **Read the results:** Open the default Dataset and use **Record type** to distinguish game rows from reviews. Check **SUMMARY** and source fields when a metric is unavailable.
- **Keep in mind:** Owner counts from SteamSpy are estimates, not audited sales or revenue. Concurrent players are an observation at collection time. Missing source data should not be interpreted as zero.

## Result preview

The dataset view highlights these columns:

- **Record type** · `type`
- **Steam app ID** · `appId`
- **Game** · `name`
- **Price** · `price`
- **Discount (%)** · `discountPercent`
- **Released** · `releaseDate`

Use the original source links and the field definitions below when interpreting the results. CSV works well for flat columns; JSON preserves nested values.

## Usage and pricing

Base result rate on the FREE tier: **$3 per 1,000 results**. The [Pricing tab](https://apify.com/maydit/steam-game-intelligence-scraper/pricing) shows your plan's result rate and any Actor Start charge. Set a small result limit for the first run; the requested limit is not a guarantee of that many results.

---

## Full guide

> Combine available Steam store details, review summaries and current player counts with optional SteamSpy ownership estimates. Optional review text is exported as separate review rows. No API key is required.

### What it does

This Steam game scraper collects a bounded observation of the selected public sources for supported Steam app IDs and returns a game row when usable source data is available. Instead of a single-purpose price-and-reviews export, it merges **four public Steam data sources** - store details, user reviews, live concurrent player counts, and SteamSpy ownership estimates - so you get pricing, ratings, player activity, and owner estimates together in one dataset. Run it with no API key, query by Steam app ID or by search term, and export everything to CSV or JSON for market research, competitor analysis, or investment due diligence.

Use it as a Steam data API alternative: it returns game details, reviews, player counts, and ownership figures in one call, ready to drop into a spreadsheet, BI tool, or dashboard.

### Who it's for

- **Indie game developers** benchmarking competitors, genres, and pricing before launch
- **Publishers** tracking portfolio performance and rival titles
- **Game-market analysts** building genre, pricing, and player-trend datasets
- **Investors and VCs** running due diligence on studios and titles
- **Marketing and UA teams** sizing audiences and monitoring review sentiment
- **Competitive-research teams** watching what similar games do on discounts, tags, and player retention

### What you get (output)

Each game returns one merged row with the fields below. Review rows are returned separately when review enrichment is enabled.

| Field | Description |
|---|---|
| `name` | Game title |
| `gameType` | Type of app (game, DLC, etc.) |
| `isFree` | Whether the title is free-to-play |
| `price` | Current price |
| `discountPercent` | Active discount percentage |
| `releaseDate` | Store release date |
| `developers` | Developer(s) |
| `publishers` | Publisher(s) |
| `genres` | Steam genres |
| `categories` | Steam categories (e.g., multiplayer, controller support) |
| `shortDescription` | Store short description |
| `metacriticScore` | Metacritic score |
| `reviewScoreDesc` | Steam review summary label (e.g., "Very Positive") |
| `totalPositive` | Count of positive reviews |
| `totalNegative` | Count of negative reviews |
| `currentPlayers` | Live concurrent player count |
| `ownersEstimate` | SteamSpy owner estimate |
| `ownersEstimateMin` | Lower bound of the owner estimate |
| `ownersEstimateMax` | Upper bound of the owner estimate |
| `steamSpyCcu` | SteamSpy concurrent-user figure |
| `topTags` | Top community tags |
| `headerImage` | Store header image URL |
| `storeUrl` | Steam store page URL |

**Review rows** (when reviews are enabled): individual review records tied to each game, so you can export Steam reviews to CSV or JSON for sentiment work.

### Input / how to query

Two ways to select games, plus optional enrichment toggles:

**Modes**
- **By app ID** - pass one or more Steam app IDs to scrape exactly the titles you want
- **By search term** - pass search terms to discover matching games, then scrape them

**Filters and options**
- `app IDs` - target specific Steam titles directly
- `search terms` - discovery mode for finding games by keyword
- `include reviews` - add per-game review rows and review counts
- `include SteamSpy` - add owner estimates and SteamSpy CCU
- `include player count` - add live concurrent player counts
- `country` - set the country/region for pricing
- `max run seconds` - wall-clock budget for the run (default 240, roughly 100 games with every enrichment on). When it is reached the Actor stops cleanly and finishes successfully with the games it already has, and records `stoppedEarlyOnTimeLimit: true` in the run's `SUMMARY`. Raise it, together with the run timeout, for a deliberately large pull

Enable only the enrichment you need. Turn everything on for a full market-intelligence snapshot; keep it minimal for a fast price-and-rating pull.

### Example use cases

1. **Indie competitor benchmark** - feed a list of 50 rival app IDs, enable reviews + SteamSpy + player count, and export a single CSV comparing price, discount, review score, owner estimates, and live players across your genre.
2. **Sales and revenue estimation** - combine SteamSpy owner estimates with price and review counts to model a title's approximate sales and revenue for a pitch deck or investment memo.
3. **Genre trend dataset** - use search-term discovery to pull every game matching a keyword (e.g., "roguelike deckbuilder"), then build a dataset of tags, pricing, and player activity.
4. **Live player-count monitoring** - schedule daily runs on a watchlist of app IDs to track concurrent players over time and spot momentum shifts.
5. **Review sentiment export** - enable reviews on a set of titles to export Steam reviews to JSON for sentiment analysis or feature-request mining.

### Recurring use and scheduling

For monitoring, run this on a schedule (Apify **Schedules**) - daily or weekly against a fixed list of app IDs. Live `currentPlayers`, `discountPercent`, review counts, and SteamSpy figures all change over time, so recurring runs build a trend history for prices, players, ratings, and ownership.

To keep a single growing table clean, use **dataset deduplication** by keying on the game (app ID) so each scheduled run updates rather than duplicates rows, or append timestamped snapshots when you want a time series. Point the output at your storage, BI tool, or webhook to feed dashboards automatically.

### FAQ

#### How do I scrape Steam game data without an API key?
Run this actor - it reads public Steam storefront and SteamSpy data directly, so no Steam API key is required. Just provide app IDs or search terms and it returns the merged dataset.

#### How can I export Steam reviews to CSV or JSON?
Enable the **include reviews** option. The actor returns individual review rows alongside each game, and every Apify dataset exports to CSV, JSON, Excel, and other formats.

#### How do I estimate a Steam game's sales and revenue from reviews?
Enable **include SteamSpy** to get `ownersEstimate` (with min/max bounds). Combine those owner estimates with `price` and the positive/negative review counts to model approximate sales and revenue in your own spreadsheet.

#### How do I get SteamSpy owner estimates in bulk?
Pass a list of app IDs (or discover them with search terms), enable **include SteamSpy**, and each row returns `ownersEstimate`, `ownersEstimateMin`, `ownersEstimateMax`, and `steamSpyCcu`.

#### How can I track live concurrent player counts for Steam games?
Enable **include player count** to get `currentPlayers` per title, then schedule the run daily or hourly on a watchlist to track concurrent players over time.

#### What is the best tool to research Steam competitors for my indie game?
Use search-term discovery to find rival titles in your genre, then enable reviews, SteamSpy, and player count to compare pricing, discounts, ratings, owner estimates, and live players side by side in one export.

#### How do I pull Steam price, discount, and Metacritic data for many games at once?
Pass multiple app IDs (or search terms) in a single run. Each row returns `price`, `discountPercent`, and `metacriticScore` along with the rest of the store details - no per-game API calls to manage.

#### How do I get Steam store, reviews, players, and ownership data in one dataset?
That is exactly what this scraper is built for. Enable all three enrichments and each game row merges store details, review counts, live `currentPlayers`, and SteamSpy ownership estimates together.

#### Is there a Steam API alternative that returns game details, reviews, and player counts together?
Yes - this actor merges Steam store details, review data, live player counts, and SteamSpy ownership into one row per game, without requiring a Steam API key, so it works as a drop-in data source for research pipelines.

#### How do I collect Steam data for market analysis or investment research?
Query the titles or genres you care about, enable SteamSpy and player-count enrichment, and export the merged dataset. The owner estimates, pricing, review scores, and player counts give you the inputs for market sizing and due diligence.

### Data source and notes

- **Sources:** Public Steam storefront endpoints (`appdetails`, `appreviews`, and current-players data) plus **SteamSpy** for ownership estimates. No Steam API key is used.
- **Public data:** All fields come from publicly accessible Steam and SteamSpy data.
- **Estimates are estimates:** `ownersEstimate`, `ownersEstimateMin/Max`, and `steamSpyCcu` are SteamSpy's modeled figures, not official Steam sales numbers. Treat them as directional, not exact.
- **Live values change:** `currentPlayers`, `price`, `discountPercent`, and review counts are point-in-time; schedule recurring runs to build history.
- **Regional pricing:** set the `country` option to control the currency/region of price fields.

### Found this useful?

If this actor saved you time, a short review on the Apify Store genuinely helps. Reviews are how the next person decides whether a tool is worth trying.

Something broken, missing a field, or a source you want covered? Open an issue on the **Issues** tab and it will get looked at - that is the fastest route to getting it changed.


#### Saved rows and run charge limits

The Actor writes results one at a time and stops when Apify reports the run charge limit. `SUMMARY.stoppedOnChargeLimit` distinguishes that stop from an empty source. Saved-row counts include only rows accepted by the dataset. For change detection, prior seen IDs are retained and newly discovered IDs enter the baseline only after their row is saved; rows excluded by a result or charge cap remain eligible for a later run. Avoid concurrent monitor runs sharing the same named baseline store.

## Help with your run

Open the **Issues** tab on this Actor with the run URL, the input field that caused trouble and what you expected to receive. Remove API keys and private information before posting.

[Explore more Mayd-It Actors](https://apify.com/maydit)

## Understand your run

Open **Run report** in the run’s Output tab for saved-record counts, reported source issues and limits, and suggested next steps. Use **CSV export** to take the saved results into a spreadsheet. The existing JSON results and detailed machine-readable summary remain available.

The report reflects this run’s recorded coverage. A successful run or a saved result does not establish that every possible source record was collected.
