Teams & Players
Access team information, rosters, injury reports, player stats, and schedules across all supported leagues. Player stats are refreshed daily and support both season-level summaries and per-game logs.
Teams
/v1/teamsList all teams, optionally filtered by league.
| Parameter | Type | Required | Description |
|---|---|---|---|
| league | string | No | Optional league filter: nba, nfl, mlb, nhl, ncaa_basketball, ncaa_football, soccer_epl, soccer_mls, soccer_world_cup |
Response
{
"success": true,
"data": [
{
"teamId": "nba-lal",
"name": "Los Angeles Lakers",
"abbreviation": "LAL",
"leagueId": "nba"
}
],
"meta": { "count": 1, "league": "nba" }
}
/v1/leagues/:leagueId/teamsList all teams in a league.
| Parameter | Type | Required | Description |
|---|---|---|---|
| leagueId | string | Yes | The unique identifier of the league. |
Response
{
"success": true,
"data": [
{
"teamId": "nba-lal",
"name": "Los Angeles Lakers",
"abbreviation": "LAL",
"leagueId": "nba"
},
{
"teamId": "nba-bos",
"name": "Boston Celtics",
"abbreviation": "BOS",
"leagueId": "nba"
}
],
"meta": { "league": "nba", "count": 2 }
}
/v1/teams/:teamIdGet detailed information for a single team.
| Parameter | Type | Required | Description |
|---|---|---|---|
| teamId | string | Yes | The unique identifier of the team. |
/v1/teams/:teamId/rosterGet the current roster for a team.
| Parameter | Type | Required | Description |
|---|---|---|---|
| teamId | string | Yes | The unique identifier of the team. |
Response
{
"success": true,
"data": {
"teamId": "nba-lal",
"leagueId": "nba",
"players": [
{
"playerId": "nba-p-2544",
"name": "LeBron James",
"position": "SF",
"number": 23
},
{
"playerId": "nba-p-203076",
"name": "Anthony Davis",
"position": "PF",
"number": 3
}
]
},
"meta": { "league": "nba", "team": "nba-lal" }
}
/v1/teams/:teamId/injuriesGet the latest injury report for a team. Covers NFL, NBA and NHL; other leagues return 404 with an explicit not-available message. Refreshed every 6 hours league-wide, and every 30 minutes for teams with a game in the next 24 hours. firstSeenAt / lastChangedAt are observation timestamps recorded by our ingestion pipeline — use them to prove a status was known before kickoff.
| Parameter | Type | Required | Description |
|---|---|---|---|
| teamId | string | Yes | The unique identifier of the team. |
Response
{
"success": true,
"data": {
"teamId": "nba-lal",
"leagueId": "nba",
"players": [
{
"playerId": "nba-player-307523",
"name": "Anthony Davis",
"position": "F",
"status": "Questionable",
"injury": "Right knee soreness",
"firstSeenAt": "2026-08-10T13:05:12.000Z",
"lastChangedAt": "2026-08-12T18:35:04.000Z"
},
{
"playerId": "nba-player-307641",
"name": "Jarred Vanderbilt",
"position": "F",
"status": "Out",
"injury": "Left foot surgery recovery",
"firstSeenAt": "2026-07-29T01:05:44.000Z",
"lastChangedAt": "2026-07-29T01:05:44.000Z"
}
]
},
"meta": { "league": "nba", "team": "nba-lal" }
}
/v1/teams/:teamId/injuries/historyInjury report history, for the same leagues as the report itself (NFL, NBA, NHL). Pass asOf to reconstruct the report as it stood at any past moment (for backtesting), or omit it for the raw change log, most recent first. Every status change is recorded permanently from the moment we first observe it.
| Parameter | Type | Required | Description |
|---|---|---|---|
| teamId | string | Yes | The unique identifier of the team. |
| asOf | string | No | ISO 8601 datetime with explicit timezone (e.g. 2026-08-12T19:00:00Z). Returns the injury report as of this moment. |
| limit | number | No | Max change events to return (default 100, max 500). Ignored with asOf. |
Response
{
"success": true,
"data": {
"teamId": "nba-lal",
"leagueId": "nba",
"changes": [
{
"changeType": "updated",
"changedAt": "2026-08-12T18:35:04.000Z",
"playerId": "nba-player-307523",
"name": "Anthony Davis",
"status": "Questionable",
"previousStatus": "Day-to-Day",
"injury": "Right knee soreness"
},
{
"changeType": "added",
"changedAt": "2026-08-10T13:05:12.000Z",
"playerId": "nba-player-307523",
"name": "Anthony Davis",
"status": "Day-to-Day",
"injury": "Right knee soreness"
}
]
},
"meta": { "league": "nba", "team": "nba-lal", "count": 2 }
}
/v1/teams/:teamId/statsGet current-season player stat summaries for a team.
| Parameter | Type | Required | Description |
|---|---|---|---|
| teamId | string | Yes | The unique identifier of the team. |
| season | string | No | Season identifier (e.g. "2025"). Defaults to the current season. |
/v1/teams/:teamId/scheduleGet the upcoming and past schedule for a team.
| Parameter | Type | Required | Description |
|---|---|---|---|
| teamId | string | Yes | The unique identifier of the team. |
Players
/v1/playersList players, optionally filtered by league or team.
| Parameter | Type | Required | Description |
|---|---|---|---|
| league | string | No | Optional league filter: nba, nfl, mlb, nhl, ncaa_basketball, ncaa_football, soccer_epl, soccer_mls, soccer_world_cup |
| team | string | No | Optional teamId filter |
| limit | number | No | Max 100, default 50 |
| page | number | No | Page number, default 1 |
Response
{
"success": true,
"data": [
{
"playerId": "nba-p-2544",
"playerName": "LeBron James",
"teamId": "nba-lal",
"leagueId": "nba",
"position": "SF"
}
],
"meta": { "count": 1, "total": 1, "page": 1, "pages": 1, "league": "nba" }
}
/v1/players/:playerIdGet detailed information for a single player.
| Parameter | Type | Required | Description |
|---|---|---|---|
| playerId | string | Yes | The unique identifier of the player. |
/v1/players/:playerId/statsGet season summaries or per-game logs for a single player.
| Parameter | Type | Required | Description |
|---|---|---|---|
| playerId | string | Yes | The unique identifier of the player. |
| type | string | No | Stat type: "season" or "game". Defaults to season. |
| season | string | No | Season identifier (e.g. "2025"). Defaults to the current season. |
| eventId | string | No | For type=game only. Filter to one exact event ID. |
| date | string | No | For type=game only. Exact date in YYYY-MM-DD. |
| from | string | No | For type=game only. Inclusive start date/time in YYYY-MM-DD or ISO 8601. |
| to | string | No | For type=game only. Inclusive end date/time in YYYY-MM-DD or ISO 8601. |
Response
{
"success": true,
"data": [
{
"playerId": "nba-p-12345",
"playerName": "Jayson Tatum",
"teamId": "nba-bos",
"leagueId": "nba",
"sport": "basketball",
"season": "2025-26",
"statType": "game",
"eventId": "nba-ev-311286",
"gameDate": "2026-03-09T00:00:00.000Z",
"stats": {
"points": 32,
"rebounds": 8,
"assists": 5
}
}
],
"meta": {
"player": "nba-p-12345",
"type": "game",
"season": "2025-26",
"count": 1
}
}
Player stats query rules
- If you omit
type, the API returns season summaries. type=seasonsupportsseasononly.type=gamesupportsseason,eventId,date,from, andto.datecannot be combined withfromorto.- Use
eventIdwhen you want the stat line for one exact game. type=careeris not supported in this version.
Player Analysis
These endpoints combine historical game stats with live betting data to surface hit rates, trending players, and integrated player analysis views.
/v1/players/trendingGet players sorted by hit rate, paired with their best available prop line and odds. Designed for discovery surfaces.
| Parameter | Type | Required | Description |
|---|---|---|---|
| league | string | Yes | League ID: nba, nfl, mlb, nhl, ncaa_basketball, ncaa_football, soccer_epl, soccer_mls, soccer_world_cup |
| market | string | Yes | Prop market key (e.g. player_points) |
| sortBy | string | No | Hit-rate window to sort by: l5, l10, l25, season. Default l5 |
| direction | string | No | over or under. Default over |
| limit | number | No | Max 50, default 25 |
| page | number | No | Page number for pagination |
Response
{
"success": true,
"data": [
{
"playerId": "nba-p-4065648",
"playerName": "Coby White",
"teamId": "nba-cha",
"position": "PG",
"market": "player_points",
"bestLine": 14.5,
"bestOdds": -108,
"bookmakerName": "DraftKings",
"hitRates": {
"L5": { "games": 5, "hits": 4, "rate": 0.800 },
"L10": { "games": 10, "hits": 6, "rate": 0.600 },
"L25": { "games": 25, "hits": 15, "rate": 0.600 }
}
}
],
"meta": { "count": 25, "total": 87, "page": 1, "league": "nba", "market": "player_points" }
}
/v1/players/trendsGet each player's highest-profit active prop trend over a rolling game window, including matchup context and flat-stake profit.
| Parameter | Type | Required | Description |
|---|---|---|---|
| league | string | No | Optional league ID filter: nba, nfl, mlb, nhl, ncaa_basketball, ncaa_football, soccer_epl, soccer_mls, soccer_world_cup |
| window | number | No | Rolling game window size. Integer 1-100, default 25 |
| bookmaker | string | No | Optional bookmaker key or display name filter |
| sourceType | string | No | all, sportsbook, dfs, exchange. Default all |
| limit | number | No | Max 50, default 25 |
| page | number | No | Page number for pagination |
Response
{
"success": true,
"data": [
{
"player": {
"playerId": "nba-p-4065648",
"name": "Coby White",
"teamId": "nba-chi",
"team": "CHI",
"matchup": "CHI @ NYK"
},
"eventId": "nba-ev-311286",
"leagueId": "nba",
"bet": {
"market": "player_points",
"marketName": "Player Points",
"direction": "under",
"line": 24.5,
"price": 125,
"bookmakerId": "bovada",
"bookmakerName": "Bovada",
"sourceType": "sportsbook"
},
"sampleSize": 25,
"performance": {
"wins": 20,
"losses": 5,
"pushes": 0,
"hitRate": 0.8,
"stake": 100
},
"profit": 2000
}
],
"meta": { "count": 25, "total": 73, "page": 1, "pages": 3, "window": 25, "stake": 100, "league": "nba", "sourceType": "all" }
}
/v1/players/:playerId/hit-ratesGet hit rates (L5, L10, L25, season) for a player against a specific prop line.
| Parameter | Type | Required | Description |
|---|---|---|---|
| playerId | string | Yes | The unique identifier of the player. |
| market | string | Yes | Prop market key (e.g. player_points) |
| line | number | No | Required for standard line-based markets. Omit or use 0 for yes/no and over-only markets. |
Response
{
"success": true,
"data": {
"playerId": "nba-p-4065648",
"market": "player_points",
"line": 14.5,
"direction": "over",
"hitRates": {
"L5": { "games": 5, "hits": 4, "rate": 0.800 },
"L10": { "games": 10, "hits": 6, "rate": 0.600 },
"L25": { "games": 25, "hits": 15, "rate": 0.600 },
"season": { "games": 62, "hits": 37, "rate": 0.597 }
}
}
}
/v1/players/:playerId/odds-historyCross-event consensus odds history for a single player. Each snapshot row contains the cross-book average, best, and no-vig fair price for the player's prop lines at that moment. Pairs well with a player detail page that charts how the market has moved on a player over time.
| Parameter | Type | Required | Description |
|---|---|---|---|
| playerId | string | Yes | The unique identifier of the player. |
| market | string | No | Optional exact prop market filter (e.g. player_points, player_rebounds) |
| eventId | string | No | Optional exact event filter — scope to one game |
| from | string | No | Optional ISO 8601 timestamp lower bound on snapshotAt |
| to | string | No | Optional ISO 8601 timestamp upper bound on snapshotAt |
| limit | number | No | Max snapshots returned. Default 500, max 2000 |
Response
{
"success": true,
"data": {
"playerId": "nba-p-4065648",
"count": 8,
"snapshots": [
{
"eventId": "nba-ev-311286",
"leagueId": "nba",
"sport": "basketball",
"snapshotAt": "2026-04-08T19:00:00.000Z",
"markets": [
{
"marketType": "player_points",
"outcome": "Over",
"player": "Jayson Tatum",
"playerId": "nba-p-4065648",
"point": 28.5,
"avgPrice": -112,
"avgImpliedProb": 0.5283,
"bestPrice": -105,
"bestBook": "fanduel",
"fairOdds": -108,
"bookCount": 9
}
],
"playerIds": ["nba-p-4065648"]
}
]
},
"meta": { "player": "nba-p-4065648" }
}
/v1/players/:playerId/analysisIntegrated player analysis: current best bet, game-by-game chart data, and hit rates in one response.
| Parameter | Type | Required | Description |
|---|---|---|---|
| playerId | string | Yes | The unique identifier of the player. |
| market | string | Yes | Prop market key (e.g. player_points) |
| window | string | No | Time window for chart data: l5, l10, l25, season. Default l5 |
| season | string | No | Optional season filter for chart and hit-rate inputs |
| eventId | string | No | Optional exact game filter for chart and hit-rate inputs |
| date | string | No | Optional exact game date in YYYY-MM-DD |
| from | string | No | Optional inclusive range start in YYYY-MM-DD or ISO 8601 |
| to | string | No | Optional inclusive range end in YYYY-MM-DD or ISO 8601 |
Response
{
"success": true,
"data": {
"player": { "playerId": "nba-p-4065648", "playerName": "Coby White", "teamId": "nba-cha" },
"currentEvent": { "eventId": "nba-ev-311286", "startTime": "2026-03-26T23:10:00Z" },
"bestBet": { "market": "player_points", "line": 14.5, "odds": -108, "bookmakerName": "DraftKings" },
"hitRates": {
"L5": { "games": 5, "hits": 4, "rate": 0.800 },
"L10": { "games": 10, "hits": 6, "rate": 0.600 }
},
"chart": {
"window": "l5",
"line": 14.5,
"games": [
{ "gameDate": "2026-03-14T00:00:00Z", "opponent": "SAS", "value": 18, "hit": true },
{ "gameDate": "2026-03-17T00:00:00Z", "opponent": "MIA", "value": 24, "hit": true },
{ "gameDate": "2026-03-21T00:00:00Z", "opponent": "MEM", "value": 12, "hit": false }
]
}
}
}