{
  "openapi": "3.0.1",
  "info": {
    "title": "Sports Odds Scraper - DraftKings, Pinnacle, Underdog, Sleeper",
    "description": "Pre-game odds and player props from DraftKings and Pinnacle, plus player lines from Underdog and Sleeper. One row per selection: game, start time, market, player, line, and American and decimal odds or the payout multiplier. Filter by sport, league, market, player or date.",
    "version": "0.1",
    "x-build-id": "sO7fjOZBwBG9NrDaS"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dami_studio~sports-odds-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dami_studio-sports-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/dami_studio~sports-odds-scraper/runs": {
      "post": {
        "operationId": "runs-sync-dami_studio-sports-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/dami_studio~sports-odds-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-dami_studio-sports-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",
        "properties": {
          "sports": {
            "title": "Sports",
            "type": "array",
            "description": "Every league of the sports you tick, on every source you keep. Leave it empty and fill in Leagues instead if you only want one or two. Soccer on Pinnacle alone is close to 300 leagues, so for soccer it's worth naming them.",
            "items": {
              "type": "string",
              "enum": [
                "football",
                "baseball",
                "basketball",
                "hockey",
                "soccer",
                "tennis",
                "mma",
                "boxing",
                "golf",
                "esports",
                "cricket",
                "motorsports",
                "rugby",
                "aussie-rules",
                "darts",
                "handball",
                "volleyball",
                "lacrosse"
              ],
              "enumTitles": [
                "American football",
                "Baseball",
                "Basketball",
                "Ice hockey",
                "Soccer",
                "Tennis",
                "MMA",
                "Boxing",
                "Golf",
                "Esports",
                "Cricket",
                "Motorsports",
                "Rugby",
                "Aussie rules",
                "Darts",
                "Handball",
                "Volleyball",
                "Lacrosse"
              ]
            }
          },
          "leagues": {
            "title": "Leagues",
            "maxItems": 40,
            "type": "array",
            "description": "League names, for example NFL, MLB, WNBA, Premier League, La Liga or UFC. Short forms work too: EPL, NCAAF, NCAAB. The big leagues are matched by name across all four sources, so Premier League means England's, not Canada's or Malta's. Any other name is looked for inside each book's own league name, so WTA finds WTA - Guadalajara. Case doesn't matter.",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "title": "Bookmakers and apps",
            "type": "array",
            "description": "DraftKings and Pinnacle are sportsbooks: game lines and player props, priced in odds. Underdog and Sleeper are pick'em apps: player lines only. Underdog gives its own American and decimal price and a payout multiplier; Sleeper gives the multiplier alone.",
            "items": {
              "type": "string",
              "enum": [
                "draftkings",
                "pinnacle",
                "underdog",
                "sleeper"
              ],
              "enumTitles": [
                "DraftKings",
                "Pinnacle",
                "Underdog",
                "Sleeper"
              ]
            },
            "default": [
              "draftkings",
              "pinnacle",
              "underdog",
              "sleeper"
            ]
          },
          "marketTypes": {
            "title": "Markets",
            "type": "array",
            "description": "Game lines are the full-game main lines. Player props are over/under lines on one player's stat. Futures, alternate lines, halves and quarters of game lines, and novelty props aren't included.",
            "items": {
              "type": "string",
              "enum": [
                "moneyline",
                "spread",
                "total",
                "player-prop"
              ],
              "enumTitles": [
                "Moneyline",
                "Spread (run line, puck line)",
                "Total (over/under)",
                "Player props"
              ]
            },
            "default": [
              "moneyline",
              "spread",
              "total",
              "player-prop"
            ]
          },
          "playerNames": {
            "title": "Players",
            "maxItems": 100,
            "type": "array",
            "description": "Only props on these players. A last name is enough, and accents don't matter: Mbappe finds Kylian Mbappé. Game lines are left out when this is filled in, because they aren't about a player.",
            "items": {
              "type": "string"
            }
          },
          "startFrom": {
            "title": "Starting from",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])(T.*)?$",
            "type": "string",
            "description": "Only games that start on or after this day (UTC), written like 2026-09-13. Leave it empty for everything on the board."
          },
          "startTo": {
            "title": "Starting up to",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])(T.*)?$",
            "type": "string",
            "description": "Only games that start on or before the end of this day (UTC). Sleeper gives a game's day but not its start time, so its rows are matched on the day."
          },
          "includeLive": {
            "title": "Include games already under way",
            "type": "boolean",
            "description": "Off, you get pre-game prices only. On, games that have started are included too, at whatever price the book showed at that second.",
            "default": false
          },
          "maxRows": {
            "title": "Maximum rows",
            "minimum": 1,
            "maximum": 30000,
            "type": "integer",
            "description": "The most rows one run returns, shared fairly between the sources you keep. Each row is one charge.",
            "default": 1000
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}