---
title: "SofaScore player penalty history"
method: GET
path: "/sofascore/player-penalty-history"
tags: ["SofaScore"]
---

# SofaScore player penalty history

`GET /sofascore/player-penalty-history`

## Request

- Base URL: `https://api.crawlora.net/api/v1`
- URL: `https://api.crawlora.net/api/v1/sofascore/player-penalty-history`
- Auth: API key in header `x-api-key`

Returns the penalties a player has taken, newest first: the totals (`attempts`, `scored`) and, per penalty, the outcome (`goal`, `miss`, `post` or `save`), the zone of the goal (for example `low-right`, `high-left`, `close-high`), the x and y position in the goal mouth on SofaScore's 0 to 100 scale, the expected-goals value when available and the match. Returns 404 for players with no recorded penalties, such as most goalkeepers and defenders.

## Query parameters

- `id` string, required

## Headers

- `x-api-key` string, required

## Response `200`

OK

- SofascorePlayerPenaltyHistoryResponseDoc
  - `code` integer
  - `data` SofascorePlayerPenaltyHistoryResponse
    - `attempts` integer
    - `count` integer
    - `fetched_at` string
    - `penalties` SofascorePlayerPenalty[]
      - `event` SofascoreEventSummary
        - `away_score` SofascoreScoreLine
          - `current` integer: Current score, which is the final score once the match is over.
          - `period1` integer: Score in the first period.
          - `period2` integer: Score in the second period.
        - `away_team` SofascoreTeamRef
          - `country` string: Country the team belongs to.
          - `id` integer: SofaScore team id. Use it with the team endpoints.
          - `name` string: Full team name.
          - `national` boolean: True for a national team.
          - `short_name` string: Shortened team name.
          - `slug` string: URL slug of the team on SofaScore.
        - `home_score` SofascoreScoreLine
          - `current` integer: Current score, which is the final score once the match is over.
          - `period1` integer: Score in the first period.
          - `period2` integer: Score in the second period.
        - `home_team` SofascoreTeamRef
          - `country` string: Country the team belongs to.
          - `id` integer: SofaScore team id. Use it with the team endpoints.
          - `name` string: Full team name.
          - `national` boolean: True for a national team.
          - `short_name` string: Shortened team name.
          - `slug` string: URL slug of the team on SofaScore.
        - `id` integer: SofaScore event id. Use it with the event endpoints.
        - `slug` string: URL slug of the match on SofaScore.
        - `start_time` string: Start time in UTC (RFC 3339).
        - `start_timestamp` integer: Start time as a Unix timestamp in seconds.
        - `status` SofascoreEventStatus
          - `code` integer: SofaScore's numeric status code, for example 0 for not started and 100 for ended.
          - `description` string: Status as displayed, for example "Ended".
          - `type` string: Status group, for example `notstarted`, `inprogress` or `finished`.
        - `tournament` SofascoreTournamentRef
          - `category` string: Category the tournament sits under, usually a country or region.
          - `id` integer: SofaScore id of the tournament the match is filed under. The seasons, standings and round endpoints take `unique_tournament_id` instead.
          - `name` string: Tournament name.
          - `slug` string: URL slug of the tournament on SofaScore.
          - `unique_tournament_id` integer: Id of the parent competition. This is the tournament id the tournament-seasons, standings and round-events endpoints take.
          - `unique_tournament_name` string: Name of the parent competition.
        - `winner_code` integer: Result code: 1 when the home side won, 2 when the away side won, 3 for a draw. Omitted until the match is decided.
      - `id` integer
      - `outcome` string
      - `x` number
      - `xg` number: XG is the expected-goals value of the penalty when SofaScore has one.
      - `y` number
      - `zone` string
    - `player_id` integer
    - `scored` integer
    - `source_url` string
  - `msg` string

## Other responses

- `400`: Bad Request
- `404`: Not Found
- `429`: Too Many Requests
- `503`: Service Unavailable

---

[API](https://skmtc.dev/crawlora/apis/crawlora-api.md) · [All operations](https://skmtc.dev/crawlora/apis/crawlora-api/llms.txt) · [OpenAPI document](https://skmtc.dev/crawlora/apis/crawlora-api/revisions/afac9b012a27?raw)
