{
  "openapi": "3.0.1",
  "info": {
    "title": "Sports Betting Odds Scraper",
    "description": "Scrape sports betting odds from SportsBookReview: one record per game and sportsbook with moneyline, spread, totals, opening lines, consensus picks, teams, start time and venue for upcoming games on its league pages. No login or API key.",
    "version": "0.1",
    "x-build-id": "fJKoFtnH5zRmxHspw"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/axiomworks~sportsbookreview-odds-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-axiomworks-sportsbookreview-odds-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/axiomworks~sportsbookreview-odds-scraper/runs": {
      "post": {
        "operationId": "runs-sync-axiomworks-sportsbookreview-odds-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/axiomworks~sportsbookreview-odds-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-axiomworks-sportsbookreview-odds-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": [
          "leagues"
        ],
        "properties": {
          "leagues": {
            "title": "League slugs",
            "type": "array",
            "description": "Required. League slugs to scrape, e.g. [\"nfl-football\",\"nba-basketball\"]. Allowed: nfl-football, nba-basketball, mlb-baseball, nhl-hockey, english-premier-league, major-league-soccer, champions-league, college-football, ncaa-basketball, wnba-basketball, cfl-football. Out-of-season leagues return 0 games.",
            "items": {
              "type": "string",
              "enum": [
                "nfl-football",
                "nba-basketball",
                "mlb-baseball",
                "nhl-hockey",
                "english-premier-league",
                "major-league-soccer",
                "champions-league",
                "college-football",
                "ncaa-basketball",
                "wnba-basketball",
                "cfl-football"
              ]
            }
          },
          "markets": {
            "title": "Betting markets",
            "type": "array",
            "description": "Markets to include, any of \"moneyline\", \"spread\", \"total\", e.g. [\"moneyline\"]. Default: all three. Each market costs one extra page request per league.",
            "items": {
              "type": "string",
              "enum": [
                "moneyline",
                "spread",
                "total"
              ]
            },
            "default": [
              "moneyline",
              "spread",
              "total"
            ]
          },
          "sportsbooks": {
            "title": "Sportsbook filter",
            "type": "array",
            "description": "Optional. Only keep these sportsbook machine names, e.g. [\"draftkings\",\"fanduel\"]. Others: betmgm, bet365, fanatics, bet_rivers_co, caesars, hardrock. Empty = all books.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "dates": {
            "title": "Dates (YYYY-MM-DD)",
            "type": "array",
            "description": "Optional. Days to scrape instead of the current slate, as YYYY-MM-DD strings, e.g. [\"2026-09-20\"]. Works for day-based leagues (MLB, NBA, NHL, soccer, college); NFL and college football are weekly and ignore it. Finished games are included. Empty = current slate.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeFinished": {
            "title": "Include finished games",
            "type": "boolean",
            "description": "true keeps games already marked Final (with final scores) on the current slate, e.g. true. Default false. Always on when 'dates' is set.",
            "default": false
          },
          "includeOpeningLines": {
            "title": "Include opening lines",
            "type": "boolean",
            "description": "true adds openingLines (first posted moneyline, spread, total) to each item, e.g. true. Default true.",
            "default": true
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Save at most this many game x sportsbook rows across all leagues and dates, integer 1-10000, default 50. Filters apply before this shared limit; blocked or unmatched targets return no error records.",
            "default": 50
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy settings, e.g. {\"useApifyProxy\": true}. The site works without a proxy, so it is off by default; enable it if requests get blocked.",
            "default": {
              "useApifyProxy": false
            }
          },
          "teamNames": {
            "title": "Team filter",
            "type": "array",
            "description": "Keep games whose home or away team name or abbreviation contains any of these case-insensitive terms, e.g. [\"Bills\"]. Empty (default) keeps all teams. Combined with gameIds and sportsbook filters; no matches returns zero items.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "gameIds": {
            "title": "Game IDs",
            "type": "array",
            "description": "Keep these SportsBookReview gameId values from a previous output, e.g. [379624]. Supply leagues containing those games. Empty (default) keeps all games. Combined with teamNames; unresolved IDs return zero items.",
            "items": {
              "type": "integer"
            },
            "default": []
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}