Getting started
The SportsbookOdds API serves real-time odds from 25+ sportsbooks plus pre-computed +EV, arbitrage and sharp fair lines. It's drop-in compatible with The Odds API v4 — swap the host, keep your code.
curl "https://sportsbookodds.p.rapidapi.com/api/v4/sports/baseball_mlb/odds" \ -H "X-RapidAPI-Key: YOUR_KEY" \ -H "X-RapidAPI-Host: sportsbookodds.p.rapidapi.com"
Authentication
Every request must include your RapidAPI key and the host, sent as headers:
X-RapidAPI-Key: YOUR_KEY X-RapidAPI-Host: sportsbookodds.p.rapidapi.com
Keep your key server-side. Requests without a valid key return 401/403.
Conventions
- Decimal odds by default (
oddsFormat=americanfor American). - Markets:
h2h(moneyline),spreads,totals. - Sport keys follow The Odds API scheme:
baseball_mlb,basketball_nba,americanfootball_nfl,soccer_epl, etc. Get the full list from /api/v4/sports. - Times are ISO 8601 UTC unless
dateFormat=unix.
Core odds
List every sport with active markets right now.
| Name | In | Type | Description |
|---|---|---|---|
all | query | boolean | Include out-of-season sports. Default false. |
curl "https://sportsbookodds.p.rapidapi.com/api/v4/sports" \ -H "X-RapidAPI-Key: YOUR_KEY" \ -H "X-RapidAPI-Host: sportsbookodds.p.rapidapi.com"
[
{ "key": "baseball_mlb", "group": "Baseball", "title": "MLB", "active": true, "has_outrights": false },
{ "key": "basketball_nba", "group": "Basketball", "title": "NBA", "active": true }
]All odds for a sport across every book. Drop-in compatible with The Odds API v4.
| Name | In | Type | Description |
|---|---|---|---|
sport required | path | string | Sport key, e.g. baseball_mlb. |
markets | query | string | Comma-separated: h2h, spreads, totals. Default h2h. |
regions | query | string | us, uk, eu, au. Default us. |
bookmakers | query | string | Comma-separated book keys to filter, e.g. draftkings,fanduel. |
oddsFormat | query | string | decimal or american. Default decimal. |
dateFormat | query | string | iso or unix. Default iso. |
curl "https://sportsbookodds.p.rapidapi.com/api/v4/sports/{sport}/odds?markets=h2h,totals&oddsFormat=decimal" \
-H "X-RapidAPI-Key: YOUR_KEY" \
-H "X-RapidAPI-Host: sportsbookodds.p.rapidapi.com"[
{
"id": "a1b2c3",
"sport_key": "baseball_mlb",
"commence_time": "2026-07-18T23:10:00Z",
"home_team": "Los Angeles Dodgers",
"away_team": "San Francisco Giants",
"bookmakers": [
{ "key": "pinnacle", "title": "Pinnacle", "markets": [
{ "key": "h2h", "outcomes": [
{ "name": "Los Angeles Dodgers", "price": 1.87 },
{ "name": "San Francisco Giants", "price": 2.05 } ] } ] }
]
}
]Upcoming events for a sport (no odds — lighter payload).
| Name | In | Type | Description |
|---|---|---|---|
sport required | path | string | Sport key. |
curl "https://sportsbookodds.p.rapidapi.com/api/v4/sports/{sport}/events" \
-H "X-RapidAPI-Key: YOUR_KEY" \
-H "X-RapidAPI-Host: sportsbookodds.p.rapidapi.com"[
{ "id": "a1b2c3", "sport_key": "baseball_mlb", "commence_time": "2026-07-18T23:10:00Z",
"home_team": "Los Angeles Dodgers", "away_team": "San Francisco Giants" }
]Every market and book for a single event.
| Name | In | Type | Description |
|---|---|---|---|
sport required | path | string | Sport key. |
eventId required | path | string | Event id from /events. |
curl "https://sportsbookodds.p.rapidapi.com/api/v4/sports/{sport}/events/{eventId}/markets" \
-H "X-RapidAPI-Key: YOUR_KEY" \
-H "X-RapidAPI-Host: sportsbookodds.p.rapidapi.com"{
"id": "a1b2c3", "home_team": "Los Angeles Dodgers", "away_team": "San Francisco Giants",
"bookmakers": [ { "key": "draftkings", "markets": [
{ "key": "h2h", "outcomes": [ { "name": "Los Angeles Dodgers", "price": 1.83 } ] },
{ "key": "totals", "outcomes": [ { "name": "Over", "price": 1.95, "point": 8.5 } ] } ] } ]
}Historical odds snapshots for backtesting and line-movement analysis.
| Name | In | Type | Description |
|---|---|---|---|
sport required | path | string | Sport key. |
date | query | string | ISO timestamp of the snapshot to return. |
curl "https://sportsbookodds.p.rapidapi.com/api/v4/historical/sports/{sport}/odds?date=2026-07-15T20:00:00Z" \
-H "X-RapidAPI-Key: YOUR_KEY" \
-H "X-RapidAPI-Host: sportsbookodds.p.rapidapi.com"{
"timestamp": "2026-07-15T20:00:00Z",
"data": [ { "id": "x1", "home_team": "...", "bookmakers": [ ] } ]
}Computed edges
Pre-computed +EV bets: every price better than the no-vig consensus fair line, ranked by edge.
| Name | In | Type | Description |
|---|---|---|---|
limit | query | integer | Max results. Default 50. |
curl "https://sportsbookodds.p.rapidapi.com/api/ev?limit=10" \ -H "X-RapidAPI-Key: YOUR_KEY" \ -H "X-RapidAPI-Host: sportsbookodds.p.rapidapi.com"
{
"generated_at": "2026-07-18T23:04:11Z",
"opps": [
{
"home": "Los Angeles Dodgers", "away": "San Francisco Giants",
"market": "h2h", "outcome": "home", "point": null,
"book": "draftkings", "price": 2.12,
"fair_price": 1.98, "fair_prob": 0.505,
"ev_pct": 0.041, "kelly_frac": 0.021
}
]
}Cross-book arbitrage opportunities with the exact stake split per leg.
| Name | In | Type | Description |
|---|---|---|---|
sport | query | string | Filter by sport key. |
markets | query | string | Comma-separated market filter. |
min_edge_pct | query | number | Minimum edge % to include. Default 0. |
limit | query | integer | Max results. Default 100. |
curl "https://sportsbookodds.p.rapidapi.com/api/v4/arb?min_edge_pct=1" \ -H "X-RapidAPI-Key: YOUR_KEY" \ -H "X-RapidAPI-Host: sportsbookodds.p.rapidapi.com"
{
"generated_at": "2026-07-18T23:04:11Z",
"count": 3,
"arbs": [
{
"home": "New York Yankees", "away": "Boston Red Sox",
"market": "totals", "point": 8.5, "arb_edge_pct": 2.4,
"legs": [
{ "book": "betmgm", "outcome": "over", "price": 2.05, "stake_pct": 49.4 },
{ "book": "fanduel", "outcome": "under", "price": 2.10, "stake_pct": 50.6 }
]
}
]
}Arbitrage between crypto books (Cloudbet) and fiat retail, where lines diverge most.
| Name | In | Type | Description |
|---|---|---|---|
min_edge_pct | query | number | Minimum edge %. Default 0. |
limit | query | integer | Max results. |
curl "https://sportsbookodds.p.rapidapi.com/api/v4/crypto-arb" \ -H "X-RapidAPI-Key: YOUR_KEY" \ -H "X-RapidAPI-Host: sportsbookodds.p.rapidapi.com"
{
"count": 1,
"arbs": [ { "home": "...", "away": "...", "arb_edge_pct": 3.1, "is_crypto_arb": true, "legs": [ ] } ]
}The sharp-weighted, no-vig fair line for an event — the market's true probability.
| Name | In | Type | Description |
|---|---|---|---|
eventId required | path | string | Event id. |
curl "https://sportsbookodds.p.rapidapi.com/api/v4/sharp-consensus/{eventId}" \
-H "X-RapidAPI-Key: YOUR_KEY" \
-H "X-RapidAPI-Host: sportsbookodds.p.rapidapi.com"{
"home": "Los Angeles Dodgers", "away": "San Francisco Giants",
"fair_prob": { "home": 0.531, "away": 0.469 },
"fair_odds": { "home": 1.883, "away": 2.132 },
"sharp_books": ["pinnacle", "sbobet", "smarkets"],
"vig_removed": true
}Events ranked by how far apart the books price them — where the softest lines are.
| Name | In | Type | Description |
|---|---|---|---|
sport | query | string | Filter by sport key. |
min_books | query | integer | Min books quoting. Default 3. |
limit | query | integer | Max results. Default 20. |
curl "https://sportsbookodds.p.rapidapi.com/api/v4/efficiency-ranking" \ -H "X-RapidAPI-Key: YOUR_KEY" \ -H "X-RapidAPI-Host: sportsbookodds.p.rapidapi.com"
{
"ranking": [
{ "home": "...", "away": "...", "spread_pct": 6.2, "books": 8, "sport": "baseball_mlb" }
]
}Live per-book freshness and latency so you never trade on a stale line.
curl "https://sportsbookodds.p.rapidapi.com/api/books/status" \ -H "X-RapidAPI-Key: YOUR_KEY" \ -H "X-RapidAPI-Host: sportsbookodds.p.rapidapi.com"
{
"books": [ { "book": "pinnacle", "ok": true, "quotes": 1240, "age_sec": 41 } ]
}Public track record
Our auto-graded paper track record: record, ROI, closing-line value and a Monte-Carlo skill-vs-luck breakdown.
curl "https://sportsbookodds.p.rapidapi.com/api/v4/track" \ -H "X-RapidAPI-Key: YOUR_KEY" \ -H "X-RapidAPI-Host: sportsbookodds.p.rapidapi.com"
{
"generated_at": "2026-07-18T23:00:00Z",
"stats": {
"graded": 810, "wins": 410, "losses": 400,
"roi": 0.0545, "clv_beat_pct": 71.6,
"clv_buckets": [ { "bucket": "\u2265 +5%", "bets": 329, "roi": 0.114 } ],
"monte_carlo": { "percentile": 55, "pct_losing_months": 10.4, "sims": 10000 }
}
}The bet-by-bet paper ledger — losers included, CLV on every bet.
| Name | In | Type | Description |
|---|---|---|---|
status | query | string | Filter: won | lost | void | open. |
sport | query | string | Filter by sport key. |
limit | query | integer | Page size, max 500. Default 100. |
offset | query | integer | Page offset. Default 0. |
curl "https://sportsbookodds.p.rapidapi.com/api/v4/track/ledger?status=won&limit=50" \ -H "X-RapidAPI-Key: YOUR_KEY" \ -H "X-RapidAPI-Host: sportsbookodds.p.rapidapi.com"
{
"count": 50, "total": 410,
"bets": [
{ "placed_at": "2026-07-15T18:10:00Z", "sport": "baseball_mlb",
"home": "...", "away": "...", "market": "h2h", "outcome": "home",
"book": "draftkings", "price": 2.12, "closing_price": 2.00,
"clv_pct": 0.06, "status": "won", "pnl": 44.0 }
]
}Status codes
| Code | Meaning |
|---|---|
200 | OK |
400 | Bad request — invalid parameter |
401 / 403 | Missing or invalid API key |
429 | Rate limit / quota exceeded |
5xx | Temporary server error — retry with backoff |
Rate limits & plans
Quotas and rate limits are set per plan on RapidAPI. The Free tier lets you try every endpoint; Pro / Ultra / Mega raise limits and unlock the computed-edge endpoints as you scale.