# GOG Game Review Scraper (`solidcode/gog-game-review-scraper`) Actor

\[💰 $0.02 / 1K] Extract GOG.com game reviews: 1-5 star ratings, full review text, verified-owner labels, helpful/unhelpful votes, reviewer profiles and game rating context. Target games by store URL or product ID, sort 6 ways, filter by language, rating, date and owner.

- **URL**: https://apify.com/solidcode/gog-game-review-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Automation, Developer tools, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.02 / 1,000 results

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/platform/actors/running/actors-in-store#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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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

## GOG Game Review Scraper

Pull player reviews from GOG.com at scale — star ratings, full review text, reviewer profiles, helpful/unhelpful vote counts, and game-level rating context, all flattened into one clean row per review. Point it at a store link or a product ID, choose from six review orders, and filter by star rating, language, verified ownership, or date range. Built for game publishers, indie developers, storefront analysts, and review-aggregation products who need structured GOG player sentiment without clicking through review pages one at a time.

### Why This Scraper?

- **Six review orders, exposed as a plain dropdown** — Most helpful, Newest, Oldest, Highest rated, Lowest rated, and Least helpful. Competing GOG review tools expose none, so "just give me this month's sentiment" means pulling a game's entire history instead of one ordered page.
- **Star-rating filtering that stops early** — pick any combination of 1, 2, 3, 4, and 5 stars. On the default order the run walks the rating band from one end and stops the moment it leaves your selection, so a 5-star-only pull on a 1,600-review game finishes in a single request instead of nine.
- **Language filtering that survives GOG's inconsistent tags** — 63 base language codes automatically expand to 158 real GOG locale tags (`de` covers `de-DE`, `de-AT`, `de-CH`; `pt` covers `pt-PT` and `pt-BR`; `zh` covers `zh-Hans`, `zh-Hant`, `zh-CN`, `zh-TW`, `zh-HK`, `zh-SG`). Asking for German never hands you a silent, confident zero.
- **Both date bounds enforced on every saved row** — set a start date, an end date, or both. Each review is checked against both limits before it is saved; a two-year window on The Witcher 3 returned 114 reviews and matched an independent full sweep exactly, 114 for 114.
- **Verified-owner-only mode** — restrict results to players GOG has confirmed own the game. Applied at the source, so it makes runs faster rather than slower.
- **Game rating context denormalized onto every review** — overall average, the average within your applied filters, the text-review count, and the total star-rating count ride along with each row. One flat export answers "is this review above or below the game's average?" with no second lookup.
- **Reviewer profile on every review** — username, user ID, avatar image URL, library size (games owned), and lifetime review count, so you can weight a 400-game veteran differently from a first-time reviewer.
- **Helpfulness math already done** — upvotes, downvotes, a precomputed net `helpfulnessScore`, and an `isMostHelpful` flag marking the single review GOG itself pins to the top of the game's store page.
- **Up to 10,000 reviews per game and 50,000 per run** — a verified test run collected 3,000 reviews for a single title in one pass, and store links and numeric product IDs can be mixed freely in the same run.

### Use Cases

**Player Sentiment & Product Feedback**
- Track star-rating distribution for your title week over week after a patch or DLC drop
- Read every 1- and 2-star review in one export to surface recurring complaints
- Compare the filtered average rating of verified owners against all reviewers
- Feed review text into sentiment or topic models with language already labelled per row

**Competitive & Market Research**
- Benchmark your game's average rating and review volume against direct competitors in one run
- Measure how review sentiment shifts across a genre after a major storefront sale
- Compare DRM-free storefront reception against other platforms for the same title
- Track which titles accumulate reviews fastest after release using post dates

**Localization & Regional Strategy**
- Pull only German, Polish, or Simplified Chinese reviews to gauge regional reception
- Spot markets where a localized build is generating disproportionately low ratings
- Quantify how much of a title's review volume comes from non-English players

**Community & Content Operations**
- Surface the highest-voted reviews for use in marketing quote reels and store copy
- Identify high-authority reviewers by library size and lifetime review count
- Monitor newly posted reviews on a schedule and route them to Slack or email

**Review Aggregation & Data Products**
- Build a GOG review corpus for a cross-storefront aggregation site or app
- Power a critic-versus-player comparison dashboard with per-review star values
- Maintain a research dataset of long-form player reviews with reviewer metadata attached

### Getting Started

#### Simplest run — one game, default settings

```json
{
  "gameUrls": ["https://www.gog.com/game/the_witcher_3_wild_hunt"]
}
````

#### Newest reviews from the last quarter

```json
{
  "gameUrls": ["https://www.gog.com/game/cyberpunk_2077"],
  "sortBy": "desc:date",
  "startDate": "2026-04-01",
  "maxReviewsPerGame": 500
}
```

#### Negative feedback from verified owners only

```json
{
  "productIds": ["1207664663"],
  "ratings": ["1", "2"],
  "verifiedOwnersOnly": true,
  "sortBy": "asc:rating",
  "maxReviewsPerGame": 300
}
```

#### Multi-game, multi-language competitive pull

```json
{
  "gameUrls": [
    "https://www.gog.com/game/the_witcher_3_wild_hunt",
    "https://www.gog.com/game/cyberpunk_2077"
  ],
  "productIds": ["1207658930"],
  "maxReviewsPerGame": 2000,
  "maxReviewsTotal": 5000,
  "sortBy": "desc:votes",
  "languages": ["en", "de", "pl"],
  "ratings": ["3", "4", "5"],
  "verifiedOwnersOnly": true,
  "startDate": "2024-01-01",
  "endDate": "2026-06-30"
}
```

### Input Reference

#### Games to Scrape

Use store links, product IDs, or both together — reviews from every game you list land in the same results table.

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `gameUrls` | array | `["https://www.gog.com/game/the_witcher_3_wild_hunt"]` | GOG store page links, for example `https://www.gog.com/game/the_witcher_3_wild_hunt`. Works with any GOG game, DLC or bundle page. |
| `productIds` | array | `[]` | GOG product ID numbers, for example `1207664663` for The Witcher 3. Slightly faster than links because the game does not need to be looked up first. |

#### How Many Reviews

Two limits keep long runs predictable. Whichever is reached first stops the collection, and everything gathered up to that point is saved.

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxReviewsPerGame` | integer | `100` | Stop after saving this many reviews for each game. Set to `0` to collect every review a game has, up to a maximum of 10,000 per game. |
| `maxReviewsTotal` | integer | `500` | Stop the whole run once this many reviews have been saved across all games. Set to `0` for no limit, up to a maximum of 50,000 per run. |

#### Sorting

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `sortBy` | string | `"Most helpful first"` | The order reviews are returned in. Options: **Most helpful first**, **Newest first**, **Oldest first**, **Highest rated first**, **Lowest rated first**, **Least helpful first**. This decides which reviews you get when you are not collecting all of them. |

#### Filters

Narrow down which reviews are saved. Leave everything empty to keep them all — you are only charged for reviews that match your filters and get saved.

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `languages` | array | `[]` | Language codes to keep, for example `en`, `de` or `pt`. Short codes also match regional variants — `en` matches `en-US`, `pt` matches `pt-BR`. Leave empty for all languages. |
| `ratings` | array | `[]` | Keep only reviews with these star ratings: **1 star**, **2 stars**, **3 stars**, **4 stars**, **5 stars**. Leave empty for all ratings. |
| `verifiedOwnersOnly` | boolean | `false` | Only keep reviews from players GOG has confirmed own the game. |
| `startDate` | string | `""` | Only keep reviews posted on or after this date (`YYYY-MM-DD`). |
| `endDate` | string | `""` | Only keep reviews posted on or before this date (`YYYY-MM-DD`). |

### Output

One row per review, with the game's details and rating context attached to every row. Fields with no value are left out rather than filled with empties, so your export stays clean.

```json
{
  "reviewId": "5f2c8e1a4b9d3c7e6a1f0b28",
  "reviewTitle": "Still the benchmark for open-world RPGs",
  "reviewText": "Two hundred hours in and the side quests are still better written than most games' main stories. Blood and Wine alone is worth the price.",
  "rating": 5,
  "language": "en-US",
  "createdAt": "2025-11-14T09:22:41+00:00",
  "updatedAt": "2025-11-15T18:04:02+00:00",
  "upvotes": 214,
  "downvotes": 11,
  "helpfulnessScore": 203,
  "verifiedOwner": true,
  "labels": ["verified_owner"],
  "isMostHelpful": true,
  "reviewerId": "48291733052881946",
  "reviewerUsername": "kaer_morhen_fan",
  "reviewerAvatarUrl": "https://images.gog.com/2f7a1c9d4e_avatar_medium.jpg",
  "reviewerGamesOwned": 412,
  "reviewerReviewCount": 37,
  "productId": "1207664663",
  "productTitle": "The Witcher 3: Wild Hunt",
  "productSlug": "the_witcher_3_wild_hunt",
  "productUrl": "https://www.gog.com/game/the_witcher_3_wild_hunt",
  "productType": "pack",
  "productReleaseDate": "2015-05-18T00:00:00+02:00",
  "gameAverageRating": 4.7,
  "gameFilteredAverageRating": 4.8,
  "gameReviewCount": 1645,
  "gameRatingCount": 12981,
  "scrapedAt": "2026-07-25T11:04:19Z"
}
```

#### Review Fields

| Field | Type | Description |
|-------|------|-------------|
| `reviewId` | string | GOG's unique identifier for the review |
| `reviewTitle` | string | The review headline |
| `reviewText` | string | Full review body text |
| `rating` | integer | Star rating, 1 to 5 |
| `language` | string | Language tag of the review, e.g. `en-US`, `it`, `zh-Hans` |
| `createdAt` | string | When the review was posted (ISO 8601) |
| `updatedAt` | string | When the review was last edited (ISO 8601); absent if never edited |
| `verifiedOwner` | boolean | `true` when GOG has confirmed the reviewer owns the game |
| `labels` | array | All badges GOG attached to the review, e.g. `verified_owner` |

#### Votes & Helpfulness

| Field | Type | Description |
|-------|------|-------------|
| `upvotes` | integer | Players who marked the review helpful |
| `downvotes` | integer | Players who marked the review unhelpful |
| `helpfulnessScore` | integer | Upvotes minus downvotes, precomputed for sorting in spreadsheets |
| `isMostHelpful` | boolean | `true` for the single review GOG pins as most helpful for this game |

#### Reviewer Fields

| Field | Type | Description |
|-------|------|-------------|
| `reviewerId` | string | GOG user identifier for the reviewer |
| `reviewerUsername` | string | Reviewer's public display name |
| `reviewerAvatarUrl` | string | Link to the reviewer's avatar image |
| `reviewerGamesOwned` | integer | Number of games in the reviewer's GOG library |
| `reviewerReviewCount` | integer | Total reviews this player has written |

#### Game Context Fields

| Field | Type | Description |
|-------|------|-------------|
| `productId` | string | GOG product ID of the game |
| `productTitle` | string | Game title |
| `productSlug` | string | Store URL slug for the game |
| `productUrl` | string | Link to the game's GOG store page |
| `productType` | string | `game`, `dlc` or `pack` |
| `productReleaseDate` | string | Release date (ISO 8601) |
| `gameAverageRating` | number | The game's overall average rating, 1 to 5 |
| `gameFilteredAverageRating` | number | Average rating within the filters you applied |
| `gameReviewCount` | integer | Total written reviews the game has |
| `gameRatingCount` | integer | Total star ratings the game has, including ratings with no text |
| `scrapedAt` | string | When the row was collected (ISO 8601) |

Three ready-made views are available in the results tab: **All reviews**, **Most helpful** (sorted by net helpfulness), and **Reviewers** (reviewer profile columns front and centre).

### Tips for Best Results

- **GOG only stores reviews that have written text.** The Witcher 3 shows 12,981 star ratings but only 1,645 written reviews — the rest are ratings with no text and cannot be collected by anyone. Check `gameRatingCount` against `gameReviewCount` on any row to see the gap before assuming a run came up short.
- **Pair a star filter with a rating-ordered sort.** Leaving `sortBy` on the default lets a 4-and-5-star pull finish in a fraction of the requests, because collection starts at the matching end of the rating scale and stops as soon as it passes your selection. Combining a star filter with **Newest first** instead makes the run scan the game's history looking for matches, which is slower and can return fewer rows on a very popular title.
- **Use "Newest first" with a start date for recurring monitoring.** Set `startDate` to your last run's date and the collection stops as soon as it reaches older reviews — ideal for a daily or weekly sentiment feed.
- **Use "Most helpful first" for marketing quotes.** The top reviews by community vote are the ones players actually read, and `isMostHelpful` marks the exact review GOG surfaces on the store page.
- **Give product IDs instead of links when you have them.** A numeric ID skips the game lookup step, which adds up across a large batch of titles.
- **Use short language codes.** Enter `pt` rather than `pt-BR` — short codes match every regional variant, while an over-specific tag can miss reviews filed under the bare code.
- **Set `maxReviewsTotal` to `0` deliberately.** It means "no run-wide cap" (up to 50,000), not "collect nothing" — pair it with a per-game limit when batching many titles so one blockbuster does not consume the whole run.

### Pricing

**From $0.02 per 1,000 results** — one of the cheapest per-review rates for GOG data. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $0.0024 | $0.0023 | $0.0021 | $0.0020 |
| 1,000 | $0.024 | $0.0225 | $0.021 | $0.020 |
| 10,000 | $0.24 | $0.225 | $0.21 | $0.20 |
| 100,000 | $2.40 | $2.25 | $2.10 | $2.00 |

A fixed **$0.005 per-run start fee** applies on top of the per-result price. One result is one saved review row — reviews filtered out by your settings are never charged. No compute or time-based charges — you pay per result, plus a small fixed per-run start fee.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications when new reviews appear
- **Webhooks** — Trigger your own services on run completion
- **Apify API** — Full programmatic access to runs and results

### Legal & Ethical Use

This scraper collects only publicly available reviews from GOG.com — content any visitor can read without logging in. Reviewer usernames and avatars are public profile details published by the reviewers themselves.

You are responsible for how you use the collected data. Review GOG's terms of service before running large-scale collection, respect applicable data-protection law (including GDPR and CCPA) when handling reviewer information, and keep usage to legitimate purposes such as market research, competitive analysis, product feedback, and academic study. Do not use the output to contact, profile, or harass individual reviewers, and do not republish review text in a way that misrepresents its author.

# Actor input Schema

## `gameUrls` (type: `array`):

Paste GOG store page links, for example https://www.gog.com/game/the\_witcher\_3\_wild\_hunt. Works with any GOG game, DLC or bundle page.

## `productIds` (type: `array`):

GOG product ID numbers, for example 1207664663 for The Witcher 3. Slightly faster than links because the game does not need to be looked up first.

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

Stop after saving this many reviews for each game. Set to 0 to collect every review a game has, up to a maximum of 10,000 per game. Popular games have thousands of reviews, so keep this modest unless you really want the full history.

## `maxReviewsTotal` (type: `integer`):

Stop the whole run once this many reviews have been saved across all games. Set to 0 for no limit, up to a maximum of 50,000 per run.

## `sortBy` (type: `string`):

The order GOG returns reviews in. This decides which reviews you get when you are not collecting all of them — 'Most helpful first' gives you the reviews other players voted up, 'Newest first' gives you current sentiment.

## `languages` (type: `array`):

Language codes to keep, for example en, de or pt. Short codes also match regional variants — 'en' matches 'en-US', 'pt' matches 'pt-BR'. Leave empty for all languages. Applied by GOG, so it does not slow the run down.

## `ratings` (type: `array`):

Keep only reviews with these star ratings. Leave empty for all ratings. GOG does not offer a star filter, so this actor sorts by rating and stops as soon as it passes your selection — usually just one or two pages. If you also choose a specific sort order, the actor instead scans up to 10,000 reviews per game looking for matches, so rare ratings on a very popular game may return fewer results than the limits you set.

## `verifiedOwnersOnly` (type: `boolean`):

Only keep reviews from players GOG has confirmed own the game. GOG applies this filter itself, so it makes runs faster rather than slower.

## `startDate` (type: `string`):

Only keep reviews posted on or after this date (YYYY-MM-DD). Applied by GOG, so it does not slow the run down.

## `endDate` (type: `string`):

Only keep reviews posted on or before this date (YYYY-MM-DD). Applied by GOG. If you set both a start and an end date, GOG applies whichever narrows the results more and the actor applies the other.

## Actor input object example

```json
{
  "gameUrls": [
    "https://www.gog.com/game/the_witcher_3_wild_hunt"
  ],
  "productIds": [],
  "maxReviewsPerGame": 100,
  "maxReviewsTotal": 500,
  "sortBy": "desc:votes",
  "languages": [],
  "ratings": []
}
```

# Actor output Schema

## `overview` (type: `string`):

Every collected review with its rating, text, author and game.

## `mostHelpful` (type: `string`):

Reviews ranked by community votes, with the helpfulness score and verified-owner flag.

## `reviewers` (type: `string`):

Who wrote each review — username, library size and how many reviews they have posted.

# 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 = {
    "gameUrls": [
        "https://www.gog.com/game/the_witcher_3_wild_hunt"
    ],
    "productIds": [],
    "maxReviewsPerGame": 100,
    "maxReviewsTotal": 500,
    "sortBy": "desc:votes",
    "languages": [],
    "ratings": [],
    "verifiedOwnersOnly": false,
    "startDate": "",
    "endDate": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/gog-game-review-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 = {
    "gameUrls": ["https://www.gog.com/game/the_witcher_3_wild_hunt"],
    "productIds": [],
    "maxReviewsPerGame": 100,
    "maxReviewsTotal": 500,
    "sortBy": "desc:votes",
    "languages": [],
    "ratings": [],
    "verifiedOwnersOnly": False,
    "startDate": "",
    "endDate": "",
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/gog-game-review-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "gameUrls": [
    "https://www.gog.com/game/the_witcher_3_wild_hunt"
  ],
  "productIds": [],
  "maxReviewsPerGame": 100,
  "maxReviewsTotal": 500,
  "sortBy": "desc:votes",
  "languages": [],
  "ratings": [],
  "verifiedOwnersOnly": false,
  "startDate": "",
  "endDate": ""
}' |
apify call solidcode/gog-game-review-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=solidcode/gog-game-review-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "GOG Game Review Scraper",
        "description": "[💰 $0.02 / 1K] Extract GOG.com game reviews: 1-5 star ratings, full review text, verified-owner labels, helpful/unhelpful votes, reviewer profiles and game rating context. Target games by store URL or product ID, sort 6 ways, filter by language, rating, date and owner.",
        "version": "1.0",
        "x-build-id": "KDRc23H5ubKSDlfeV"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~gog-game-review-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-gog-game-review-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/solidcode~gog-game-review-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-gog-game-review-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/solidcode~gog-game-review-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-gog-game-review-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "gameUrls": {
                        "title": "Game store links",
                        "type": "array",
                        "description": "Paste GOG store page links, for example https://www.gog.com/game/the_witcher_3_wild_hunt. Works with any GOG game, DLC or bundle page.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "productIds": {
                        "title": "Product IDs",
                        "type": "array",
                        "description": "GOG product ID numbers, for example 1207664663 for The Witcher 3. Slightly faster than links because the game does not need to be looked up first.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxReviewsPerGame": {
                        "title": "Reviews per game",
                        "minimum": 0,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Stop after saving this many reviews for each game. Set to 0 to collect every review a game has, up to a maximum of 10,000 per game. Popular games have thousands of reviews, so keep this modest unless you really want the full history."
                    },
                    "maxReviewsTotal": {
                        "title": "Total reviews for the run",
                        "minimum": 0,
                        "maximum": 50000,
                        "type": "integer",
                        "description": "Stop the whole run once this many reviews have been saved across all games. Set to 0 for no limit, up to a maximum of 50,000 per run."
                    },
                    "sortBy": {
                        "title": "Sort reviews by",
                        "enum": [
                            "desc:votes",
                            "desc:date",
                            "asc:date",
                            "desc:rating",
                            "asc:rating",
                            "asc:votes"
                        ],
                        "type": "string",
                        "description": "The order GOG returns reviews in. This decides which reviews you get when you are not collecting all of them — 'Most helpful first' gives you the reviews other players voted up, 'Newest first' gives you current sentiment."
                    },
                    "languages": {
                        "title": "Languages",
                        "type": "array",
                        "description": "Language codes to keep, for example en, de or pt. Short codes also match regional variants — 'en' matches 'en-US', 'pt' matches 'pt-BR'. Leave empty for all languages. Applied by GOG, so it does not slow the run down.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ratings": {
                        "title": "Star ratings",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Keep only reviews with these star ratings. Leave empty for all ratings. GOG does not offer a star filter, so this actor sorts by rating and stops as soon as it passes your selection — usually just one or two pages. If you also choose a specific sort order, the actor instead scans up to 10,000 reviews per game looking for matches, so rare ratings on a very popular game may return fewer results than the limits you set.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "1",
                                "2",
                                "3",
                                "4",
                                "5"
                            ],
                            "enumTitles": [
                                "1 star",
                                "2 stars",
                                "3 stars",
                                "4 stars",
                                "5 stars"
                            ]
                        }
                    },
                    "verifiedOwnersOnly": {
                        "title": "Verified owners only",
                        "type": "boolean",
                        "description": "Only keep reviews from players GOG has confirmed own the game. GOG applies this filter itself, so it makes runs faster rather than slower."
                    },
                    "startDate": {
                        "title": "Posted on or after",
                        "type": "string",
                        "description": "Only keep reviews posted on or after this date (YYYY-MM-DD). Applied by GOG, so it does not slow the run down."
                    },
                    "endDate": {
                        "title": "Posted on or before",
                        "type": "string",
                        "description": "Only keep reviews posted on or before this date (YYYY-MM-DD). Applied by GOG. If you set both a start and an end date, GOG applies whichever narrows the results more and the actor applies the other."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
