Players
Get a player's season stats
Returns a player’s totals for one season: appearances, starts, minutes, rating, goals, assists, shooting, passing, defending, duels and discipline. season_id is required. Add competition_id to count one competition only, and stage to split league matches from play-offs.
Example: GET /football/players/pl_45126714/stats?season_id=sn_6125938&competition_id=comp_3039 (Bukayo Saka, Premier League 2025/26)
GET
/
football
/
players
/
{player_id}
/
stats
Get a player's season stats
curl --request GET \
--url https://api.thestatsapi.com/api/football/players/{player_id}/stats \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.thestatsapi.com/api/football/players/{player_id}/stats', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.thestatsapi.com/api/football/players/{player_id}/stats"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": {
"player_id": "pl_45126714",
"season_id": "sn_6125938",
"team_id": "tm_9145",
"position": "F",
"rating": 7.64,
"appearances": 31,
"starts": 21,
"minutes_played": 2225,
"scoring": {
"goals": 123,
"assists": 123,
"goals_assists_sum": 123,
"goal_conversion_percentage": 123,
"penalties_taken": 123,
"penalty_goals": 123,
"big_chances_created": 123,
"big_chances_missed": 123,
"expected_goals": 5.31,
"expected_assists": 2.04,
"xg_matches": 9
},
"shooting": {
"total_shots": 123,
"shots_on_target": 123,
"shots_off_target": 123
},
"passing": {
"total_passes": 123,
"accurate_passes": 123,
"inaccurate_passes": 123,
"pass_accuracy": 123,
"key_passes": 123,
"accurate_crosses": 123,
"accurate_crosses_percentage": 123,
"accurate_own_half_passes": 123,
"accurate_opposition_half_passes": 123,
"accurate_final_third_passes": 123
},
"defending": {
"tackles": 123,
"interceptions": 123
},
"duels": {
"ground_duels_won": 123,
"ground_duels_won_percentage": 123,
"aerial_duels_won": 123,
"aerial_duels_won_percentage": 123,
"total_duels_won": 123,
"total_duels_won_percentage": 123,
"successful_dribbles": 123,
"successful_dribbles_percentage": 123
},
"discipline": {
"yellow_cards": 123,
"red_cards": 123,
"direct_red_cards": 123,
"penalty_won": 123,
"penalty_conceded": 123
}
}
}Walkthrough with code: Player and team stats.
Authorizations
Your API key, sent as Authorization: Bearer YOUR_API_KEY. Get one at https://www.thestatsapi.com/api-keys
Path Parameters
Query Parameters
⌘I
Get a player's season stats
curl --request GET \
--url https://api.thestatsapi.com/api/football/players/{player_id}/stats \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.thestatsapi.com/api/football/players/{player_id}/stats', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.thestatsapi.com/api/football/players/{player_id}/stats"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": {
"player_id": "pl_45126714",
"season_id": "sn_6125938",
"team_id": "tm_9145",
"position": "F",
"rating": 7.64,
"appearances": 31,
"starts": 21,
"minutes_played": 2225,
"scoring": {
"goals": 123,
"assists": 123,
"goals_assists_sum": 123,
"goal_conversion_percentage": 123,
"penalties_taken": 123,
"penalty_goals": 123,
"big_chances_created": 123,
"big_chances_missed": 123,
"expected_goals": 5.31,
"expected_assists": 2.04,
"xg_matches": 9
},
"shooting": {
"total_shots": 123,
"shots_on_target": 123,
"shots_off_target": 123
},
"passing": {
"total_passes": 123,
"accurate_passes": 123,
"inaccurate_passes": 123,
"pass_accuracy": 123,
"key_passes": 123,
"accurate_crosses": 123,
"accurate_crosses_percentage": 123,
"accurate_own_half_passes": 123,
"accurate_opposition_half_passes": 123,
"accurate_final_third_passes": 123
},
"defending": {
"tackles": 123,
"interceptions": 123
},
"duels": {
"ground_duels_won": 123,
"ground_duels_won_percentage": 123,
"aerial_duels_won": 123,
"aerial_duels_won_percentage": 123,
"total_duels_won": 123,
"total_duels_won_percentage": 123,
"successful_dribbles": 123,
"successful_dribbles_percentage": 123
},
"discipline": {
"yellow_cards": 123,
"red_cards": 123,
"direct_red_cards": 123,
"penalty_won": 123,
"penalty_conceded": 123
}
}
}