{
  "openapi": "3.0.1",
  "info": {
    "title": "Steam Reviews Scraper & Patch Impact Report",
    "description": "Steam reviews scraper: reviews of any Steam game at $0.50 per 1,000, a game report ($0.002): patch impact, update cadence, sentiment history, reply rate, genre benchmark. AI add-ons (why a patch hurt, reply drafts, translation) free until 2026-11-18 (beta), then $0.03 report, $0.003 draft.",
    "version": "0.0",
    "x-build-id": "VztgRGQXSZ81MU3pU"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/steadywren~steam-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-steadywren-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/steadywren~steam-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-steadywren-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/steadywren~steam-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-steadywren-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",
        "properties": {
          "games": {
            "title": "Games",
            "type": "array",
            "description": "Steam app ids (892970) or store / community URLs (https://store.steampowered.com/app/892970/Valheim/). Add competitors to compare them.",
            "default": [
              "892970"
            ],
            "items": {
              "type": "string"
            }
          },
          "maxReviewsPerGame": {
            "title": "Max reviews per game",
            "minimum": 0,
            "maximum": 20000,
            "type": "integer",
            "description": "Reviews to output per game (you pay per review). Steam serves 10 reviews per request, so 1,000 reviews take about 3 minutes. 0 = game reports only.",
            "default": 100
          },
          "sort": {
            "title": "Sort reviews by",
            "enum": [
              "recent",
              "toprated"
            ],
            "type": "string",
            "description": "Order in which Steam returns reviews.",
            "default": "recent"
          },
          "language": {
            "title": "Review language",
            "enum": [
              "all",
              "english",
              "schinese",
              "tchinese",
              "japanese",
              "koreana",
              "russian",
              "ukrainian",
              "german",
              "french",
              "spanish",
              "latam",
              "brazilian",
              "portuguese",
              "italian",
              "polish",
              "turkish",
              "czech",
              "dutch",
              "danish",
              "finnish",
              "swedish",
              "norwegian",
              "hungarian",
              "romanian",
              "greek",
              "bulgarian",
              "thai",
              "vietnamese",
              "indonesian"
            ],
            "type": "string",
            "description": "Only reviews written in this language. Review texts are kept as written; turn on \"Translate reviews to English\" below to add an English translation.",
            "default": "all"
          },
          "sinceDate": {
            "title": "Reviews since",
            "type": "string",
            "description": "Only reviews posted on or after this day. With \"Most recent\" the scraper stops at the first older review; with \"Most helpful\" it filters the pages it reads and stops after 20 pages in a row without a newer review."
          },
          "onlyNew": {
            "title": "Only new reviews since the last run",
            "type": "boolean",
            "description": "For scheduled runs: skip reviews an earlier run of yours already delivered (you pay only for new ones). With \"Most recent\" the scraper stops reading at the first review it has seen.",
            "default": false
          },
          "report": {
            "title": "Game report",
            "type": "boolean",
            "description": "One report per game ($0.002): patch impact, update cadence and abandonment risk, daily sentiment history, developer replies, genre benchmark, complaint topics. Saved in the \"Game reports\" dataset.",
            "default": true
          },
          "patchWindowDays": {
            "title": "Patch window (days)",
            "minimum": 1,
            "maximum": 14,
            "type": "integer",
            "description": "Days before and after each patch post that are compared.",
            "default": 7
          },
          "peers": {
            "title": "Genre benchmark",
            "type": "boolean",
            "description": "Compare the game with the top 25 games of its most voted Steam tag (one extra request).",
            "default": true
          },
          "peerCadence": {
            "title": "Peers' update cadence",
            "type": "boolean",
            "description": "Also check how often the top 10 peers ship patches (10 extra requests per game).",
            "default": false
          },
          "replyDetails": {
            "title": "Developer reply times",
            "type": "boolean",
            "description": "Open up to 20 reviews with a developer response to measure the reply time (one request each).",
            "default": true
          },
          "aiInsights": {
            "title": "AI insight report",
            "type": "boolean",
            "description": "One AI report per game (free until 2026-11-18 (beta); from 2026-11-18: $0.03 each): what players love and hate in plain words, top feature requests, a comparison with the other games of this run, what changed since your last report, and \"why the patch hurt\" - the likely cause, with review quotes, of each patch the Patch Impact Scorecard flags as backlash (the newest 3 per game, included in the price). Saved in the \"AI insights\" dataset. Review texts are processed by OpenAI (gpt-5-mini). If the AI service is unavailable, the AI part is skipped with a message and the scrape still succeeds.",
            "default": false
          },
          "replyDrafts": {
            "title": "AI reply drafts",
            "type": "boolean",
            "description": "A short, polite developer reply draft (free until 2026-11-18 (beta); from 2026-11-18: $0.003 each) for delivered negative reviews without a developer response (newest first, up to Max reply drafts), in the review's language. Drafts never promise refunds, dates or fixes and contain no names or links. A review gets a draft only once: drafted reviews are remembered in your steam-review-history store, so later runs skip them. Saved in the \"Reply drafts\" dataset. Processed by OpenAI (gpt-5-nano).",
            "default": false
          },
          "maxDrafts": {
            "title": "Max reply drafts per run",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Caps the reply drafts of one run (and their cost).",
            "default": 20
          },
          "translate": {
            "title": "Translate reviews to English",
            "type": "boolean",
            "description": "Adds textEnglish to the delivered reviews: the English translation of non-English texts. Null for English or no text, or when AI work stopped (cost cap, AI service unavailable, no key). Included in the review price, no extra event. Processed by OpenAI (gpt-5-nano).",
            "default": false
          },
          "maxAiCostUsd": {
            "title": "Max AI cost per run (USD)",
            "minimum": 0.05,
            "maximum": 2,
            "type": "number",
            "description": "Our OpenAI spending cap for the AI add-ons of one run (max $2), shared by all of them. Translation runs first, during the scrape, and may use at most half of the cap when AI insights or reply drafts are also on. When the cap is reached the AI work stops with a message; delivered AI items are kept and the scrape is not affected. You pay only for the AI items delivered.",
            "default": 1
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Not needed in most cases: Steam answers Apify servers directly. Turn on a proxy only if runs get blocked.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}