PlayersEndpoint 58 of 116
Penalties
https://api.datasportsapi.com/
- Plan
- Pro + Business
- Auth
Bearer dsa_live_…- Parameters
- 3 required · 0 optional
- Returns
PenaltyHistory
Football penalty record for a player across one league season: totals scored and taken, plus each kick: its fixture, its outcome (goal, save, miss, post), its xG and where in the goal it went. Available since 2026-11-04.
Plan access
Requires a Pro or Business plan; every other plan receives 403 endpoint_not_in_plan.
Worth knowing
Only penalties during play are included, not shoot-outs, ordered oldest first. goalMouth uses the same goal-mouth frame as the shot map. Without source data, the list is empty and the counts are null.
01Parameters
idpathRequiredDataSportsAPI player id, a positive integer
leaguequeryRequiredleague id, as listed by /v2/players/{id}/seasons
seasonqueryRequiredseason id, as listed by /v2/leagues/{id}/seasons
02Request
The same call from the command line and each SDK. The SDK lines assume a client created with your key; left out, it is read from DATASPORTSAPI_API_KEY. Installing a client: SDKs & CLI.
curl -H "Authorization: Bearer dsa_live_…" \
"https://api.datasportsapi.com/v2/players/{id}/penalties?league=…&season=…"03Response
The top-level keys of the JSON body. Each object links to its full shape in the data reference.
dataPenaltyHistorymeta- league, season, count
{ "data": { "scored": 1, "attempts": 1, "penalties": [ { "fixtureId": 201324, "startTime": "2026-09-12T19:00:00.000Z", "outcome": "goal",
"goalMouthLocation": "lowRight", "goalMouth": { "x": 74.19, "y": 96.83, "z": null }, "expectedGoals": 0.7884 } ] },
"meta": { "league": 200001, "season": 200386, "count": 1 } }04Errors
- 403
history_not_in_planthe season finished before your plan’s history window begins
- 403
endpoint_not_in_planreturned to keys on the Free and Starter plans
- 404
not_foundthe season id does not belong to this league
unauthorized429rate_limited429quota_exceeded500internal_errorEvery error code