{
  "openapi": "3.0.1",
  "info": {
    "title": "DraftKings Scraper - Sports Odds, Results, DFS & Player Props",
    "description": "Scrape DraftKings Sportsbook odds, game lines, team totals, player and game props, futures, Pick6 multipliers and final scores. Extract DFS contests, entry fees, prize pools, player salaries and stats. Includes nested markets with American, decimal and fractional odds.",
    "version": "0.1",
    "x-build-id": "WbHnkcRfy6wbyuszk"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~draftkings-sportsbook-odds-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-draftkings-sportsbook-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/abotapi~draftkings-sportsbook-odds-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-draftkings-sportsbook-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/abotapi~draftkings-sportsbook-odds-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-draftkings-sportsbook-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": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "type": "string",
            "description": "Search mode walks the selected sports and leagues. URL mode scrapes exactly the pasted sportsbook links (league, event, player-props or futures pages); filter fields are ignored.",
            "default": "search"
          },
          "sportSlugs": {
            "title": "Sports",
            "type": "array",
            "description": "Sport page slugs, e.g. basketball, football, baseball, hockey, soccer, golf, mma. The full catalog is resolved live from the site's own league list.",
            "default": [
              "basketball"
            ],
            "items": {
              "type": "string"
            }
          },
          "leagues": {
            "title": "Leagues (optional)",
            "type": "array",
            "description": "Optional league slugs to narrow the run, e.g. 'nba' or 'basketball/nba'. Leave empty for every league under the selected sports.",
            "items": {
              "type": "string"
            }
          },
          "marketGroups": {
            "title": "Market groups",
            "type": "array",
            "description": "Which board sections to read. Each adds one data read per league. Game lines carry the flagship moneyline/spread/total board.",
            "items": {
              "type": "string",
              "enumTitles": [
                "Game lines (moneyline, spread, total)",
                "Team totals",
                "Player props",
                "Futures (award outrights)",
                "Game props"
              ],
              "enumSuggestedValues": [
                "game-lines",
                "team-totals",
                "player-props",
                "futures",
                "game-props"
              ]
            },
            "default": [
              "game-lines"
            ]
          },
          "includeDfs": {
            "title": "Include DFS contests & players",
            "type": "boolean",
            "description": "Also collect the daily-fantasy surface for the selected sport: contest list (fees, prize pools, entries) and player lists with salaries, positions and stats.",
            "default": false
          },
          "dfsSport": {
            "title": "DFS sport (optional)",
            "type": "string",
            "description": "Override the DFS surface's sport. Defaults to the first selected search sport."
          },
          "state": {
            "title": "Book state",
            "type": "string",
            "description": "The book serves its national board by default; pick a state token to read that state's region view.",
            "default": "auto"
          },
          "urls": {
            "title": "Sportsbook links",
            "type": "array",
            "description": "League pages, game pages, player-props pages and futures pages are all supported; the default carries one live link of every supported shape. Multi-URL runs walk each link once; market-group filters do not apply.",
            "default": [
              {
                "url": "https://sportsbook.draftkings.com/leagues/basketball/nba"
              },
              {
                "url": "https://sportsbook.draftkings.com/event/mil-bucks-%40-ny-knicks/34983855"
              },
              {
                "url": "https://sportsbook.draftkings.com/page/nba-player-props"
              },
              {
                "url": "https://sportsbook.draftkings.com/page/nba-futures"
              }
            ],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "fetchDetails": {
            "title": "Detail enrichment",
            "type": "boolean",
            "description": "Read each game's detail page and merge event media, parlay content cards and Pick6 multipliers onto its row. Adds one detail-enrichment charge per served record.",
            "default": false
          },
          "includeResults": {
            "title": "Final scores of past games",
            "type": "boolean",
            "description": "Also return the result of every finished game in the selected leagues (search mode, or league and sport links in URL mode): home and away team, final score, winner, venue and the odds event id where it can be linked. One row per finished game; games not yet over are never returned. Covered: NFL, NBA, MLB, NHL, college football and basketball, and the major soccer leagues and cups. Each result row is one dataset item.",
            "default": false
          },
          "resultsDaysBack": {
            "title": "Results: days back",
            "minimum": 1,
            "maximum": 14,
            "type": "integer",
            "description": "How many days back to collect final scores (1 to 14). Only used when Final scores of past games is on.",
            "default": 2
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum records per run. 0 means unlimited. This is the only cap that stops a run early.",
            "default": 20
          },
          "maxPages": {
            "title": "Max pages",
            "minimum": 0,
            "type": "integer",
            "description": "Not used by this actor: every board read is a single data call, so there are no pages to walk. Leave empty; Max items is the only cap."
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Residential US proxies are strongly recommended: the data pages refuse most datacenter exits. Free plans have no residential access, so those runs fall back or fail with an upgrade note.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "US"
            }
          },
          "resumeFromRunId": {
            "title": "Resume from run",
            "type": "string",
            "description": "Run id of a previous run of this Actor: already-pushed record ids are skipped. Mutually exclusive with incremental mode."
          },
          "incrementalMode": {
            "title": "Incremental mode",
            "type": "boolean",
            "description": "Track records between runs and classify NEW / UPDATED / UNCHANGED / EXPIRED. The fingerprint covers every odds value (a line move classifies UPDATED); run bookkeeping, detail-merge fields (media, parlay cards, Pick6 multipliers) and capturedAt are excluded. Records absent from a complete scan are tombstoned EXPIRED.",
            "default": false
          },
          "emitUnchanged": {
            "title": "Emit unchanged records",
            "type": "boolean",
            "description": "In incremental mode, also push UNCHANGED records (default: suppressed).",
            "default": false
          },
          "stateKey": {
            "title": "Incremental state key (optional)",
            "type": "string",
            "description": "Named key for the incremental baseline. Default: a hash of the run's scope (sports, leagues, market groups, links, toggles)."
          },
          "ignoreFieldsForChanges": {
            "title": "Ignore fields when detecting changes (incremental mode only)",
            "type": "array",
            "description": "Extra record fields (top-level names or dotted paths) excluded from the change fingerprint.",
            "items": {
              "type": "string"
            }
          },
          "mcpConnectors": {
            "title": "MCP connectors",
            "type": "array",
            "description": "Connector definitions for the MCP export side channel."
          },
          "notionParentPageUrl": {
            "title": "Notion parent page URL",
            "type": "string",
            "description": "Optional Notion parent page for the Notion connector export."
          },
          "maxNotifyListings": {
            "title": "Max notification records",
            "minimum": 0,
            "type": "integer",
            "description": "Cap for notification-style connector exports. 0 means the first 50 records."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}