Get player-prop odds
Returns the latest player-prop odds for a match, grouped by bookmaker (Bet365 first) and then by market. A bookmaker appears only if it prices at least one player prop for the match. Markets cover goalscorers, shots, assists, cards, tackles, fouls, passes, goalkeeper saves and player of the match; which ones you get depends on the bookmaker and the match. Markets with no prices are left out.
Line markets (player_shots, player_shots_on_target, player_shots_on_target_outside_box, player_headed_shots_on_target, player_tackles, player_fouls_committed, player_to_be_fouled, player_passes, goalkeeper_saves) have one entry per player, line and direction, so a player priced at Over 0.5, 1.5 and 2.5 gives three entries. Other markets (goalscorers, player_assists, score_or_assist, cards, player_of_the_match) have no line or market_type field. id is null when a priced player can’t be matched to a player ID. Within each market, entries are sorted by line, then Over before Under, then shortest odds first, then name.
Example: GET /v2/football/matches/mt_200199332/odds/players?bookmaker=bet365
curl --request GET \
--url https://api.thestatsapi.com/api/v2/football/matches/{match_id}/odds/players \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.thestatsapi.com/api/v2/football/matches/{match_id}/odds/players', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.thestatsapi.com/api/v2/football/matches/{match_id}/odds/players"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": {
"match_id": "mt_200199332",
"home_team": {
"id": "tm_9145",
"name": "Arsenal"
},
"away_team": {
"id": "tm_0256",
"name": "Leeds United"
},
"bookmakers": [
{
"bookmaker": "Bet365",
"markets": [
{
"name": "player_shots",
"players": [
{
"id": "pl_45126714",
"name": "Bukayo Saka",
"odd": 1.1818,
"line": 1.5,
"market_type": "Over"
}
]
}
]
}
],
"kickoff_at": "2026-10-10T11:30:00.000Z"
}
}Authorizations
Your API key, sent as Authorization: Bearer YOUR_API_KEY. Get one at https://www.thestatsapi.com/api-keys
Path Parameters
Query Parameters
curl --request GET \
--url https://api.thestatsapi.com/api/v2/football/matches/{match_id}/odds/players \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.thestatsapi.com/api/v2/football/matches/{match_id}/odds/players', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.thestatsapi.com/api/v2/football/matches/{match_id}/odds/players"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": {
"match_id": "mt_200199332",
"home_team": {
"id": "tm_9145",
"name": "Arsenal"
},
"away_team": {
"id": "tm_0256",
"name": "Leeds United"
},
"bookmakers": [
{
"bookmaker": "Bet365",
"markets": [
{
"name": "player_shots",
"players": [
{
"id": "pl_45126714",
"name": "Bukayo Saka",
"odd": 1.1818,
"line": 1.5,
"market_type": "Over"
}
]
}
]
}
],
"kickoff_at": "2026-10-10T11:30:00.000Z"
}
}