Player Props
Access normalized player prop markets for NBA, NFL, MLB, NHL, NCAAB, and NCAAF using canonical event identifiers that are join-safe with Events, Odds, and Edge. If you already have an eventId, you can use it directly against both /v1/events/:eventId/odds and /v1/events/:eventId/player-props.
Need game lines too? See the Odds docs.
Browse Player Props
GET
/v1/player-propsBrowse player props grouped by event, then player, market, and line.
| Parameter | Type | Required | Description |
|---|---|---|---|
| league | string | No | Filter by league identifier |
| market | string | No | Filter by prop market key such as player_points or player_pass_yds |
| player | string | No | Case-insensitive player-name filter |
| playerId | string | No | Exact playerId filter when you already have the canonical player identifier |
| bookmaker | string | No | Filter by bookmaker key or display name |
| sourceType | string | No | all, sportsbook, dfs, exchange |
| limit | number | No | Max 50, default 25 |
| page | number | No | Page number for pagination |
Response
{
"success": true,
"data": [
{
"eventId": "nba-ev-311286",
"canonicalEventId": "nba-ev-311286",
"leagueId": "nba",
"sport": "basketball",
"homeTeamName": "Boston Celtics",
"awayTeamName": "New York Knicks",
"startTime": "2026-03-26T23:10:00.000Z",
"fetchedAt": "2026-03-25T00:10:00.000Z",
"players": [
{
"playerName": "Jayson Tatum",
"playerId": "nba-p-1628369",
"teamAbbr": "BOS",
"teamName": "Boston Celtics",
"markets": [
{
"marketType": "player_points",
"marketName": "Points",
"format": "over_under",
"isAlternate": false,
"lines": [
{
"point": 29.5,
"offers": [
{ "bookmakerId": "fanduel", "bookmakerName": "FanDuel", "sourceType": "sportsbook", "sourceRegion": "us", "selection": "Over", "price": 120, "impliedProbability": 0.455, "isBest": false },
{ "bookmakerId": "prizepicks", "bookmakerName": "PrizePicks", "sourceType": "dfs", "sourceRegion": "us_dfs", "selection": "Over", "price": 125, "impliedProbability": 0.444, "isBest": true }
]
}
]
}
]
}
]
}
],
"meta": { "count": 1, "page": 1 }
}
Event Player Props
GET
/v1/events/:eventId/player-propsGet player props for one canonical event ID from /v1/events. Legacy/mismatched stored IDs are resolved server-side.
| Parameter | Type | Required | Description |
|---|---|---|---|
| eventId | string | Yes | Canonical MoneyLine event identifier |
| market | string | No | Optional exact prop market key filter |
| player | string | No | Optional case-insensitive player-name filter |
| bookmaker | string | No | Optional bookmaker key or display-name filter |
| sourceType | string | No | all, sportsbook, dfs, exchange |
Response
{
"success": true,
"data": {
"eventId": "nba-ev-311286",
"canonicalEventId": "nba-ev-311286",
"leagueId": "nba",
"sport": "basketball",
"homeTeamName": "Boston Celtics",
"awayTeamName": "New York Knicks",
"startTime": "2026-03-26T23:10:00.000Z",
"fetchedAt": "2026-03-25T00:10:00.000Z",
"players": [
{
"playerName": "Jayson Tatum",
"markets": [
{
"marketType": "player_points",
"marketName": "Points",
"format": "over_under",
"isAlternate": false,
"lines": [
{
"point": 29.5,
"summary": {
"over": { "fairOdds": -108, "bestOdds": 120, "avgOdds": -112 },
"under": { "fairOdds": -104, "bestOdds": -105, "avgOdds": -106 }
},
"offers": [
{ "bookmakerId": "fanduel", "bookmakerName": "FanDuel", "sourceType": "sportsbook", "sourceRegion": "us", "selection": "Over", "price": 120, "impliedProbability": 0.455, "isBest": true },
{ "bookmakerId": "kalshi", "bookmakerName": "Kalshi", "sourceType": "exchange", "sourceRegion": "us_ex", "selection": "Over", "price": 118, "impliedProbability": 0.459, "isBest": false }
]
}
]
}
]
}
]
},
"meta": { "league": "nba", "event": "nba-ev-311286" }
}
Line-level summary
- Each
lineobject now includes asummarywith fair (no-vig), best, and average odds per selection. - fairOdds removes vig by averaging implied probabilities across books, normalizing the Over/Under pair to sum to 1.0, then converting back to American.
- bestOdds is the highest American odds offered by any book for that selection.
- avgOdds is the mean implied probability across all books, converted to American.
- Summary is computed from all returned bookmakers for that line.
Supported Markets
GET
/v1/player-props/marketsList all supported player prop markets by league.
| Parameter | Type | Required | Description |
|---|---|---|---|
| league | string | No | Optional league identifier to return one league only |
Response
{
"success": true,
"data": [
{
"leagueId": "nba",
"sport": "basketball",
"markets": [
{ "marketType": "player_points", "marketName": "Points", "format": "over_under", "isAlternate": false, "supportsPoint": true },
{ "marketType": "player_points_alternate", "marketName": "Alternate Points", "format": "over_under", "isAlternate": true, "supportsPoint": true }
]
}
],
"meta": { "count": 1, "league": "nba" }
}