{
  "openapi": "3.0.1",
  "info": {
    "title": "Steam Scraper: Reviews, Achievements, News & Players",
    "description": "Scrape Steam game details (price, genres, platforms, Metacritic), up to 100 recent reviews per game, achievement unlock rates, live player counts and news from an App ID or game name. Export CSV, Excel, JSON. No login or API key. Failed or empty rows are never billed.",
    "version": "0.2",
    "x-build-id": "SmC1J2iwkapdgqM1W"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/recordsdata~steam-games-player-stats/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-recordsdata-steam-games-player-stats",
        "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/recordsdata~steam-games-player-stats/runs": {
      "post": {
        "operationId": "runs-sync-recordsdata-steam-games-player-stats",
        "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/recordsdata~steam-games-player-stats/run-sync": {
      "post": {
        "operationId": "run-sync-recordsdata-steam-games-player-stats",
        "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": {
          "appIds": {
            "title": "Steam App IDs",
            "maxItems": 10000,
            "type": "array",
            "description": "Numeric Steam App IDs to fetch directly, for example 730 (Counter-Strike 2) or 413150 (Stardew Valley). Find the ID in any store.steampowered.com/app/{id} URL (the full store URL also works). Give App IDs, game names, search keywords or tags (any mix). Clear this list when you only want a keyword or tag search.",
            "items": {
              "type": "string"
            }
          },
          "gameNames": {
            "title": "Game Names",
            "maxItems": 500,
            "type": "array",
            "description": "Game names to look up through Steam search and resolve to a Steam App ID, for example Stardew Valley or Hades. The top search match is used. Names that resolve to an App ID already listed above are not fetched twice.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Maximum number of records to deliver in total, shared across game details, reviews, achievements, player counts and news. Free users are limited to 10; leave empty for no limit on paid plans. Each delivered record is one billable event."
          },
          "searchQueries": {
            "title": "Search keywords",
            "maxItems": 50,
            "type": "array",
            "description": "Steam Store search terms, for example farming or roguelike deckbuilder. Each keyword is searched separately and returns up to \"Games per search\".",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "searchTags": {
            "title": "Genre / tag filter",
            "maxItems": 10,
            "type": "array",
            "description": "Steam tag or genre names (for example RPG, Roguelike, Open World, Farming Sim) or numeric tag IDs. A game must carry ALL the tags listed. Works alone or together with a keyword. At most 10 tags.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "searchSort": {
            "title": "Search order",
            "enum": [
              "relevance",
              "topsellers",
              "newest",
              "reviews"
            ],
            "type": "string",
            "description": "How the store orders the games found by keyword or tag.",
            "default": "relevance"
          },
          "maxGamesPerSearch": {
            "title": "Games per search",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum number of games to deliver for each keyword (or for the tag filter). Capped at 500. Games removed by the filters below do not count and are not billed.",
            "default": 10
          },
          "minMetacritic": {
            "title": "Minimum Metacritic score",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Only games with a Metacritic score at or above this value. Games without a score are skipped. 0 turns the filter off. A high value over a broad search scans many games and delivers few; the run stops early when nothing matches for a while.",
            "default": 0
          },
          "onSaleOnly": {
            "title": "On sale only",
            "type": "boolean",
            "description": "Only games with an active discount in the chosen store country. Cannot be combined with \"Free games only\".",
            "default": false
          },
          "freeOnly": {
            "title": "Free games only",
            "type": "boolean",
            "description": "Only free-to-play and free games.",
            "default": false
          },
          "maxPrice": {
            "title": "Maximum price",
            "minimum": 0,
            "type": "number",
            "description": "Only games priced at or below this amount in the currency of the chosen store country (for example 10 for 10 USD in the US store). Free games always pass. Leave empty for no price limit."
          },
          "includeReviews": {
            "title": "Reviews",
            "type": "boolean",
            "description": "Individual user reviews, with review text, recommendation, playtime and helpful votes. Tune them in the review settings below.",
            "default": true
          },
          "includeAchievementStats": {
            "title": "Achievement stats",
            "type": "boolean",
            "description": "Global unlock percentage for every achievement in the game.",
            "default": false
          },
          "includePlayerCount": {
            "title": "Live player count",
            "type": "boolean",
            "description": "Current concurrent player count snapshot. Useful to track over time on a schedule.",
            "default": false
          },
          "includeNews": {
            "title": "News",
            "type": "boolean",
            "description": "Recent news and patch notes for the game.",
            "default": false
          },
          "maxNewsPerGame": {
            "title": "News items per game",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "How many of the latest news items to fetch for each game when News is on. Capped at 200.",
            "default": 20
          },
          "reviewLanguage": {
            "title": "Review language",
            "enum": [
              "all",
              "arabic",
              "bulgarian",
              "schinese",
              "tchinese",
              "czech",
              "danish",
              "dutch",
              "english",
              "finnish",
              "french",
              "german",
              "greek",
              "hungarian",
              "indonesian",
              "italian",
              "japanese",
              "koreana",
              "norwegian",
              "polish",
              "portuguese",
              "brazilian",
              "romanian",
              "russian",
              "latam",
              "spanish",
              "swedish",
              "thai",
              "turkish",
              "ukrainian",
              "vietnamese"
            ],
            "type": "string",
            "description": "Only reviews written in this language. \"All languages\" returns every language.",
            "default": "all"
          },
          "reviewType": {
            "title": "Review type",
            "enum": [
              "all",
              "positive",
              "negative"
            ],
            "type": "string",
            "description": "Positive (recommended), negative (not recommended) or both.",
            "default": "all"
          },
          "reviewFilter": {
            "title": "Review order",
            "enum": [
              "recent",
              "updated",
              "all"
            ],
            "type": "string",
            "description": "Recent: newest first. Updated: most recently edited first. All: most helpful first (can be limited to a recent window with \"Helpful window\").",
            "default": "recent"
          },
          "reviewDayRange": {
            "title": "Helpful window (days)",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Only used with the \"Most helpful\" order: look at reviews from the last N days (1 to 365). Leave empty for all time."
          },
          "reviewPurchaseType": {
            "title": "Purchase type",
            "enum": [
              "steam",
              "all",
              "non_steam_purchase"
            ],
            "type": "string",
            "description": "Steam purchasers only (the store page default), everyone including key activations, or only reviews from non-Steam purchases.",
            "default": "steam"
          },
          "maxReviewsPerGame": {
            "title": "Reviews per game",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of reviews to fetch for each game, paged 100 at a time. Capped at 10,000. Empty and duplicate reviews are skipped and not billed.",
            "default": 100
          },
          "country": {
            "title": "Store country",
            "enum": [
              "us",
              "gb",
              "de",
              "fr",
              "es",
              "it",
              "nl",
              "pl",
              "se",
              "no",
              "dk",
              "fi",
              "pt",
              "ru",
              "ua",
              "tr",
              "br",
              "ar",
              "mx",
              "cl",
              "co",
              "pe",
              "ca",
              "au",
              "nz",
              "jp",
              "kr",
              "tw",
              "hk",
              "sg",
              "in",
              "id",
              "th",
              "vn",
              "ph",
              "my",
              "sa",
              "ae",
              "za",
              "il",
              "cz",
              "hu",
              "ro",
              "bg"
            ],
            "type": "string",
            "description": "Country of the Steam store used for the price on the game record and for the price, sale and free filters.",
            "default": "us"
          },
          "priceCountries": {
            "title": "Compare prices in",
            "maxItems": 20,
            "type": "array",
            "description": "Optional: add a regionalPrices list to each game record with the price in each of these countries (two-letter codes such as us, gb, de, br, jp, tr). At most 20 countries and 150 price requests per run; games beyond that limit are delivered without regional prices.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "onlyNew": {
            "title": "Only new",
            "type": "boolean",
            "description": "Skip reviews and news items that an earlier Only new run already delivered, and deliver the game record, achievement stats and player count at most once per day. Skipped records are not billed. The first Only new run delivers everything.",
            "default": false
          },
          "stateKey": {
            "title": "State label",
            "type": "string",
            "description": "Optional label to keep separate monitors apart (for example \"my-watchlist\"). Runs with the same label share what has been delivered.",
            "default": ""
          },
          "resetSeen": {
            "title": "Reset seen records",
            "type": "boolean",
            "description": "Forget what earlier Only new runs delivered for this label, then start again. Turn it off for the next scheduled run.",
            "default": false
          },
          "steamApiKey": {
            "title": "Steam Web API Key",
            "type": "string",
            "description": "Your own Steam Web API key. Never required: leave blank to skip this extra."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}