# DraftKings Odds: Line Movement, Spreads and Totals (`scrapemint/draftkings-odds-tracker`) Actor

DraftKings spreads, totals and moneylines for NFL, college football, MLB, WNBA and top soccer, with the opening line beside the current one so you can see where the line moved. Filter to games that actually moved. Keyless, no login, no browser, no proxy. Pay per game.

- **URL**: https://apify.com/scrapemint/draftkings-odds-tracker.md
- **Developed by:** [Ken M](https://apify.com/scrapemint) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## DraftKings Odds: Line Movement, Spreads and Totals

DraftKings spreads, totals and moneylines for NFL, college football, MLB, WNBA and top soccer — with **the opening line next to the current one**, so you can see where the line moved instead of only where it landed.

Anyone can tell you tonight's number. What costs money to find out is that Kansas City opened **-155** and is now **-130**.

No API key, no login, no browser, no proxy. One row per game.

### What you get for each game

| field | example |
|---|---|
| `event` / `shortName` | `Denver Broncos at Kansas City Chiefs` / `DEN @ KC` |
| `home` / `away` / `favorite` | `Kansas City Chiefs` / `Denver Broncos` / `Kansas City Chiefs` |
| `commenceTime` | `2026-09-15T00:15Z` |
| `details` | `KC -2.5` |
| `spread` | `{ current: -2.5, open: -2.5, move: 0 }` |
| `total` | `{ current: 42.5, overOdds: -110, underOdds: -110 }` |
| `moneyline` | `{ home: -130, homeOpen: -155, homeMove: 25, away: 110, awayOpen: 130, awayMove: -20 }` |
| `movement` | `{ moved: true, spreadMove: 0, homeMoneylineMove: 25, threshold: 2 }` |

Odds come in American by default; set `oddsFormat` to `decimal` for `2.30` / `1.65`.

### Finding the games that moved

Set `onlyMoved` to return just the games whose line has shifted, and `minLineMove` to say how far counts:

```json
{
  "sports": ["nfl", "ncaaf"],
  "onlyMoved": true,
  "minLineMove": 2
}
```

A **higher** threshold means fewer games qualify — and a cheaper run, because moved games bill at the higher rate. You control that trade directly.

### Leagues

`nfl` · `ncaaf` · `mlb` · `nba` · `wnba` · `ncaab` · `nhl` · `epl` · `laliga` · `bundesliga` · `seriea` · `ligue1` · `mls` · `ucl`

DraftKings prices NFL, college football, MLB, WNBA and top soccer year-round on this feed. NBA, NHL and college basketball carry odds in season. When a league has games scheduled but no prices posted, you get a short note row explaining it — **never an empty dataset with no reason, and nothing charged**.

### Pricing

| event | price | what it is |
|---|---|---|
| `line_row` | $0.004 | a game with a current DraftKings line |
| `line_move_row` | $0.012 | a game whose line has moved past your threshold |

A game is charged once, under one or the other. Games DraftKings has not priced are skipped and cost nothing, as are note rows. Every row you receive is charged — there is no per-run free allowance to work around.

### Notes on the data

- **The opening total is not published.** ESPN carries an opening spread and opening moneyline but no opening total, so `total.open` is `null` rather than a copy of the current number. A confident wrong figure is worse than an honest gap on a row you are betting against.
- **Pregame only by default.** Set `includeStartedEvents` to include games already under way.
- **`dedupe`** remembers game ids between runs so a scheduled run returns only new games. Leave it off when you are tracking movement on the same games over time — which is usually the point.

### Related actors

- [Betting Odds Comparison: Best Price & Arbitrage Finder](https://apify.com/scrapemint/sports-odds-scraper) — Bovada and Pinnacle side by side, with best price and arbitrage. Runs well beside this one: three books instead of one.
- [Player Prop Bets: Odds by Player, Stat and Line](https://apify.com/scrapemint/sportsbook-player-props)
- [Sports Odds Movement and Arbitrage Tracker](https://apify.com/scrapemint/sports-odds-movement-tracker)

# Actor input Schema

## `sports` (type: `array`):

Which leagues to pull DraftKings odds for. DraftKings prices NFL, college football, MLB, WNBA and top soccer on this feed; NBA, NHL and college basketball carry odds only in season.

## `onlyMoved` (type: `boolean`):

Return only games where the line has moved from its open by at least the threshold below. Games you skip are never charged.

## `minLineMove` (type: `integer`):

How far the spread must move from its open to count as moved. A moneyline swing of 20 cents or more also counts. Moved games bill at the higher rate, so raising this makes a run cheaper and more selective; lowering it catches smaller moves.

## `oddsFormat` (type: `string`):

American prices keep their sign (+130, -155). Decimal converts them.

## `maxEvents` (type: `integer`):

Cap on games returned across all selected leagues. You are charged per game returned.

## `includeStartedEvents` (type: `boolean`):

Off by default so you get pregame numbers only.

## `dedupe` (type: `boolean`):

Remembers game ids between runs, so a scheduled run returns only what is new. Leave off if you are tracking movement on the same games over time.

## Actor input object example

```json
{
  "sports": [
    "nfl"
  ],
  "onlyMoved": false,
  "minLineMove": 2,
  "oddsFormat": "american",
  "maxEvents": 50,
  "includeStartedEvents": false,
  "dedupe": false
}
```

# Actor output Schema

## `rows` (type: `string`):

DraftKings spread, total, moneyline and the opening line beside the current one, plus a movement block flagging games that moved past your threshold.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "sports": [
        "nfl"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapemint/draftkings-odds-tracker").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "sports": ["nfl"] }

# Run the Actor and wait for it to finish
run = client.actor("scrapemint/draftkings-odds-tracker").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "sports": [
    "nfl"
  ]
}' |
apify call scrapemint/draftkings-odds-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapemint/draftkings-odds-tracker"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/rtKm3sFfHQy5K07cd/builds/7HVvNqfejz8FJqKy9/openapi.json
