Skip to main content
Use this page to understand how the API’s objects fit together before you write code.
Fastest way: ask your AI. Set up your coding tool once with Build with AI, then paste:

How it fits together

Everything starts with a competition. A competition has seasons, and a season has matches. Teams and players appear in matches and in season stats. What to send for common requests:

IDs

Every ID is a string with a prefix that tells you what it points to.
Treat IDs as text. Keep the prefix and never convert them to numbers: some have leading zeros, such as tm_0256 (Leeds United). A malformed ID returns 400 BAD_REQUEST, for example Invalid match_id.
Not sure of an ID? See Find IDs.

Competitions

The country_code filter on /football/competitions accepts GB for all UK nations, or GB-ENG, GB-SCT, GB-WLS and GB-NIR for one nation. Other countries use ISO codes such as DE or ES.

Seasons

Teams

A club’s men’s and women’s teams can share a name. Arsenal men are tm_9145 and Arsenal women are tm_515555. Use is_mens_team to tell them apart, or filter the list with GET /football/teams?search=Arsenal&is_mens_team=false.

Players

Matches

Full field lists are on Get a match and List matches.

Availability flags

Some data is optional. Flags tell you whether it exists, so you can skip calls that would return nothing. Competition flags tell you whether a data type exists anywhere in that competition. They don’t tell you which seasons have it. For a season-by-season answer, use the coverage endpoints.

Dates and times

  • Kickoff times (utc_date) are ISO 8601 in UTC, for example 2026-10-10T11:30:00.000Z. Convert to local time in your app.
  • Filtering by day uses date_from and date_to in YYYY-MM-DD format. There is no date parameter. For one day, send the same date in both.
  • Local days: add utc_offset, such as -05:00, to read date_from and date_to in another time zone. Kickoff times in the response stay in UTC. In a URL, write a plus sign as %2B (utc_offset=%2B02:00), or build the query with URLSearchParams.
  • Birth dates (date_of_birth) are YYYY-MM-DD.

Null values

null means the value is unknown or doesn’t exist yet. It never means zero or false. When optional data doesn’t exist for a match, some endpoints return 404 (for example Heatmap not available for this player in this match) and others return an empty data list. Check the availability flags first. See Errors.

Next steps