{
  "openapi": "3.0.1",
  "info": {
    "title": "DraftKings Player Props Scraper & Line Movement Monitor",
    "description": "DraftKings odds API for player props, alternate lines and game lines (moneyline, spread, total) across NFL, NBA, MLB, NHL, college and soccer. Turn on monitoring and each later run returns only the prices that moved, with the previous and current odds and line.",
    "version": "0.1",
    "x-build-id": "Xk2Vs5P6qrx2DPwYG"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~draftkings-line-movement-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-draftkings-line-movement-monitor",
        "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/neverempty~draftkings-line-movement-monitor/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-draftkings-line-movement-monitor",
        "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/neverempty~draftkings-line-movement-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-draftkings-line-movement-monitor",
        "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": "Leagues",
            "type": "array",
            "description": "Which DraftKings leagues to read. Use a short name (nfl, ncaaf, nba, wnba, ncaab, mlb, nhl, mls, epl, laliga, bundesliga, seriea, ligue1, ucl, ligamx, ufc, euroleague) or the league ID from a DraftKings league page address (88808 is the NFL). At least one is needed; a name that is not recognised comes back as a free row that says so.",
            "items": {
              "type": "string"
            }
          },
          "marketGroups": {
            "title": "Markets to return",
            "type": "array",
            "description": "game-lines = moneyline, spread and total for every game on the league board (one request per league). alternate-lines = every alternate spread and total DraftKings has posted. player-props = player markets such as passing, rushing and receiving yards, touchdown scorers, batter and pitcher props, goalscorers and player points. Empty = game-lines only.",
            "items": {
              "type": "string",
              "enum": [
                "game-lines",
                "alternate-lines",
                "player-props"
              ],
              "enumTitles": [
                "Game lines (moneyline, spread, total)",
                "Alternate lines",
                "Player props"
              ]
            }
          },
          "extraCategories": {
            "title": "Extra DraftKings market categories",
            "type": "array",
            "description": "Any other DraftKings category to read for each game, by its name as shown on the DraftKings page, for example Quarters, Halves, Team Props or Game Props. Case does not matter. Empty = none.",
            "items": {
              "type": "string"
            }
          },
          "maxGamesPerLeague": {
            "title": "Maximum games per league for props and alternate lines",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Player props and alternate lines are read game by game, soonest kick-off first, so this caps how many games are opened per league. Game lines always cover the whole league board. Default 10.",
            "default": 10
          },
          "maxRows": {
            "title": "Maximum price rows to return",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "How many rows to return in total. One row is one selection, for example 'Over 225.5' in one player's passing yards market. You are charged only for the rows you receive. Default 1000.",
            "default": 1000
          },
          "monitoringMode": {
            "title": "Monitoring mode: return only prices that moved",
            "type": "boolean",
            "description": "Off = return every current price. On = the first run remembers today's prices for free, and every later run with the same leagues and markets returns only selections whose odds or line changed (with the previous and current value and the size of the move) plus markets that newly appeared. Run it on a schedule to follow line movement.",
            "default": false
          },
          "resetMonitoringState": {
            "title": "Start the monitoring over",
            "type": "boolean",
            "description": "Forget the remembered prices for this input before the run. With monitoring on, the run then records a fresh starting point.",
            "default": false
          },
          "minOddsMove": {
            "title": "Minimum odds move (decimal odds)",
            "minimum": 0,
            "maximum": 100,
            "type": "number",
            "description": "Monitoring only: return a moved price only if its decimal odds moved at least this much, for example 0.05. Line moves and new markets are always returned. 0 = every move.",
            "default": 0
          },
          "eventIds": {
            "title": "Only these games (DraftKings event IDs)",
            "type": "array",
            "description": "Limit the run to these games, by the DraftKings event ID (the number at the end of a DraftKings game page address, also in the eventId column). Empty = every game on the chosen league boards.",
            "items": {
              "type": "string"
            }
          },
          "teams": {
            "title": "Only these teams",
            "type": "array",
            "description": "Keep a row only if the game name or either team contains one of these (case-insensitive, partial), for example Chiefs or KC. Empty = all teams.",
            "items": {
              "type": "string"
            }
          },
          "players": {
            "title": "Only these players",
            "type": "array",
            "description": "Keep only player-prop rows for players whose name contains one of these (case-insensitive, partial), for example Mahomes. Empty = all players and non-player markets.",
            "items": {
              "type": "string"
            }
          },
          "marketNames": {
            "title": "Only markets containing",
            "type": "array",
            "description": "Keep a row only if the market name, market type or DraftKings subcategory contains one of these (case-insensitive), for example Passing Yards, Receptions or Alternate Spread. Empty = all markets.",
            "items": {
              "type": "string"
            }
          },
          "excludeMarketNames": {
            "title": "Drop markets containing",
            "type": "array",
            "description": "Drop a row if the market name, market type or subcategory contains any of these (case-insensitive), for example Milestones or 1st Quarter. Empty = drop nothing.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}