{
  "openapi": "3.0.1",
  "info": {
    "title": "Steam Game & Reviews Scraper",
    "description": "Scrape Steam game metadata, pricing, genres, Metacritic scores & user reviews using Steam's public API. Supports bulk app IDs, store URLs & keyword search. No proxy needed.",
    "version": "1.0",
    "x-build-id": "4YIKfzzgvzrf2my7m"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/logiover~steam-game-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-logiover-steam-game-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/logiover~steam-game-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-logiover-steam-game-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/logiover~steam-game-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-logiover-steam-game-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",
        "properties": {
          "startUrls": {
            "title": "Steam Store URLs",
            "type": "array",
            "description": "Steam store page URLs to scrape. The scraper extracts the App ID from each URL automatically. Example: https://store.steampowered.com/app/570/Dota_2/ — the number after /app/ is the App ID. Can be combined with the App IDs and Search Queries fields.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "appIds": {
            "title": "App IDs",
            "type": "array",
            "description": "Steam App IDs to scrape directly. Find the ID in the store URL: store.steampowered.com/app/570 → enter 570. Examples: '570' (Dota 2), '730' (CS2), '1091500' (Cyberpunk 2077). Can be combined with Start URLs and Search Queries.",
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "Search Queries",
            "type": "array",
            "description": "Keywords to search on the Steam Store. Each query returns up to 20 matching games whose App IDs are then scraped. Examples: 'open world RPG', 'indie horror', 'city builder'. Can be combined with Start URLs and App IDs.",
            "items": {
              "type": "string"
            }
          },
          "scrapeGameDetails": {
            "title": "Scrape Game Details",
            "type": "boolean",
            "description": "When enabled, fetches full game metadata for each app: name, price, discount, genres, categories, developers, publishers, release date, Metacritic score, supported platforms and header image.",
            "default": true
          },
          "scrapeReviews": {
            "title": "Scrape Reviews",
            "type": "boolean",
            "description": "When enabled, fetches user reviews for each game using Steam's cursor-based review API. Each review record includes the review text, recommendation, hours played, helpful votes, language and developer response if any.",
            "default": true
          },
          "maxReviews": {
            "title": "Max Reviews per Game",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of reviews to fetch per game. Steam returns up to 100 reviews per API page and paginates automatically. Set to 0 for unlimited reviews (use with caution on popular games with tens of thousands of reviews)."
          },
          "reviewLanguage": {
            "title": "Review Language",
            "type": "string",
            "description": "Language filter for reviews. Use 'all' to include reviews in every language. For a specific language enter the Steam language code: 'english', 'turkish', 'german', 'french', 'spanish', 'portuguese', 'russian', 'schinese', 'japanese', 'koreana'.",
            "default": "all"
          },
          "reviewFilter": {
            "title": "Review Sort Order",
            "enum": [
              "recent",
              "helpful",
              "updated",
              "all"
            ],
            "type": "string",
            "description": "Determines how reviews are sorted and returned. 'recent' returns the newest reviews first. 'helpful' returns reviews with the most helpful votes first. 'updated' returns reviews that were recently edited. 'all' uses Steam's default weighted sort.",
            "default": "recent"
          },
          "reviewType": {
            "title": "Review Type",
            "enum": [
              "all",
              "positive",
              "negative"
            ],
            "type": "string",
            "description": "Filter reviews by sentiment. 'all' returns both positive and negative reviews. 'positive' returns only recommended reviews. 'negative' returns only reviews where the player did not recommend the game.",
            "default": "all"
          },
          "maxGames": {
            "title": "Max Games",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum total number of games to scrape across all inputs combined. Set to 0 for unlimited. Useful for test runs when combined with large search queries."
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Proxy settings for requests to the Steam API. A proxy is not required for most runs as Steam's public API is accessible without one. Enable if you encounter rate limiting or access blocks."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}