Best Odds
Get the best available odds for each selection across all sportsbooks. This endpoint compares odds from every book available on your tier and returns the most favorable line for each selection, along with consensus odds and market hold calculations.
GET /api/v1/odds/bestAuthentication
Requires API key. Available to all tiers.
Best Odds is available on all tiers, including Free. The sportsbooks compared depend on your tier’s book access (Free compares DraftKings and FanDuel; Pro+ includes Pinnacle).
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
sport | string | all | Filter by sport(s), comma-separated (e.g., basketball, football) |
league | string | all | Filter by league(s), comma-separated (e.g., nba, nfl) |
market | string | all | Filter by market type(s), comma-separated (e.g., moneyline, spread, total) |
event | string | — | Filter by event ID(s), comma-separated |
live | boolean | — | true = live only, false = prematch only, omit = both |
min_odds | number | — | Minimum American odds filter |
max_odds | number | — | Maximum American odds filter |
limit | integer | 50 | Max results per page (max 500) |
offset | integer | 0 | Pagination offset (max 5000) |
Stale odds (older than 5 minutes for pre-game, 1 minute for live) are automatically excluded from best-odds comparisons to prevent misleading results.
Example Requests
cURL
curl -X GET "https://api.sharpapi.io/api/v1/odds/best?league=nba&market=spread" \
-H "X-API-Key: YOUR_API_KEY"Response
Success (200)
{
"success": true,
"data": [
{
"event_id": "evt_nba_lal_bos_20260126",
"event_name": "Los Angeles Lakers @ Boston Celtics",
"sport": "basketball",
"league": "nba",
"market_type": "spread",
"selection": "Boston Celtics",
"line": -6.5,
"best_odds": {
"american": -105,
"decimal": 1.952,
"probability": 0.512
},
"best_book": "fanduel",
"consensus_odds": {
"american": -108,
"decimal": 1.926,
"probability": 0.519
},
"market_hold": 4.2,
"all_books": [
{
"book": "fanduel",
"odds": { "american": -105, "decimal": 1.952 },
"edge": 0.007,
"line": -6.5,
"timestamp": "2026-01-26T10:30:00.000Z"
},
{
"book": "draftkings",
"odds": { "american": -110, "decimal": 1.909 },
"edge": 0.0,
"line": -6.5,
"timestamp": "2026-01-26T10:29:55.000Z"
},
{
"book": "betmgm",
"odds": { "american": -108, "decimal": 1.926 },
"edge": 0.003,
"line": -6.5,
"timestamp": "2026-01-26T10:29:50.000Z"
},
{
"book": "pinnacle",
"odds": { "american": -108, "decimal": 1.926 },
"edge": 0.003,
"line": -6.5,
"timestamp": "2026-01-26T10:29:45.000Z"
}
],
"timestamp": "2026-01-26T10:30:00.000Z"
}
],
"meta": {
"count": 1,
"total": 48,
"pagination": {
"limit": 50,
"offset": 0,
"has_more": false,
"next_offset": null
},
"updated_at": "2026-01-26T10:30:05.000Z",
"filters": {
"league": "nba",
"market": "spread"
}
}
}Response Headers
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 298
X-RateLimit-Reset: 1737853200
X-Data-Delay: 0
X-Request-Id: req_best_789xyzError Responses
401 Unauthorized
{
"error": {
"code": "unauthorized",
"message": "Invalid or missing API key",
"docs": "https://sharpapi.io/docs/authentication"
}
}429 Rate Limited
{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded. Retry after 30 seconds.",
"docs": "https://sharpapi.io/docs/authentication#rate-limits"
}
}Best Odds Object Schema
| Field | Type | Description |
|---|---|---|
event_id | string | Event identifier |
event_name | string | Event display name (e.g., “Lakers @ Celtics”) |
sport | string | Sport slug |
league | string | League slug |
market_type | string | Market type (e.g., moneyline, spread, total) |
selection | string | Selection name (team name, Over/Under) |
line | number | null | Line value (for spreads/totals) |
best_odds | object | Best odds available across all books |
best_odds.american | number | Best American odds |
best_odds.decimal | number | Best decimal odds |
best_odds.probability | number | Implied probability of best odds |
best_book | string | Sportsbook ID with the best odds |
consensus_odds | object | Average odds across all books for this selection |
consensus_odds.american | number | Consensus American odds |
consensus_odds.decimal | number | Consensus decimal odds |
consensus_odds.probability | number | Consensus implied probability |
market_hold | number | Market hold (overround) as a percentage (e.g., 4.2 = 4.2%) |
all_books | array | All sportsbooks’ odds for this selection |
all_books[].book | string | Sportsbook ID |
all_books[].odds | object | Odds object (american, decimal) |
all_books[].edge | number | Edge over the worst available odds (percentage points) |
all_books[].line | number | null | Line at this sportsbook |
all_books[].timestamp | string | When this book’s odds were last updated |
timestamp | string | ISO 8601 timestamp of the best odds determination |
player_name | string|undefined | Player name (player prop markets only) |
stat_category | string|undefined | Stat category, e.g. points, rebounds (player prop markets only) |
The market_hold field represents the bookmaker’s built-in margin (overround) as a percentage. A hold of 4.2 means the combined implied probabilities across all outcomes sum to 104.2%. Lower hold = more efficient market.
Pinnacle is commonly used as the sharp reference. When Pinnacle is available in all_books, you can identify it by book: "pinnacle" and compare its odds to soft books to find +EV opportunities.
Why Best Odds Matter
Finding the best available odds is the foundation of profitable sports betting:
1. Line Shopping Saves Money
The difference between -105 and -110 may seem small, but it compounds dramatically over time:
| Odds | $100 Bet Win | Breakeven Win Rate |
|---|---|---|
| -115 | +$87 | 53.5% |
| -110 | +$91 | 52.4% |
| -105 | +$95 | 51.2% |
| +100 | +$100 | 50.0% |
2. Long-term Impact
Over 1,000 bets at a 52% win rate:
| Consistent Odds | Net Result |
|---|---|
| -115 | -$44 loss |
| -110 | +$18 profit |
| -105 | +$80 profit |
3. Consensus & Hold
The consensus_odds field shows the market average, helping you identify when a book is offering better-than-market odds. The market_hold tells you how efficient the market is — lower hold means the odds are closer to “true” probabilities.
Related Endpoints
- Odds Snapshot - Get raw odds from individual sportsbooks
- Odds Delta - Get only odds that changed since a given timestamp
- Odds Comparison - Compare odds side by side across books
- Sportsbooks - See which books are available and their status