Skip to main content

2025 Season Roundup

Β· 4 min read
Nick Eggleton

It's been a busy year for us on the AFL API and if you haven't been following on mid-season, here's a round up of what's been added from post-season 2024 to right now.

New API Features​

Tier 2 Competitions​

We have added the Tier 2 competitions listed in the table below to the AFL API. Tier 2 marks the use of multiple League Levels for the first time, so note that some competitions require you to use a Level Id other than 1.

All match endpoints are available to Tier 2 matches, though due to each competition's smaller data set, they return less information compared to AFL or AFLW matches. Starting with 2026, we will be providing the Tier 2 Advanced data set to selected competitions.

More information about the Tier 2 Advanced Data Set can be found here.

note

Seasons 2024 and 2025 are currently available for each of these competitions. Their future seasons will be available going forward.

CompetitionLeagueIdLevelIdAdvanced Data Set?
VFLVictorian Football League5Seniors1Yes - 2026
VFLWVictorian Football League Womens6Seniors1
U18 ChampsUnder 18 Championship8Under-185Yes - 2024*
U18 Champs AFLWAFLW Under 18 Championship9Under-185Yes - 2024*
U16 ChampsUnder 16 Championship18Under-163
U16 Champs AFLWAFLW Under 16 Championship19Under-163
Coates Talent League BoysCoates Talent League Boys10Under-185Yes - 2026
Coates Talent League GirlsCoates Talent League Girls11Under-185
AIS AcademyAFL AIS Academy14Under-185
SANFLSouth Australian National Football League12Seniors1Yes - 2026
SANFL ReservesSouth Australian National Football League12Reserves2Yes - 2026
SANFL U16South Australian National Football League12Under-163
SANFL U18South Australian National Football League12Under-185Yes - 2026
SANFLWSouth Australian National Football League Womens13Seniors1
WAFLWest Australian Football League16Seniors1Yes - 2026
WAFL ReservesWest Australian Football League16Reserves2Yes - 2026
WAFL ColtsWest Australian Football League16Under-196Yes - 2026
WAFLWWest Australian Football Womens17Seniors1
Interstate MatchesState League Representative Matches20Seniors1
*U18 Championship matches are already presented with the Advanced data set so it is available from 2024.

Match Statistics Flow Endpoint​

We added a new stats flow endpoint in August which returns all the timecoded occurrences of metric values in a match. Helpful if you want to track when we recorded Long Down the Line kicks happening, which is not easy to determine from match transactions alone.

Match Stoppages Endpoint​

Back in November 2024 we added the stoppages endpoint, which returns all the timecoded occurrences of each stoppage in a match, along with a wealth of detail, including details on the stoppage exit.

Centre Bounce Zone​

At the very end of 2024 we introduced the Centre Bounce zone to the API, providing the ability to filter match stats to those that happened at centre bounces, and adding this zone to all applicable endpoints.

Indigenous All Stars Match​

We provided the 2025 Toyota AFL Indigenous All Stars Match live from the AFL API last February. Should these matches occur again in future the API is ready to support them.

Endpoint Enhancements​

We improved a bunch of existing endpoints throughout the last year too - here's the highlights.

EndpointImprovementWhen
League LevelsTier Classificationv1.58 - Jul 2025
MatchLast Statistic Update timestampv1.46 - Oct 2024
MatchWin/Loss/Draw resultv1.53 - Apr 2025
Match ShotsBehind Shot Resultv1.54 - May 2025
Match ShotsShot Pressurev1.62 - Oct 2025
Match Statistics LeadersGroundball Get Leadersv1.54 - May 2025
Match Statistics LeadersStoppage-related Leadersv1.60 - Aug 2025
Match Statistics LeadersFilter by Period and Top X Leadersv1.61 - Sep 2025
Match StoppagesPhysical Zonev1.51 - Mar 2025
Match VenueInterstate Travelv1.52 - Apr 2025
Season FixtureRound Number Filterv1.55 - Jun 2025

New Metrics​

We've added dozens of new metrics to the API this year - too many to list in detail here, so here's the links to details in each release they were added.

note

Going forward, we will indicate which competitions support each new metric, based on them being AFL, AFLW, Tier 2 Standard or the Tier 2 Advanced Data Set.

MetricWhen
First Possession from Stoppage Outcomev1.60 - Aug 2025
v1.61 - Sep 2025
v1.62 - Oct 2025
Forward Kick Percentagev1.46 - Oct 2024
Inside 50 Target Chance Percentagev1.48 - Dec 2024
Intercept Chain Source & Outcomev1.55 - Jun 2025
v1.56 - Jun 2025
v1.57 - Jul 2025
v1.58 - Jul 2025
v1.60 - Aug 2025
v1.62 - Oct 2025
Kick-In Launch Locationsv1.48 - Dec 2024
Kick Set/Non-Set Pressurev1.46 - Oct 2024
Player Rating Percentagev1.51 - Mar 2025
Pre-Clearance Contested Possession Situationv1.58 - Jul 2025
Post-Clearance Contested Possession Typev1.59 - Jul 2025
Points Above Expected Set/Non-Set Pressurev1.61 - Sep 2025
Points from Shot Typev1.55 - Jun 2025
Score Involvement Percentagev1.47 - Nov 2024
Shot At Goal Expected Goal & Pointsv1.60 - Aug 2025
Shot At Goal Typev1.54 - May 2025
v1.56 - Jun 2025
Squad Pressure Act Type Percentagev1.57 - Jul 2025

How It Works - Tier 2 Advanced Data Set

Β· 2 min read
Nick Eggleton

Starting with the 2026 season, the AFL API will providing an 'advanced' data set for select Tier 2 competitions. This is a brief explanation of what that means and how it works.

What is the Advanced Data Set?​

This data set provides some of the more advanced analytical data elements to Tier 2 matches that we already provide for AFL and AFLW matches. This is achieved by performing graphical and pressure capture on Tier 2 matches, collecting where key events occurred on the ground and how much pressure was applied to them. With this data in place, the AFL API is able to generate statistics for metrics that depend on it.

The data set provides the following additional elements:

  • Over 200 metrics
  • Identifying if something occurred in the DM, CB or AM zones, rather than just broadly 'midfield'
  • XY Locations
  • Pressure Details
  • Metres Gained
  • Player Durability & Availability

Which Competitions?​

The following competitions will receive the Advanced Data Set in 2026:

CompetitionLeagueIdLevelId
VFLVictorian Football League5Seniors1
U18 Champs*Under 18 Championship8Under-185
U18 Champs AFLW*AFLW Under 18 Championship9Under-185
Coates Talent League BoysCoates Talent League Boys10Under-185
SANFLSouth Australian National Football League12Seniors1
SANFL ReservesSouth Australian National Football League12Reserves2
SANFL U18South Australian National Football League12Under-185
WAFLWest Australian Football League16Seniors1
WAFL ReservesWest Australian Football League16Reserves2
WAFL ColtsWest Australian Football League16Under-196
*U18 Championship matches are already captured like an AFL match so the Advanced Data Set will be available for their 2024 and 2025 seasons.

API Endpoints​

The following endpoints return additional data as part of the Tier 2 Advanced Data Set:

API EndpointXY LocationsPressureMetres Gained
Match ChainsYesYes
Match EntriesYesYes
Match ShotsYesYes
Match TransactionsYesYes

Player Durability & Availability​

This data set will be delivered via a new API endpoint - its name and structure is currently TBD.

Metrics​

The Advanced Data Set provides the following metrics:

CategoryMetrics
Centre Bounce Attendance & AbsenceABSENCE_CENTRE_BOUNCE
ABSENCE_CENTRE_BOUNCE_LOSS
ABSENCE_CENTRE_BOUNCE_LOSS_PCT
ABSENCE_CENTRE_BOUNCE_NEUTRAL
ABSENCE_CENTRE_BOUNCE_NEUTRAL_PCT
ABSENCE_CENTRE_BOUNCE_WIN
ABSENCE_CENTRE_BOUNCE_WIN_PCT
ATTENDANCE_CENTRE_BOUNCE
ATTENDANCE_CENTRE_BOUNCE_LOSS
ATTENDANCE_CENTRE_BOUNCE_LOSS_PCT
ATTENDANCE_CENTRE_BOUNCE_NEUTRAL
ATTENDANCE_CENTRE_BOUNCE_NEUTRAL_PCT
ATTENDANCE_CENTRE_BOUNCE_WIN
ATTENDANCE_CENTRE_BOUNCE_WIN_PCT
Possession Chain Metres GainedCHAIN_METRES
CHAIN_METRES_AVG
CHAIN_METRES_BU
CHAIN_METRES_BU_AVG
CHAIN_METRES_BUTI
CHAIN_METRES_BUTI_AVG
CHAIN_METRES_CB
CHAIN_METRES_CB_AVG
CHAIN_METRES_INT
CHAIN_METRES_INT_AVG
CHAIN_METRES_KI
CHAIN_METRES_KI_AVG
CHAIN_METRES_NET
CHAIN_METRES_NET_AVG
CHAIN_METRES_NET_BU
CHAIN_METRES_NET_BU_AVG
CHAIN_METRES_NET_BUTI
CHAIN_METRES_NET_BUTI_AVG
CHAIN_METRES_NET_CB
CHAIN_METRES_NET_CB_AVG
CHAIN_METRES_NET_INT
CHAIN_METRES_NET_INT_AVG
CHAIN_METRES_NET_KI
CHAIN_METRES_NET_KI_AVG
CHAIN_METRES_NET_ST
CHAIN_METRES_NET_ST_AVG
CHAIN_METRES_NET_TI
CHAIN_METRES_NET_TI_AVG
CHAIN_METRES_REPLY
CHAIN_METRES_REPLY_AVG
CHAIN_METRES_REPLY_BU
CHAIN_METRES_REPLY_BU_AVG
CHAIN_METRES_REPLY_BUTI
CHAIN_METRES_REPLY_BUTI_AVG
CHAIN_METRES_REPLY_CB
CHAIN_METRES_REPLY_CB_AVG
CHAIN_METRES_REPLY_INT
CHAIN_METRES_REPLY_INT_AVG
CHAIN_METRES_REPLY_KI
CHAIN_METRES_REPLY_KI_AVG
CHAIN_METRES_REPLY_ST
CHAIN_METRES_REPLY_ST_AVG
CHAIN_METRES_REPLY_TI
CHAIN_METRES_REPLY_TI_AVG
CHAIN_METRES_ST
CHAIN_METRES_ST_AVG
CHAIN_METRES_TI
CHAIN_METRES_TI_AVG
Defensive Ball Movement LaneD50_BALL_MOVEMENT_BOUNDARY
D50_BALL_MOVEMENT_BOUNDARY_PCT
D50_BALL_MOVEMENT_CORRIDOR
D50_BALL_MOVEMENT_CORRIDOR_PCT
D50_BALL_MOVEMENT_WING
D50_BALL_MOVEMENT_WING_PCT
Inside 50 Bomb KicksINSIDE_50_KICK_BOMB
Inside 50 Target ChanceINSIDE_50_TARGET
INSIDE_50_TARGET_CHANCE
INSIDE_50_TARGET_CHANCE_PCT
INSIDE_50_TARGET_CHANCE_PLAYER_BEHI
INSIDE_50_TARGET_CHANCE_PLAYER_BEHI_PCT
INSIDE_50_TARGET_CHANCE_PLAYER_GOAL
INSIDE_50_TARGET_CHANCE_PLAYER_GOAL_PCT
INSIDE_50_TARGET_CHANCE_PLAYER_RETAIN
INSIDE_50_TARGET_CHANCE_PLAYER_RETAIN_MARK
INSIDE_50_TARGET_CHANCE_PLAYER_RETAIN_MARK_PCT
INSIDE_50_TARGET_CHANCE_PLAYER_RETAIN_PCT
INSIDE_50_TARGET_CHANCE_PLAYER_SCORE
INSIDE_50_TARGET_CHANCE_PLAYER_SCORE_PCT
INSIDE_50_TARGET_CHANCE_TEAM_BEHI
INSIDE_50_TARGET_CHANCE_TEAM_BEHI_PCT
INSIDE_50_TARGET_CHANCE_TEAM_GOAL
INSIDE_50_TARGET_CHANCE_TEAM_GOAL_PCT
INSIDE_50_TARGET_CHANCE_TEAM_RETAIN
INSIDE_50_TARGET_CHANCE_TEAM_RETAIN_PCT
INSIDE_50_TARGET_CHANCE_TEAM_SCORE
INSIDE_50_TARGET_CHANCE_TEAM_SCORE_PCT
Forward KicksKICK_DIRECTION_FORWARD
KICK_DIRECTION_FORWARD_NON_SET
KICK_DIRECTION_FORWARD_PCT
KICK_DIRECTION_FORWARD_PCT_NON_SET
KICK_DIRECTION_FORWARD_PCT_SET
KICK_DIRECTION_FORWARD_SET
Short and Long KicksKICK_DISTANCE_LONG
KICK_DISTANCE_LONG_EFFECTIVE
KICK_DISTANCE_LONG_EFFECTIVE_PCT
KICK_DISTANCE_LONG_NON_SET
KICK_DISTANCE_LONG_PCT
KICK_DISTANCE_LONG_PCT_NON_SET
KICK_DISTANCE_LONG_PCT_SET
KICK_DISTANCE_LONG_SET
KICK_DISTANCE_SHORT
KICK_DISTANCE_SHORT_EFFECTIVE
KICK_DISTANCE_SHORT_EFFECTIVE_PCT
KICK_DISTANCE_SHORT_PCT
Kick IntentKICK_FOR_DISTANCE
KICK_FOR_GOAL
KICK_FOR_GOAL_SMOTHERED
Kick PressureKICK_NON_SET
KICK_SET
Kick TargetKICK_TO_BACK_LEAD
KICK_TO_COVERED
KICK_TO_FORWARD_LEAD
KICK_TO_LEAD
KICK_TO_OPEN
KICK_TO_PACK
LeadingLEAD_DEFENDER
LEAD_TARGET
Long Down the Line KicksLONG_DOWN_LINE
LONG_DOWN_LINE_BEHI
LONG_DOWN_LINE_BEHI_PCT
LONG_DOWN_LINE_GOAL
LONG_DOWN_LINE_GOAL_PCT
LONG_DOWN_LINE_IN50
LONG_DOWN_LINE_IN50_PCT
LONG_DOWN_LINE_LOSS
LONG_DOWN_LINE_LOSS_PCT
LONG_DOWN_LINE_OPPORTUNITY
LONG_DOWN_LINE_PCT
LONG_DOWN_LINE_RETAIN
LONG_DOWN_LINE_RETAIN_PCT
LONG_DOWN_LINE_SCORE
LONG_DOWN_LINE_SCORE_PCT
LONG_DOWN_LINE_STOPPAGE
LONG_DOWN_LINE_STOPPAGE_PCT
Metres GainedMETRES_GAINED
METRES_GAINED_ASSISTED
METRES_GAINED_DISPOSAL
METRES_GAINED_DISPOSAL_AVG
METRES_GAINED_DISPOSAL_COUNT
METRES_GAINED_EFFECTIVE
METRES_GAINED_HANDBALL
METRES_GAINED_HANDBALL_AVG
METRES_GAINED_HANDBALL_COUNT
METRES_GAINED_KICK
METRES_GAINED_KICK_AVG
METRES_GAINED_KICK_COUNT
METRES_GAINED_NET
METRES_GAINED_OTHER
METRES_GAINED_RETAIN
Midfield Ball Movement LaneMID_BALL_MOVEMENT
MID_BALL_MOVEMENT_BOUNDARY
MID_BALL_MOVEMENT_BOUNDARY_PCT
MID_BALL_MOVEMENT_CORRIDOR
MID_BALL_MOVEMENT_CORRIDOR_PCT
MID_BALL_MOVEMENT_WING
MID_BALL_MOVEMENT_WING_PCT
One on One ContestsONE_ON_ONE_DEFENDER
ONE_ON_ONE_DEFENDER_LOSS
ONE_ON_ONE_DEFENDER_LOSS_MARK
ONE_ON_ONE_DEFENDER_LOSS_MARK_PCT
ONE_ON_ONE_DEFENDER_LOSS_PCT
ONE_ON_ONE_DEFENDER_NEUTRAL
ONE_ON_ONE_DEFENDER_NEUTRAL_PCT
ONE_ON_ONE_DEFENDER_WIN
ONE_ON_ONE_DEFENDER_WIN_MARK
ONE_ON_ONE_DEFENDER_WIN_MARK_PCT
ONE_ON_ONE_DEFENDER_WIN_PCT
ONE_ON_ONE_RESULT
ONE_ON_ONE_TARGET
ONE_ON_ONE_TARGET_LOSS
ONE_ON_ONE_TARGET_LOSS_MARK
ONE_ON_ONE_TARGET_LOSS_MARK_PCT
ONE_ON_ONE_TARGET_LOSS_PCT
ONE_ON_ONE_TARGET_NEUTRAL
ONE_ON_ONE_TARGET_NEUTRAL_PCT
ONE_ON_ONE_TARGET_WIN
ONE_ON_ONE_TARGET_WIN_MARK
ONE_ON_ONE_TARGET_WIN_MARK_PCT
ONE_ON_ONE_TARGET_WIN_PCT
Pressure ActsPRESSURE_ACT
PRESSURE_ACT_BASE
PRESSURE_ACT_CHASING
PRESSURE_ACT_CLOSING
PRESSURE_ACT_CORRALLING
PRESSURE_ACT_FORCED_TURNOVER
PRESSURE_ACT_FORCED_TURNOVER_BEHI
PRESSURE_ACT_FORCED_TURNOVER_BEHI_PCT
PRESSURE_ACT_FORCED_TURNOVER_GOAL
PRESSURE_ACT_FORCED_TURNOVER_GOAL_PCT
PRESSURE_ACT_FORCED_TURNOVER_POINTS
PRESSURE_ACT_FORCED_TURNOVER_SCORE
PRESSURE_ACT_FORCED_TURNOVER_SCORE_PCT
PRESSURE_ACT_GP
PRESSURE_ACT_IMPLIED
PRESSURE_ACT_IMPLIED_OTHER
PRESSURE_ACT_PHYSICAL
PRESSURE_ACT_PREC
PRESSURE_ACT_SQ
PRESSURE_ACT_SQ_BASE
PRESSURE_ACT_SQ_CHASING
PRESSURE_ACT_SQ_CHASING_PCT
PRESSURE_ACT_SQ_CLOSING
PRESSURE_ACT_SQ_CLOSING_PCT
PRESSURE_ACT_SQ_CORRALLING
PRESSURE_ACT_SQ_CORRALLING_PCT
PRESSURE_ACT_SQ_GP
PRESSURE_ACT_SQ_IMPLIED
PRESSURE_ACT_SQ_IMPLIED_OTHER
PRESSURE_ACT_SQ_IMPLIED_PCT
PRESSURE_ACT_SQ_NONE
PRESSURE_ACT_SQ_NONE_PCT
PRESSURE_ACT_SQ_PHYSICAL
PRESSURE_ACT_SQ_PHYSICAL_PCT
PRESSURE_ACT_SQ_PREC
PRESSURE_ACT_SQ_SET
PRESSURE_ACT_SQ_SET_PCT
Pressure FactorPRESSURE_FACTOR
PRESSURE_FACTOR_GP
PRESSURE_FACTOR_PREC
Pressure PointsPRESSURE_POINTS
PRESSURE_POINTS_GP
PRESSURE_POINTS_PREC
PRESSURE_POINTS_SQ
PRESSURE_POINTS_SQ_GP
PRESSURE_POINTS_SQ_PREC
Ruck ContestsRUCK_CONTEST
RUCK_CONTEST_BU
RUCK_CONTEST_BUTI
RUCK_CONTEST_CB
RUCK_CONTEST_TI
Switch KicksSWITCH
SWITCH_BEHI
SWITCH_BEHI_PCT
SWITCH_BEHI_PCT
SWITCH_GOAL
SWITCH_GOAL_PCT
SWITCH_IN50
SWITCH_IN50_PCT
SWITCH_OPPORTUNITY
SWITCH_PCT
SWITCH_SCORE
SWITCH_SCORE_PCT
Tackle AttemptsTACKLE_ATTEMPT
TACKLE_ATTEMPT_GP
TACKLE_ATTEMPT_GP_SQ
TACKLE_ATTEMPT_PREC
TACKLE_ATTEMPT_PREC_SQ
TACKLE_ATTEMPT_SQ
Tackle EfficiencyTACKLE_EFFECTIVE_PCT
TACKLE_EFFECTIVE_PCT_GP
TACKLE_EFFECTIVE_PCT_GP_SQ
TACKLE_EFFECTIVE_PCT_PREC
TACKLE_EFFECTIVE_PCT_PREC_SQ
TACKLE_EFFECTIVE_PCT_SQ
TACKLE_INEFFECTIVE
TACKLE_INEFFECTIVE_SQ
Time in Forward HalfTIME_IN_FORWARD_HALF
TIME_IN_FORWARD_HALF_PCT
TurnoversTURNOVER_CLEARING_STOPPAGE
TURNOVER_GENERAL_PLAY
TURNOVER_GIVEAWAY
TURNOVER_GIVEAWAY_FORCED
TURNOVER_GIVEAWAY_UNFORCED
TURNOVER_OPPOSITION_TAKEAWAY

2025 Season Progress Update

Β· 5 min read
Nick Eggleton

With the 2025 season properly in flight now, it's time for a progress update on the Roadmap to July 2025.

Tier 2 Competitions​

We continue to add Tier 2 competitions to the AFL Platform. We are still broadly on track to have them implemented into the production environment by mid-year. The following competitions have been completed along with their 2024 seasons:

  • VFL - League Id 5, Level Id 1
  • VFLW - League Id 6, Level Id 1
  • U18 Championships - League Id 8, Level Id 5
  • Coates Talent League Boys - League Id 10, Level Id 5
  • Coates Talent League Girls - League Id 11, Level Id 5

note

Being an API, these competitions' match data are delivered near identically to their Tier 1 counterparts, so their inclusion in the API doesn't come with any specific guidance beyond using their league and level ids accordingly.

We prioritised these competitions because of the challenges each one presented to the AFL API. This proved effective as it highlighted a few concerns which we have addressed "behind the scenes", having zero impact on the AFL Premiership and AFLW leagues already in place. This included:

  • Handling the variability in Tier 2 venues' current sponsorship names (some have them, some don't, some change frequently)
  • Handling when a Champion Data capture operator enrols a player into a Tier 2 match minutes before the match starts
  • Improving metric generation, or indeed bypassing it on more advanced metrics that aren't supported by Tier 2 matches
  • A single cancelled match in the Coates Talent Boys League last year that resulted in both teams being awarded a draw result

What's next for Tier 2?​

Multiple Level Leagues​

We are currently adding SANFL to the API. This will be the first league that has multiple levels, as we capture U18, U16 and Reserves SANFL matches.

Here's the table of levels each league can contain. Up to this point all API calls have been based around using the same level id (primarily Id 1), now querying will involve understanding which level you are targeting.

Level IdLevel Name
1Seniors
2Reserves
3Under-16
4Under-17
5Under-18
6Under-19
7Under-20
8Under-21
9Schools

So this will be applied to both SANFL and WAFL as follows:

  • SANFL - League Id 12
    • SANFL League - Level Id 1
    • SANFL Reserves - Level Id 2
    • SANFL U16 - Level Id 3
    • SANFL U18 - Level Id 5
  • WAFL - League Id 16
    • WAFL League - Level Id 1
    • WAFL Reserves - Level Id 2
    • WAFL Colts - Level Id 6
note

The API will be improved to list the competition name alongside the league levels so it describes the WAFL U18 Level as 'WAFL Colts' for example.

Tier 2 Live Match Ingestion​

While we have committed to delivering matches to the API after they've been played this year ("post-match"), we are currently testing live match ingestion in the same manner as Tier 1 matches as we'd prefer to ingest all matches as they happen, regardless of tier. This in of itself is no challenge, but much of the work revolves around ensuring the AFL Platform handles the additional load in live matches and that none impact one another. To this end, we've taken the decision to logically isolate Tier 1 matches from Tier 2. This will have no impact on your use of the API and will ensure that should some issue occur with a Tier 2 match, its impact to the Platform will be limited to Tier 2 only.

Advanced Data Queries (ADQ)​

We have selected Snowflake as the core technology for powering Advanced Data Queries and we have begun principal development. We have recently formed a team with a focus on data engineering and we are looking to grow the team as we scale for delivery.

First Release July 2025​

The first release of ADQ will provide a queryable dataset that replicates the capabilities of CIA's Dimensional Custom report. This will initially cover Tier 1 leagues (AFL Premiership, AFLW), then later in the year expand to include Tier 2 leagues once they are available from the AFL API.

note

ADQ does not deliver static reports like CIA - instead providing access directly to the dataset to build you own reports or extract the data to use elsewhere.

Metric Glossary API Endpoint​

The /metadata/metrics/glossary endpoint provides detailed information about each metric, including how it is aggregated and a technical description. It is undergoing a last-minute polish to standardise terminology and will be available in the next few weeks.

Match Metric Events API Endpoint​

Work has begun on implementing a new API endpoint that returns when each instance of a metric occurred, along with which player(s) it applies to, its location and accompanying information such as pressure. Initial work revolves around looking at how to structure the API response - conventionally by period and period seconds or grouped by metric/transaction.

Head Start Report Metrics​

This quarter, we’re prioritising the implementation of the following types metrics that are currently only available through the Head Start report suite.

Contested Possession Source Metrics​

These metrics return the number of contested possessions based on the state of possession beforehand:

  • Own Team Control – when your team had possession before the contest.
  • Opposition Control – when the opposing team had possession.
  • Neutral (Pre-Clearance) – when neither team had clear control.

Contested Possession Breakdown​

This set of metrics categorises contested possessions by the type of play:

  • Ruck
  • General Play – Air
  • General Play – Ground
  • Other Stoppage

Shot at Goal Types​

These metrics break down shots at goal by type and cover:

  • Expected Points & Accuracy
  • Both Set Position and during General Play

API Authentication Update - M2M accounts

Β· One min read
Nick Eggleton

Ahead of the 2025 season we are updating the AFL API's authentication module as part of a review to improve our support processes.

As part of this update, if you are using an M2M account to communicate with the AFL API, the account's credentials (the Client ID and Client Secret) will be refreshed. This requires action on your part to ensure your applications continue to have access to the AFL API.

note

AFL API User Accounts are not affected by this update - no changes are required.

What needs updating?​

Once you have received your new Client Id & Secret (via a secure link sent by email), replace the existing values with the new ones.

In addition, the M2M token address has changed - update it to the following:

New M2M token request URL
https://championdata-afl.au.auth0.com/oauth/token

When can I apply these changes?​

As soon as you receive them from Champion Data - they take immediate effect.

How long do I have to make the change?​

The original M2M credentials will be deactivated week commencing 10th March 2025, after the season has started.

Questions?​

Please email your questions to support@championdata.com.au.

2024 Season Roundup

Β· 6 min read
Nick Eggleton

With the AFL Premiership season done, and AFLW 2024 approaching the finish line, we thought it would be a good point to summarise everything added to the AFL API this year.

New API Features​

Match Statistic POST endpoints​

At the start of the year, we introduced the Match Statistics POST Endpoints. While they perform the same function as the GET Endpoints, they enable you to make multiple statistic queries against a match in one API call, rather than several. They are both faster and more efficient, plus they save on API calls when you're watching your usage limit.

AFLW Matches​

AFLW is now formally supported by the AFL API, providing both past, live and future matches as they happen. AFLW matches work near identically to their Premiership counterparts, so you can reuse existing reports, dashboards and applications for AFLW simply by querying their match ids.

'Last X' match statistics filter​

The match statistics endpoints can now be filtered to a time range within a period, or to the last few minutes of play in a period. This can be used to drive a match day dashboard that shows how players are doing for the past 10 minutes.

Match Transaction & Summary File Support Package Functions​

The R Package (and later this year, the Python Package) now provides functions to generate these support site files from the AFL API.

New Metrics​

The following metrics were added to the AFL API between March and October this year.

  • ABSENCE_CENTRE_BOUNCE_LOSS_PCT

    The percentage of a players total centre bounce absences that result in a clearance to the opposition squad.

  • ABSENCE_CENTRE_BOUNCE_NEUTRAL_PCT

    The percentage of a players total centre bounce absences that do not result in a clearance for that centre bounce for either team.

  • ABSENCE_CENTRE_BOUNCE_WIN_PCT

    The percentage of a players total centre bounce absences that result in a clearance to the given players squad.

  • ATTENDANCE_CENTRE_BOUNCE_LOSS_PCT

    The percentage of a players total centre bounce attendances that result in a clearance to the opposition squad.

  • ATTENDANCE_CENTRE_BOUNCE_NEUTRAL_PCT

    The percentage of a players total centre bounce attendances that do not result in a clearance for that centre bounce for either team.

  • ATTENDANCE_CENTRE_BOUNCE_WIN_PCT

    The percentage of a players total centre bounce attendances that result in a clearance to the given players squad.

  • CLEARANCE_PCT

    The percentage of all stoppages that resulted in a clearance win.

  • DISPOSAL_PER_TURNOVER

    Ratio of Disposals compared to Disposals that were also turnovers.

  • DISPOSAL_TURNOVER

    Disposals that resulted in a turnover, where the zone is attributed to the zone of the disposal.

  • GOAL_EXPECTED

    Total goals expected from a given shot (based on location, pressure, sidedness). At a transaction level this will show expected accuracy and when summed will show the expected goal.

  • HANDBALL_TURNOVER

    Handballs that resulted in a turnover, where the zone is attributed to the zone of the handball.

  • INSIDE_50_FORCED_ENTRY_RETURN

    Total points returned after a forced inside 50 entry and before another inside 50 or centre bounce.

  • INSIDE_50_INITIAL_DIRECT_ENTRY_RETURN

    Total points returned after a direct initial inside 50 entry and before another inside 50 or centre bounce.

  • INSIDE_50_INITIAL_ENTRY_RETURN

    Total points returned after an initial inside 50 entry and before another inside 50 or centre bounce.

  • INSIDE_50_MID_STOPPAGE_DIRECT_ENTRY_RETURN

    Total points returned after a direct midfield stoppage inside 50 entry and before another inside 50 or centre bounce.

  • INSIDE_50_MID_STOPPAGE_ENTRY_RETURN

    Total points returned after a midfield stoppage inside 50 entry and before another inside 50 or centre bounce.

  • INSIDE_50_REPEAT_DIRECT_ENTRY_RETURN

    Total points returned after a direct repeat inside 50 entry and before another inside 50 or centre bounce.

  • INSIDE_50_REPEAT_ENTRY_RETURN

    Total points returned after a repeat inside 50 entry and before another inside 50 or centre bounce.

  • INSIDE_50_TRANSITION_DIRECT_ENTRY_RETURN

    Total points returned after a direct transition inside 50 entry and before another inside 50 or centre bounce.

  • INSIDE_50_TRANSITION_ENTRY_RETURN

    Total points returned after a transition inside 50 entry and before another inside 50 or centre bounce.

  • KICK_TURNOVER

    Kicks that resulted in a turnover, where the zone is attributed to the zone of the kick.

  • METRES_GAINED_ASSISTED

    Total metres gained by a teammate that receives an uncontested possession from your disposal.

  • METRES_GAINED_DISPOSAL

    Metres Gained via disposals. Measured from the point the original point of possession to the next possession or stoppage.

  • METRES_GAINED_DISPOSAL_AVG

    The average number of meters gained per-disposal

  • METRES_GAINED_HANDBALL

    Metres Gained via handballs. Measured from the point the original point of possession to the next possession or stoppage.

  • METRES_GAINED_HANDBALL_AVG

    The average number of meters gained via handballs

  • METRES_GAINED_KICK

    Metres Gained via kicks, measured from the point of the original possession to the next possession or stoppage.

  • METRES_GAINED_KICK_AVG

    The average number of metres gained via kicks

  • METRES_GAINED_NET

    Metres Gained plus Assisted Metres Gained.

  • METRES_GAINED_OTHER

    Metres Gained not via disposals.

  • METRES_GAINED_RETAIN

    Metres Gained where the disposal/possession was retained.

  • ONE_PERCENTER

    Cumulation of knock ons, shepherds, credits, spoils and smothers.

  • POINTS_ABOVE_EXPECTED

    Total points scored above the expected score.

  • POSSESSION_CONTESTED_PCT

    The percentage of all possessions that are contested possessions.

  • POSSESSION_UNCONTESTED_PCT

    The percentage of all possessions that are uncontested possessions.

  • PRESSURE_ACT_FORCED_TURNOVER_BEHI_PCT

    The percentage of all forced turnovers that result in a behind.

  • PRESSURE_ACT_FORCED_TURNOVER_GOAL_PCT

    The percentage of all forced turnovers that result in a goal.

  • PRESSURE_ACT_FORCED_TURNOVER_POINTS

    Total points generated by pressure acts forcing a turnover.

  • PRESSURE_ACT_FORCED_TURNOVER_SCORE_PCT

    The percentage of all forced turnovers that result in a score.

  • RANKING_POINTS

    The Official Champion Data AFL Rankings system was established in 1999 and has been developed into a robust and comprehensive system for objectively measuring player performance through the use of statistical measures. The rankings are geared to reward the winning factors of a game of AFL football. They are used as the scoring measure in the Herald-Sun SuperCoach fantasy game.

  • TIME_IN_POSSESSION_DISPUTE_PCT

    The percentage of total elapsed time where the ball was in play but neither team had possession.

  • TIME_ON_GROUND_LOOSE

    Time in seconds that a player was loose during a game.

  • TIME_ON_GROUND_LOOSE_PCT

    Percentage of time that a player was loose during a game.

How It Works - AFLW in the API

Β· 2 min read
Nick Eggleton

The complete 2023 season of the NAB AFLW league is now available from the AFL API. This article describes how you can access AFLW 2023 matches and what API endpoints apply to them.

info

You must be licensed to access the AFLW league and its matches. If it isn't returned by the Leagues endpoint as described below, please contact Champion Data to check if you are correctly licensed.

AFLW League​

The AFLW League has been assigned league Id 3, which you can see here when you call the Leagues endpoint.

Leagues

You can call every Season endpoint using league Id 3, they all support AFLW. Currently only the 2023 and (upcoming) 2024 seasons are available from the API, so you will receive a 404 error if you call on the prior seasons.

AFLW Matches​

AFLW match data is accessed the same way as AFL Premiership matches; by looking up their match ids and calling the match endpoints.

As with the AFL Premiership, you can look up AFLW matches via the Season Fixture endpoint (enter league Id 3, level Id 1, season 2023) and get their match ids from there.

AFLW matches are supported by all the match endpoints, including the transactions endpoint if you are licensed to access it.

Sandbox AFLW Match Replay​

The Sandbox environment contains a replaying AFLW match, starting at the same times as the other matches. Note however, as AFLW match quarters are shorter than Premiership matches, the match status timing table doesn't completely align with the AFLW match.

Unsupported Metrics​

The following metrics do not support AFLW matches and are not returned via the match statistic endpoints.

GroupMetrics
Player Ratings
  • PLAYER_RATING
  • PLAYER_RATING_BALL_USE
  • PLAYER_RATING_BALL_USE_FIELD_KICK
  • PLAYER_RATING_BALL_USE_HANDBALL
  • PLAYER_RATING_BALL_USE_KICK_IN
  • PLAYER_RATING_BALL_USE_SHOT_AT_GOAL
  • PLAYER_RATING_BALL_WINNING
  • PLAYER_RATING_BALL_WINNING_INTERCEPT
  • PLAYER_RATING_BALL_WINNING_MID_CHAIN
  • PLAYER_RATING_BALL_WINNING_STOPPAGE
  • PLAYER_RATING_DEFENCE
  • PLAYER_RATING_DEFENCE_PRESSURE
  • PLAYER_RATING_DEFENCE_SPOIL
  • PLAYER_RATING_HITOUT
  • PLAYER_RATING_NEGATIVE
  • PLAYER_RATING_NEGATIVE_50M_PENALTY
  • PLAYER_RATING_NEGATIVE_DEBIT
  • PLAYER_RATING_NEGATIVE_FREE_KICK_AGAINST
Expected Score
  • POINTS_EXPECTED
  • SHOT_AT_GOAL_ACCURACY_EXPECTED
Time on Ground
  • TIME_ON_GROUND_DEFENCE
  • TIME_ON_GROUND_DEFENCE_PCT
  • TIME_ON_GROUND_FORWARD
  • TIME_ON_GROUND_FORWARD_PCT
  • TIME_ON_GROUND_MATCHUPS
  • TIME_ON_GROUND_MIDFIELD
  • TIME_ON_GROUND_MIDFIELD_PCT
  • TIME_ON_GROUND_ON_BALL
  • TIME_ON_GROUND_ON_BALL_PCT
  • TIME_ON_GROUND_RUCK
  • TIME_ON_GROUND_RUCK_PCT
  • TIME_ON_GROUND_WING
  • TIME_ON_GROUND_WING_PCT

How It Works - Last 5/10 Minutes

Β· 2 min read
Nick Eggleton

GET Endpoints​

The match stat GET endpoints now provides a new filter parameter called "lastXSeconds". This parameters filters the stats so they only count transactions that occurred on or within the last 'X' seconds of the match.

If used on a live match and called periodically, the stats will go up and down based on what's happened in the last number of seconds. As it is a 'seconds' filter, enter 300 to filter the last 5 minutes, 600 for last 10.

From and To Period Seconds​

Two more parameters have been added to the endpoints alongside lastXSeconds: fromPeriodSeconds and toPeriodSeconds.

These can be used to filter statistics to a particular range of time within a quarter. They can be used independently of each other, where they will run from the start/end of the quarter, or together to focus on a mid-quarter window.

note

These parameters aren't used in Last 5/10 Minutes filtering, and described here for completeness. Also note that you cannot use all three parameters at the same time - the API will return an error message stating this is the case.

POST Endpoints​

The match stat POST endpoints also support these parameters, they can be supplied in each metic request, and in different combinations in each request. They perform the same filtering as they do for the GET Endpoints.

R Package Support

The R package's getPlayerStats and getSquadStats function also include 'lastXSeconds' parameters to be used in the same fashion as calling the API endpoints directly. It too supports using the parameters in the getPlayerStatsPOST and getSquadStatsPOST endpoints. See here for more details.

Work in Progress - Last 5/10 Minutes

Β· One min read
Nick Eggleton

Over the past few weeks, the team have been busily working on some new time parameters to the match statistics endpoints. They are intended to filter stats to what happened in a specific time period within a quarter, or to filter to the last few minutes of activity.

Match stat endpoint time parameters

fromPeriodSeconds and toPeriodSeconds can be used to analyse performance within a specific time period in a match, especially when used with a period filter so you can examine performance in the first 5 minutes of every priod.

If used on a live match (and without a period filter), lastXSeconds gets you the stats from say the last 5 or 10 minutes of play. Best used in concert with a metric filter to keep the endpoint response small and manageable.

These new parameters will be implemented on both GET and POST endpoints (illustrated here on GET) and on both squad and player stats endpoints. They will also be available via the R & Python API Support Packages.

info

Everything presented here is subject to change prior to release - we may add, remove or rename these parameters before we release.