Odds & Betting API
LiveReal-time sports betting odds from 5 major sportsbooks (DraftKings, FanDuel, PrizePicks, Underdog Fantasy, Dabble). Includes player props, game markets (spreads, moneylines, totals), line movement tracking, and cross-sportsbook comparison. Data updates automatically every 5 minutes with intelligent caching for optimal performance.
Base URL
https://api.cappersapi.com/v1/oddsKey Features
Odds automatically refresh every 5 minutes
5-minute cache for optimal performance
Historical odds with opening/current lines
Find best lines across all books instantly
Supported Sportsbooks
DraftKings
FanDuel
PrizePicks
Underdog Fantasy
Dabble
Endpoints
/v1/oddsFreeGet all odds with comprehensive filtering and pagination (5-min cache)
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| sport | string | No | Filter by sport (nba, nfl, mlb, nhl) |
| sportsbook | string | No | Filter by sportsbook (draftkings, fanduel, prizepicks, underdog, dabble) |
| player | string | No | Search player name (partial match) |
| prop_type | string | No | Filter by prop type (points, rebounds, assists, etc.) |
| team | string | No | Filter by team name |
| game_date | string | No | Filter by game date (YYYY-MM-DD) |
| page | integer | No | Page number (default: 1) |
| per_page | integer | No | Results per page (default: 50, max: 500) |
/v1/odds/player/:nameFreeGet all odds for a specific player, grouped by prop type
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Player name (URL encoded, e.g., "LeBron%20James") |
| sportsbook | string | No | Filter by sportsbook slug |
/v1/odds/compare/:player/:propFreeCompare odds across all sportsbooks for a specific player prop. Find best lines.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| player | string | Yes | Player name (URL encoded) |
| prop | string | Yes | Prop type slug (points, rebounds, assists, etc.) |
/v1/odds/line-movementFreeTrack line movements over time. See opening lines, current lines, and movement direction.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| player | string | Yes | Player name |
| prop_type | string | Yes | Prop type slug (points, rebounds, etc.) |
| hours | integer | No | Lookback period in hours (default: 24, max: 168) |
/v1/odds/sportsbooksFreeList all available sportsbooks with active odds counts
/v1/odds/sportsbooks/sportsFreeList all available sports
/v1/odds/gamesFreeGet games schedule (filtered by sport and date)
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| sport | string | No | Filter by sport slug (nba, nfl, mlb, nhl) |
| date | string | No | Filter by date (YYYY-MM-DD) |
| page | integer | No | Page number (default: 1) |
| per_page | integer | No | Results per page (default: 50, max: 200) |
/v1/odds/infoFreeGet odds service overview and supported sportsbooks/sports
Available Prop Types
NBA
pointsreboundsassiststhreesstealsblocksturnoverspraNFL
passing_yardsrushing_yardsreceiving_yardstouchdownsreceptionsinterceptionsGame Markets
moneylinespreadtotalCode Examples
javascript
const response = await fetch(
'https://api.cappersapi.com/v1/odds?sport=nba&sportsbook=draftkings',
{
headers: {
'Authorization': 'Bearer cap_your_api_key'
}
}
);
const { data, cache_info } = await response.json();
console.log(data[0]); // Current NBA odds from DraftKings
console.log(cache_info); // Cache status and expirypython
import requests
response = requests.get(
'https://api.cappersapi.com/v1/odds',
params={'sport': 'nba', 'sportsbook': 'draftkings'},
headers={'Authorization': 'Bearer cap_your_api_key'}
)
data = response.json()
print(data['data'][0]) # Current NBA odds
print(data['cache_info']) # Cache infocurl
curl -X GET "https://api.cappersapi.com/v1/odds?sport=nba&sportsbook=draftkings" \
-H "Authorization: Bearer cap_your_api_key"Response Example
{
"player_name": "LeBron James",
"total_props": 15,
"prop_types": 5,
"props": {
"Points": [
{
"sportsbook_name": "DraftKings",
"line_value": 25.5,
"over_odds": -110,
"under_odds": -110,
"game_time": "2026-01-28T02:00:00Z"
},
{
"sportsbook_name": "FanDuel",
"line_value": 26.0,
"over_odds": -115,
"under_odds": -105,
"game_time": "2026-01-28T02:00:00Z"
}
],
"Rebounds": [...],
"Assists": [...]
},
"cache_info": {
"cached": true,
"timestamp": "2026-01-27T21:30:00Z",
"expires_in_seconds": 245
}
}Caching & Updates
How It Works
Automatic Scraping: Odds are fetched from all sportsbooks every 5 minutes
5-Minute Cache: API responses are cached for 5 minutes for optimal performance
Always Current: Only active/current odds are returned (old odds kept for line tracking)
Line History: Previous odds are retained with timestamps for movement analysis
cache_info showing whether data was cached and when it expires.