# Game Patch Impact & Player Sentiment Intelligence (`obliging_persimmon_cki/game-patch-impact-player-sentiment`) Actor

Compare Steam player feedback before and after an update or patch and surface sentiment shifts, emerging issues, regressions, improvements, and feature requests.

- **URL**: https://apify.com/obliging\_persimmon\_cki/game-patch-impact-player-sentiment.md
- **Developed by:** [Dung Huynh](https://apify.com/obliging_persimmon_cki) (community)
- **Categories:** Other, AI, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $30.00 / 1,000 game reports

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## Game Patch Impact & Player Sentiment Intelligence

### What this Actor does

This Actor does not simply return Steam reviews. It compares player feedback across two time periods and surfaces sentiment shifts, newly emerging issues, regressions, improvements, and feature requests.

### Who it is for

Game studios, publishers, QA teams, community managers, analysts, and game researchers who need a compact update-impact signal from public Steam feedback.

### Key features

- Recent-vs-previous, latest-detected-patch, and custom-date comparisons.
- Steam recommendation rates and deterministic sentiment deltas.
- Gaming issue themes, feature requests, short evidence, coverage metadata, and confidence.
- Bounded pagination with partial-coverage warnings and per-game failure isolation.

### Supported input

See `sample-input.json` for the safe Store-test input. The Actor accepts one to ten numeric Steam App IDs, a period length from 1 to 30 days, and a sample cap from 10 to 250 reviews per period.

### Output

The default dataset contains one final report per Steam App ID with `comparison`, `impact`, `patch`, `newIssues`, `regressions`, `improvements`, `featureRequests`, `topNegativeThemes`, `topPositiveThemes`, `coverage`, `languageDistribution`, `warnings`, and bounded `stats` fields. Raw review collections are not published as the primary output.

### Output fields

| Field                               | Meaning                                                 |
| ----------------------------------- | ------------------------------------------------------- |
| `status`                            | `ok`, `partial`, or `failed` report status.             |
| `steamAppId`                        | Requested numeric Steam App ID.                         |
| `gameName`                          | Best-effort Steam game name.                            |
| `requestedComparisonMode`           | Mode supplied in the input.                             |
| `effectiveComparisonMode`           | Mode actually used after patch fallback.                |
| `comparison.before.positiveRate`    | Steam recommendation rate before the boundary.          |
| `comparison.after.positiveRate`     | Steam recommendation rate after the boundary.           |
| `comparison.sentimentDelta`         | After minus before positive recommendation rate.        |
| `impact.direction`                  | Thresholded sentiment direction or `insufficient_data`. |
| `impact.confidence`                 | Bounded 0–1 confidence score.                           |
| `impact.confidenceLabel`            | `high`, `medium`, or `low`.                             |
| `comparison.before.reviewsAnalyzed` | Before-period analyzed sample count.                    |
| `comparison.after.reviewsAnalyzed`  | After-period analyzed sample count.                     |
| `coverage.before.coverageStatus`    | Before-period `full`, `partial`, or `insufficient`.     |
| `coverage.after.coverageStatus`     | After-period `full`, `partial`, or `insufficient`.      |
| `newIssues`                         | Complaint themes meeting the new-issue safeguards.      |
| `regressions`                       | Themes meeting the regression safeguards.               |
| `improvements`                      | Themes with a material negative-mention decrease.       |
| `featureRequests`                   | Bounded normalized requests and counts.                 |
| `warnings`                          | Coverage, fallback, or enrichment warnings.             |
| `stats.durationMs`                  | Bounded per-game runtime in milliseconds.               |
| `generatedAt`                       | Report generation timestamp.                            |

### Limitations

Steam's recent-review API is paginated chronologically. On extremely high-volume games, a run may hit its safety scan limit before reaching the complete requested historical window. In this case the Actor returns partial coverage and lowers confidence instead of presenting incomplete data as a full comparison.

This V1 uses public Steam data and deterministic local analysis. It does not claim that a patch caused an observed change, and it does not collect Reddit, Discord, YouTube, or Metacritic data.

### Cost considerations

The recommended pricing principle is pay per successfully generated game report, not per raw review. A starting target is approximately `$0.03` per `game_report`, subject to measured Apify usage economics. This repository does not change pricing automatically.

### Compliance and responsible use

Review snippets are short evidence for aggregate analysis, not endorsements. Do not use output to identify, target, or harass individual reviewers. Respect Steam terms and applicable privacy/data-retention requirements.

### FAQ

#### Does this confirm that a patch caused a bug?

No. It reports observational changes in player feedback; engineering teams should reproduce and verify issues independently.

#### What happens when Steam history is incomplete?

The report marks coverage as partial or insufficient, lowers confidence, and includes a warning rather than claiming full coverage.

### API usage

Run the Actor with a JSON object matching `sample-input.json` using Apify's API or Console. The default input requires no API key, proxy, browser, or external model.

```json
{
    "steamAppIds": ["646570"],
    "comparisonMode": "recent_vs_previous",
    "windowDays": 7,
    "maxReviewsPerPeriod": 40,
    "language": "english",
    "includeOffTopicReviews": false,
    "includeEvidence": true
}
```

### Benchmark results

Phase 0 feasibility measurements are recorded in the repository-level `docs/phase-0-feasibility.md`. Phase-specific runtime and cloud evidence will be appended to `BENCHMARK_NOTES.md` as implementation proceeds.

# Actor input Schema

## `steamAppIds` (type: `array`):

Steam App IDs to analyze. Example: 646570.

## `comparisonMode` (type: `string`):

Compare recent periods, detect the latest likely patch, or use a custom patch date.

## `patchDate` (type: `string`):

Required only for custom patch date mode. Use YYYY-MM-DD.

## `windowDays` (type: `integer`):

Number of days in each before and after period.

## `maxReviewsPerPeriod` (type: `integer`):

Maximum number of deterministically sampled reviews analyzed in each period.

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

Steam review language. Use all for all available languages.

## `includeOffTopicReviews` (type: `boolean`):

Include reviews Steam marks as off-topic activity.

## `includeEvidence` (type: `boolean`):

Include up to two short review snippets per major theme.

## Actor input object example

```json
{
  "steamAppIds": [
    "646570"
  ],
  "comparisonMode": "recent_vs_previous",
  "windowDays": 7,
  "maxReviewsPerPeriod": 40,
  "language": "english",
  "includeOffTopicReviews": false,
  "includeEvidence": true
}
```

# Actor output Schema

## `dataset` (type: `string`):

One structured intelligence report per requested Steam App ID.

## `runStatistics` (type: `string`):

Machine-readable bounded collection and runtime counters.

# 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("obliging_persimmon_cki/game-patch-impact-player-sentiment").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("obliging_persimmon_cki/game-patch-impact-player-sentiment").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 obliging_persimmon_cki/game-patch-impact-player-sentiment --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,obliging_persimmon_cki/game-patch-impact-player-sentiment"
        }
    }
}

```

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/ZFrA2SSephNkHtKY0/builds/7vtd1NcoXkorO3aze/openapi.json
