Trend
Overview
The Trend Resource provides extensive derived form data. You can use trends to determine the current
form / strength of a team for certain metrics.
You can make use of them either by looking at past data and see if the trend was confirmed by the result of the match or if it was an outlier.
The data of a trend basically comes either as Average, which takes the totals of a metric and divides
by the no of matches, or it comes as Percentage, represented as a number between 0 and 1, indicating the % of matches
a certain metric happened.
The data points are prefixed accordingly, avg_ or pct_. All metrics are built over the values
within the given input window of matches, the default window considers the last 5 matches.
So for instance, pct_2nd_hf_o_05 with a value of 0.8 means 80% of the matches taken into account
at least one total goal in the second half was scored.
Only want to know in how many of the matches the team scored at home? Use the consider_side filter for that, so
only home matches are taken into account for the home team and only away matches for the away team.
The following request returns all trends for matches played on St. Nicholas Day 2025.
curl -XGET 'https://api.football-data.org/v4/trends/?date=2025-12-06' -H "X-Auth-Token: UR_TOKEN"
Let’s see the entire beauty of the trend resource below.
{
"meta": {
"filters": {
"consider_side": false,
"window": 5,
"competitions": "WC,BSA,CL,FL1,SA,PPL,PL,DED,EC,ELC,PD,BL1",
"dateFrom": "2025-12-06",
"dateTo": "2025-12-07"
},
"result_set": {
"count": 41,
"competitions": "PL,ELC,PD,SA,BL1,PPL,DED,FL1,BSA",
"first": "2025-12-06",
"last": "2025-12-07"
}
},
"trends": [
{
"id": 537926,
"status": "finished",
"competition": {
"id": 2021,
"name": "Premier League",
"area": {
"code": "ENG",
"name": "England",
"ensignUrl": "https://crests.football-data.org/770.svg"
}
},
"matchday": 15,
"season": {
"id": 2403,
"startDate": "2025-08-15",
"endDate": "2026-05-24",
"currentMatchday": 21,
"winner": null
},
"homeTeam": {
"id": 58,
"name": "Aston Villa FC"
},
"awayTeam": {
"id": 57,
"name": "Arsenal FC"
},
"trend": {
"home": {
"avg_goals": 3.6,
"avg_goals_conceded": 1.0,
"avg_goals_scored": 2.6,
"avg_points": 3.0,
"competitions": "PL,EL",
"form": "WWWWW",
"match_ids": [
537916,
537906,
552192,
537901,
537886
],
"pct_1st_hf_o_05": 0.6,
"pct_1st_hf_o_15": 0.6,
"pct_1st_hf_o_25": 0.0,
"pct_1st_hf_u_05": 0.4,
"pct_1st_hf_u_15": 0.4,
"pct_1st_hf_u_25": 1.0,
"pct_2nd_hf_o_05": 0.8,
"pct_2nd_hf_o_15": 0.6,
"pct_2nd_hf_o_25": 0.0,
"pct_2nd_hf_u_05": 0.2,
"pct_2nd_hf_u_15": 0.4,
"pct_2nd_hf_u_25": 1.0,
"pct_bts": 0.6,
"pct_draws": 0.0,
"pct_fts": 0.0,
"pct_losses": 0.0,
"pct_o_05": 1.0,
"pct_o_15": 0.8,
"pct_o_25": 0.8,
"pct_o_35": 0.4,
"pct_u_05": 0.0,
"pct_u_15": 0.2,
"pct_u_25": 0.2,
"pct_u_35": 0.6,
"pct_wins": 1.0,
"team_id": 58,
"window_end_date": "2025-12-03",
"window_start_date": "2025-11-09"
},
"away": {
"avg_goals": 3.4,
"avg_goals_conceded": 1.0,
"avg_goals_scored": 2.4,
"avg_points": 2.2,
"competitions": "PL,CL",
"form": "WDWWD",
"match_ids": [
537917,
537909,
551911,
537897,
537885
],
"pct_1st_hf_o_05": 0.6,
"pct_1st_hf_o_15": 0.2,
"pct_1st_hf_o_25": 0.0,
"pct_1st_hf_u_05": 0.4,
"pct_1st_hf_u_15": 0.8,
"pct_1st_hf_u_25": 1.0,
"pct_2nd_hf_o_05": 1.0,
"pct_2nd_hf_o_15": 0.6,
"pct_2nd_hf_o_25": 0.0,
"pct_2nd_hf_u_05": 0.0,
"pct_2nd_hf_u_15": 0.4,
"pct_2nd_hf_u_25": 1.0,
"pct_bts": 0.8,
"pct_draws": 0.4,
"pct_fts": 0.0,
"pct_losses": 0.0,
"pct_o_05": 1.0,
"pct_o_15": 1.0,
"pct_o_25": 0.6,
"pct_o_35": 0.6,
"pct_u_05": 0.0,
"pct_u_15": 0.0,
"pct_u_25": 0.4,
"pct_u_35": 0.4,
"pct_wins": 0.6,
"team_id": 57,
"window_end_date": "2025-12-03",
"window_start_date": "2025-11-08"
}
},
"odds": {
"odds_1x2": {
"home": 4.19,
"draw": 3.45,
"away": 1.9
},
"asian_handicap": {
"-0.25": {
"at": 1.29,
"ht": 3.48
},
"-0.50": {
"at": 1.24,
"ht": 3.95
},
"-0.75": {
"at": 1.14,
"ht": 5.02
},
"-1.00": {
"at": 1.05,
"ht": 7.8
},
"-1.25": {
"at": 1.04,
"ht": 8.15
},
"-1.50": {
"at": 1.04,
"ht": 8.85
},
"-1.75": {
"at": 1.03,
"ht": 10.5
},
"0": {
"at": 1.38,
"ht": 2.95
},
"0.25": {
"at": 1.64,
"ht": 2.24
},
"0.50": {
"at": 1.9,
"ht": 1.91
},
"0.75": {
"at": 2.17,
"ht": 1.68
},
"1.00": {
"at": 2.72,
"ht": 1.46
},
"1.25": {
"at": 3.09,
"ht": 1.35
},
"1.50": {
"at": 3.51,
"ht": 1.29
},
"1.75": {
"at": 4.26,
"ht": 1.2
},
"2.00": {
"at": 6.45,
"ht": 1.1
},
"2.25": {
"at": 6.57,
"ht": 1.09
},
"2.50": {
"at": 7.1,
"ht": 1.07
},
"2.75": {
"at": 9.5,
"ht": 1.04
},
"3.00": {
"at": 16.5,
"ht": 1.01
}
},
"btts": 1.88,
"over_under": {
"0.50": {
"o": 1.05,
"u": 8.68
},
"0.75": {
"o": 1.05,
"u": 7.63
},
"1.00": {
"o": 1.08,
"u": 6.95
},
"1.25": {
"o": 1.2,
"u": 4.3
},
"1.50": {
"o": 1.33,
"u": 3.2
},
"1.75": {
"o": 1.4,
"u": 2.84
},
"2.00": {
"o": 1.54,
"u": 2.45
},
"2.25": {
"o": 1.81,
"u": 2.01
},
"2.50": {
"o": 2.05,
"u": 1.76
},
"2.75": {
"o": 2.34,
"u": 1.58
},
"3.00": {
"o": 2.87,
"u": 1.4
},
"3.25": {
"o": 3.2,
"u": 1.33
},
"3.50": {
"o": 3.59,
"u": 1.27
},
"3.75": {
"o": 4.27,
"u": 1.18
},
"4.00": {
"o": 5.84,
"u": 1.1
},
"4.25": {
"o": 6.18,
"u": 1.09
},
"4.50": {
"o": 7.09,
"u": 1.08
},
"4.75": {
"o": 8.0,
"u": 1.06
},
"5.00": {
"o": 13.0,
"u": 1.03
},
"5.25": {
"o": 12.0,
"u": 1.02
},
"5.50": {
"o": 14.63,
"u": 1.02
},
"6.50": {
"o": 28.25,
"u": 1.01
},
"7.50": {
"o": 67.0,
"u": 1.0
},
"8.50": {
"o": 67.0,
"u": 1.0
}
}
},
"score": {
"penalties": {
"homeTeam": null,
"awayTeam": null
},
"winner": "HOME_TEAM",
"duration": "REGULAR",
"fullTime": {
"homeTeam": 2,
"awayTeam": 1
},
"halfTime": {
"homeTeam": 1,
"awayTeam": 0
},
"extraTime": {
"homeTeam": null,
"awayTeam": null
}
},
"utcDate": "2025-12-06T12:30:00Z",
"lastUpdated": "2026-03-01T07:45:01"
},
{ ... }
]
}
We can see in the metadata, that because we omitted the competition filter, we requested trend data for all competitions
within our subscription, in this case the Free Tier. We can also see that dateFrom and dateTo were set according to
our passed date query parameter and the default values for window and consider_side were applied.
Last but not least, we can see there is data returned for 41 matches in total which consist of almost all competitions apart from
World Cup and Champions League.
Available filters for the trend resource
You can control which matches to display trends for as well as what matches should be taken into account for the trend data.
| Filter name | Possible values | Sample | Description |
|---|---|---|---|
date |
A date in format yyyy-MM-dd |
/?date=2025-12-06 |
Filter returned matches for the given date, defaults to today. If present, has precedence over dateFrom/dateTo |
dateFrom |
A date in format yyyy-MM-dd |
/?dateFrom=2025-12-01 |
Must be used in conjunction with dateTo |
dateTo |
A date in format yyyy-MM-dd |
/?dateTo=2025-12-31 |
Filters all returned matches from dateFrom until dateTo, which is exclusive — e.g. to fetch all of a weekend, use dateFrom=2026-03-02&dateTo=2026-03-09. |
competitions |
A list of competition codes, comma separated |
/?competitions=PL,DED |
Filters returned matches to only include matches for the given competitions |
window |
Integer [1-15] |
/?window=8 |
Calculates trends for the last 8 matches |
consider_side |
Feature flag, just include it as query param or not |
/?consider_side |
When enabled, only home matches are considered for the home team’s trend, and only away matches for the away team’s trend |
Available data points
| Data Point | Type | Description |
|---|---|---|
avg_goals |
float |
Average total goals per match (scored + conceded) |
avg_goals_conceded |
float |
Average goals conceded per match |
avg_goals_scored |
float |
Average goals scored per match |
avg_points |
float |
Average points earned per match (3=win, 1=draw, 0=loss) |
competitions |
string |
Comma-separated codes of competitions represented in the window |
form |
string |
Recent match results as a string, newest result first (W=Win, D=Draw, L=Loss), e.g. 'WDWWD' means the most recent match was a Win, then a Draw, etc. |
match_ids |
int[] |
IDs of the matches included in the trend window |
pct_1st_hf_o_05 |
float |
Percentage of matches where first half total goals were over 0.5 (i.e. at least 1 goal) |
pct_1st_hf_o_15 |
float |
Percentage of matches where first half total goals were over 1.5 (i.e. at least 2 goals) |
pct_1st_hf_o_25 |
float |
Percentage of matches where first half total goals were over 2.5 (i.e. at least 3 goals) |
pct_1st_hf_u_05 |
float |
Percentage of matches where first half total goals were under 0.5 (i.e. exactly 0 goals) |
pct_1st_hf_u_15 |
float |
Percentage of matches where first half total goals were under 1.5 (i.e. 0 or 1 goal) |
pct_1st_hf_u_25 |
float |
Percentage of matches where first half total goals were under 2.5 (i.e. 0, 1, or 2 goals) |
pct_2nd_hf_o_05 |
float |
Percentage of matches where second half total goals were over 0.5 (i.e. at least 1 goal) |
pct_2nd_hf_o_15 |
float |
Percentage of matches where second half total goals were over 1.5 (i.e. at least 2 goals) |
pct_2nd_hf_o_25 |
float |
Percentage of matches where second half total goals were over 2.5 (i.e. at least 3 goals) |
pct_2nd_hf_u_05 |
float |
Percentage of matches where second half total goals were under 0.5 (i.e. exactly 0 goals) |
pct_2nd_hf_u_15 |
float |
Percentage of matches where second half total goals were under 1.5 (i.e. 0 or 1 goal) |
pct_2nd_hf_u_25 |
float |
Percentage of matches where second half total goals were under 2.5 (i.e. 0, 1, or 2 goals) |
pct_bts |
float |
Percentage of matches where both teams scored (Both Teams to Score) |
pct_draws |
float |
Percentage of matches that ended in a draw |
pct_fts |
float |
Percentage of matches where the team failed to score (Failed To Score) |
pct_losses |
float |
Percentage of matches that were losses |
pct_o_05 |
float |
Percentage of matches with over 0.5 total goals (i.e. at least 1 goal) |
pct_o_15 |
float |
Percentage of matches with over 1.5 total goals (i.e. at least 2 goals) |
pct_o_25 |
float |
Percentage of matches with over 2.5 total goals (i.e. at least 3 goals) |
pct_o_35 |
float |
Percentage of matches with over 3.5 total goals (i.e. at least 4 goals) |
pct_u_05 |
float |
Percentage of matches with under 0.5 total goals (i.e. exactly 0 goals) |
pct_u_15 |
float |
Percentage of matches with under 1.5 total goals (i.e. 0 or 1 goal) |
pct_u_25 |
float |
Percentage of matches with under 2.5 total goals (i.e. 0, 1, or 2 goals) |
pct_u_35 |
float |
Percentage of matches with under 3.5 total goals (i.e. 0, 1, 2, or 3 goals) |
pct_wins |
float |
Percentage of matches that were wins |
team_id |
int |
Internal identifier of the team |
window_end_date |
date |
Date of the most recent match included in the trend window |
window_start_date |
date |
Date of the oldest match included in the trend window |