# Steam Reviews Scraper — Sentiment & Playtime (`zenomastro/steam-reviews-intelligence`) Actor

Steam reviews scraper for game intelligence. Filter by language, sentiment, purchase type, date, keywords, playtime, reviewer history, helpful votes, refunds, free copies, Early Access and developer responses; include game metadata, off-topic periods, weighted sentiment and only-new monitoring.

- **URL**: https://apify.com/zenomastro/steam-reviews-intelligence.md
- **Developed by:** [Rosario Vitale](https://apify.com/zenomastro) (community)
- **Categories:** Business, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.75 / 1,000 steam reviews

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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 Reviews Scraper API — Playtime & Sentiment Analytics

### Why use this Actor?

Steam reviews scraper for game intelligence. Filter by language, sentiment, purchase type, date, keywords, playtime, reviewer history, helpful votes, refunds, free copies, Early Access and developer responses; include game metadata, off-topic periods, weighted sentiment and only-new monitoring.

### Features

- **Steam app IDs or store URLs** — Steam app IDs or store URLs. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Review language** — Review language. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Sentiment** — Sentiment. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Purchase type** — Purchase type. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Steam sort/filter** — Steam sort/filter. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Max reviews per game** — Max reviews per game. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Max API pages per game** — Max API pages per game. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Created on/after (YYYY-MM-DD)** — Created on/after (YYYY-MM-DD). Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Created before (YYYY-MM-DD)** — Created before (YYYY-MM-DD). Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Include game metadata** — Include game metadata. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Persistent monitor key** — Persistent monitor key. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Emit only unseen review IDs** — Emit only unseen review IDs. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

### Use cases

- Game sentiment research.
- Launch monitoring.
- Player feedback intelligence.
- Playtime-weighted review analysis.

### Example input

```json
{
  "apps": [
    "730"
  ],
  "language": "all",
  "reviewType": "all",
  "purchaseType": "all",
  "filter": "recent",
  "maxReviewsPerApp": 1000
}
```

### Pricing & cost control

Use the bounded input limits and filters to keep runs predictable. Pay-per-result Actors only charge primary result rows; summary, status and monitoring metadata are designed to add context without inflating result volume.

### FAQ

**What is this Actor for?**\
It is designed for game sentiment research, launch monitoring, player feedback intelligence.

**Can I run it on a schedule?**\
Yes. You can schedule Actor runs on Apify and send the resulting dataset into automations, webhooks, storage, or downstream APIs.

**How do I control cost and run size?**\
Use the input limits and filters shown in the Actor input form. The Actor applies bounded defaults and hard caps so large jobs remain predictable.

### Search keywords

steam reviews scraper, steam review scraper github, steam is it legit, steam my reviews, steam brush reviews, steam review api, steam game review api, steam app reviews api, get steam reviews api, steam web api review, steam api issues, does steam have an api, reviews, steam

Collect structured Steam game reviews from Steam's own public store review endpoint. No Steam login, API key, browser, or residential proxy is required.

The Actor is designed for game-market research, player sentiment, launch monitoring, competitive analysis and datasets for NLP/LLM workflows.

### What you get

Per review:

- Recommendation ID and full review text.
- Positive/negative verdict.
- Helpful and funny votes, weighted vote score and comment count.
- Created and updated timestamps plus edited flag.
- Steam purchase, free-copy, refund, early-access and Steam Deck flags.
- Developer response and response timestamp when Steam exposes them.
- Public author Steam ID, games owned, review count and playtime metrics.
- Optional game metadata from Steam's public app details endpoint.
- `isNew` when persistent monitoring is enabled.

### Filters and limits

Filter by language, positive/negative/all reviews, Steam/non-Steam purchase, date range and Steam's recent/updated/all ordering. Hard review and page limits keep large games predictable.

Date ranges are enforced on the actual review timestamps. When using the recent ordering, the Actor stops paging after it crosses the lower date boundary, avoiding unnecessary requests.

### Monitoring

Set a stable `monitorKey` on scheduled runs. The Actor keeps a bounded set of seen recommendation IDs and can return only newly observed reviews with `onlyNew=true`.

### Example

```json
{
  "apps":["730","https://store.steampowered.com/app/570/Dota_2/"],
  "language":"english",
  "reviewType":"negative",
  "maxReviewsPerApp":500,
  "dateFrom":"2026-09-01",
  "monitorKey":"competitive-games"
}
```

### Reliability

Requests use bounded retries and timeouts. Pagination is cursor-based, duplicate review IDs are removed, per-game failures become diagnostic rows, and an empty page or repeated cursor stops cleanly.

This Actor reads public Steam Store data. Use the output in accordance with Steam's terms and applicable law.

### Extended capabilities

- Use Steam's public cursor-based review endpoint with language, sentiment, purchase, date, keyword, playtime, and developer-response filters.
- Filter reviewer quality by reviews written, games owned, helpful votes, free-copy, refunded, and Early Access flags.
- Preserve Steam's native query summary and optional game metadata, plus raw and playtime-weighted sentiment.

# Actor input Schema

## `apps` (type: `array`):

Steam app IDs or store URLs. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

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

Review language. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `reviewType` (type: `string`):

Sentiment. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `purchaseType` (type: `string`):

Purchase type. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `filter` (type: `string`):

Steam sort/filter. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `maxReviewsPerApp` (type: `integer`):

Max reviews per game. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `maxPagesPerApp` (type: `integer`):

Max API pages per game. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `dateFrom` (type: `string`):

Created on/after (YYYY-MM-DD). Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `dateTo` (type: `string`):

Created before (YYYY-MM-DD). Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `includeGameInfo` (type: `boolean`):

Include game metadata. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `monitorKey` (type: `string`):

Persistent monitor key. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `onlyNew` (type: `boolean`):

Emit only unseen review IDs. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `requestTimeoutSecs` (type: `integer`):

Request timeout. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `retries` (type: `integer`):

Retries. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `keywords` (type: `array`):

Keep reviews containing at least one keyword (case-insensitive). Filtering happens before billing.

## `minPlaytimeHours` (type: `number`):

Keep reviewers with at least this many hours played when the review was written.

## `maxPlaytimeHours` (type: `number`):

Optional upper playtime bound. Leave empty for no maximum.

## `developerResponseMode` (type: `string`):

Filter by whether Steam exposes a developer response.

## `includeSummaryAnalytics` (type: `boolean`):

Add raw vs playtime-weighted sentiment and credibility-band statistics to each game summary.

## `minReviewsWritten` (type: `integer`):

Keep reviews from Steam accounts with at least this many reviews written.

## `minGamesOwned` (type: `integer`):

Keep reviews from accounts with at least this many owned games.

## `minHelpfulVotes` (type: `integer`):

Keep reviews with at least this many helpful/up votes.

## `receivedForFreeMode` (type: `string`):

Filter using Steam's public received\_for\_free review flag.

## `refundedMode` (type: `string`):

Filter using Steam's public refunded flag.

## `earlyAccessMode` (type: `string`):

Filter reviews written during Early Access.

## `includeOfftopicActivity` (type: `boolean`):

Pass Steam's filter\_offtopic\_activity=1 so review-bomb/off-topic periods are included when Steam exposes them.

## Actor input object example

```json
{
  "apps": [
    "730"
  ],
  "language": "all",
  "reviewType": "all",
  "purchaseType": "all",
  "filter": "recent",
  "maxReviewsPerApp": 1000,
  "maxPagesPerApp": 100,
  "includeGameInfo": true,
  "onlyNew": false,
  "requestTimeoutSecs": 25,
  "retries": 2,
  "keywords": [],
  "minPlaytimeHours": 0,
  "developerResponseMode": "all",
  "includeSummaryAnalytics": true,
  "minReviewsWritten": 0,
  "minGamesOwned": 0,
  "minHelpfulVotes": 0,
  "receivedForFreeMode": "all",
  "refundedMode": "all",
  "earlyAccessMode": "all",
  "includeOfftopicActivity": false
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("zenomastro/steam-reviews-intelligence").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("zenomastro/steam-reviews-intelligence").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 '{}' |
apify call zenomastro/steam-reviews-intelligence --silent --output-dataset

```

## MCP server setup

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

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/0ya57RHuiRZvTLkgN/builds/k1dBIH23gGV4Tah9G/openapi.json
