Skip to main content
The core match-query endpoint, supporting free combinations of filters such as a single date, a date range, league+season, team, or a single match_id. It returns basic match information, with the score included for completed matches. Most “fixtures/results/calendar” pages use this endpoint as their data source; if you only need to query a relative time window like “the next week,” using Recent Matches is more convenient (it saves you from calculating dates yourself). Once you have a match_id, you can use it with endpoints like Match Details, Lineups, Live Score, and Live Match Stats to dig deeper into a specific match.

Endpoint

Parameters

Filter conditions can be combined; season is required when league_id is provided without a date/single-match constraint, and optional otherwise.
Providing league_id without season, and without a date/single-match constraint, returns 400.

Response fields (data: array)

*_label convention: when lang is a non-default language, status retains its original value, and a parallel localized label status_label is added (only textual statuses can be localized; when no corresponding localized text exists, this field is omitted, so clients must handle that gracefully); team names/league names (home/away/league) are not yet localized by lang.
For matches decided by a penalty shootout (status=Pen.), ft_score may include a nominal 1-goal credit for the winning side of the shootout, and et_score is the net score for the extra-time period; use penalty_score to determine the outcome.

Enum reference

The status string takes one of three forms: 1). Textual status (categorized as follows): 2). HH:MM form (e.g. 15:00, 19:45): not started, the value is the UTC kickoff time (matches the time field). 3). Plain numeric form (e.g. 9, 45, 88): in progress, the value is the current match minute.

Request examples

Response examples

league+season (HTTP 200, excerpt)
HTTP 200

Error examples

All return HTTP 400, error.code INVALID_PARAMS.