{
  "openapi": "3.0.1",
  "info": {
    "title": "Steam Reviews & Game Data Scraper",
    "description": "Get Steam reviews and game data (price, discount, tags, genres, Metacritic, review score, live player count) from Steam's official public endpoints. Full review history, filters for language, type, purchase and dates. Reviewer IDs hashed by default. Hard spend caps.",
    "version": "1.1",
    "x-build-id": "4GHu4PsptoF5Ss2f3"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/hydrocore~steam-reviews-game-data/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-hydrocore-steam-reviews-game-data",
        "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/hydrocore~steam-reviews-game-data/runs": {
      "post": {
        "operationId": "runs-sync-hydrocore-steam-reviews-game-data",
        "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/hydrocore~steam-reviews-game-data/run-sync": {
      "post": {
        "operationId": "run-sync-hydrocore-steam-reviews-game-data",
        "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": [
          "games"
        ],
        "properties": {
          "games": {
            "title": "Games",
            "type": "array",
            "description": "One game per line. Use a Steam app ID (1245620), a Steam store or community URL (https://store.steampowered.com/app/1245620/ELDEN_RING/) or a game name (Elden Ring). Names are looked up with Steam's store search and the closest match is used; the run log shows which game was picked. The same game listed twice is collected once.",
            "items": {
              "type": "string"
            }
          },
          "maxReviewsPerGame": {
            "title": "Max reviews per game",
            "minimum": 0,
            "maximum": 5000000,
            "type": "integer",
            "description": "Stop collecting a game's reviews after this many. Set 0 to skip reviews and get only game records (turn on \"Include game details\"). With \"Newest first\" or \"Recently updated\" sorting the Actor can go through a game's full review history.",
            "default": 100
          },
          "maxReviewsTotal": {
            "title": "Max reviews in total",
            "minimum": 0,
            "type": "integer",
            "description": "Optional hard limit for the whole run across all games. The run stops when it is reached. 0 means no run-wide limit (only \"Max reviews per game\" applies).",
            "default": 0
          },
          "includeGameDetails": {
            "title": "Include game details",
            "type": "boolean",
            "description": "Also save one game record per game: name, price, discount, currency, release date, developers, publishers, genres, categories, top user tags, Metacritic score, Steam review score and counts, current player count, platforms, languages and more. Charged as one \"Game record\" each.",
            "default": false
          },
          "language": {
            "title": "Review language",
            "enum": [
              "all",
              "english",
              "schinese",
              "tchinese",
              "russian",
              "spanish",
              "latam",
              "brazilian",
              "portuguese",
              "german",
              "french",
              "italian",
              "polish",
              "turkish",
              "ukrainian",
              "japanese",
              "koreana",
              "thai",
              "vietnamese",
              "indonesian",
              "czech",
              "dutch",
              "swedish",
              "danish",
              "finnish",
              "norwegian",
              "hungarian",
              "romanian",
              "greek",
              "bulgarian",
              "arabic"
            ],
            "type": "string",
            "description": "Only reviews written in this language. \"All languages\" usually returns several times more reviews than English alone.",
            "default": "all"
          },
          "reviewType": {
            "title": "Review type",
            "enum": [
              "all",
              "positive",
              "negative"
            ],
            "type": "string",
            "description": "Only positive (\"Recommended\") or only negative (\"Not Recommended\") reviews, or both.",
            "default": "all"
          },
          "purchaseType": {
            "title": "Purchase type",
            "enum": [
              "all",
              "steam",
              "non_steam"
            ],
            "type": "string",
            "description": "Filter by how the reviewer got the game. Note: for free-to-play games Steam counts no one as \"Bought on Steam\", so use \"All reviewers\" for those.",
            "default": "all"
          },
          "sort": {
            "title": "Sort order",
            "enum": [
              "recent",
              "updated",
              "helpful"
            ],
            "type": "string",
            "description": "\"Newest first\" and \"Recently updated\" can page through every review a game has. Steam's \"Most helpful\" list is short: it only holds the top few hundred reviews, so use it for a quick sample.",
            "default": "recent"
          },
          "startDate": {
            "title": "Reviews written on or after",
            "type": "string",
            "description": "Optional. Only reviews created on or after this date (YYYY-MM-DD, UTC). The window is applied by Steam and checked again by the Actor, so old windows are as fast as recent ones."
          },
          "endDate": {
            "title": "Reviews written on or before",
            "type": "string",
            "description": "Optional. Only reviews created on or before this date (YYYY-MM-DD, UTC). The whole day is included."
          },
          "lastDays": {
            "title": "Only the last N days",
            "minimum": 0,
            "type": "integer",
            "description": "Optional shortcut for scheduled runs: only reviews from the last N days (for example 7 for a weekly run). 0 means off. If you also set a start date, the later of the two is used.",
            "default": 0
          },
          "minPlaytimeHours": {
            "title": "Minimum playtime at review (hours)",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep reviews whose author had played at least this many hours when writing the review. 0 = keep all. Skipped reviews are not charged.",
            "default": 0
          },
          "countryCode": {
            "title": "Store country for prices",
            "pattern": "^[A-Za-z]{2}$",
            "type": "string",
            "description": "Two-letter country code used for game prices and discounts, for example us, gb, de, br or jp. Prices are shown in that store's currency.",
            "default": "us"
          },
          "includeRawSteamId": {
            "title": "Include reviewers' raw Steam IDs",
            "type": "boolean",
            "description": "Off by default. Each review then has a hashed reviewer ID (authorId) that stays the same for the same reviewer across your runs but can't be traced back to a Steam profile. Turn this on only if you need the public Steam ID, profile URL and review URL, and make sure you have a lawful reason to process them.",
            "default": false
          },
          "hashSalt": {
            "title": "Your own hashing secret",
            "type": "string",
            "description": "Optional. A secret of your choice used to hash reviewer IDs. Use the same secret to get matching IDs across accounts or tools; change it to make old IDs unlinkable. If empty, a key tied to your Apify account is used."
          },
          "maxSpendUsd": {
            "title": "Max spend (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Optional. The run stops before it would charge more than this amount in total (start fee included). Leave empty for no extra limit. The \"Maximum cost per run\" in Run options is always respected too."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}