Documentation Index Fetch the complete documentation index at: https://docs.odds-api.io/llms.txt
Use this file to discover all available pages before exploring further.
Get Player Prop Odds in Real Time
Player props are one of the fastest-growing betting markets. From LeBron James’ points to Patrick Mahomes’ passing yards, player props create unique betting experiences that appeal to both fantasy players and casual fans.
Odds-API.io covers player props with real-time updates from 250+ bookmakers, including US books like DraftKings and FanDuel.
Why Player Props Matter
Market Growth Props account for a rising percentage of total betting handle, especially in the US
User Engagement Casual fans often prefer player-focused bets over team outcomes
Fantasy Crossover Many fantasy platforms are blending with prop betting year-round
App Differentiation Offering props helps apps stand out and capture larger audiences
Available Props Coverage
NBA : Points, rebounds, assists, three-pointers, double-doubles, and more
NFL : Passing yards, rushing yards, touchdowns, receptions, completions, and more
MLB : Strikeouts, home runs, total bases, hits, RBIs, and more
NHL : Goals, shots on goal, saves, assists, points, and more
NCAAF : Same as NFL props
And more : Soccer, tennis, esports player props
Fetching Player Props
Player props are available through the same /v3/odds endpoint:
curl "https://api.odds-api.io/v3/odds?apiKey=YOUR_API_KEY&eventId=123456&bookmakers=DraftKings,FanDuel"
Example Response
{
"id" : 123456 ,
"sport" : {
"name" : "Basketball" ,
"slug" : "basketball"
},
"league" : {
"name" : "NBA" ,
"slug" : "nba"
},
"home" : "Los Angeles Lakers" ,
"away" : "Boston Celtics" ,
"date" : "2025-10-15T19:00:00Z" ,
"status" : "pending" ,
"bookmakers" : {
"DraftKings" : [
{
"name" : "Player Props - Points" ,
"odds" : [
{
"label" : "LeBron James" ,
"hdp" : 27.5 ,
"over" : "1.90" ,
"under" : "1.90"
},
{
"label" : "Anthony Davis" ,
"hdp" : 24.5 ,
"over" : "1.95" ,
"under" : "1.85"
}
]
},
{
"name" : "Player Props - Rebounds" ,
"odds" : [
{
"label" : "Anthony Davis" ,
"hdp" : 11.5 ,
"over" : "1.88" ,
"under" : "1.92"
}
]
}
],
"FanDuel" : [
{
"name" : "Player Props - Points" ,
"odds" : [
{
"label" : "LeBron James" ,
"hdp" : 28.5 ,
"over" : "1.85" ,
"under" : "1.95"
}
]
}
]
}
}
Compare player prop odds across multiple bookmakers:
function comparePlayerProps ( oddsData , playerName , statType ) {
const results = [];
Object . entries ( oddsData . bookmakers ). forEach (([ bookmaker , markets ]) => {
markets . forEach ( market => {
// Check if this is the right prop type
if ( ! market . name . includes ( statType )) return ;
// Find the player
const playerProp = market . odds . find (
prop => prop . label === playerName
);
if ( playerProp ) {
results . push ({
bookmaker ,
line: playerProp . hdp ,
over: parseFloat ( playerProp . over ),
under: parseFloat ( playerProp . under )
});
}
});
});
// Find best over and under odds
const bestOver = results . reduce (( best , curr ) =>
curr . over > best . over ? curr : best
);
const bestUnder = results . reduce (( best , curr ) =>
curr . under > best . under ? curr : best
);
return {
player: playerName ,
stat: statType ,
allBooks: results ,
bestOver: {
bookmaker: bestOver . bookmaker ,
line: bestOver . line ,
odds: bestOver . over
},
bestUnder: {
bookmaker: bestUnder . bookmaker ,
line: bestUnder . line ,
odds: bestUnder . under
}
};
}
// Usage
const comparison = comparePlayerProps (
oddsData ,
'LeBron James' ,
'Points'
);
console . log ( ` \n Best odds for LeBron James Points: \n ` );
console . log ( `Over ${ comparison . bestOver . line } : ${ comparison . bestOver . odds } at ${ comparison . bestOver . bookmaker } ` );
console . log ( `Under ${ comparison . bestUnder . line } : ${ comparison . bestUnder . odds } at ${ comparison . bestUnder . bookmaker } ` );
Output:
Best odds for LeBron James Points:
Over 27.5: 1.90 at DraftKings
Under 28.5: 1.95 at FanDuel
NFL Player Props Example
Fetch quarterback passing yards props:
async function getNFLPlayerProps ( eventId ) {
const apiKey = process . env . ODDS_API_KEY ;
const bookmakers = 'DraftKings,FanDuel,BetMGM,Caesars' ;
const response = await fetch (
`https://api.odds-api.io/v3/odds?apiKey= ${ apiKey } &eventId= ${ eventId } &bookmakers= ${ bookmakers } `
);
const data = await response . json ();
// Extract passing yards props
const passingYards = [];
Object . entries ( data . bookmakers ). forEach (([ bookmaker , markets ]) => {
markets . forEach ( market => {
if ( market . name . includes ( 'Passing Yards' )) {
market . odds . forEach ( prop => {
passingYards . push ({
bookmaker ,
player: prop . label ,
line: prop . hdp ,
overOdds: prop . over ,
underOdds: prop . under
});
});
}
});
});
return passingYards ;
}
// Usage
const props = await getNFLPlayerProps ( 789012 );
console . log ( `Found ${ props . length } passing yards props` );
props . forEach ( prop => {
console . log ( ` ${ prop . player } - ${ prop . line } yards ( ${ prop . bookmaker } )` );
console . log ( ` Over: ${ prop . overOdds } | Under: ${ prop . underOdds } ` );
});
Building a Props Alert System
Get notified when props lines move significantly:
class PropsMonitor {
constructor ( apiKey , eventId , bookmakers ) {
this . apiKey = apiKey ;
this . eventId = eventId ;
this . bookmakers = bookmakers ;
this . previousLines = new Map ();
}
async checkForLineMovement () {
const response = await fetch (
`https://api.odds-api.io/v3/odds?apiKey= ${ this . apiKey } &eventId= ${ this . eventId } &bookmakers= ${ this . bookmakers } `
);
const data = await response . json ();
Object . entries ( data . bookmakers ). forEach (([ bookmaker , markets ]) => {
markets . forEach ( market => {
if ( ! market . name . includes ( 'Props' )) return ;
market . odds . forEach ( prop => {
const key = ` ${ bookmaker } - ${ market . name } - ${ prop . label } ` ;
const currentLine = prop . hdp ;
const previousLine = this . previousLines . get ( key );
if ( previousLine && currentLine !== previousLine ) {
const movement = currentLine - previousLine ;
this . sendAlert ({
player: prop . label ,
stat: market . name ,
bookmaker ,
previousLine ,
currentLine ,
movement ,
direction: movement > 0 ? '⬆️ UP' : '⬇️ DOWN'
});
}
this . previousLines . set ( key , currentLine );
});
});
});
}
sendAlert ( data ) {
console . log ( `
🚨 Line Movement Alert!
${ data . player } - ${ data . stat }
Bookmaker: ${ data . bookmaker }
${ data . previousLine } → ${ data . currentLine } ( ${ data . direction } )
Movement: ${ Math . abs ( data . movement ). toFixed ( 1 ) } points
` . trim ());
}
start ( intervalSeconds = 30 ) {
console . log ( 'Starting props monitor...' );
this . checkForLineMovement ();
setInterval (() => this . checkForLineMovement (), intervalSeconds * 1000 );
}
}
// Usage
const monitor = new PropsMonitor (
process . env . ODDS_API_KEY ,
123456 ,
'DraftKings,FanDuel'
);
monitor . start ( 30 ); // Check every 30 seconds
Fantasy + Props Integration
Combine fantasy projections with betting odds:
async function combineFantasyAndProps ( eventId , fantasyProjections ) {
const apiKey = process . env . ODDS_API_KEY ;
const response = await fetch (
`https://api.odds-api.io/v3/odds?apiKey= ${ apiKey } &eventId= ${ eventId } &bookmakers=DraftKings`
);
const data = await response . json ();
// Compare fantasy projections vs. betting lines
const analysis = fantasyProjections . map ( projection => {
const playerProps = findPlayerProps ( data , projection . player );
return {
player: projection . player ,
fantasyProjection: projection . points ,
bettingLine: playerProps ?. hdp ,
difference: projection . points - ( playerProps ?. hdp || 0 ),
recommendation: projection . points > ( playerProps ?. hdp || 0 ) ? 'Over' : 'Under'
};
});
return analysis ;
}
function findPlayerProps ( oddsData , playerName ) {
for ( const [ bookmaker , markets ] of Object . entries ( oddsData . bookmakers )) {
for ( const market of markets ) {
if ( market . name . includes ( 'Points' )) {
const prop = market . odds . find ( p => p . label === playerName );
if ( prop ) return prop ;
}
}
}
return null ;
}
Sport-Specific Props Coverage
NBA Props
Points, rebounds, assists
Three-pointers made
Double-doubles, triple-doubles
Steals, blocks
Points + rebounds + assists
NFL Props
Passing yards, touchdowns, completions
Rushing yards, attempts, touchdowns
Receptions, receiving yards, receiving TDs
Kicking points
MLB Props
Pitcher strikeouts
Batter home runs, hits, total bases
RBIs, runs scored
Stolen bases
NHL Props
Goals, assists, points
Shots on goal
Saves (goalies)
Power play points
Best Practices
Props lines move faster than main markets. Poll every 15-30 seconds for pre-game, 5-10 seconds for live.
Not all bookmakers offer props for all players. Always check if data exists before processing.
Compare Lines Across Books
Props lines can vary significantly between bookmakers - always show users the best available odds.
Display how a player’s props line has moved over time to help users make informed decisions.
Some props only appear close to game time. Monitor regularly and update your UI when new props become available.
Use Cases for Developers
Props Comparison Let users compare player prop odds across all major bookmakers
Fantasy Integration Combine fantasy stats with live betting odds for player projections
Line Movement Alerts Notify users when prop lines shift significantly
Same Game Parlays Build tools for creating and analyzing same-game parlay combinations
Next Steps
Comparing Odds Learn how to compare odds across bookmakers
Value Bets Find profitable betting opportunities
API Reference Explore the full API documentation
Best Practices Optimize your implementation