get_line_movement
25 creditsTime-seriesPOST /v1/get_line_movement
Data refreshed · changelog
Time-series odds grouped by bookmaker
Use it when you are studying how a line moved: every hourly snapshot per bookmaker from first post to kickoff.
Parameters
game_idstringrequired- Game id
bookmakerstringoptional- Bookmaker key filter
all_snapshotsbooleanoptional- Every hourly capture. By default a capture identical to the one before it is left out (the latest is always kept), which keeps every move and its time.
Notes
- Over MCP, ask for it in plain English and the client calls
get_line_movementitself. Point any MCP client athttps://mcp.endzoneapi.com/mcp?key=YOUR_API_KEY. - Each call costs 25 credits, taken before it runs and refunded if the server errors.
- Not the call you need? Find the right call by what you are trying to answer.
Request
curl -X POST https://mcp.endzoneapi.com/v1/get_line_movement \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"game_id": "2026_02_DET_BUF"
}'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",
"source": "archive",
"ml_home": -210,
"ml_away": 175,
"ml_home_prob": 0.67741936,
"ml_away_prob": 0.36363637,
"spread_home": -4,
"spread_home_odds": -115,
"spread_away": 4,
"spread_away_odds": -105,
"total": 53.5,
"total_over_odds": -110,
"total_under_odds": -108,
"captured_at": "2026-09-14T16:00:00.000Z"
},
{
"bookmaker": "betmgm",
"snapshot_type": "snapshot",
"source": "archive",
"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",
"source": "archive",
"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"
}
],
"draftkings": [
{
"bookmaker": "draftkings",
"snapshot_type": "snapshot",
"source": "archive",
"ml_home": -162,
"ml_away": 136,
"ml_home_prob": 0.6183206,
"ml_away_prob": 0.42372882,
"spread_home": -3,
"spread_home_odds": -110,
"spread_away": 3,
"spread_away_odds": -110,
"total": 52.5,
"total_over_odds": -105,
"total_under_odds": -115,
"captured_at": "2026-09-09T16:00:00.000Z"
},
{
"bookmaker": "draftkings",
"snapshot_type": "snapshot",
"source": "archive",
"ml_home": -162,
"ml_away": 136,
"ml_home_prob": 0.6183206,
"ml_away_prob": 0.42372882,
"spread_home": -3,
"spread_home_odds": -115,
"spread_away": 3,
"spread_away_odds": -105,
"total": 51.5,
"total_over_odds": -115,
"total_under_odds": -105,
"captured_at": "2026-09-10T16:00:00.000Z"
},
{
"bookmaker": "draftkings",
"snapshot_type": "snapshot",
"source": "archive",
"ml_home": -166,
"ml_away": 140,
"ml_home_prob": 0.62406015,
"ml_away_prob": 0.41666666,
"spread_home": -3,
"spread_home_odds": -115,
"spread_away": 3,
"spread_away_odds": -105,
"total": 52.5,
"total_over_odds": -105,
"total_under_odds": -115,
"captured_at": "2026-09-13T16:00:00.000Z"
}
],
"espnbet": [
{
"bookmaker": "espnbet",
"snapshot_type": "snapshot",
"source": "archive",
"ml_home": -170,
"ml_away": 145,
"ml_home_prob": 0.6296296,
"ml_away_prob": 0.40816328,
"spread_home": -3.5,
"spread_home_odds": -105,
"spread_away": 3.5,
"spread_away_odds": -115,
"total": 52.5,
"total_over_odds": -105,
"total_under_odds": -115,
"captured_at": "2026-09-09T16:00:00.000Z"
},
{
"bookmaker": "espnbet",
"snapshot_type": "snapshot",
"source": "archive",
"ml_home": -195,
"ml_away": 165,
"ml_home_prob": 0.66101694,
"ml_away_prob": 0.3773585,
"spread_home": -4,
"spread_home_odds": -110,
"spread_away": 4,
"spread_away_odds": -110,
"total": 52.5,
"total_over_odds": -105,
"total_under_odds": -115,
"captured_at": "2026-09-13T16:00:00.000Z"
},
{
"bookmaker": "espnbet",
"snapshot_type": "snapshot",
"source": "archive",
"ml_home": -210,
"ml_away": 175,
"ml_home_prob": 0.67741936,
"ml_away_prob": 0.36363637,
"spread_home": -4,
"spread_home_odds": -110,
"spread_away": 4,
"spread_away_odds": -110,
"total": 53.5,
"total_over_odds": -115,
"total_under_odds": -105,
"captured_at": "2026-09-14T16:00:00.000Z"
}
],
"fanduel": [
{
"bookmaker": "fanduel",
"snapshot_type": "snapshot",
"source": "archive",
"ml_home": -196,
"ml_away": 164,
"ml_home_prob": 0.6621622,
"ml_away_prob": 0.37878788,
"spread_home": -3.5,
"spread_home_odds": -110,
"spread_away": 3.5,
"spread_away_odds": -110,
"total": 52.5,
"total_over_odds": -110,
"total_under_odds": -110,
"captured_at": "2026-09-09T16:00:00.000Z"
},
{
"bookmaker": "fanduel",
"snapshot_type": "snapshot",
"source": "archive",
"ml_home": -220,
"ml_away": 184,
"ml_home_prob": 0.6875,
"ml_away_prob": 0.35211268,
"spread_home": -4.5,
"spread_home_odds": -105,
"spread_away": 4.5,
"spread_away_odds": -115,
"total": 53.5,
"total_over_odds": -115,
"total_under_odds": -105,
"captured_at": "2026-09-14T16:00:00.000Z"
},
{
"bookmaker": "fanduel",
"snapshot_type": "snapshot",
"source": "archive",
"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"
}
]
},
"snapshots": 32
}Response fields
game_idstringhome_teamstringaway_teamstringkickoffstringmovementobjectmovement.betmgm[]array- List of objects
movement.betmgm[].bookmakerstringmovement.betmgm[].snapshot_typestringmovement.betmgm[].sourcestringmovement.betmgm[].ml_homenumbermovement.betmgm[].ml_awaynumbermovement.betmgm[].ml_home_probnumbermovement.betmgm[].ml_away_probnumbermovement.betmgm[].spread_homenumbermovement.betmgm[].spread_home_oddsnumbermovement.betmgm[].spread_awaynumbermovement.betmgm[].spread_away_oddsnumbermovement.betmgm[].totalnumbermovement.betmgm[].total_over_oddsnumbermovement.betmgm[].total_under_oddsnumbermovement.betmgm[].captured_atstringmovement.draftkings[]array- List of objects
movement.draftkings[].bookmakerstringmovement.draftkings[].snapshot_typestringmovement.draftkings[].sourcestringmovement.draftkings[].ml_homenumbermovement.draftkings[].ml_awaynumbermovement.draftkings[].ml_home_probnumbermovement.draftkings[].ml_away_probnumbermovement.draftkings[].spread_homenumbermovement.draftkings[].spread_home_oddsnumbermovement.draftkings[].spread_awaynumbermovement.draftkings[].spread_away_oddsnumbermovement.draftkings[].totalnumbermovement.draftkings[].total_over_oddsnumbermovement.draftkings[].total_under_oddsnumbermovement.draftkings[].captured_atstringmovement.espnbet[]array- List of objects
movement.espnbet[].bookmakerstringmovement.espnbet[].snapshot_typestring
Related endpoints
get_schedule2 cr
Returns the game_id this one takes.
Upcoming games by week or for the next N days
get_games5 cr
Returns the game_id this one takes.
Query games by season, week, team, date, type, or status, with closing lines
get_game_detail10 cr
Takes the game_id this one returns.
Full game detail with team stats, starting QBs, odds, weather, and officials
get_prop_movement10 cr
Takes the game_id this one returns.
How one player's prop line moved before a game, every capture by sportsbook
Try it
500 free credits every month: 20 calls to get_line_movement, and no card.