{
  "openapi": "3.0.1",
  "info": {
    "title": "OpenCritic Scraper: Game Scores & Critic Reviews",
    "description": "Scrape OpenCritic top critic scores, tiers, percent recommended and full game details, plus individual critic reviews with outlet, score and snippet. Browse 20 games per page by platform, year and sort, or Hall of Fame. Export CSV, Excel, JSON or XML. No login or API key.",
    "version": "0.1",
    "x-build-id": "Mifoyh0kaY64rrIQA"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/recordsdata~opencritic-games-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-recordsdata-opencritic-games-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~opencritic-games-scraper/runs": {
      "post": {
        "operationId": "runs-sync-recordsdata-opencritic-games-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~opencritic-games-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-recordsdata-opencritic-games-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": {
          "gameNames": {
            "title": "Game names (search)",
            "type": "array",
            "description": "Look games up by title, for example Elden Ring or Hades II. Each name is matched against the public OpenCritic game index and returns the full game record (scores, critics, tags, review summary, trailers, images, store prices). Use Game IDs instead when you already know the exact id.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "matchesPerName": {
            "title": "Matches per name",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many games to return for each name (best match first). 1 returns only the closest title; raise it to also get sequels and editions that contain the name.",
            "default": 1
          },
          "gameIds": {
            "title": "Game IDs (full details)",
            "type": "array",
            "description": "OpenCritic game IDs or URLs for full game records (e.g. 1548 or https://opencritic.com/game/1548/god-of-war). Get IDs from the browse list output.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeReviews": {
            "title": "Critic reviews per game",
            "type": "boolean",
            "description": "Also scrape individual critic reviews (outlet, score, snippet) for each game found through Game names or Game IDs.",
            "default": false
          },
          "maxReviewsPerGame": {
            "title": "Max reviews per game",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum number of individual critic reviews to collect for each game (outlet, score, snippet, date). Only used when Critic reviews per game is on.",
            "default": 40
          },
          "includeBrowse": {
            "title": "Browse list",
            "type": "boolean",
            "description": "Scrape the OpenCritic browse list (20 games per page) with score, tier, platforms, genres and tags. Switch it off when you only want the games you named above.",
            "default": true
          },
          "browsePlatform": {
            "title": "Browse platform",
            "enum": [
              "all",
              "pc",
              "ps5",
              "xbox-series-x",
              "switch",
              "switch-2",
              "ps4",
              "xbox-one",
              "quest",
              "psvr",
              "vive",
              "wii-u",
              "3ds",
              "vita",
              "stadia"
            ],
            "type": "string",
            "description": "OpenCritic platform filter for the browse list. Xbox Series X|S, Xbox One and Nintendo Switch 2 now return data (they returned nothing before).",
            "default": "all"
          },
          "browseTimeframe": {
            "title": "Browse timeframe",
            "type": "string",
            "description": "Time window for the browse list: all-time, last90 (last 90 days), upcoming (not yet released), or a four-digit release year such as 2025.",
            "default": "all-time"
          },
          "browseSortBy": {
            "title": "Browse sort",
            "enum": [
              "score",
              "date",
              "num-reviews",
              "percent-recommended"
            ],
            "type": "string",
            "description": "Sort order of the browse list.",
            "default": "score"
          },
          "browseOrder": {
            "title": "Browse order",
            "enum": [
              "default",
              "reverse"
            ],
            "type": "string",
            "description": "Default shows the highest values and newest dates first. Reverse shows the lowest scores or oldest releases first.",
            "default": "default"
          },
          "browseTag": {
            "title": "Tag filter",
            "enum": [
              "all",
              "action",
              "adventure",
              "anime",
              "arcade",
              "beat-em-up",
              "card-game",
              "casual",
              "co-op",
              "comedy",
              "family-friendly",
              "fantasy",
              "fighting",
              "hack-and-slash",
              "horror",
              "indie",
              "jrpg",
              "mmo",
              "multiplayer",
              "open-world",
              "platformer",
              "puzzle",
              "rpg",
              "racing",
              "retro",
              "roguelike",
              "sci-fi",
              "shooter",
              "side-scroller",
              "simulation",
              "singleplayer",
              "souls-like",
              "sports",
              "stealth",
              "story-rich",
              "strategy",
              "survival",
              "turn-based",
              "vr",
              "visual-novel"
            ],
            "type": "string",
            "description": "Keep only games that carry this OpenCritic tag. The site cannot filter by tag on its own, so the actor reads the list page by page and keeps matching games; it stops after the number of pages set in Pages without a match.",
            "default": "all"
          },
          "minTopCriticScore": {
            "title": "Minimum top critic score",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Keep only games with a top critic score at or above this value (0 to 100). Leave empty for no minimum."
          },
          "minReviews": {
            "title": "Minimum number of reviews",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only games with at least this many critic reviews. Leave empty for no minimum."
          },
          "maxPagesWithoutMatch": {
            "title": "Pages without a match (scan limit)",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "Stop the browse scan after this many consecutive pages (20 games each) that add no new matching game. This keeps runs with a rare tag or a strict filter cheap and bounded. Up to 25.",
            "default": 15
          },
          "includeHallOfFame": {
            "title": "Hall of Fame (current year)",
            "type": "boolean",
            "description": "Add the current-year Hall of Fame list (highest-rated games of the year). OpenCritic publishes only the current year.",
            "default": false
          },
          "homeLists": {
            "title": "Home page lists",
            "type": "array",
            "description": "Add these OpenCritic home page lists as extra rows: popular, deals (discounted games with store prices), reviewed today, recently released, upcoming. Leave empty for none.",
            "items": {
              "type": "string",
              "enum": [
                "popular",
                "deals",
                "reviewed-today",
                "recently-released",
                "upcoming"
              ],
              "enumTitles": [
                "Popular",
                "Deals",
                "Reviewed today",
                "Recently released",
                "Upcoming"
              ]
            },
            "default": []
          },
          "onlyNew": {
            "title": "Only new results",
            "type": "boolean",
            "description": "Return only games and reviews that earlier runs of the same search have not delivered. Schedule the actor to track new releases and new reviews; already seen rows are skipped and not charged. The memory is kept in your own account.",
            "default": false
          },
          "stateKey": {
            "title": "Monitor name (optional)",
            "type": "string",
            "description": "Name for the memory of previous results. Leave empty to derive it from your inputs. Use the same name to share memory between runs, or a different name to keep separate monitors.",
            "default": ""
          },
          "resetSeen": {
            "title": "Forget previous results",
            "type": "boolean",
            "description": "Clear the memory for this monitor before the run, so every game and review counts as new again.",
            "default": false
          },
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Maximum number of rows to return across game records, critic reviews, browse and home page lists. Free Apify users are limited to 10 rows (preview); paid users can set up to 1,000,000.",
            "default": 10
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}