Player Form

Each squad player's last five appearances before a fixture, with minutes, shots, goals, assists, cards, fouls, tackles and saves in each game.

include=player_form

The player_form include returns the recent games of every player in both squads: his last 5 appearances before this fixture's kick-off, with his statistics in each one. It is meant to sit next to the matching player metric. For example, you can show the goals from his last five games next to PLAYER_EXPECTED_GOALS, or his shots next to PLAYER_EXPECTED_SHOTS.

Requires squads. Request them together: include=squads,player_form. Entries identify players by player_id only; squads carries their names and positions.

Availability: Only returned when include=player_form is added to a request to GET /fixtures. Not available on /fixtures/search or /livescores.

Fixed per fixture

The window ends at this fixture's kick-off, so a fixture returns the same entries before, during and after the match. Querying a match from last month shows the player's form as it was going into that match, not his form today.

What counts as an appearance

  • A finished game (including extra time and penalties) in any competition: league, cups and internationals.
  • The player was on the pitch: MINUTES_PLAYED above 0. An unused substitute did not play and gets no entry.
  • Within the 365 days before kick-off. A player returning from a long absence can have fewer than 5 entries, and one with no appearance in that window has none.

Object Schema

player_form is a flat array covering both teams' current squads. Entries are not grouped: use team_id and player_id to split them. Each entry is one past appearance of one player:

FieldTypeDescription
team_idintegerThe player's team in this fixture. Match it against participants[].id to tell home from away.
player_idintegerThe player. Join to squads[].player_id for name and position.
fixture_idintegerThe past fixture the statistics come from.
date_timestringKick-off of the past fixture, ISO 8601 in UTC.
statisticsarrayThe player's statistics in that game, see below.

Entries are ordered by team_id, then player_id, then date_time newest first.

Statistic object

FieldTypeDescription
type_idintegerThe unique ID of the statistic type.
developer_namestringConstant-style identifier, see the table below.
valueintegerThe player's count in that game (minutes for MINUTES_PLAYED).
type_iddeveloper_nameSits next to
42MINUTES_PLAYEDPLAYER_EXPECTED_MINUTES
11SHOTS_TOTALPLAYER_EXPECTED_SHOTS
22SHOTS_ON_TARGETPLAYER_EXPECTED_SHOTS_ON_TARGET
15GOALSPLAYER_EXPECTED_GOALS
17ASSISTSPLAYER_EXPECTED_ASSISTS
20YELLOWCARDSPLAYER_EXPECTED_BOOKING_POINTS
19REDCARDSPLAYER_EXPECTED_BOOKING_POINTS
21YELLOWRED_CARDSPLAYER_EXPECTED_BOOKING_POINTS
31FOULSPLAYER_EXPECTED_FOULS
73TACKLESPLAYER_EXPECTED_TACKLES
32SAVESPLAYER_EXPECTED_SAVES

Missing data versus zero

A statistic is present only when it was recorded for that game. When it is present, 0 is a real zero. When it is absent, the game's data does not cover it. Never read an absent statistic as 0.

Coverage differs per competition and per statistic. A game can carry shots but no tackles, or cards but no shots. So look statistics up by developer_name rather than by position in the array, and when summing over the last five games, count how many games actually carried the statistic.

  • MINUTES_PLAYED is always present.
  • SAVES is returned for the goalkeeper of that game only.
  • Card statistics are left out for a team in a game where a card was shown that the data cannot attribute to a player, because that card may have been his.

Example

GET /fixtures?fixture_id=19134520&include=squads,player_form
"player_form": [
  {
    "team_id": 4009,
    "player_id": 184521,
    "fixture_id": 19134512,
    "date_time": "2026-10-11T19:00:00.000Z",
    "statistics": [
      { "type_id": 42, "developer_name": "MINUTES_PLAYED",  "value": 90 },
      { "type_id": 11, "developer_name": "SHOTS_TOTAL",     "value": 3 },
      { "type_id": 22, "developer_name": "SHOTS_ON_TARGET", "value": 2 },
      { "type_id": 15, "developer_name": "GOALS",           "value": 1 },
      { "type_id": 17, "developer_name": "ASSISTS",         "value": 0 },
      { "type_id": 20, "developer_name": "YELLOWCARDS",     "value": 0 },
      { "type_id": 19, "developer_name": "REDCARDS",        "value": 0 },
      { "type_id": 21, "developer_name": "YELLOWRED_CARDS", "value": 0 },
      { "type_id": 31, "developer_name": "FOULS",           "value": 1 },
      { "type_id": 73, "developer_name": "TACKLES",         "value": 2 }
    ]
  }
]

To show "goals in the last 5" next to expected goals, take the player's entries and sum the GOALS values of the entries that carry one.


Did this page help you?