MCP server
Tools for events, odds, line movement, streams, and paid-plan positive EV or arbitrage feeds.
Get BetMGM moneylines, point spreads, totals and NFL player props with one API key. Pull REST snapshots or stream pre-match price changes through SSE and WebSockets.
{
"event_id": "nhl-nyr-bos",
"items": [
{
"bookmaker": "betmgm",
"bet_type": "moneyline",
"period_str": "full game",
"side": "home",
"selection_name": "Boston Bruins",
"american_display_odds": "+120"
},
{
"bookmaker": "betmgm",
"bet_type": "handicap",
"period_str": "full game",
"side": "away",
"selection_name": "New York Rangers +1.5",
"american_display_odds": "-165"
}
],
"resume": "1784092451749-0"
}
Copy a BetMGM request for your app or give the prompt to your AI agent.
X-API-Keybetmgm/v1/events/{event_id}/odds/snapshot?bookmakers=betmgm
Build a BetMGM NFL odds board with https://api.odds-api.net/v1. Keep ODDS_API_KEY server-side and send it in the X-API-Key header.
Find an upcoming game at /events?league=NFL¬_started_only=true&limit=50 that lists betmgm. Use its event_id to fetch /events/{event_id}/odds/snapshot?bookmakers=betmgm.
Show teams, start times, moneylines, point spreads, totals and NFL player props. Keep the player, period and line attached to each price. Convert decimal prices to American odds for display, and handle empty results.const apiKey = process.env.ODDS_API_KEY;
const baseUrl = "https://api.odds-api.net/v1";
const headers = { "X-API-Key": apiKey };
if (!apiKey) throw new Error("Set ODDS_API_KEY before running this file.");
async function getJson(path) {
const response = await fetch(`${baseUrl}${path}`, { headers });
if (!response.ok) throw new Error(await response.text());
return response.json();
}
const events = await getJson("/events?league=NFL¬_started_only=true&limit=50");
const event = events.items.find(({ bookmakers }) =>
Array.isArray(bookmakers)
? bookmakers.includes("betmgm")
: Object.hasOwn(bookmakers ?? {}, "betmgm")
);
if (!event) throw new Error("No upcoming NFL event with BetMGM odds found.");
const snapshot = await getJson(
`/events/${encodeURIComponent(event.event_id)}/odds/snapshot?bookmakers=betmgm`
);
console.log(JSON.stringify(snapshot, null, 2));
import os
import requests
base_url = "https://api.odds-api.net/v1"
headers = {"X-API-Key": os.environ["ODDS_API_KEY"]}
events_response = requests.get(
f"{base_url}/events",
headers=headers,
params={"limit": 50, "league": "NFL", "not_started_only": True},
timeout=20,
)
events_response.raise_for_status()
events = events_response.json()["items"]
event = next(
(item for item in events if "betmgm" in item.get("bookmakers", [])),
None,
)
if event is None:
raise RuntimeError("No upcoming NFL event with BetMGM odds found.")
response = requests.get(
f"{base_url}/events/{event['event_id']}/odds/snapshot",
headers=headers,
params={"bookmakers": "betmgm"},
timeout=20,
)
response.raise_for_status()
print(response.json())
export ODDS_API_KEY="your_api_key"
# Find an upcoming NFL game listing betmgm.
curl -sS \
-H "X-API-Key: $ODDS_API_KEY" \
"https://api.odds-api.net/v1/events?league=NFL¬_started_only=true&limit=50"
# Use that game's event_id below.
export EVENT_ID="replace_with_event_id"
curl -sS \
-H "X-API-Key: $ODDS_API_KEY" \
"https://api.odds-api.net/v1/events/$EVENT_ID/odds/snapshot?bookmakers=betmgm"
Explore BetMGM game lines, NFL yardage props, basketball player markets, and soccer corners and cards.
| Market | API bet_type / metric | What it covers |
|---|---|---|
| Moneyline |
moneyline
|
Full-game winner prices for covered US leagues and matchups. |
| Point spread |
handicap
|
Basketball and football spread prices with favorite, underdog, and line values. |
| Run line and puck line |
handicap
|
US baseball and hockey spread language mapped to the same normalized line field. |
| Game and team totals |
totalteam total
|
Over and under prices for the combined score or one team's score. |
| NFL passing yards |
player prop / player passing yards
|
Quarterback passing-yard lines with separate over and under prices. |
| NFL rushing and receiving yards |
player prop / player rushing yardsplayer prop / player receiving yardsplayer prop / player rushing + receiving yards
|
Rushing, receiving and combined yardage lines, matched to each player. |
| Football touchdown props |
player prop / player touchdownsplayer prop / player passing touchdowns
|
Player touchdown totals and passing-touchdown markets for football matchups. |
| Basketball player props |
player prop / player pointsplayer prop / player reboundsplayer prop / player assists
|
Player points, rebounds and assists with the line and price kept together. |
| Soccer corners |
total / cornersteam total / cornersmoneyline 3w / corners
|
Match corner totals, team corner totals and three-way corner result markets. |
| Soccer cards |
player prop / cardsplayer prop / player cards
|
Player card markets with the selection, line and period attached to each price. |
| Half, quarter and period markets |
moneylinehandicaptotal
|
Winner, spread and total prices for halves, quarters and hockey periods. |
Tools for events, odds, line movement, streams, and paid-plan positive EV or arbitrage feeds.
Agent-ready instructions.
TypeScript, Python, Postman and example builds.
Sports and racing odds coverage for agent workflows.
Lightweight streaming updates for dashboards and alerts.
Bidirectional streams for richer pre-match products.
Verify current BetMGM coverage first, then request the event snapshot and preserve the response's freshness fields.
Start with GET /v1/bookmakers and the live coverage catalog. Registry presence does not guarantee a current price for every event.
Choose an event that lists betmgm in its available bookmaker coverage before requesting a snapshot.
Use bookmakers=betmgm and keep the normalized line, selection, price, and freshness fields intact.
Treat the current snapshot as authoritative, and fall back to other selected US books when BetMGM is not present.
Choose a monthly plan based on request volume, rate limits, and support.
Enterprise grade
Custom projects, scoped with your team.
Coverage-first answers about the BetMGM key, current availability, US market labels, American odds display, and affiliation.
No. odds-api is an independent data service and is not affiliated with, endorsed by, or sponsored by BetMGM. It provides market data only and does not place bets or manage BetMGM accounts.
No. BetMGM can be registry-listed without appearing in every current event or recent coverage window. Confirm GET /v1/bookmakers, live coverage, and the event snapshot before depending on it.
Use betmgm in bookmaker filters when that key is available to your account and attached to the event. The snapshot query is bookmakers=betmgm.
US-facing run line, puck line, and point spread labels map to the normalized handicap bet_type with a line value and side. Keep the sport context when presenting that field.
No fixed event-level cadence is claimed here. The service publishes its adaptive pre-match refresh model separately, while current latency and availability measurements appear on the status page.
Use one normalized contract, then narrow requests with the canonical bookmaker key for each covered source.
Explore the full US sportsbook APIChoose a plan and verify current BetMGM coverage for the leagues and events your product needs.