Skip to content
Time-series25 credits

get_line_movement

Time-series odds grouped by bookmaker

When to use it

You are studying how a line moved: every hourly snapshot per bookmaker from first post to kickoff.

Parameters

NameTypeRequiredDescription
game_idstringyesGame id
bookmakerstringnoBookmaker key filter

Request

bash
curl -X POST https://football-mcp-production.up.railway.app/v1/get_line_movement \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
  "game_id": "2026_02_DET_BUF"
}'

Over MCP, ask for it in plain English and the client calls get_line_movement itself. Point any MCP client at https://football-mcp-production.up.railway.app/mcp?key=YOUR_API_KEY.

Response

json
{
  "game_id": "2026_02_DET_BUF",
  "home_team": "BUF",
  "away_team": "DET",
  "kickoff": "2026-09-18T00:15:00.000Z",
  "movement": {
    "betmgm": [
      {
        "bookmaker": "betmgm",
        "snapshot_type": "snapshot",
        "ml_home": -235,
        "ml_away": 190,
        "ml_home_prob": 0.70149255,
        "ml_away_prob": 0.3448276,
        "spread_home": -5.5,
        "spread_home_odds": -110,
        "spread_away": 5.5,
        "spread_away_odds": -108,
        "total": 55,
        "total_over_odds": -110,
        "total_under_odds": -110,
        "captured_at": "2026-09-17T15:04:00.530Z"
      },
      {
        "bookmaker": "betmgm",
        "snapshot_type": "snapshot",
        "ml_home": -235,
        "ml_away": 200,
        "ml_home_prob": 0.70149255,
        "ml_away_prob": 0.33333334,
        "spread_home": -5.5,
        "spread_home_odds": -110,
        "spread_away": 5.5,
        "spread_away_odds": -108,
        "total": 55,
        "total_over_odds": -108,
        "total_under_odds": -110,
        "captured_at": "2026-09-17T15:08:01.468Z"
      },
      {
        "bookmaker": "betmgm",
        "snapshot_type": "snapshot",
        "ml_home": -235,
        "ml_away": 200,
        "ml_home_prob": 0.70149255,
        "ml_away_prob": 0.33333334,
        "spread_home": -5.5,
        "spread_home_odds": -110,
        "spread_away": 5.5,
        "spread_away_odds": -108,
        "total": 55,
        "total_over_odds": -108,
        "total_under_odds": -110,
        "captured_at": "2026-09-17T15:08:35.622Z"
      }
    ],
    "draftkings": [
      {
        "bookmaker": "draftkings",
        "snapshot_type": "snapshot",
        "ml_home": -238,
        "ml_away": 195,
        "ml_home_prob": 0.70414203,
        "ml_away_prob": 0.33898306,
        "spread_home": -5.5,
        "spread_home_odds": -105,
        "spread_away": 5.5,
        "spread_away_odds": -115,
        "total": 54.5,
        "total_over_odds": -120,
        "total_under_odds": 100,
        "captured_at": "2026-09-17T15:04:00.530Z"
      },
      {
        "bookmaker": "draftkings",
        "snapshot_type": "snapshot",
        "ml_home": -238,
        "ml_away": 195,
        "ml_home_prob": 0.70414203,
        "ml_away_prob": 0.33898306,
        "spread_home": -5.5,
        "spread_home_odds": -105,
        "spread_away": 5.5,
        "spread_away_odds": -115,
        "total": 54.5,
        "total_over_odds": -120,
        "total_under_odds": 100,
        "captured_at": "2026-09-17T15:08:01.468Z"
      },
      {
        "bookmaker": "draftkings",
        "snapshot_type": "snapshot",
        "ml_home": -238,
        "ml_away": 195,
        "ml_home_prob": 0.70414203,
        "ml_away_prob": 0.33898306,
        "spread_home": -5.5,
        "spread_home_odds": -105,
        "spread_away": 5.5,
        "spread_away_odds": -115,
        "total": 54.5,
        "total_over_odds": -120,
        "total_under_odds": 100,
        "captured_at": "2026-09-17T15:08:35.622Z"
      }
    ],
    "espnbet": [
      {
        "bookmaker": "espnbet",
        "snapshot_type": "snapshot",
        "ml_home": -260,
        "ml_away": 215,
        "ml_home_prob": 0.7222222,
        "ml_away_prob": 0.31746033,
        "spread_home": -6,
        "spread_home_odds": -105,
        "spread_away": 6,
        "spread_away_odds": -115,
        "total": 54.5,
        "total_over_odds": -115,
        "total_under_odds": -105,
        "captured_at": "2026-09-17T15:04:00.530Z"
      },
      {
        "bookmaker": "espnbet",
        "snapshot_type": "snapshot",
        "ml_home": -260,
        "ml_away": 215,
        "ml_home_prob": 0.7222222,
        "ml_away_prob": 0.31746033,
        "spread_home": -6,
        "spread_home_odds": -105,
        "spread_away": 6,
        "spread_away_odds": -115,
        "total": 54.5,
        "total_over_odds": -115,
        "total_under_odds": -105,
        "captured_at": "2026-09-17T15:08:01.468Z"
      },
      {
        "bookmaker": "espnbet",
        "snapshot_type": "snapshot",
        "ml_home": -260,
        "ml_away": 215,
        "ml_home_prob": 0.7222222,
        "ml_away_prob": 0.31746033,
        "spread_home": -6,
        "spread_home_odds": -105,
        "spread_away": 6,
        "spread_away_odds": -115,
        "total": 54.5,
        "total_over_odds": -115,
        "total_under_odds": -105,
        "captured_at": "2026-09-17T15:08:35.622Z"
      }
    ],
    "fanduel": [
      {
        "bookmaker": "fanduel",
        "snapshot_type": "snapshot",
        "ml_home": -255,
        "ml_away": 210,
        "ml_home_prob": 0.7183099,
        "ml_away_prob": 0.32258064,
        "spread_home": -5.5,
        "spread_home_odds": -112,
        "spread_away": 5.5,
        "spread_away_odds": -108,
        "total": 54.5,
        "total_over_odds": -114,
        "total_under_odds": -106,
        "captured_at": "2026-09-17T15:04:00.530Z"
      },
      {
        "bookmaker": "fanduel",
        "snapshot_type": "snapshot",
        "ml_home": -255,
        "ml_away": 210,
        "ml_home_prob": 0.7183099,
        "ml_away_prob": 0.32258064,
        "spread_home": -5.5,
        "spread_home_odds": -112,
        "spread_away": 5.5,
        "spread_away_odds": -108,
        "total": 54.5,
        "total_over_odds": -114,
        "total_under_odds": -106,
        "captured_at": "2026-09-17T15:08:01.468Z"
      },
      {
        "bookmaker": "fanduel",
        "snapshot_type": "snapshot",
        "ml_home": -255,
        "ml_away": 210,
        "ml_home_prob": 0.7183099,
        "ml_away_prob": 0.32258064,
        "spread_home": -5.5,
        "spread_home_odds": -112,
        "spread_away": 5.5,
        "spread_away_odds": -108,
        "total": 54.5,
        "total_over_odds": -114,
        "total_under_odds": -106,
        "captured_at": "2026-09-17T15:08:35.622Z"
      }
    ]
  },
  "snapshots": 28
}

Response fields

FieldTypeDescription
game_idstring
home_teamstring
away_teamstring
kickoffstring
movementobject
movement.betmgm[]arrayList of objects
movement.betmgm[].bookmakerstring
movement.betmgm[].snapshot_typestring
movement.betmgm[].ml_homenumber
movement.betmgm[].ml_awaynumber
movement.betmgm[].ml_home_probnumber
movement.betmgm[].ml_away_probnumber
movement.betmgm[].spread_homenumber
movement.betmgm[].spread_home_oddsnumber
movement.betmgm[].spread_awaynumber
movement.betmgm[].spread_away_oddsnumber
movement.betmgm[].totalnumber
movement.betmgm[].total_over_oddsnumber
movement.betmgm[].total_under_oddsnumber
movement.betmgm[].captured_atstring
movement.draftkings[]arrayList of objects
movement.draftkings[].bookmakerstring
movement.draftkings[].snapshot_typestring
movement.draftkings[].ml_homenumber
movement.draftkings[].ml_awaynumber
movement.draftkings[].ml_home_probnumber
movement.draftkings[].ml_away_probnumber
movement.draftkings[].spread_homenumber
movement.draftkings[].spread_home_oddsnumber
movement.draftkings[].spread_awaynumber
movement.draftkings[].spread_away_oddsnumber
movement.draftkings[].totalnumber
movement.draftkings[].total_over_oddsnumber
movement.draftkings[].total_under_oddsnumber
movement.draftkings[].captured_atstring
movement.espnbet[]arrayList of objects
movement.espnbet[].bookmakerstring
movement.espnbet[].snapshot_typestring
movement.espnbet[].ml_homenumber
movement.espnbet[].ml_awaynumber

Related endpoints

Try it

500 credits free on signup — 20 calls to get_line_movement — and no card.