{
  "openapi": "3.0.1",
  "info": {
    "title": "Sportsbook Odds Tracker: Moneyline, Spread and Totals",
    "description": "Live and pregame odds from a sportsbook's own public feed: moneyline, spread and totals for football, basketball, baseball, hockey, soccer, tennis and more. Every row carries the price, the line, the implied probability and the book's hold. No API key, no account. Lists every league it prices.",
    "version": "0.1",
    "x-build-id": "90oSxDDLSMHHWPMwk"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapemint~sportsbook-odds-tracker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapemint-sportsbook-odds-tracker",
        "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/scrapemint~sportsbook-odds-tracker/runs": {
      "post": {
        "operationId": "runs-sync-scrapemint-sportsbook-odds-tracker",
        "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/scrapemint~sportsbook-odds-tracker/run-sync": {
      "post": {
        "operationId": "run-sync-scrapemint-sportsbook-odds-tracker",
        "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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "odds",
              "movement",
              "leagues"
            ],
            "type": "string",
            "description": "odds = current prices for the leagues you choose. movement = only the markets whose price or line changed since your last run, which is what makes this worth scheduling. leagues = the directory of sports and competitions with live event counts, which is where the league paths come from.",
            "default": "odds"
          },
          "leaguePaths": {
            "title": "League paths",
            "type": "array",
            "description": "Used by odds and movement mode. Examples: football/nfl, basketball/nba, soccer/europe, tennis. A sport on its own returns every competition inside it, which can run to a thousand events, so keep the row cap in mind.",
            "default": [
              "football/nfl"
            ],
            "items": {
              "type": "string"
            }
          },
          "books": {
            "title": "Books to read",
            "type": "array",
            "description": "Which sportsbooks to price. Pinnacle is the sharp book: it runs on low margin and high limits, so its vig-free price is the closest thing to a market consensus. Bovada is the recreational book. Reading both is what makes a price difference meaningful. Pinnacle covers the major leagues only; an unmapped league path is skipped on that book rather than guessed at.",
            "items": {
              "type": "string",
              "enum": [
                "bovada",
                "pinnacle"
              ],
              "enumTitles": [
                "Bovada",
                "Pinnacle (sharp)"
              ]
            },
            "default": [
              "bovada",
              "pinnacle"
            ]
          },
          "sports": {
            "title": "Sports",
            "type": "array",
            "description": "Leagues mode only. Which sports to list competitions for. Examples: soccer, football, basketball, tennis, baseball, hockey, esports.",
            "default": [
              "soccer"
            ],
            "items": {
              "type": "string"
            }
          },
          "marketTypes": {
            "title": "Market types (optional)",
            "type": "array",
            "description": "Empty returns every headline market. Values: moneyline, moneyline_3way (soccer and other sports that price the draw), spread, total, other.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "liveOnly": {
            "title": "In-play events only",
            "type": "boolean",
            "description": "Return only events that have already started and are being priced live.",
            "default": false
          },
          "includeSuspended": {
            "title": "Include suspended markets",
            "type": "boolean",
            "description": "Off by default. A suspended market keeps its last price in the feed even though no bet can be taken on it, so leaving these in makes a frozen price look like a live quote.",
            "default": false
          },
          "includeNonMainPeriods": {
            "title": "Include half and period lines",
            "type": "boolean",
            "description": "Off by default. First half, second half and similar lines are different bets from the full game line and are easy to mistake for it.",
            "default": false
          },
          "minMovePoints": {
            "title": "Minimum move",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Movement mode. Only return markets where implied probability moved at least this many percentage points. 0 returns every change.",
            "default": 0
          },
          "maxRows": {
            "title": "Maximum rows",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "One row is one market on one event. The first 2 rows of every run are free.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}