Odds Snapshot
Get a snapshot of current odds from sportsbooks.
GET /api/v1/oddsAuthentication
Requires API key. Available to all tiers.
The sportsbooks returned in your results depend on your subscription tier. Free tier users receive odds from DraftKings and FanDuel only. See Book Access by Tier below.
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
sportsbook | string | tier-allowed | Comma-separated sportsbook IDs (e.g., draftkings,fanduel). Tier limits enforced. |
sport | string | all | Filter by sport(s), comma-separated (e.g., basketball, football). Supports category aliases. |
league | string | all | Filter by league(s), comma-separated (e.g., nba, nfl, nhl) |
market | string | all | Filter by market type(s), comma-separated. Supports categories (moneyline, spread, total, props) or exact types (point_spread, player_points). |
event | string | — | Filter by event ID(s), comma-separated |
live | boolean | — | true = live only, false = prematch only, omit = both |
sort | string | — | Sort field with optional - prefix for descending (e.g., -odds_american, probability) |
fields | string | all | Comma-separated field names to include in response (e.g., id,sportsbook,odds_american) |
min_odds | number | — | Minimum American odds filter (e.g., -110) |
max_odds | number | — | Maximum American odds filter (e.g., +200) |
group_by | string | — | Group results by field (e.g., event) |
limit | integer | 50 | Max results per page (max 500) |
offset | integer | 0 | Pagination offset (max 5000) |
Use comma-separated values to filter by multiple sportsbooks: sportsbook=draftkings,fanduel,betmgm
Example Requests
cURL
curl -X GET "https://api.sharpapi.io/api/v1/odds?league=nba&sportsbook=draftkings&market=moneyline" \
-H "X-API-Key: YOUR_API_KEY"Response
Success (200)
{
"success": true,
"data": [
{
"id": "draftkings_33483153_moneyline_PHO",
"sportsbook": "draftkings",
"sportsbook_name": "DraftKings",
"event_id": "33483153",
"sport": "basketball",
"league": "nba",
"home_team": "PHI 76ers",
"away_team": "PHO Suns",
"market_type": "moneyline",
"selection": "PHO Suns",
"selection_type": "away",
"odds_american": -150,
"odds_decimal": 1.667,
"probability": 0.60,
"line": null,
"event_start_time": "2026-01-26T19:00:00Z",
"timestamp": "2026-01-26T02:10:24.125Z",
"is_live": false
},
{
"id": "draftkings_33483153_moneyline_PHI",
"sportsbook": "draftkings",
"sportsbook_name": "DraftKings",
"event_id": "33483153",
"sport": "basketball",
"league": "nba",
"home_team": "PHI 76ers",
"away_team": "PHO Suns",
"market_type": "moneyline",
"selection": "PHI 76ers",
"selection_type": "home",
"odds_american": 130,
"odds_decimal": 2.30,
"probability": 0.4348,
"line": null,
"event_start_time": "2026-01-26T19:00:00Z",
"timestamp": "2026-01-26T02:10:24.125Z",
"is_live": false
}
],
"meta": {
"count": 2,
"total": 3095,
"books_available": ["draftkings", "fanduel", "betmgm", "caesars", "pinnacle"],
"books_returned": ["draftkings"],
"pagination": {
"limit": 50,
"offset": 0,
"has_more": true,
"next_offset": 50
},
"updated_at": "2026-01-26T02:10:37.846Z",
"filters": {
"league": "nba",
"sportsbook": "draftkings",
"market": "moneyline"
}
}
}Response Headers
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 299
X-RateLimit-Reset: 1737853200
X-Data-Delay: 0
X-Request-Id: req_abc123def456| Header | Description |
|---|---|
X-RateLimit-Limit | Maximum requests per minute for your tier |
X-RateLimit-Remaining | Requests remaining in current window |
X-RateLimit-Reset | Unix timestamp when the rate limit resets |
X-Data-Delay | Data delay in seconds (0 for real-time, 60 for free tier) |
X-Request-Id | Unique request identifier for debugging |
Error Responses
401 Unauthorized
{
"error": {
"code": "unauthorized",
"message": "Invalid or missing API key",
"docs": "https://sharpapi.io/docs/authentication"
}
}403 Tier Restricted
{
"error": {
"code": "tier_restricted",
"message": "Sportsbook 'pinnacle' requires Sharp tier or higher",
"docs": "https://sharpapi.io/docs/pricing"
}
}429 Rate Limited
{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded. Retry after 45 seconds.",
"docs": "https://sharpapi.io/docs/authentication#rate-limits"
}
}Odds Object Schema
| Field | Type | Description |
|---|---|---|
id | string | Unique odds identifier |
sportsbook | string | Sportsbook ID (e.g., draftkings) |
sportsbook_name | string | Display name (e.g., DraftKings) |
event_id | string | Event identifier |
sport | string | Sport slug (e.g., basketball, football) |
league | string | League slug (e.g., nba, nfl) |
home_team | string | Home team name |
away_team | string | Away team name |
market_type | string | moneyline, spread, total, player_prop, etc. |
selection | string | The selection (team name, Over/Under, player name) |
selection_type | string | home, away, over, under |
odds_american | number | American odds (e.g., -110, +150) |
odds_decimal | number | Decimal odds (e.g., 1.909) |
probability | number | Implied probability (e.g., 0.5238) |
line | number | null | Spread or total line value (null for moneyline) |
event_start_time | string | ISO 8601 event start time |
timestamp | string | ISO 8601 timestamp when odds were last updated |
is_live | boolean | Whether the event is currently live |
player_name | string|undefined | Player name (player prop markets only) |
stat_category | string|undefined | Stat category, e.g. points, rebounds (player prop markets only) |
public_bet_pct | number|undefined | Public betting ticket percentage (0.0-1.0). Currently BetMGM only. |
Live game state (scores, periods, clocks) is available via the Game State endpoint.
Sorting
Use the sort parameter to order results by any field. Prefix with - for descending order.
# Sort by best American odds (descending)
curl "https://api.sharpapi.io/api/v1/odds?league=nba&sort=-odds_american" \
-H "X-API-Key: YOUR_API_KEY"
# Sort by probability (ascending)
curl "https://api.sharpapi.io/api/v1/odds?league=nba&sort=probability" \
-H "X-API-Key: YOUR_API_KEY"
# Sort by event start time
curl "https://api.sharpapi.io/api/v1/odds?sort=event_start_time" \
-H "X-API-Key: YOUR_API_KEY"Valid sort fields: odds_american, odds_decimal, probability, event_start_time, timestamp, sportsbook, league, sport.
Field Selection
Use the fields parameter to return only specific fields, reducing payload size.
# Only return id, sportsbook, and American odds
curl "https://api.sharpapi.io/api/v1/odds?league=nba&fields=id,sportsbook,odds_american" \
-H "X-API-Key: YOUR_API_KEY"The response will only include the requested fields for each odds object:
{
"data": [
{
"id": "draftkings_33483153_moneyline_PHO",
"sportsbook": "draftkings",
"odds_american": -150
}
]
}Odds Range Filtering
Use min_odds and max_odds to filter by American odds value.
# Only return plus-money odds (+100 and above)
curl "https://api.sharpapi.io/api/v1/odds?league=nba&min_odds=100" \
-H "X-API-Key: YOUR_API_KEY"
# Only return odds between -200 and +200
curl "https://api.sharpapi.io/api/v1/odds?league=nba&min_odds=-200&max_odds=200" \
-H "X-API-Key: YOUR_API_KEY"Event-Grouped Response
Use group_by=event to group odds by event instead of a flat list. This is useful for building event-centric UIs.
curl "https://api.sharpapi.io/api/v1/odds?league=nba&group_by=event" \
-H "X-API-Key: YOUR_API_KEY"{
"data": [
{
"event_id": "33483153",
"event_name": "PHI 76ers vs PHO Suns",
"sport": "basketball",
"league": "nba",
"start_time": "2026-01-26T19:00:00Z",
"is_live": false,
"odds": [
{
"id": "draftkings_33483153_moneyline_PHO",
"sportsbook": "draftkings",
"sportsbook_name": "DraftKings",
"market_type": "moneyline",
"selection": "PHO Suns",
"selection_type": "away",
"odds_american": -150,
"odds_decimal": 1.667,
"probability": 0.60,
"line": null,
"timestamp": "2026-01-26T02:10:24.125Z"
}
]
}
],
"meta": {
"group_by": "event",
"books_available": 5,
"filters": { "league": "nba" },
"updated_at": "2026-01-26T02:10:37.846Z"
}
}Book Access by Tier
The sportsbooks included in your odds results depend on your subscription tier:
| Tier | Books Available | Included Sportsbooks |
|---|---|---|
| Free | 2 | DraftKings, FanDuel |
| Hobby | 5 | + BetMGM, Caesars, theScore Bet |
| Pro | 15 | + Bet365, BetRivers, and more |
| Sharp | All 16+ | All available sportsbooks |
| Enterprise | All 16+ | All available sportsbooks |
Pinnacle (sharp book) requires Sharp tier or higher. Requesting sportsbook=pinnacle on a Free, Hobby, or Pro tier will return a 403 tier_restricted error.
Filtering Examples
# Get live NBA odds from all your available books
curl "https://api.sharpapi.io/api/v1/odds?league=nba&live=true" \
-H "X-API-Key: YOUR_API_KEY"
# Get moneyline and spread odds for a specific event
curl "https://api.sharpapi.io/api/v1/odds?event=33483153&market=moneyline,spread" \
-H "X-API-Key: YOUR_API_KEY"
# Paginate through all NFL spread odds
curl "https://api.sharpapi.io/api/v1/odds?league=nfl&market=spread&limit=100&offset=100" \
-H "X-API-Key: YOUR_API_KEY"Related Endpoints
- Odds Delta - Get only odds that changed since a given timestamp
- Best Odds - Get the best odds across all books for each selection
- Odds Comparison - Compare odds across books side by side
- Batch Odds - Fetch odds for multiple events in one request
- Markets - List available market types
- Sportsbooks - List available sportsbooks and their status