{
  "openapi": "3.0.1",
  "info": {
    "title": "Steam Reviews Scraper – Game Reviews, Filters & Only-New Mode",
    "description": "Scrape Steam user reviews for any game by app ID, store URL or name. Filter by language, positive/negative, Steam purchase and date; get playtime, votes and helpfulness, plus a per-game summary with score, price and genres. Only-new mode for monitoring. No login.",
    "version": "0.1",
    "x-build-id": "Siu7ZxDelxy8Jcj8U"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/gazidev~steam-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-gazidev-steam-reviews-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/gazidev~steam-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-gazidev-steam-reviews-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/gazidev~steam-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-gazidev-steam-reviews-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",
        "required": [
          "apps"
        ],
        "properties": {
          "apps": {
            "title": "Steam games (app IDs, store URLs or names)",
            "type": "array",
            "description": "One per line: a numeric app ID (`620`), a Steam store or community URL (`https://store.steampowered.com/app/1145360/Hades/`, `steamcommunity.com/app/570/reviews`) or a game name (`Stardew Valley`, resolved with the Steam store search; the best match is used).",
            "default": [
              "https://store.steampowered.com/app/1145360/Hades/",
              "620"
            ],
            "items": {
              "type": "string"
            }
          },
          "maxReviewsPerApp": {
            "title": "Max reviews per game",
            "minimum": 0,
            "type": "integer",
            "description": "Per game and language. 0 = all reviews (popular games have hundreds of thousands; set a maximum cost per run). You pay only for reviews saved.",
            "default": 100
          },
          "maxItems": {
            "title": "Max reviews in total",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many reviews across all games (0 = no limit).",
            "default": 0
          },
          "sortBy": {
            "title": "Sort / filter",
            "enum": [
              "recent",
              "updated",
              "all"
            ],
            "type": "string",
            "description": "Steam's `filter` parameter. Use **Most recent** for monitoring and date ranges. **Recently updated** also returns edited reviews again in only-new mode.",
            "default": "recent"
          },
          "languages": {
            "title": "Languages",
            "type": "array",
            "description": "Steam review languages (`english`, `german`, `schinese`, `brazilian` …). Leave `all` for every language. Several languages are read one after another; ISO codes like `en`, `de`, `pt-br` also work.",
            "items": {
              "type": "string",
              "enum": [
                "all",
                "english",
                "schinese",
                "tchinese",
                "japanese",
                "koreana",
                "thai",
                "bulgarian",
                "czech",
                "danish",
                "german",
                "spanish",
                "latam",
                "greek",
                "french",
                "italian",
                "indonesian",
                "hungarian",
                "dutch",
                "norwegian",
                "polish",
                "portuguese",
                "brazilian",
                "romanian",
                "russian",
                "finnish",
                "swedish",
                "turkish",
                "vietnamese",
                "ukrainian",
                "arabic"
              ]
            },
            "default": [
              "all"
            ]
          },
          "reviewType": {
            "title": "Review type",
            "enum": [
              "all",
              "positive",
              "negative"
            ],
            "type": "string",
            "description": "Only recommended or only not-recommended reviews.",
            "default": "all"
          },
          "purchaseType": {
            "title": "Purchase type",
            "enum": [
              "all",
              "steam",
              "non_steam_purchase"
            ],
            "type": "string",
            "description": "Steam's `purchase_type` filter.",
            "default": "all"
          },
          "reviewsAfter": {
            "title": "Only reviews after",
            "type": "string",
            "description": "Keep reviews created on or after this date (updated date when sorting by Recently updated). Absolute (`2026-09-01`) or relative (`30 days`). Paging stops at the first older review."
          },
          "reviewsBefore": {
            "title": "Only reviews before",
            "type": "string",
            "description": "Keep reviews created before this date."
          },
          "dayRange": {
            "title": "Day range (Most helpful only)",
            "minimum": 0,
            "maximum": 365,
            "type": "integer",
            "description": "Steam's `day_range`: with sort *Most helpful*, only reviews from the last N days (max 365, 0 = off).",
            "default": 0
          },
          "includeOffTopicActivity": {
            "title": "Include off-topic review activity (review bombs)",
            "type": "boolean",
            "description": "Steam hides reviews posted during detected off-topic review bombs by default. Turn on to include them.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new reviews since the last run",
            "type": "boolean",
            "description": "Remembers the review IDs already delivered (named key-value store `steam-reviews-scraper-state`) and returns only reviews that appeared since the previous run. Schedule it hourly or daily for alerts to Slack, email or Sheets. The first run returns the latest reviews up to the limits.",
            "default": false
          },
          "stateKey": {
            "title": "Monitoring state name",
            "type": "string",
            "description": "Optional. By default the memory is tied to this list of games and filters. Set a name to keep the memory when you edit the input."
          },
          "includeAppSummary": {
            "title": "Add a summary row per game",
            "type": "boolean",
            "description": "One `app-summary` row per game: Steam review score (e.g. Very Positive), positive/negative totals for your filters, % positive, price and discount, genres, developers, release date, Metacritic, plus counts for this run. Charged once per game.",
            "default": true
          },
          "country": {
            "title": "Store country (for price)",
            "type": "string",
            "description": "2-letter country code for the price in the summary row and for name search (`us`, `gb`, `de`, `tr`).",
            "default": "us"
          },
          "authorIdMode": {
            "title": "Reviewer Steam ID",
            "enum": [
              "omit",
              "hashed",
              "raw"
            ],
            "type": "string",
            "description": "Steam IDs identify people, so they are left out by default. **Hashed** adds `authorIdHash` (HMAC-SHA256 with a secret salt kept in your account) to count repeat reviewers without storing IDs. **Raw** adds `authorSteamId`, `authorProfileUrl` and `reviewUrl`; only use it if you have a lawful basis (GDPR) to process them. Playtime and review counts are always included.",
            "default": "omit"
          },
          "hashSalt": {
            "title": "Hash salt (optional)",
            "type": "string",
            "description": "Only for the hashed mode: your own secret salt, e.g. to get the same hashes in several Apify accounts."
          },
          "maxConcurrency": {
            "title": "Games in parallel",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Requests are throttled globally (about 2.5 review pages per second, appdetails every 1.6 s) whatever this value is.",
            "default": 2
          },
          "requestTimeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "Failed requests (429, 5xx, timeouts) are retried up to 4 times with backoff.",
            "default": 30
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Usually not needed: these public JSON endpoints are plain HTTP and do not need residential IPs. Add a proxy only if your runs get HTTP 429/403.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}