Live Sports Odds API
Last updated 2026-10-30
Betting Data API returns live and pre-match odds for upcoming and in-play games through one REST endpoint, GET /odds/. Prices for the top US leagues (NFL, NBA, MLB, NHL) refresh as often as every 30 seconds, and each bookmaker price carries its own updated_at timestamp so you can tell exactly how fresh it is.
How live odds work
Send GET /odds/?sport_key=... with your key in the x-api-key header. The response lists every upcoming and in-play game for that league with each sportsbook's current prices. Finished games drop off the live response; use historical odds for anything that has already been played.
curl -H "x-api-key: YOUR_API_KEY" \ "https://api.bettingdataapi.com/odds/?sport_key=basketball_nba&markets=h2h,spreads,totals"
Delivery is REST polling: call the endpoint on your own schedule. There is no streaming socket and no standalone live-scores endpoint.
Refresh intervals
| League group | Typical refresh |
|---|---|
| NFL, NBA, MLB, NHL | about every 30 seconds |
| MLS, EPL, La Liga, Bundesliga, Serie A, Ligue 1, tennis, UFC | 60 to 120 seconds |
| Thinner-coverage leagues (for example Eredivisie, EFL Championship) | about every 300 seconds |
| Player props (Business plan) | about every 5 minutes |
Poll no faster than the refresh interval of the league you care about. Faster polling returns the same prices and uses quota. Every response includes X-RateLimit-Remaining so you can pace yourself; see rate limits.
Filters that keep responses small
| Parameter | What it does |
|---|---|
markets | Any of h2h, spreads, totals (all three by default). |
regions | Any of us, uk, eu, au. |
bookmakers | Comma-separated bookmaker keys such as draftkings, fanduel, pinnacle. An unknown key returns 400 naming it. |
event_id | One game only. |
commenceTimeFrom / commenceTimeTo | Only games starting inside a window (ISO 8601 UTC), for example today's slate. |
oddsFormat | american (default) or decimal. |
Best available line per outcome
GET /best-lines/?sport_key=... returns the single best price for each outcome across the books you can access, which is the shortest path to a line-shopping or odds-comparison feature.
What each plan includes
| Plan | Live odds coverage | Daily requests |
|---|---|---|
| Free ($0) | NFL, NBA, MLB moneylines from US books | 25 |
| Professional ($29/mo) | All sports in the catalog, h2h, spreads and totals, major US sportsbooks | 667 (20,000 per month) |
| Business ($99/mo) | Adds Pinnacle and international books, player props, alternate and period markets, historical archive | 6,667 (200,000 per month) |
Quotas reset at 00:00 UTC. There are no overage charges; at the limit you receive a 429. See pricing.
Frequently asked questions
Does the live odds endpoint include in-play games?
Yes. GET /odds/ returns upcoming and in-play games. Finished games roll off the live response and are available from /historical/odds on the Business plan.
How often are live odds updated?
About every 30 seconds for NFL, NBA, MLB and NHL, 60 to 120 seconds for major soccer, tennis and UFC, and about every 300 seconds for thinner leagues. Each bookmaker price includes an updated_at timestamp.
Is there a websocket or streaming option?
No. Live odds are delivered over REST. Poll at or slower than the refresh interval for the league you need.
Try it with a free key
25 requests per day, NFL, NBA and MLB moneylines, no credit card.
Get a free API key