{
  "openapi": "3.0.1",
  "info": {
    "title": "Steam Game Data Scraper — Global Pricing, Reviews & Metadata",
    "description": "Scrape Steam game data across 60 countries — pricing, user reviews, top sellers, Metacritic scores, and metadata. Browse by tag (genre). The affordable SteamDB / Gamalytic alternative for indie developers, publishers, and market researchers. Just pick a tag and click Start — zero config needed.",
    "version": "0.1",
    "x-build-id": "Pf7iU5hnT6wVAF8mc"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/slothtechlabs~steam-game-data-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-slothtechlabs-steam-game-data-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/slothtechlabs~steam-game-data-scraper/runs": {
      "post": {
        "operationId": "runs-sync-slothtechlabs-steam-game-data-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/slothtechlabs~steam-game-data-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-slothtechlabs-steam-game-data-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": [
          "tags"
        ],
        "properties": {
          "tags": {
            "title": "Steam Tags",
            "type": "array",
            "description": "Pick one or more Steam tags. Multiple tags = AND filter (games must match all). Default: Roguelike.",
            "items": {
              "type": "string",
              "enum": [
                "Action",
                "Adventure",
                "Arcade",
                "Action-Adventure",
                "Casual",
                "Fantasy",
                "Fighting",
                "Free to Play",
                "Horror",
                "Indie",
                "JRPG",
                "Massively Multiplayer",
                "Metroidvania",
                "Open World",
                "Pixel Graphics",
                "Platformer",
                "Puzzle",
                "RPG",
                "Racing",
                "Rogue-lite",
                "Roguelike",
                "Sandbox",
                "Shooter",
                "Simulation",
                "Souls-like",
                "Strategy",
                "Survival"
              ],
              "enumTitles": [
                "Action",
                "Adventure",
                "Arcade",
                "Action-Adventure",
                "Casual",
                "Fantasy",
                "Fighting",
                "Free to Play",
                "Horror",
                "Indie",
                "JRPG",
                "Massively Multiplayer",
                "Metroidvania",
                "Open World",
                "Pixel Graphics",
                "Platformer",
                "Puzzle",
                "RPG",
                "Racing",
                "Rogue-lite",
                "Roguelike",
                "Sandbox",
                "Shooter",
                "Simulation",
                "Souls-like",
                "Strategy",
                "Survival"
              ]
            },
            "default": [
              "Roguelike"
            ]
          },
          "countryCodes": {
            "title": "Countries (for pricing)",
            "type": "array",
            "description": "Select countries for regional pricing. Each country adds one row per game (Max games × countries = total rows). Note: Steam ranks tag search results per country, so selecting multiple countries may return partially different game sets — a title popular in Japan may not appear in the US top results, and vice versa. This reflects Steam's regional popularity ordering, not a scraper issue. To maximize overlap, increase Max games.",
            "items": {
              "type": "string",
              "enum": [
                "us",
                "gb",
                "jp",
                "kr",
                "cn",
                "de",
                "fr",
                "au",
                "ca",
                "br",
                "in",
                "mx",
                "it",
                "es",
                "nl",
                "se",
                "no",
                "dk",
                "fi",
                "ch",
                "at",
                "be",
                "pt",
                "ie",
                "nz",
                "sg",
                "hk",
                "tw",
                "th",
                "my",
                "ph",
                "id",
                "vn",
                "sa",
                "ae",
                "il",
                "tr",
                "ru",
                "pl",
                "cz",
                "hu",
                "ro",
                "bg",
                "hr",
                "sk",
                "si",
                "lt",
                "lv",
                "ee",
                "gr",
                "ua",
                "za",
                "ng",
                "ke",
                "eg",
                "ar",
                "cl",
                "co",
                "pe",
                "pk"
              ],
              "enumTitles": [
                "🇺🇸 United States",
                "🇬🇧 United Kingdom",
                "🇯🇵 Japan",
                "🇰🇷 South Korea",
                "🇨🇳 China",
                "🇩🇪 Germany",
                "🇫🇷 France",
                "🇦🇺 Australia",
                "🇨🇦 Canada",
                "🇧🇷 Brazil",
                "🇮🇳 India",
                "🇲🇽 Mexico",
                "🇮🇹 Italy",
                "🇪🇸 Spain",
                "🇳🇱 Netherlands",
                "🇸🇪 Sweden",
                "🇳🇴 Norway",
                "🇩🇰 Denmark",
                "🇫🇮 Finland",
                "🇨🇭 Switzerland",
                "🇦🇹 Austria",
                "🇧🇪 Belgium",
                "🇵🇹 Portugal",
                "🇮🇪 Ireland",
                "🇳🇿 New Zealand",
                "🇸🇬 Singapore",
                "🇭🇰 Hong Kong",
                "🇹🇼 Taiwan",
                "🇹🇭 Thailand",
                "🇲🇾 Malaysia",
                "🇵🇭 Philippines",
                "🇮🇩 Indonesia",
                "🇻🇳 Vietnam",
                "🇸🇦 Saudi Arabia",
                "🇦🇪 UAE",
                "🇮🇱 Israel",
                "🇹🇷 Turkey",
                "🇷🇺 Russia",
                "🇵🇱 Poland",
                "🇨🇿 Czech Republic",
                "🇭🇺 Hungary",
                "🇷🇴 Romania",
                "🇧🇬 Bulgaria",
                "🇭🇷 Croatia",
                "🇸🇰 Slovakia",
                "🇸🇮 Slovenia",
                "🇱🇹 Lithuania",
                "🇱🇻 Latvia",
                "🇪🇪 Estonia",
                "🇬🇷 Greece",
                "🇺🇦 Ukraine",
                "🇿🇦 South Africa",
                "🇳🇬 Nigeria",
                "🇰🇪 Kenya",
                "🇪🇬 Egypt",
                "🇦🇷 Argentina",
                "🇨🇱 Chile",
                "🇨🇴 Colombia",
                "🇵🇪 Peru",
                "🇵🇰 Pakistan"
              ]
            },
            "default": [
              "us"
            ]
          },
          "maxResults": {
            "title": "Max games",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of games to return (1–10,000). Total rows = games × countries.",
            "default": 100
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "Relevance",
              "Release Date",
              "User Reviews",
              "Top Sellers",
              "Name"
            ],
            "type": "string",
            "description": "Sort order for browse results.",
            "default": "Relevance"
          },
          "includeEnrichedFields": {
            "title": "Include enriched fields (developer, Metacritic, genres, description)",
            "type": "boolean",
            "description": "Fetch Steam appdetails for each game to add developer, publisher, Metacritic score, genres, description, and screenshots. Increases run time but not price per row. Note: Metacritic score is only populated for titles actually reviewed by Metacritic (mostly AAA games) — indie and smaller titles will show Metacritic as empty. This is not a scraper issue; Steam simply has no Metacritic data for those games.",
            "default": false
          },
          "minReviews": {
            "title": "Minimum reviews",
            "minimum": 0,
            "type": "integer",
            "description": "Only include games with at least this many user reviews. Set to 0 for no filter. Newly released titles may have very few reviews — raise this value (e.g. 500+) to filter to games with established reputations.",
            "default": 0
          },
          "maxPrice": {
            "title": "Max price (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include games at or below this price, compared in USD (regardless of the selected countries). Set to 0 for free-to-play only. Leave empty for no filter. The filter uses the game's base price in Steam's internal USD value; rows for other currencies are still returned but filtered on the same USD reference."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional proxy to avoid rate limits at scale.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}