Odds
Access real-time betting odds and player props from US sportsbooks, supported DFS pick'em platforms, and exchange/prediction-market venues, normalized into one consistent format. DFS prices are indicative and exposed in American odds for side-by-side comparison. All plans can access the full tracked bookmaker set.
For a player-grouped prop response using the same canonical event IDs, see the Player Props docs.
Browse Odds
/v1/oddsBrowse odds with filtering by league, market, bookmaker, and source type. If you omit market, the API returns game-level markets only (moneyline, spread, total).
| Parameter | Type | Required | Description |
|---|---|---|---|
| league | string | No | Filter by league identifier |
| sourceType | string | No | all, sportsbook, dfs, exchange |
| market | string | No | moneyline, spread, total, player_points, player_pass_yds, etc. |
| bookmaker | string | No | Filter by bookmaker key |
| limit | number | No | Max 50, default 25 |
| page | number | No | Page number for pagination |
Response
{
"success": true,
"data": [
{
"eventId": "nba-ev-311286",
"leagueId": "nba",
"sport": "basketball",
"bookmakers": [
{
"bookmakerId": "draftkings",
"bookmakerName": "DraftKings",
"sourceType": "sportsbook",
"markets": [
{
"marketType": "moneyline",
"outcomes": [
{ "name": "Boston Celtics", "price": -180 },
{ "name": "Los Angeles Lakers", "price": 155 }
]
}
]
}
]
}
],
"meta": { "count": 1, "page": 1 }
}
Event Odds
/v1/events/:eventId/oddsGet odds for a specific event. Includes a summary object with fair (no-vig), best, and average odds computed across all bookmakers.
| Parameter | Type | Required | Description |
|---|---|---|---|
| eventId | string | Yes | The event identifier |
| sourceType | string | No | all, sportsbook, dfs, exchange |
| market | string | No | Optional exact market filter such as moneyline, spread, or total |
Response
{
"success": true,
"data": {
"eventId": "nba-ev-311286",
"leagueId": "nba",
"sport": "basketball",
"summary": {
"moneyline": [
{ "name": "Boston Celtics", "fairOdds": -172, "bestOdds": -165, "avgOdds": -175 },
{ "name": "Los Angeles Lakers", "fairOdds": 148, "bestOdds": 155, "avgOdds": 145 }
],
"spread": [
{ "name": "Boston Celtics", "point": -4.5, "fairOdds": -108, "bestOdds": -105, "avgOdds": -110 },
{ "name": "Los Angeles Lakers", "point": 4.5, "fairOdds": -104, "bestOdds": -102, "avgOdds": -108 }
],
"total": [
{ "name": "Over", "point": 220.5, "fairOdds": -106, "bestOdds": -104, "avgOdds": -110 },
{ "name": "Under", "point": 220.5, "fairOdds": -106, "bestOdds": -105, "avgOdds": -108 }
]
},
"bookmakers": [
{
"bookmakerId": "draftkings",
"bookmakerName": "DraftKings",
"sourceType": "sportsbook",
"markets": [
{ "marketType": "moneyline", "outcomes": [{ "name": "Boston Celtics", "price": -175 }, { "name": "Los Angeles Lakers", "price": 150 }] }
]
}
]
},
"meta": { "league": "nba", "event": "nba-ev-311286" }
}
Summary field
- fairOdds — No-vig price: implied probabilities from all books are averaged, then normalized so the binary pair sums to 1.0, then converted back to American odds.
- bestOdds — The highest American odds offered by any single bookmaker for that outcome.
- avgOdds — Simple average of implied probabilities across all books, converted to American odds.
- Summary is computed from the full bookmaker set returned for the event.
Odds History
Track how a line has moved over time. Each snapshot is a consensus row per (marketType, player, outcome, point) with the cross-book average, best, and no-vig fair price at that moment. Game markets and player props are both included. Consensus covers sportsbooks and exchanges; DFS is excluded because its prices are indicative, not tradeable.
Snapshots are written on a tiered cadence based on time-to-game so storage and payload sizes stay small:
- More than 7 days out → every 24 hours
- 24 hours to 7 days out → every 12 hours
- 3 to 24 hours out → every 60 minutes
- Less than 3 hours out → every 20 minutes
The first snapshot for an event is written the first time the API fetches odds for it (typically within ~10 minutes of a new event being seeded). History for an event is automatically deleted shortly after the game goes final.
/v1/events/:eventId/odds-historyConsensus line-movement history for a specific event, sorted ascending by snapshot time so the first entry is the opening line captured and the last is the most recent.
| Parameter | Type | Required | Description |
|---|---|---|---|
| eventId | string | Yes | The event identifier |
| market | string | No | Optional exact market filter (e.g. moneyline, spread, total, player_points) |
| playerId | string | No | Optional canonical player ID — returns only rows belonging to that player within the event |
| from | string | No | Optional ISO 8601 timestamp lower bound on snapshotAt |
| to | string | No | Optional ISO 8601 timestamp upper bound on snapshotAt |
| limit | number | No | Max snapshots returned. Default 500, max 2000 |
Response
{
"success": true,
"data": {
"eventId": "nba-ev-311286",
"count": 14,
"snapshots": [
{
"eventId": "nba-ev-311286",
"leagueId": "nba",
"sport": "basketball",
"snapshotAt": "2026-04-08T19:00:00.000Z",
"markets": [
{
"marketType": "moneyline",
"outcome": "Boston Celtics",
"avgPrice": -175,
"avgImpliedProb": 0.6364,
"bestPrice": -165,
"bestBook": "draftkings",
"fairOdds": -172,
"bookCount": 12
},
{
"marketType": "player_points",
"outcome": "Over",
"player": "Jayson Tatum",
"playerId": "nba-p-4065648",
"point": 28.5,
"avgPrice": -112,
"avgImpliedProb": 0.5283,
"bestPrice": -105,
"bestBook": "fanduel",
"fairOdds": -108,
"bookCount": 9
}
],
"playerIds": ["nba-p-4065648"]
}
]
},
"meta": { "event": "nba-ev-311286" }
}
Bookmakers
/v1/odds/bookmakersList all tracked sportsbooks, DFS platforms, and exchanges.
| Parameter | Type | Required | Description |
|---|---|---|---|
| sourceType | string | No | all, sportsbook, dfs, exchange |
Response
{
"success": true,
"data": [
{ "bookmakerId": "draftkings", "bookmakerName": "DraftKings", "sourceType": "sportsbook", "sourceRegion": "us" },
{ "bookmakerId": "prizepicks", "bookmakerName": "PrizePicks", "sourceType": "dfs", "sourceRegion": "us_dfs" },
{ "bookmakerId": "espnbet", "bookmakerName": "ESPN BET", "sourceType": "sportsbook", "sourceRegion": "us2" },
{ "bookmakerId": "kalshi", "bookmakerName": "Kalshi", "sourceType": "exchange", "sourceRegion": "us_ex" }
],
"meta": { "count": 4 }
}