{
  "openapi": "3.0.1",
  "info": {
    "title": "Steam Reviews Scraper: Game Reviews & Sentiment",
    "description": "Scrape Steam game reviews: text, recommended flag, helpful and funny votes, playtime at review, purchase type, with language, sentiment and sort filters, plus a game summary row (positive %, price, Metacritic). Tested on 9.9M CS2 reviews. Export CSV, Excel, JSON. No login or API key.",
    "version": "0.2",
    "x-build-id": "AoCHwGF56R5Hyygw2"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/recordsdata~steam-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-recordsdata-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/recordsdata~steam-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-recordsdata-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/recordsdata~steam-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-recordsdata-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": [
          "appIds"
        ],
        "properties": {
          "appIds": {
            "title": "Steam App IDs",
            "minItems": 1,
            "maxItems": 1000,
            "type": "array",
            "description": "Steam app IDs or store URLs of the games to scrape reviews for, for example 730 (Counter-Strike 2), 570 (Dota 2) or https://store.steampowered.com/app/730/. Each game is scraped separately (up to 1,000 games per run).",
            "default": [
              "730"
            ],
            "items": {
              "type": "string"
            }
          },
          "reviewType": {
            "title": "Review type",
            "enum": [
              "all",
              "positive",
              "negative"
            ],
            "type": "string",
            "description": "All, only positive or only negative reviews.",
            "default": "all"
          },
          "purchaseType": {
            "title": "Purchase type",
            "enum": [
              "all",
              "steam",
              "non_steam_purchase"
            ],
            "type": "string",
            "description": "Filter by how the reviewer got the game.",
            "default": "all"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Steam review language code to keep: all, english, spanish, latam, brazilian, german, french, russian, schinese, koreana and others. Use all for every language. Several languages work as a comma list, for example english,spanish. Unknown codes are rejected before anything is charged.",
            "default": "all"
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "recent",
              "updated",
              "all"
            ],
            "type": "string",
            "description": "Order of reviews.",
            "default": "recent"
          },
          "maxReviewsPerGame": {
            "title": "Max reviews per game",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Maximum number of review rows to scrape for each game (1 to 50,000). Reviews are fetched newest, most helpful or recently updated first, per the Sort by option.",
            "default": 200
          },
          "includeGameSummary": {
            "title": "Game summary row",
            "type": "boolean",
            "description": "One row per game with total/positive/negative counts, price, developers and Metacritic score, plus the review-bomb check (reviews hidden by Steam as off-topic, the last 30 days, spike days) and the Steam Deck rating.",
            "default": true
          },
          "dayRange": {
            "title": "Last N days",
            "minimum": 0,
            "maximum": 365,
            "type": "integer",
            "description": "Only reviews written in the last N days (1 to 365). 0 = off. Use either this or the two dates below, not both.",
            "default": 0
          },
          "dateFrom": {
            "title": "From date (optional)",
            "type": "string",
            "description": "Only reviews written on or after this UTC date, format YYYY-MM-DD, for example 2026-01-31. Leave empty for no lower limit.",
            "default": ""
          },
          "dateTo": {
            "title": "To date (optional)",
            "type": "string",
            "description": "Only reviews written on or before this UTC date (the whole day is included), format YYYY-MM-DD, for example 2026-01-31. Leave empty to read up to now.",
            "default": ""
          },
          "filterOffTopic": {
            "title": "Hide off-topic review activity",
            "type": "boolean",
            "description": "On (default, same as the Steam store page): reviews from periods Steam marks as off-topic review activity (review bombs) are left out. Turn it off to also get those reviews, for example to study a review bomb.",
            "default": true
          },
          "minPlaytimeHours": {
            "title": "Min playtime at review (hours)",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Only reviews whose author had played at least this many hours when the review was written. 0 = no minimum.",
            "default": 0
          },
          "maxPlaytimeHours": {
            "title": "Max playtime at review (hours)",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Only reviews whose author had played at most this many hours when the review was written. 0 = no maximum.",
            "default": 0
          },
          "onlyNew": {
            "title": "Only new",
            "type": "boolean",
            "description": "Skip reviews that an earlier Only new run already delivered and deliver the game summary at most once per day. Skipped rows are not billed. The first Only new run delivers everything up to Max reviews per game, so raise that limit if more reviews can arrive between two runs. Best with Sort by Newest first. A run stops after 3 minutes without anything new to deliver, so split watchlists of more than about 300 games across several runs.",
            "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 and the same filters share what has been delivered.",
            "default": ""
          },
          "resetSeen": {
            "title": "Reset seen reviews",
            "type": "boolean",
            "description": "Forget what earlier Only new runs delivered for this label and filters, then start again. Turn it off for the next scheduled run.",
            "default": false
          },
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Maximum total rows to return across all games, including game summary rows. Free users are limited to 10 rows (preview). Paid users: optional, up to 1,000,000. Leave empty for no extra cap beyond the per-game limit."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}