{
  "openapi": "3.0.1",
  "info": {
    "title": "DraftKings Odds API - Real-Time Lines & Player Props",
    "description": "Extract real-time DraftKings sportsbook odds for 28 sports and 280+ leagues. Get spreads, moneylines, totals, player props, and futures in 3 odds formats. Always-on HTTP API. Live in-play odds with scores. NBA, NFL, MLB, NHL, EPL, and more. No login required.",
    "version": "0.0",
    "x-build-id": "U1OpTdQnMo1aBnnY8"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/zen-studio~draftkings-odds/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-zen-studio-draftkings-odds",
        "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/zen-studio~draftkings-odds/runs": {
      "post": {
        "operationId": "runs-sync-zen-studio-draftkings-odds",
        "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/zen-studio~draftkings-odds/run-sync": {
      "post": {
        "operationId": "run-sync-zen-studio-draftkings-odds",
        "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": {
          "sport": {
            "title": "Sport",
            "type": "string",
            "description": "Sport to scrape, or <b>ALL</b> for the full board.<br><br>Common values: <code>football</code>, <code>basketball</code>, <code>baseball</code>, <code>hockey</code>, <code>soccer</code>, <code>tennis</code>, <code>golf</code>, <code>mma</code>, <code>cricket</code>, <code>motorsports</code>, <code>boxing</code>, <code>darts</code>, <code>table-tennis</code>, <code>volleyball</code>, <code>handball</code>, <code>rugby</code>.<br><br>Sports are read live, so anything DraftKings adds works here immediately. Call the <code>/sports</code> endpoint for the current list."
          },
          "leagueIds": {
            "title": "Specific Leagues",
            "type": "string",
            "description": "Optional. Comma-separated league IDs to scrape instead of a whole sport, e.g. <code>88808,87637</code> for NFL and College Football. Overrides the sport selection. Look IDs up with the <code>/leagues</code> endpoint."
          },
          "eventIds": {
            "title": "Specific Games",
            "type": "string",
            "description": "Optional. Comma-separated event IDs to collect single games instead of a whole league, e.g. <code>34226148</code>. Every market you asked for is returned for those games and nothing else is written or charged, so one game costs a few hundred rows instead of tens of thousands. Event IDs come from the <code>eventId</code> column of any run, or from the <code>/leagues/{id}</code> endpoint. Add the game's league under <b>Specific Leagues</b> to skip straight to it. Name several games and a row limit is shared between them, so every game you asked for is represented."
          },
          "teams": {
            "title": "Teams",
            "type": "string",
            "description": "Optional. Collect only the games a team plays in, so you do not need the event ID. Comma-separated, and each entry can be the code the board uses (<code>NE</code>), the nickname (<code>Patriots</code>), the name as the board writes it (<code>NE Patriots</code>) or the longer name you know it by (<code>New England Patriots</code>): words no team on the schedule uses are ignored, cities included, so prefer the code or the nickname. One entry naming both sides is that single game: <code>NE at CHI</code>. Separate entries are every game either of them plays: <code>NE, CHI</code>. The matching games are read whole and charged for their rows alone, exactly as <b>Specific Games</b> does, so a one-game pull no longer depends on the row limit reaching that game. Anything that matches nothing is named in the log, with the league's schedule, instead of returning an empty dataset."
          },
          "dates": {
            "title": "Kickoff Dates",
            "type": "string",
            "description": "Optional. Collect only the games kicking off on these dates. Comma-separated <code>YYYY-MM-DD</code>, or <code>today</code> or <code>tomorrow</code>. A date matches a kickoff on that date in US Eastern, the sportsbook's own day, or in UTC, which is what the <code>startTime</code> column shows: a Thursday night game that starts 00:15 UTC answers to both the Thursday and the Friday. Combines with <b>Teams</b> to mean one game on one date. A date that cannot be read stops the run instead of returning the whole board."
          },
          "dateFrom": {
            "title": "Kickoff From",
            "type": "string",
            "description": "Optional. Collect only the games kicking off on or after this date (<code>YYYY-MM-DD</code>, <code>today</code> or <code>tomorrow</code>). Use with <b>Kickoff To</b> for a window, or on its own for everything from that date on."
          },
          "dateTo": {
            "title": "Kickoff To",
            "type": "string",
            "description": "Optional. Collect only the games kicking off on or before this date (<code>YYYY-MM-DD</code>, <code>today</code> or <code>tomorrow</code>). Use with <b>Kickoff From</b> for a window, or on its own for everything up to that date."
          },
          "market": {
            "title": "Market Type",
            "enum": [
              "game_lines",
              "player_props",
              "futures",
              "all"
            ],
            "type": "string",
            "description": "Which betting markets to include.<br><br><b>Game Lines</b> — spread, moneyline, total<br><b>Player Props</b> — points, rebounds, strikeouts, combos. Use <b>Prop Types</b> below to narrow.<br><b>Futures</b> — championship, MVP, division and conference winners, regular season win totals, playoff seeding<br><b>All Markets</b> — everything combined",
            "default": "game_lines"
          },
          "propTypes": {
            "title": "Prop Types",
            "type": "string",
            "description": "Filter player props by stat type (comma-separated). Applies to <b>Player Props</b> and <b>All Markets</b>; other markets are unaffected. Leave empty for all props.<br><br>Matched word by word against the <code>market</code> name in the results, so <code>passing yards</code> finds <code>Passing Yards</code> and <code>receiving</code> takes every receiving prop. Anything that matches nothing is named in the log instead of returning an empty dataset.<br><br>A pattern written with a leading <code>-</code> excludes instead of includes. The ladder and quarter variants of a market carry the same words as the market itself (<code>Race to 3 Receptions</code>, <code>1st Quarter Passing Yards</code>), so they come back with it and can fill a run's row limit: <code>receptions, -race to, -1st quarter</code> keeps the receptions markets without them. Excludes on their own keep every market they do not name. Examples by sport:<br><br>• <b>Baseball:</b> <code>Strikeouts, Hits, Home Runs, Total Bases, Stolen Bases, RBIs</code><br>• <b>Basketball:</b> <code>Points, Rebounds, Assists, Threes, Double-Double</code><br>• <b>Hockey:</b> <code>Goals, Shots on Goal, Assists, Saves, Blocks</code><br>• <b>Soccer:</b> <code>Goalscorer, Shots, Assists, Tackles, Saves</code>"
          },
          "maxResults": {
            "title": "Max Results",
            "minimum": 0,
            "type": "integer",
            "description": "Cap the number of odds rows exported to the dataset. Keeps runs fast and predictable.<br><br>Set to <code>0</code> for unlimited. With <b>Game Lines</b>, 500 covers most sports comfortably. With <b>Player Props</b> or <b>All Markets</b>, you may want to increase this.<br><br>A run that hits this limit says in the log how many rows it returned and how many it held back, and when you name several games in <b>Specific Games</b> the limit is shared between them so each game gets a share rather than the first game taking all of it. The Free plan writes at most 200 rows per run whatever this is set to.",
            "default": 500
          },
          "feedback": {
            "title": "Feedback to the maintainers",
            "type": "string",
            "description": "For AI agents. Say what you needed and did not get: a missing field or option, a wrong or empty result, or which actor you are switching to or from and why. Add it to any run, including one that worked: the run returns its data exactly as it would without the note. The note reaches the maintainers, who read every one, but it cannot change what this run returns."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}