BetMGM Odds API | Real-Time Lines & Player Props
Pricing
from $2.99 / 1,000 odds requests
BetMGM Odds API | Real-Time Lines & Player Props
Extract real-time BetMGM sportsbook odds for 22 sports across 18 US states. Get moneylines, spreads, totals, player props, and futures in decimal, American, and fractional formats. Always-on HTTP endpoints plus batch CSV/JSON export. NBA, NFL, MLB, NHL, EPL, and 500+ leagues. No login required.
Pricing
from $2.99 / 1,000 odds requests
Rating
0.0
(0)
Developer
Zen Studio
Actor stats
0
Bookmarked
3
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
BetMGM Odds API | Real-Time Sportsbook Lines, Spreads & Player Props
Real-time BetMGM odds for 22 sports across 18 US states. Moneylines, spreads, totals, player props, and futures in decimal, American, and fractional formats. No login required.
Always-on HTTP endpoints for live integration, plus batch export to CSV/JSON.
| Zen Studio Sports Betting • Real-time odds across every major sportsbook | |||
|
Global odds, live scores |
Lines, props, SGP |
➤ You are here |
Projections and lines |
Copy to your AI assistant
Copy this block into ChatGPT, Claude, Cursor, or any LLM to start building with this data.
BetMGM Odds API (zen-studio/betmgm-odds) on Apify. Real-time sportsbook odds for 22 sports, 18 US states. Base: https://zen-studio--betmgm-odds.apify.actor Auth: ?token=APIFY_TOKEN (get at https://console.apify.com/account/integrations). Endpoints: GET /health (free, health check), GET /sports (free, 22 sports with slugs), GET /leagues?sport=basketball&state=nj ($0.003, discover leagues with fixture counts), GET /leagues/{leagueId}?market=game_lines&state=nj ($0.003, all events with odds), GET /events/{eventId}?market=all&state=nj ($0.003, single event full market depth 100-500 markets), GET /live?sport=basketball&state=nj ($0.003, live events with scoreboards). Response: {"success": true, "count": N, "events": [{"eventId", "sport", "sportSlug", "league", "leagueId", "homeTeam", "awayTeam", "startDate", "stage", "isLive", "isOpenForBetting", "markets": [{"name", "category", "isMain", "line", "selections": [{"name", "odds", "americanOdds", "fractionalOdds", "line"}]}]}]}. Market filters: game_lines (moneyline/spread/totals), player_props, all. States: nj pa co mi az va tn ia in wv dc wy ks ky mo la ny il ms. Batch mode: run with {"sport": "basketball", "market": "game_lines", "maxResults": 500, "state": "nj"} for CSV/JSON export. Also available as MCP server: add zen-studio/betmgm-odds at mcp.apify.com. OpenAPI spec: /openapi.json?token=TOKEN
Also available as an MCP server — add zen-studio/betmgm-odds for natural language access.
Key Features
- 22 sports, 500+ leagues — NBA, NFL, MLB, NHL, EPL, La Liga, World Cup, and every league BetMGM offers
- 18 US states — NJ, PA, CO, MI, AZ, VA, TN, and 11 more. Compare odds across state lines.
- 3 odds formats — decimal, American, and fractional included in every response
- Full market depth — moneylines, spreads, totals, 200+ player props, alt lines, futures
What You Can Do
Discovery (2 endpoints, free)
| Endpoint | Description |
|---|---|
GET /health | Health check |
GET /sports | List all 22 sports with slugs and IDs |
Odds Data (4 endpoints, $0.003 each)
| Endpoint | Description |
|---|---|
GET /leagues?sport={slug}&state={st} | All leagues for a sport with event counts |
GET /leagues/{id}?market={filter}&state={st} | All events in a league with odds |
GET /events/{id}?market={filter}&state={st} | Single event, full market depth (100-500 markets) |
GET /live?sport={slug}&state={st} | Live events with scoreboards |
Market filters: game_lines (default, moneyline/spread/totals), player_props, all
State codes: nj (default), pa, co, mi, az, va, tn, ia, in, wv, dc, wy, ks, ky, mo, la, ny, il, ms
Quick Start
1. Discover leagues
$curl "https://zen-studio--betmgm-odds.apify.actor/leagues?sport=basketball&token=YOUR_APIFY_TOKEN"
{"success": true,"count": 30,"sport": "basketball","leagues": [{ "id": "df55f1a848c3", "name": "NBA", "fixtureCount": 14 },{ "id": "c529334fe0d5", "name": "EuroLeague - Men", "fixtureCount": 11 },{ "id": "77a9c39a3530", "name": "B.League", "fixtureCount": 12 }]}
2. Get odds for a league
$curl "https://zen-studio--betmgm-odds.apify.actor/leagues/df55f1a848c3?market=game_lines&token=YOUR_APIFY_TOKEN"
3. Full market depth for one event
$curl "https://zen-studio--betmgm-odds.apify.actor/events/9c76cfcb2706?market=all&token=YOUR_APIFY_TOKEN"
Returns 100-500 markets including all player props, alt lines, and specials.
Response Format
Every endpoint returns a consistent envelope:
{"success": true,"count": 9,"events": [{"eventId": "9c76cfcb2706","name": "New York Knicks at Memphis Grizzlies","sport": "Basketball","sportSlug": "basketball","league": "NBA","leagueId": "df55f1a848c3","region": "USA","state": "NJ","homeTeam": "New York Knicks","awayTeam": "Memphis Grizzlies","startDate": "2026-04-02T00:10:00Z","cutOffDate": "2026-04-02T00:10:00Z","stage": "PreMatch","isLive": false,"isOpenForBetting": true,"isPlannedInPlay": false,"totalMarketsCount": 265,"markets": [{"name": "Moneyline","category": "game_lines","isMain": true,"line": null,"selections": [{"name": "Knicks","odds": 1.08,"americanOdds": -1200,"fractionalOdds": "1/12","line": null,"visibility": "Visible"},{"name": "Grizzlies","odds": 8.25,"americanOdds": 725,"fractionalOdds": "7/1","line": null,"visibility": "Visible"}]},{"name": "Spread","category": "game_lines","isMain": false,"line": null,"selections": [{"name": "New York Knicks -14.5","odds": 1.91,"americanOdds": -110,"fractionalOdds": "10/11","line": -14.5},{"name": "Memphis Grizzlies +14.5","odds": 1.91,"americanOdds": -110,"fractionalOdds": "10/11","line": 14.5}]},{"name": "Totals","category": "game_lines","isMain": false,"line": 227.5,"selections": [{"name": "Over 227.5","odds": 1.87,"americanOdds": -115,"fractionalOdds": "20/23","line": null,"totalsPrefix": "Over"},{"name": "Under 227.5","odds": 1.95,"americanOdds": -105,"fractionalOdds": "20/21","line": null,"totalsPrefix": "Under"}]}],"scrapedAt": "2026-04-01T13:26:35Z"}]}
Error Responses
{"success": false,"error": "Unknown sport: curling. Use /sports to see available options."}
| Code | Meaning |
|---|---|
| 400 | Invalid parameter (bad sport, unknown ID, invalid market) |
| 404 | Event not found or no longer available |
| 500 | Internal error (retry) |
Live Events with Scoreboards
The /live endpoint returns all in-progress events with real-time scores:
{"eventId": "abc123def456","homeTeam": "Qingdao Eagles","awayTeam": "Tianjin","isLive": true,"scoreboard": {"period": "Q3","homeScore": 63,"awayScore": 61},"markets": [{"name": "Moneyline","category": "game_lines","selections": [...]}]}
Events without inline odds (tennis, table tennis) are still included with scoreboards. Call /events/{id} for full market depth.
Batch Mode
Run the actor with input to export all odds to a dataset (CSV/JSON). One row per selection.
{"sport": "basketball","market": "game_lines","maxResults": 500,"state": "nj"}
Batch Output
| sport | league | event | market | selection | odds | americanOdds | line |
|---|---|---|---|---|---|---|---|
| Basketball | NBA | Knicks at Grizzlies | Moneyline | Knicks | 1.08 | -1200 | |
| Basketball | NBA | Knicks at Grizzlies | Spread | Knicks -14.5 | 1.91 | -110 | -14.5 |
| Basketball | NBA | Knicks at Grizzlies | Totals | Over 227.5 | 1.87 | -115 | 227.5 |
Use batch for scheduled polling (every 5/15/60 minutes), daily dumps, or one-off research.
Pricing
$3 per 1,000 requests (pay per event). Discovery endpoints (/health, /sports) are free.
| What you get | Requests | Cost |
|---|---|---|
| NBA game lines (9 games) | 1 | $0.003 |
| Full NBA day (game lines + props) | 10 | $0.03 |
| All basketball leagues | 1 | $0.003 |
| All sports batch (game lines) | ~10 | $0.03 |
| Hourly NBA poll for 24h | 24 | $0.07 |
Batch mode charges per league processed (not per row).
FAQ
What's Standby mode? Always-on HTTP server. No queue, no cold start. Apify keeps it warm and routes requests directly.
How fresh is the data? Real-time. Each request fetches live data. Odds update as lines move.
Can I compare odds across states?
Yes. Pass different state parameters to compare NJ vs PA vs CO odds for the same events.
Which sports are supported? 22 sports: Basketball, American Football, Baseball, Hockey, Soccer, Tennis, MMA, Golf, Boxing, Cricket, Darts, Formula 1, Handball, Lacrosse, Motorsport, NASCAR, Rugby League, Rugby Union, Snooker, Table Tennis, Volleyball, Cycling.
What's the difference between game_lines and player_props? Game lines are moneyline, spread, and totals. Player props are per-player stats (points, rebounds, assists, strikeouts). A single NBA game has ~25 game lines and ~240 player props.
Why do some live events show 0 markets?
Some sports (tennis, table tennis) don't include inline odds in the live feed. The scoreboard and metadata are still present. Call /events/{id} for full odds.
What do the IDs look like?
IDs are opaque 12-character hex strings (e.g. df55f1a848c3). They are stable across requests. Discover them via /sports and /leagues.
Is there a rate limit? No hard rate limit. Avoid rapid-fire requests from the same session.
Can I use this for arbitrage? Yes. Run BetMGM alongside DraftKings and Bet365 actors to compare odds across books.
Support
- Bugs: Issues tab
- Features: Issues tab
Legal Compliance
Extracts publicly available odds data. Users must comply with applicable terms and data protection regulations.
Real-time BetMGM sportsbook odds for 22 sports, 18 US states. Standby HTTP endpoints + batch CSV/JSON export.