Stats Perform logo

Sports Data API - Soccer - Fixtures and Results Feed (MA1_Detailed)

Overview

The Soccer Fixtures and Results Detailed feed provides a detailed fixture list and fixture-level match details for subscribed soccer competitions. It can return match date and kick-off time, home and away contestants, competition and season metadata, venue details, scores, results, key events, lineups, officials, VAR information, and team Power Rating data.

The feed can include the following information:

Data Category Included Data
Fixture metadata Date, kick-off time, match UUID, competition, season, stage, series, tournament calendar, venue, coverage level, and update timestamp.
Contestants Home and away contestants, contestant UUIDs, names, short names, official names, codes, countries, and match positions.
Scores and results Half-time, full-time, extra-time, penalties, total, aggregate, and unconfirmed score values.
Live events Goals, assists, penalties, cards, substitutions, VAR reviews, suspensions, match status, match clock, attendance, and officials.
Lineups Starting players, substitutes, shirt numbers, captain flag, formation, player positions, and team officials.
Power Ratings currentPowerRating, highestSeasonRating, lowestSeasonRating, averageSeasonRating, currentCompetitionRank, currentConfederationRank, and currentGlobalRank.

Problem Statement & Use Cases

This API solves the business problem of normalizing fixture, result, and live match data into a single detailed feed that can support pre-match, live, and post-match soccer experiences. It allows applications to retrieve either broad fixture lists or specific match records while optionally narrowing responses by competition, tournament calendar, contestant, match date, match status, coverage level, and changed assets.

Use Case Description
Match-center applications Power fixture pages with kick-off metadata, lineups, live scores, match events, VAR status, officials, venue data, and post-match results.
Live scoreboards and event timelines Use live=yes and event nodes such as goal, card, substitute, VAR, and penaltyShot to update fan-facing live experiences.
Fixture discovery and scheduling Query by competition, contestant, tournament calendar, stage, week, series, or date range to build calendar and schedule views.
Incremental ingestion pipelines Use _dlt with existing filters to ingest only fixtures or results that changed after the previous poll, reducing latency and payload volume.
Team-strength and prediction models Combine fixture metadata, score outcomes, contestant Power Ratings, competition rank, confederation rank, and global rank as model features.

Compliance & Guidelines

Authentication and API Security

To comply with Stats Perform API security and best-practice requirements, refer to the Stats Perform FAQs, API Overview, and Authentication Guide.

Authentication uses the OAuth method to fetch data.

Polling Frequency

Do not exceed the rate confirmed by Stats Perform. Contact a Stats Perform representative for rate-limit clarification or higher polling requirements.

Consider using the Delta parameter (_dlt) before integration because it can significantly improve feed performance by returning only changed assets.

Update Trigger Tier 15 Tier 12+14 Tier 4 Tier 11+13 Tier 8+9+10 Tier 6+7 Tier 5 Tier 1+2+3
Match time, date, teams, competition, round, season, lineup, card, goal, substitution, assist, or other key-event update See Tier 13 Post-match No more than one URL poll every 60 seconds for <KO - 1h; KO + 4h>; up to 1-hour interval for <KO + 4h; KO + 8h>; up to 24-hour interval 8h+ after match ending, lasting a maximum of 7 days One poll approximately 12-24 hours after each game ends; timing can vary Not specified in source Not specified in source Not specified in source Not specified in source

Delta Updates

The Delta parameter (_dlt) lets clients programmatically retrieve fixture and result assets that changed after a specified date/time. It can be combined with existing filters such as tmcl, comp, and mt.mDt.

_dlt should use the date/time of the previous poll to the same feed. If there is a gap between polling frequency and the Delta time period used for the next request, updates can be missed.

Delta Behavior Description
Purpose Return only fixture and result assets that were created, updated, or published after a specified date/time and that match the other query parameters.
Benefit Reduces polling overhead, payload size, processing time, and latency because clients do not need to poll entire competitions and inspect each match manually.
Versioning There is no asset versioning system; _dlt is the recommended mechanism for update ingestion.
Accepted value formats {xsd:dateTime} with timezone, or {milliseconds} since the epoch.
XSD UTC/GMT format YYYY-MM-DDThh:mm:ss%2B00:00
Example pattern GET https://api.statsperform.com/sdapi/v1/soccerdata/matchdetailed?_fmt={dataFormat}&_dlt={dateTime}&{queryParameters}
Example fixture-specific request GET https://api.statsperform.com/sdapi/v1/soccerdata/matchDetailed/bsu6pjne1eqz2hs8r3685vbhl?_fmt=xml&_dlt=2012-06-07T07:00:00%2000:00

Request Formatting Rules

All URLs are case-sensitive. URL strings must contain the correct case, operators, and required parameters, or the API returns an error.

Rule Requirement
Query string start Begin the query parameter string with ? immediately after the feed name.
Parameter separator Separate query parameters with &.
Multiple values: AND Use & for multiple values where the API treats them as AND.
Multiple values: OR Use , only if the parameter supports OR-style multiple values.
NOT operator Use ! only if the parameter supports negation.
Underscore-prefixed parameters Include the required _ prefix for parameters such as _fmt, _clbk, _dlt, _fld, _pgNm, _pgSz, _ordSrt, and _lcl.
Placeholder braces Remove placeholder curly braces {} from production API calls. They are documentation examples only.
HTTPS examples Documentation examples use HTTPS syntax rather than cURL.
Base URL reference The base URL format is {protocol}://{requestDomain}/{feedResource}.

JSONP Requirements

If _fmt=jsonp is used, it must be combined with the callback parameter _clbk.

Constraint Requirement Reason
JSONP callback Use _fmt=jsonp together with _clbk. JSONP requires a callback wrapper function.
Fixed callback value Use a fixed _clbk value whenever possible. Random callback names can reduce cacheability and conflict with API best-practice logic.
JavaScript frameworks Override randomly generated callback names from frameworks such as jQuery. Some frameworks generate random JSONP function names unless explicitly configured.

Legacy ID and ID-Type Rules

Legacy IDs can be used only with specific parameter patterns.

Legacy ID Pattern Support
fx Supports a legacy Opta match ID for a single match. Comma-separated fx lists support fixture UUIDs but do not support legacy IDs.
comp + mt.mDt Supports legacy IDs only when both parameters are used together, not separately.
ctst + mt.mDt Supports legacy IDs only when both parameters are used together, not separately.

If multiple filters by ID are used in one request, all ID parameters must use one ID type only: all UUIDs, all Opta Core IDs, or all Opta IDs. Mixed ID types return an error.

Validity Example
Valid: all UUIDs comp={competitionUuid}&stg={stageUuid}
Invalid: mixed UUID and Opta Core legacy ID comp={competitionUuid}&stg=urn:perform:optacore:stage:{ocId}

Endpoints

Base URL

https://api.statsperform.com

Feed Resource

/sdapi/v1/soccerdata/matchdetailed

Get Detailed Fixtures and Results

GET /sdapi/v1/soccerdata/matchdetailed?{queryParameters}

Get One or More Fixtures by fx

GET /sdapi/v1/soccerdata/matchdetailed?fx={fixtureUuid},{fixtureUuid}&{queryParameters}

Get a Specific Fixture by Path Parameter

GET /sdapi/v1/soccerdata/matchdetailed/{fixtureUuid}?{queryParameters}

Get Fixtures and Results by Tournament Calendar

GET /sdapi/v1/soccerdata/matchdetailed?tmcl={tournamentCalendarUuid}&{queryParameters}

Endpoint Usage Matrix

Usage Endpoint Pattern
Get detailed information for a list of fixtures and results /sdapi/v1/soccerdata/matchdetailed?{queryParameters}
Get information for one or more individual fixtures and results by UUID using fx /sdapi/v1/soccerdata/matchdetailed?fx={fixtureUuid},{fixtureUuid}&{queryParameters}
Get detailed information for a specific fixture by path UUID /sdapi/v1/soccerdata/matchdetailed/{fixtureUuid}?{queryParameters}
Get detailed fixtures and results according to specified parameter values /sdapi/v1/soccerdata/matchdetailed?{queryParameters}
Get detailed fixtures and results associated with a tournament calendar UUID /sdapi/v1/soccerdata/matchdetailed?tmcl={tournamentCalendarUuid}&{queryParameters}

The MA1 feed can be called without a tournament calendar UUID or match UUID. This returns the first page of the entire subscribed list, sorted by kick-off time in descending order by default.

Fixture and Entity UUID Discovery

Use the Tournament Calendar feed (OT2) or Fixtures and Results Detailed feed (MA1_Detailed) to retrieve fixture metadata and linked entity UUIDs, including fixture, contestant, competition, tournament calendar, stage, series, country, venue, and other entity identifiers.

Query Parameters

This feed uses Global query parameters and the feed-specific query parameters listed below. The /matchdetailed feed can be queried without an entity UUID.

Global and Control Parameters

Parameter Description Accepted Values / Format Constraints / Notes
_fmt Response data format. {dataFormat} Global query parameter used in examples.
_clbk JSONP callback function name. Fixed callback function name. Required when _fmt=jsonp.
_dlt Returns fixture and result assets changed since a specific date/time. {xsd:dateTime} with timezone, or {milliseconds} since epoch. XSD UTC/GMT format: YYYY-MM-DDThh:mm:ss%2B00:00. Use with the prior poll timestamp to avoid missing updates. Can be combined with filters such as tmcl, comp, and mt.mDt.
_fld Limits the response to specified data-field subsets. Comma-separated field shortcuts such as main.da,main.con.con.id,main.com.cou.id. Can be used with existing MA1 parameters. Field shortcuts are based on XML path positions.
_ordSrt Sorts fixtures and results by match date/time. asc, desc asc sorts ascending; desc sorts descending.
_pgNm Page number to return. Integer indexed from 1. Defaults to page 1 if omitted. Use with _pgSz for pagination.
_pgSz Page size to return. Integer number of match definitions per page. Optimizes response size and SDAPI efficiency.
_lcl=en-op Returns assets with Opta naming in English instead of Opta Core naming. Fixed value en-op. Cannot be combined with another _lcl locale/language code in the same request. Duplicate _lcl returns error code 10203 for ambiguous/invalid request parameters.

Field Selection (_fld) Syntax

_fld values are shortcuts for paths to fields in the XML response.

Rule Example
Use the first two letters of every word in a field name. main.da = matchInfo + date
Use the first three letters for one-word path parts. main.con.con.id = matchInfo + contestant + contestant + id
Use the first two letters of each word for multi-word path parts. main.da = matchInfo + date
Example subset request GET https://api.statsperform.com/sdapi/v1/soccerdata/matchdetailed/{fixtureUuid}?_fmt={dataFormat}&_fld=main.da,main.con.con.id,main.com.cou.id

Feed-Specific Query Parameter Combinations

Parameter / Combination Description Values / Format Constraints / Notes Example Request
fx Get detailed information about one fixture or multiple fixtures. Single fixture UUID, single legacy Opta match ID, or comma-separated fixture UUID list. Legacy IDs are supported only for a single match; comma-separated lists support fixture UUIDs only. GET https://api.statsperform.com/sdapi/v1/soccerdata/matchdetailed?_fmt={dataFormat}&fx={fixtureUuid}
{fixtureUuid} path parameter Get detailed information about one fixture by passing the fixture/match UUID as the asset/resource path. {fixtureUuid} Returns a single fixture. GET https://api.statsperform.com/sdapi/v1/soccerdata/matchdetailed/{fixtureUuid}?_fmt={dataFormat}
comp Get fixtures and results for one or more specific competitions. One competition UUID or up to 50 competition UUIDs in a comma-separated list. Use consistent ID types when combined with other ID filters. GET https://api.statsperform.com/sdapi/v1/soccerdata/matchdetailed?_fmt={dataFormat}&comp={competitionUuid},{competitionUuid}
comp + ctst Get fixtures and results for a specific contestant in a specific competition. comp={competitionUuid}&ctst={contestantUuid} Use contestant UUID and competition UUID. GET https://api.statsperform.com/sdapi/v1/soccerdata/matchdetailed?_fmt={dataFormat}&comp={competitionUuid}&ctst={contestantUuid}
comp + mt.mDt Get fixtures and results for a specific competition in a date range. mt.mDt=[YYYY-MM-DDTHH:MM:SSZ TO YYYY-MM-DDTHH:MM:SSZ] Maximum date-range span is one year. Legacy IDs are supported only when comp and mt.mDt are used together. GET https://api.statsperform.com/sdapi/v1/soccerdata/matchdetailed?_fmt={dataFormat}&comp={competitionUuid}&mt.mDt=[YYYY-MM-DDTHH:MM:SSZ TO YYYY-MM-DDTHH:MM:SSZ]
ctst + ctstpos Get fixtures and results filtered by whether a contestant plays home or away. ctst={contestantUuid}&ctstpos={home\|away} Applies across all competitions. GET https://api.statsperform.com/sdapi/v1/soccerdata/matchdetailed?_fmt={dataFormat}&ctst={contestantUuid}&ctstpos={home\|away}
ctst + ctst2 Get fixtures and results between two contestants. ctst={contestantUuid}&ctst2={contestantUuid} Applies across all competitions. GET https://api.statsperform.com/sdapi/v1/soccerdata/matchdetailed?_fmt={dataFormat}&ctst={contestantUuid}&ctst2={contestantUuid}
ctst + ctst2 + ctstpos Get fixtures and results between two contestants where the first contestant plays home or away. ctst={contestantUuid}&ctst2={contestantUuid}&ctstpos={home\|away} Applies across all competitions. GET https://api.statsperform.com/sdapi/v1/soccerdata/matchdetailed?_fmt={dataFormat}&ctst={contestantUuid}&ctst2={contestantUuid}&ctstpos={home\|away}
ctst + ctst2 + mt.mDt Get fixtures and results between two contestants in a date range. Date range in square brackets. Maximum date-range span is one year. GET https://api.statsperform.com/sdapi/v1/soccerdata/matchdetailed?_fmt={dataFormat}&ctst={contestantUuid}&ctst2={contestantUuid}&mt.mDt=[YYYY-MM-DDTHH:MM:SSZ TO YYYY-MM-DDTHH:MM:SSZ]
ctst + mt.mDt Get fixtures and results for a specified contestant in a date range. Date range in square brackets. Maximum date-range span is one year. Legacy IDs are supported only when ctst and mt.mDt are used together. GET https://api.statsperform.com/sdapi/v1/soccerdata/matchdetailed?_fmt={dataFormat}&ctst={contestantUuid}&mt.mDt=[YYYY-MM-DDTHH:MM:SSZ TO YYYY-MM-DDTHH:MM:SSZ]
lineups + live Get lineup information, including substitutes. lineups={yes\|no}&live=yes lineups must be used with live=yes. Data is returned in liveData. Recommended with an entity filter such as tmcl or ctst. GET https://api.statsperform.com/sdapi/v1/soccerdata/matchdetailed?_fmt={dataFormat}&lineups={yes\|no}&live=yes&tmcl={tmclUuid}
live Get live data such as scores, goals, cards, attendance, and officials. live={yes\|no} Default is live=no. If live data is unavailable, an empty liveData element is returned. After a match is over, default responses include live data even when live=yes is not supplied. GET https://api.statsperform.com/sdapi/v1/soccerdata/matchdetailed?_fmt={dataFormat}&live={yes\|no}&tmcl={tmclUuid}
mt.mDt Get fixtures and results for a match date range. [YYYY-MM-DDTHH:MM:SSZ TO YYYY-MM-DDTHH:MM:SSZ] Maximum date-range span is one year. Can be combined with filters such as comp, ctst, srs, stg, and tmcl. GET https://api.statsperform.com/sdapi/v1/soccerdata/matchdetailed?_fmt={dataFormat}&ctst={contestantUuid}&mt.mDt=[YYYY-MM-DDTHH:MM:SSZ TO YYYY-MM-DDTHH:MM:SSZ]
prsn + prsntp Get matches where a person appears as a player or team official. prsn={personUuid}&prsntp={player\|teamofficial} Must be combined with live=yes&lineups=yes. GET https://api.statsperform.com/sdapi/v1/soccerdata/matchdetailed?_fmt={dataFormat}&live=yes&lineups=yes&prsntp={personType}&prsn={personUuid}
srs Get fixtures and results for a specific series. srs={seriesUuid} Pass the series UUID. GET https://api.statsperform.com/sdapi/v1/soccerdata/matchdetailed?_fmt={dataFormat}&srs={seriesUuid}
status + live Get games of a specific match status. Fixture, Played, Playing, Cancelled, Postponed, Suspended, All Must be used with live=yes and an entity parameter such as tmcl={tournamentCalendarUuid}. Only one status value is allowed. Status values are not case-sensitive. Default is All. GET https://api.statsperform.com/sdapi/v1/soccerdata/matchdetailed?_fmt={dataFormat}&status={statusType}&live=yes&tmcl={tmclUuid}
stg Get fixtures and results for a specific stage. stg={stageUuid} Can be used without tmcl. GET https://api.statsperform.com/sdapi/v1/soccerdata/matchdetailed?_fmt={dataFormat}&stg={stageUuid}
tmcl Get fixtures and results for a tournament calendar. tmcl={tournamentCalendarUuid} Pass the tournament calendar UUID. GET https://api.statsperform.com/sdapi/v1/soccerdata/matchdetailed?_fmt={dataFormat}&tmcl={tournamentCalendarUuid}
tmcl + ctst Get fixtures and results for a contestant in a tournament calendar. tmcl={tournamentCalendarUuid}&ctst={contestantUuid} Pass tournament calendar UUID and contestant UUID. GET https://api.statsperform.com/sdapi/v1/soccerdata/matchdetailed?_fmt={dataFormat}&tmcl={tournamentCalendarUuid}&ctst={contestantUuid}
tmcl + stg Get fixtures and results for a specific stage of a tournament calendar. tmcl={tournamentCalendarUuid}&stg={stageUuid} stg can also be used without tmcl. GET https://api.statsperform.com/sdapi/v1/soccerdata/matchdetailed?_fmt={dataFormat}&tmcl={tournamentCalendarUuid}&stg={stageUuid}
week Get fixtures and results for a specified game week. Integer such as 1, 2, etc. Pass the game-week number. GET https://api.statsperform.com/sdapi/v1/soccerdata/matchdetailed?_fmt={dataFormat}&week={weekNumber}
cvlv Get fixtures only for specified coverage level(s). One value or comma-separated values from 1 through 15. Not supported when the request contains a single fixture UUID via fx or path parameter. If omitted, fixtures from all tiers are returned subject to other criteria. If no matches are available for the tier and criteria, the standard no-data error is returned. GET https://api.statsperform.com/sdapi/v1/soccerdata/matchdetailed?_fmt={dataFormat}&cvlv={coverageLevel}

Live Data Constraints

Additional lineup details, scores, and other live data are returned only when requested with live=yes or live=yes&lineups=yes, except that completed matches include live data in the default response.

Constraint Requirement
Live data Use live=yes to request scores, goals, cards, attendance, officials, and related live-data nodes.
Lineups Use live=yes&lineups=yes to request lineups and substitutes.
Empty live data If no live data is available, the feed returns an empty liveData element and omits some sub-elements.
Recommended filters Filter live data by an entity UUID and parameter such as tmcl or ctst.
Match status filter status requires live=yes and an entity parameter such as tmcl={tournamentCalendarUuid}.

Pagination and Sorting

Parameter Behavior
_ordSrt=asc Sorts resulting list by match date/time ascending.
_ordSrt=desc Sorts resulting list by match date/time descending.
_pgNm={pageNumber} Returns the specified page number, indexed from 1. Defaults to page 1.
_pgSz={pageSize} Sets the number of match definitions in a page.

Output Schema

The feed response fields are documented using XML element names. JSON and JSONP responses contain similar fields, but XML-only container elements may be omitted or represented differently.

Each response provides match details for a fixture. Additional lineup details, scores, and other live data require live=yes or live=yes&lineups=yes, except that completed matches include live data in the default response.

For scheduled fixtures that have not yet been played, not all attributes are present. Scores, winners, contestant names, contestant positions, contestant IDs, and related fields may be unknown or omitted until the feed is updated.

Root Element Behavior

Format / Request Shape Root Behavior
XML with no fixture UUID path parameter matchDetailed is returned and can contain multiple match records.
XML with fx specifying one or more fixture UUIDs matchDetailed is returned because the feed can return multiple matches.
XML with fixture UUID as path parameter matchDetailed is not returned; match is the first element because the response can return only one match.
JSON/JSONP with no fixture UUID path parameter or with fx match is returned as the first element because the feed can return multiple matches.
JSON/JSONP with fixture UUID as path parameter match is not returned; matchInfo is the first element because the response can return only one match.
#

`<match

Detailed>(XML only) —matchDetailed| Property | Value | |---|---| |Nesting| matchDetailed | |Description| Required/Optional. Root element of the fields related to match Details(XML only) | |Notes| Note: Not present in JSON feed response, where the root element is either match or matchDetailed<br>JSON/JSONP: This element is not returned for any calls - the first element is either match or matchInfo.<br>XML:<br>This element is not returned if the call specifies a match/fixture UUID as the path parameter - this is because the feed can only return a single match. In this case, match is the first element.<br>This element is returned when the call does not specify a match/fixture UUID, or if the call contains the fx parameter to specify one or more match/fixture UUIDs - this is because the feed can return multiple matches. In this case, matches is the first element. | |Attributes` | None. Element only. |

<match> — `match

Detailed/match| Property | Value | |---|---| |Nesting| matchDetailed/match | |Description| Required. Root element of the fields related to a match | |Notes| XML: If the call specifies a match/fixture UUID as the path parameter, this is the first element to be returned.<br>JSON/JSONP:<br>This element is returned when the call does not specify a match/fixture UUID, or if the call contains the fx parameter to specify one or more match/fixture UUIDs - this is because the feed can return multiple matches. In this case, match is the first element.<br>This element is not returned if the call specifies a match/fixture UUID as the path parameter - this is because the feed can only return a single match. In this case, matchInfo is the first element. | |Attributes` | None. Element only. |

`<match

Info>matchDetailed/match/matchInfo| Property | Value | |---|---| |Nesting| matchDetailed/match/matchInfo | |Description| Required. Root element of the related fields for the match information (matchInfo) | |Notes` | XML: This element is returned for all matches.
JSON/JSONP: This element is the first to be returned when the call specifies a match/fixture UUID as the path parameter. |

Attribute Required Description Values
id Yes Unique ID (UUID) of the fixture/match String (Alphanumeric - UUID)
ocId No Unique Opta Core match ID. Returned only if the feed is queried by Opta Core legacy ID. Empty string if the ID does not exist. String
opId No Unique Opta match ID. Returned only if the feed is queried by Opta legacy ID. Empty string if the ID does not exist. String
coverageLevel Yes Coverage level - this information is useful for understanding the data collection coverage level (also known as 'Tier') our analysts adhere to, and subsequently what data is then available to you through the feeds as an end user. String (Numeric)
optaBetting Yes This flag will indicate a game that is being offered for the Opta Betting product. The value will be set to 1 if it is OPTA covered. String
date Yes The date (UTC) of the fixture/match Date - in the format: YYYY-MM-DDZ
time No The start time (UTC) of the fixture/match
Note: This attribute-value may not be present until we have received confirmation of the time, or the attribute ('time') may appear but have no/an empty value. Once received, we will update the feed.
String - in the format: hh:mm:ssZ
week No The week in which the match is taking place String
attendanceInfoId No The attendance information ID - for example:
• 1 = match is played 'Behind Closed Doors' which should mean that people will not attend the match at the venue
• 2 = match is played with a 'Limited Audience'
Note: When this attribute is returned, the attendance node and value will be suppressed, which would normally appear under the matchDetailsExtra node
String
attendanceInfo No The additional attendance information - for example: Behind Closed Doors or Limited Audience
Note: When this attribute is returned, the attendance node and value will be suppressed, which would normally appear under the matchDetailsExtra node
String
numberOfPeriods No The number of periods that will be played. For example, a regular soccer match will have two periods. Integer
periodLength No The duration of a period. For example, the duration of a period in a regular soccer match is 45 minutes. Integer
overtimeLength No The length of the overtime if the match goes beyond the regular time. Integer
varEnabled No Indicates whether the fixture has VAR related data.
Possible values: 0 | 1 | {attribute not present}.
0 - VAR info not collected.
1 - VAR info collected.
{attribute not present} - unknown.
String
nextMatchWinnerId No Unique ID (UUID) of the fixture (match) that the winner of the current fixture will play next within the competition. We provide this to assist the use case where a client wants to create the next knockout matches on their web pages. For example, in a knockout stages of a competition like the World Cup.
It is the unique ID for the fixture (MFL Fixture UUID) and can also be used to get data or link/map to data across Sports Data and Perform Feeds.
String (Alphanumeric - UUID)
nextMatchLoserId No Unique ID (UUID) of the fixture (match) that the loser of the current fixture will play next within the competition. We provide this to assist the use case where a client wants to create the next knockout matches on their web pages.
It is the unique ID for the fixture (MFL Fixture UUID) and can also be used to get data or link/map to data across Sports Data and Perform Feeds.
String (Alphanumeric - UUID)
lastUpdated Yes The UTC date and time (timestamp) of when the fixture information/record was last updated String - in the format: YYYY-MM-DDThh:mm:ssZ

<description> — `match

Detailed/match/matchInfo/description| Property | Value | |---|---| |Nesting| matchDetailed/match/matchInfo/description | |Description| Optional. Description of the match. Value: string giving the description - for example, the contestant names | |Values` | String |

<sport> — `match

Detailed/match/matchInfo/sport| Property | Value | |---|---| |Nesting| matchDetailed/match/matchInfo/sport | |Description` | Required. Root element of the related fields for the sport. Value (XML only): String giving the sport name (for example: Soccer) |

Attribute Required Description Values
id Yes Unique ID (UUID) of the sport String (Alphanumeric - UUID)
name (JSON only) Yes Name of the sport String

<ruleset> — `match

Detailed/match/matchInfo/ruleset| Property | Value | |---|---| |Nesting| matchDetailed/match/matchInfo/ruleset | |Description` | Required. Root element of the fields related to ruleset. Value (XML only): String giving the ruleset name |

Attribute Required Description Values
id Yes Unique ID (UUID) of the ruleset String (Alphanumeric - UUID)
name (JSON only) Yes Name of the ruleset String

<competition> — `match

Detailed/match/matchInfo/competition| Property | Value | |---|---| |Nesting| matchDetailed/match/matchInfo/competition | |Description` | Required. Root element of the fields related to the competition |

Attribute Required Description Values
id Yes Unique ID (UUID) of the competition String (Alphanumeric - UUID)
ocId No Unique Opta Core competition ID. Returned only if the feed is queried by Opta Core legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
opId No Unique Opta competition ID. Returned only if the feed is queried by Opta legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
name Yes The name of the competition String
knownName No The known name of the competition String
sponsorName Yes The name of the sponsor of a competition String
competitionCode Yes The short three-digit competition code String
competitionFormat Yes The format of the competition - one of the following values: Domestic league | Domestic cup | Domestic super cup | International cup | International super cup String

<country> — `match

Detailed/match/matchInfo/competition/country| Property | Value | |---|---| |Nesting| matchDetailed/match/matchInfo/competition/country | |Description` | Required. Root element of the fields related to the country that the competition is based in. Value (XML only): String giving the country name |

Attribute Required Description Values
id Yes Unique ID (UUID) of the country that the competition is based in String (Alphanumeric - UUID)
name (JSON only) Yes Name of the country String

`<tournament

Calendar>matchDetailed/match/matchInfo/tournamentCalendar| Property | Value | |---|---| |Nesting| matchDetailed/match/matchInfo/tournamentCalendar | |Description` | Required. Root element of the fields related to a tournament calendar. Value (XML only): String giving the tournament calendar name |

Attribute Required Description Values
id Yes Unique ID (UUID) of the tournament calendar String (Alphanumeric - UUID)
ocId No Unique Opta Core tournament calendar ID. Returned only if the feed is queried by Opta Core legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
opId No Unique Opta tournament calendar ID. Returned only if the feed is queried by Opta legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
startDate Yes The start date (UTC) of the tournament calendar Date - in the format: YYYY-MM-DDZ
endDate Yes The end date (UTC) of the tournament calendar Date - in the format: YYYY-MM-DDZ
name (JSON only) Yes Name of the tournament calendar String

<stage> — `match

Detailed/match/matchInfo/stage| Property | Value | |---|---| |Nesting| matchDetailed/match/matchInfo/stage | |Description` | Required. Root element of the fields related to the stage. Value (XML only): String giving the stage name |

Attribute Required Description Values
id Yes Unique ID (UUID) of the stage String (Alphanumeric - UUID)
ocId No Unique Opta Core stage ID. Returned only if the feed is queried by Opta Core legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
opId No Unique Opta stage ID. Returned only if the feed is queried by Opta legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
formatId Yes Unique ID (UUID) of the stage format. This is an identifier for a specific type of stage - despite being played in different seasons, a team (contestant) can have the same format ID but a different stage ID (the stage ID is linked with stage and season). String (Alphanumeric - UUID)
startDate Yes The start date (UTC) of the stage Date - in the format: YYYY-MM-DDZ
endDate Yes The end date (UTC) of the stage Date - in the format: YYYY-MM-DDZ
name (JSON only) Yes Name of the stage String

<series> — `match

Detailed/match/matchInfo/series| Property | Value | |---|---| |Nesting| matchDetailed/match/matchInfo/series | |Description` | Optional. Root element of the fields related to the series - this element is optional (it may not always be returned in the feed). Value (XML only): String giving the series name |

Attribute Required Description Values
id Yes Unique ID (UUID) of the series String (Alphanumeric - UUID)
ocId No Unique Opta Core series ID. Returned only if the feed is queried by Opta Core legacy ID. Empty string if the ID does not exist. String
opId No Unique Opta series ID. Returned only if the feed is queried by Opta legacy ID. Empty string if the ID does not exist. String
horizontal No The order to display fixtures and standings for groups with the same vertical value. String
formatId Yes Unique ID related to the series format of the competition String (Alphanumeric - UUID)
name (JSON only) Yes Name of the series String

<contestants> (XML only) — `match

Detailed/match/matchInfo/contestants| Property | Value | |---|---| |Nesting| matchDetailed/match/matchInfo/contestants | |Description| Optional. Root element of the fields related to the contestants (XML only) - this element is optional (it may not always be returned in the feed) | |Notes| Note: Not present in JSON/JSONP feed response, where the individual contestant elements are returned instead | |Attributes` | None. Element only. |

<contestant> — `match

Detailed/match/matchInfo/contestants/contestant| Property | Value | |---|---| |Nesting| matchDetailed/match/matchInfo/contestants/contestant | |Description` | Optional. Root element of the fields related to a contestant - this element is optional (it may not always be returned in the feed - for example if the match is scheduled but contestants are not yet known, in which case the record will be updated once known). |

Attribute Required Description Values
id No Unique ID (UUID) of the contestant String (Alphanumeric - UUID)
phrase No Phrase describing the probable contestant
Note: The phrase appears if the tournament path is known and this is then replaced by probableTeams when these are known.
String
probableTeams No The unique UUID of the probable contestant String (Alphanumeric - UUID)
ocId No Unique Opta Core contestant ID. Returned only if the feed is queried by Opta Core legacy ID. Empty string if the ID does not exist. String
opId No Unique Opta contestant ID. Returned only if the feed is queried by Opta legacy ID. Empty string if the ID does not exist. String
name Yes The name of the contestant String
shortName No The short name commonly used to refer to the contestant String
officialName Yes The official name of the contestant String
code No The 3-character code used for the name of the contestant - it is often used on TV scoreboards String
position Yes Indicates the position of the contestant as either the home or away side, in the list of contestants String - one of the following: home | away
currentPowerRating No Current Power Rating of a team Decimal
highestSeasonRating No Highest Power Rating of a team in a season Decimal
lowestSeasonRating No Lowest Power Rating of a team in a season Decimal
averageSeasonRating No Average Power Rating of a team in a season Decimal
currentCompetitionRank No Current competition rank of the contestant Integer
currentConfederationRank No Current confederation rank of the contestant Integer
currentGlobalRank No Current confederation rank of the contestant Integer

<country> — `match

Detailed/match/matchInfo/contestants/contestant/country| Property | Value | |---|---| |Nesting| matchDetailed/match/matchInfo/contestants/contestant/country | |Description` | Optional. Root element of the fields related to a contestant - this element is optional (it may not always be returned in the feed). Value (XML only): String giving the country name |

Attribute Required Description Values
id Yes Unique ID (UUID) of the country the contestant is from String (Alphanumeric - UUID)
name (JSON only) Yes Name of the country String

<venue> — `match

Detailed/match/matchInfo/venue| Property | Value | |---|---| |Nesting| matchDetailed/match/matchInfo/venue | |Description` | Optional. Root element of the fields related to a venue - this element is optional (it may not always be returned in the feed). Value (XML only): String giving the venue name; in JSON/JSONP it is returned under shortName instead |

Attribute Required Description Values
id Yes Unique ID (UUID) of the venue String (Alphanumeric - UUID)
neutral Yes Whether or not the venue is neutral:
• yes (is neutral - the venue is associated with one of the contestants)
• no (not neutral - the venue is associated with one of the contestants)
String - one of the following: no | yes
ocId No Unique Opta Core venue ID. Returned only if the feed is queried by Opta Core legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
opId No Unique Opta venue ID. Returned only if the feed is queried by Opta legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
longName Yes The long/extended name of the venue String
latitude No The latitude coordinates for the location of the venue String
longitude No The longitude coordinates for the location of the venue String
shortName (JSON only) Yes The short name of the venue String

`<live

Data>matchDetailed/match/liveData| Property | Value | |---|---| |Nesting| matchDetailed/match/liveData | |Description| Optional (Required with live=yes). Root element of the fields related to live data | |Notes| Note:<br>• Only returned if the call includes the parameter-value live=yes.<br>• If no live data is available (for example, if the fixture is scheduled but is not playing or has not been played) then an empty liveData element is returned and some sub-elements will not be returned. However, when new information is available the feed will be updated - see our polling frequency recommendations for more information. | |Attributes` | None. Element only. |

`<match

Details>matchDetailed/match/liveData/matchDetails| Property | Value | |---|---| |Nesting| matchDetailed/match/liveData/matchDetails | |Description| Optional. Root element of the fields related to match details | |Notes` | Note:
• Only returned if the call includes the parameter-value live=yes and data is available.
• If no data is available (for example, if the fixture is scheduled but is not playing or has not been played) then the liveData element may be empty or some sub-elements will not be returned. However, when new information is available the feed will be updated - see our polling frequency recommendations for more information. |

Attribute Required Description Values
periodId Yes The current match period - one of the following:
• 1 (First half)
• 2 (Second half)
• 3 (Extra time - first half)
• 4 (Extra time - second half)
• 5 (Penalty shootout)
• 10 (Half time)
• 11 (End of second half - before extra time)
• 12 (Extra time - half time)
• 13 (End of extra time - before penalties)
• 14 (Full time)
• 16 (Pre-match)
Integer
matchStatus Yes The status of the match - one of the following: Fixture | Playing | Played | Cancelled | Postponed | Suspended | Awarded
• Fixture - The match is scheduled and yet to start
• Playing - The game is live
• Cancelled - The game is cancelled due to some reason
• Postponed - The game is postponed to another date
• Suspended - The match is interurpted in between and suspended. It can be rescheduled to another date in future
• Awarded - The match is awarded to one contestants with an associated result
String
matchTime No The current minute of the match. Available only for certain competitions and during the match (when matchStatus="Playing"). Dynamic
matchTimeMin Yes Current match minute Integer
matchTimeSec Yes Current match second Integer
delay No Indicates that there is a delay in the match.
For example, a value of VAR Review indicates that a match event has occured that requires review by the Video Assistant Referee (VAR) - it appears alongside other attributes to act as a VAR review flag. To see a full explanation of the possible combination of VAR events, Referee decisions, and Outcomes, see: How are VAR events reported?
Note: It is only shown during the delay, for example when a VAR review is taking place - it will disappear from the feed once the delay/review is over and gameplay resumes.
String
varReason No Appears in the feed, alongside other attributes, to act as a VAR review flag.
• It appears when an event occurs in the match that requires a Video Assistant Referee (VAR) review.
• The value gives the reason for the VAR review. To see a full explanation of the possible combination of VAR events, Referee decisions, and Outcomes, see: How are VAR events reported?
Note: It is only shown in the feed during while a VAR review is taking place - it will disappear from the feed once the delay/review is over and gameplay resumes.
String - one of the following: Goal | No goal | Penalty awarded | Penalty not awarded | Red card given | Card upgrade | Mistaken Identity | Other
playerId No Unique ID (UUID) of the player involved in an event that requires a Video Assistant Referee (VAR) review.
It appears in the matchDetails element of the feed alongside the attributes contestantId, delay, varReason. To see a full explanation of the possible combination of VAR events, Referee decisions, and Outcomes, see: How are VAR events reported?
Note: It is only shown in the feed during while a VAR review is taking place - it will disappear from the feed once the delay/review is over and gameplay resumes.
String (Alphanumeric - UUID)
ocPlayerId No Opta Core ID of the player involved in an event that requires a Video Assistant Referee (VAR) review. Its inclusion in this element in the feed is as per playerId. String
opPlayerId No Opta ID of the player involved in an event that requires a Video Assistant Referee (VAR) review. Its inclusion in this element in the feed is as per playerId. String
contestantId No Unique ID (UUID) of a contestant associated with a player involved in an event that requires a Video Assistant Referee (VAR) review.
It appears in the matchDetails element of the feed alongside the attributes playerId, delay, varReason. To see a full explanation of the possible combination of VAR events, Referee decisions, and Outcomes, see: How are VAR events reported?
Note: It is only shown in the feed during while a VAR review is taking place - it will disappear from the feed once the delay/review is over and gameplay resumes.
String (Alphanumeric - UUID)
ocContestantId No Opta Core ID of a contestant associated with a player involved in an event that requires a Video Assistant Referee (VAR) review. Its inclusion in this element in the feed is as per contestantId. String
opContestantId No Opta ID of a contestant associated with a player involved in an event that requires a Video Assistant Referee (VAR) review. Its inclusion in this element in the feed is as per contestantId. String
winner No The outcome of the match.
Note: This attribute is only shown when the match is completed (when matchStatus="Played")
String - one of the following: home | away | draw
leg No The leg of the competition a match is being played in. Integer
relatedMatchId No Unique ID (UUID) of a related match String (Alphanumeric - UUID)
relatedMatchOpId No Unique Opta ID of the related match String
aggregateWinnerId Not specified Unique ID (UUID) of the aggregate winner of matches between the two contestants String (Alphanumeric - UUID)
aggregateId No A unique identifier used to group and link both legs of a paired soccer match (e.g., home and away games in a two-legged tie). String (Alphanumeric - UUID)
previousAggregateIds No It contain aggregated IDs for previous rounds of the fixture. (e.g., previousRoundAggregateId1, previousRoundAggregateId2) String
previousMatchIds No UUID of ‘Previous Match’ String (Alphanumeric - UUID)
advancementAggregateId No A reference to the aggregateId indicating which aggregate winner will advance to the next round or stage in a paired soccer match series. String (Alphanumeric - UUID)
matchLengthMin No The total number of full minutes played in the match (includes stoppage time); only shows when the match is completed (when matchStatus="Played") Integer
matchLengthSec No The number of seconds in addition to the full minutes played in the match (includes stoppage time); only shows when the match is completed (when matchStatus="Played") Integer
contestantOfTheMatchId No UUID of ‘Team of the Match’ String (Alphanumeric - UUID)
playerOfTheMatch No Name of ‘Player of the Match’ String
playerOfTheMatchId No UUID of ‘Player of the Match’ String (Alphanumeric - UUID)
goalkeeperOfTheMatch No Name of ‘Goal Keeper of the Match String
goalkeeperOfTheMatchId No UUID of ‘Goal Keeper of the Match’ String (Alphanumeric - UUID)

<periods> (XML only) — `match

Detailed/match/liveData/matchDetails/periods| Property | Value | |---|---| |Nesting| matchDetailed/match/liveData/matchDetails/periods | |Description| Optional. Root element of the fields related to periods in a match (XML only) - this element is optional (it may not always be returned in the feed). | |Notes| Note:<br>• JSON/JSONP: Not present in JSON/JSONP feed response, where the individual period elements are returned instead<br>• All formats: The periods and/or period elements are only returned if the call includes the parameter-value live=yes and data is available. They are only visible if the status (matchStatus) is 'Playing', 'Played', 'Suspended', 'Cancelled', or 'Postponed'.<br>• If no data is available (for example, if the fixture is scheduled but is not playing or has not been played) then the liveData element may be empty or some sub-elements will not be returned. However, when new information is available the feed will be updated - see our polling frequency recommendations for more information. | |Attributes` | None. Element only. |

<period> — `match

Detailed/match/liveData/matchDetails/periods/period| Property | Value | |---|---| |Nesting| matchDetailed/match/liveData/matchDetails/periods/period | |Description| Optional. Root element of the fields related to a period in the match - this element is optional (it may not always be returned in the feed). | |Notes` | Note:
• Only returned if the call includes the parameter-value live=yes and data is available.
• Only visible if the status (matchStatus) is 'Playing', 'Played', 'Suspended', 'Cancelled', or 'Postponed'.
• If no data is available (for example, if the fixture is scheduled but is not playing or has not been played) then the liveData element may be empty or some sub-elements will not be returned. However, when new information is available the feed will be updated - see our polling frequency recommendations for more information. |

Attribute Required Description Values
id Yes The match period ID - one of the following: 1 | 2 | 3 | 4 Integer
start Yes The start date and time of the period (UTC) String - in the format: YYYY-MM-DDThh:mm:ssZ
end Yes The end date and time of the period (UTC) String - in the format: YYYY-MM-DDTHH:MM:SSZ
lengthMin Yes The number of total minutes in the period (includes stoppage time) Integer
lengthSec Yes The number of seconds in addition to the total minutes in the period (includes stoppage time) Integer
announcedInjuryTime Yes Injury time in seconds Integer

<suspensions> — `matche

Detailed/match/liveData/matchDetails/periods/period/suspensions| Property | Value | |---|---| |Nesting| matcheDetailed/match/liveData/matchDetails/periods/period/suspensions | |Description| Optional. Root element of the fields related to suspensions in a period of a match (XML only) | |Notes| this element is optional (it may not always be returned in the feed).<br>Note: All formats<br>The periods and/or period elements are only returned if the call includes the parameter-value live-yes and data is available. They are only visible if the status (matchStatus) is 'Playing', 'Played', 'Suspended', 'Cancelled', 'Postponed'.<br>If no data is available (for example, if the fixture is scheduled but is not playing or has not been played) then the liveData element may be empty or some sub-elements will not be returned. However, when new information is available the feed will be updated. | |Attributes` | None. Element only. |

<suspension> — `matche

Detailed/match/liveData/matchDetails/periods/period/suspensions/suspension| Property | Value | |---|---| |Nesting| matcheDetailed/match/liveData/matchDetails/periods/period/suspensions/suspension | |Description| Optional. Root element of the fields related to suspension in a period of a match (XML only) | |Notes` | this element is optional (it may not always be returned in the feed).
Note:All formats
The periods and/or period elements are only returned if the call includes the parameter-value live-yes and data is available. They are only visible if the status (matchStatus) is 'Playing', 'Played', 'Suspended', 'Cancelled', 'Postponed'.
If no data is available (for example, if the fixture is scheduled but is not playing or has not been played) then the liveData element may be empty or some sub-elements will not be returned. However, when new information is available the feed will be updated. |

Attribute Required Description Values
start Not specified The start date and time of the suspension period (UTC) String - in the format: YYYY-MM-DDTHH:MM:SSZ
end Not specified The end date and time of the period (UTC) String - in the format: YYYY-MM-DDTHH:MM:SSZ
reason No Providing the reason for a game suspension - one of the following:
clock affecting
early end
String

<scores> — `match

Detailed/match/liveData/matchDetails/scores| Property | Value | |---|---| |Nesting| matchDetailed/match/liveData/matchDetails/scores | |Description| Optional. Root element of the fields related to scores - this element is optional (it may not always be returned in the feed). | |Notes| Note:<br>• Only returned if the call includes the parameter-value live=yes and data is available.<br>• Only visible if the status (matchStatus) is 'Playing', 'Played', 'Suspended', 'Cancelled', or 'Postponed'.<br>• If no data is available (for example, if the fixture is scheduled but is not playing or has not been played) then the liveData element may be empty or some sub-elements will not be returned. However, when new information is available the feed will be updated - see our polling frequency recommendations for more information. | |Attributes` | None. Element only. |

<ht> — `match

Detailed/match/liveData/matchDetails/scores/ht| Property | Value | |---|---| |Nesting| matchDetailed/match/liveData/matchDetails/scores/ht | |Description| Optional. Root element of the fields related to first half scores - this element is optional (it may not always be returned in the feed). | |Notes` | Note:
• Only returned if the call includes the parameter-value live=yes and data is available.
• Only visible if the status (matchStatus) is 'Playing', 'Played', 'Suspended', 'Cancelled', or 'Postponed'.
• Only returned after the first half is concluded.
• If no data is available (for example, if the fixture is scheduled but is not playing or has not been played) then the liveData element may be empty or some sub-elements will not be returned. However, when new information is available the feed will be updated - see our polling frequency recommendations for more information. |

Attribute Required Description Values
home Conditional: if element is present The half-time score of the home team Integer
away Conditional: if element is present The half-time score of the away team Integer

<ft> — `match

Detailed/match/liveData/matchDetails/scores/ft| Property | Value | |---|---| |Nesting| matchDetailed/match/liveData/matchDetails/scores/ft | |Description| Optional. Root element of the fields related to the full-time (second half) scores - this element is optional (it may not always be returned in the feed). | |Notes` | Note:
• Only returned if the call includes the parameter-value live=yes and data is available.
• If no data is available (for example, if the fixture is scheduled but is not playing or has not been played) then the liveData element may be empty or some sub-elements will not be returned. However, when new information is available the feed will be updated - see our polling frequency recommendations for more information. |

Attribute Required Description Values
home Yes The full-time score of the home team Integer
away Conditional: if element is present The full-time score of the away team Integer

<et> — `match

Detailed/match/liveData/matchDetails/scores/et| Property | Value | |---|---| |Nesting| matchDetailed/match/liveData/matchDetails/scores/et | |Description| Optional. Root element of the fields related to the extra time scores - this element is optional (it may not always be returned in the feed). | |Notes` | Note:
• Only returned if the call includes the parameter-value live=yes and data is available.
• If no data is available (for example, if the fixture is scheduled but is not playing or has not been played) then the liveData element may be empty or some sub-elements will not be returned. However, when new information is available the feed will be updated - see our polling frequency recommendations for more information. |

Attribute Required Description Values
home Conditional: if element is present The extra-time score of the home team Integer
away Conditional: if element is present The extra-time score of the away team Integer

<pen> — `match

Detailed/match/liveData/matchDetails/scores/pen| Property | Value | |---|---| |Nesting| matchDetailed/match/liveData/matchDetails/scores/pen | |Description| Optional. Root element of the fields related to the penalties scores - this element is optional (it may not always be returned in the feed). | |Notes` | Note:
• Only returned if the call includes the parameter-value live=yes and data is available.
• If no data is available (for example, if the fixture is scheduled but is not playing or has not been played) then the liveData element may be empty or some sub-elements will not be returned. However, when new information is available the feed will be updated - see our polling frequency recommendations for more information. |

Attribute Required Description Values
home Conditional: if element is present The penalties score of the home team Integer
away Conditional: if element is present The penalties score of the away team Integer

<total> — `match

Detailed/match/liveData/matchDetails/scores/total| Property | Value | |---|---| |Nesting| matchDetailed/match/liveData/matchDetails/scores/total | |Description| Optional. Root element of the fields related to the total scores - this element is optional (it may not always be returned in the feed). | |Notes` | Note:
• Only returned if the call includes the parameter-value live=yes and data is available.
• Only visible if the status (matchStatus) is 'Playing', 'Played', 'Suspended', 'Cancelled', or 'Postponed'.
• If no data is available (for example, if the fixture is scheduled but is not playing or has not been played) then the liveData element may be empty or some sub-elements will not be returned. However, when new information is available the feed will be updated - see our polling frequency recommendations for more information. |

Attribute Required Description Values
home Conditional: if element is present The total score of the home team Integer
away Conditional: if element is present The total score of the away team Integer

<aggregate> — `match

Detailed/match/liveData/matchDetails/scores/aggregate| Property | Value | |---|---| |Nesting| matchDetailed/match/liveData/matchDetails/scores/aggregate | |Description| Optional. Root element of the fields related to the aggregate scores - this element is optional (it may not always be returned in the feed). | |Notes` | Note:
• Only returned if the call includes the parameter-value live=yes and data is available.
• Only available if it is two legged match
• If no data is available (for example, if the fixture is scheduled but is not playing or has not been played) then the liveData element may be empty or some sub-elements will not be returned. However, when new information is available the feed will be updated - see our polling frequency recommendations for more information. |

Attribute Required Description Values
home Conditional: if element is present The aggregate score of the home team Integer
away Conditional: if element is present The aggregate score of the away team Integer

`<total

Unconfirmed>matchDetailed/match/liveData/matchDetails/scores/totalUnconfirmed| Property | Value | |---|---| |Nesting| matchDetailed/match/liveData/matchDetails/scores/totalUnconfirmed | |Description| Optional. Root element of the fields related to the total unconfirmed goals - this element is optional (it may not always be returned in the feed). | |Notes` | Note:
• Only returned if the call includes the parameter-value live=yes and data is available.
• This is a temporary element for only Tier 13 matches, designed to offer a quick way to access score updates. It appears at the point our analysts initially collect a goal event, significantly shortening the time you receive score updates.
Once a goal and goal scorer have been collected, the totalUnconfirmed element is created in the <scores> node. Once all goal details are entered into the database the "score" element increments by one (1) and 'totalUnconfirmed' is removed.
• By triggering goal updates earlier than previously there is an increased risk that once the goal has been logged it will either be disallowed or a goal scorer may have been misidentified. These clarifications can take a number of seconds to become clear and could result in information which is later updated. Ignore this if you only want to use the other 'scores' attributes.
• If no data is available (for example, if the fixture is scheduled but is not playing or has not been played) then the liveData element may be empty or some sub-elements will not be returned. However, when new information is available the feed will be updated - see our polling frequency recommendations for more information. |

Attribute Required Description Values
home Conditional: if element is present The total unconfirmed goals of the home team Integer
away Conditional: if element is present The total unconfirmed goals of the away team Integer

<goal> — `match

Detailed/match/liveData/goal| Property | Value | |---|---| |Nesting| matchDetailed/match/liveData/goal | |Description| Optional. Root element of the fields related to a goal event | |Notes` | Note:
• Only returned if the call includes the parameter-value live=yes and data is available.
• If no data is available (for example, if the fixture is scheduled but is not playing or has not been played) then the liveData element may be empty or some sub-elements will not be returned. However, when new information is available the feed will be updated - see our polling frequency recommendations for more information. |

Attribute Required Description Values
type Conditional: if element is present The type of the goal - one of the following: G (goal) | OG (own goal) | PG (penalty goal) String
scorerId Conditional: if element is present Unique ID (UUID) of the player who scored the goal String (Alphanumeric - UUID)
ocScorerId No Unique Opta Core ID of the player who scored the goal. Returned only if the feed is queried by Opta Core legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
opScorerId No Unique Opta ID of the player who scored the goal. Returned only if the feed is queried by Opta legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
scorerName Conditional: if element is present The name of the player who scored the goal String
assistPlayerId No Unique ID (UUID) of the player who assisted the goal. Attribute not present if there was no assist. String (Alphanumeric - UUID)
ocAssistPlayerId No Unique Opta Core ID of the player who assisted the goal. Returned only if the feed is queried by Opta Core legacy ID; the attribute is not present otherwise. Empty string if no such value exists. Attribute not present if there was no assist. String
opAssistPlayerId No Unique Opta ID of the player who assisted the goal. Returned only if the feed is queried by Opta legacy ID; the attribute is not present otherwise. Empty string if no such value exists. Attribute not present if there was no assist. String
assistPlayerName No The name of the player who assisted the goal. Attribute not present if there was no assist. String
secondAssistPlayerId No The unique ID (UUID) of the second player who assisted the goal. Attribute not present if there was no assist. String (Alphanumeric - UUID)
secondAssistPlayerName No The name of the second player who assisted the goal. Attribute not present if there was no assist. String
timestamp Conditional: if element is present The UTC date and time (timestamp) of when the goal was scored Date/Time - in the format: YYYY-MM-DDThh:mm:ssZ
Note: Optional for Coverage level 3.
optaEventId No The Opta ID of the event String
homeScore Conditional: if element is present The adjusted home score following the goal Integer
awayScore Conditional: if element is present The adjusted away score following the goal Integer
unconfirmed No Status of the goal (Tier 13 matches only). Important: This is a temporary attribute - designed to offer a quick way to access score updates. It appears at the point our analysts initially collect a goal event, significantly shortening the time you receive score updates.
Once a goal and goal scorer have been collected, the goal element (event) is created and with attribute unconfirmed and value "yes". The totalUnconfirmed sub-element also appears in the <scores> node. Once all goal details are entered into the database the "score" element increments by one (1) and both 'unconfirmed' and 'totalUnconfirmed' are removed. Should the goal be disallowed both the 'unconfirmed' attribute and 'goal' event are removed.
Note: By triggering goal updates earlier than previously there is an increased risk that once the goal has been logged it will either be disallowed or a goal scorer may have been misidentified. These clarifications can take a number of seconds to become clear and could result in information which is later updated. Ignore this if you only want to use the other 'scores' attributes
String - one of the following: yes | no
contestantId Conditional: if element is present Unique ID (UUID) of the player's team String (Alphanumeric - UUID)
ocContestantId No Unique Opta Core contestant ID. Returned only if the feed is queried by Opta Core legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
opContestantId No Unique Opta contestant ID. Returned only if the feed is queried by Opta legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
periodId Conditional: if element is present The ID of the match period in which the goal was scored - one of the following: 1 | 2 | 3 | 4 Integer
timeMin Conditional: if element is present The minute of the match in which the goal was scored Integer
timeMinSec Conditional: if element is present The second attributed to the minute in the match in which the goal was scored String - in the format: mm:ss
varReviewed No Shows that the goal has been awarded following a VAR review (Video Assistant Referee).
• Appears in the feed, alongside other attributes related to a VAR review (such as originalDecision).
• To see a full explanation of the possible combination of VAR events, Referee decisions, and Outcomes, see: How are VAR events reported?
String - example: yes
originalDecision No Shows whether the goal was originally awarded and confirmed after a VAR review - or - only awarded following a VAR review.
• Appears in the feed, alongside other attributes related to a VAR review (Video Assistant Referee), such as varReviewed.
• The value gives the original decision. To see a full explanation of the possible combination of VAR events, Referee decisions, and Outcomes, see: How are VAR events reported?
String - one of the following: Goal awarded | Goal not awarded
lastUpdated Conditional: if element is present The UTC date and time (timestamp) of when the event information/record was last updated String - in the format: YYYY-MM-DDThh:mm:ssZ

`<missed

Pen>matchDetailed/match/liveData/missedPen| Property | Value | |---|---| |Nesting| matchDetailed/match/liveData/missedPen | |Description| Optional. Root element of the fields related to missed penalty event | |Notes` | Note:
• Only returned if the call includes the parameter-value live=yes and data is available.
• If no data is available (for example, if the fixture is scheduled but is not playing or has not been played) then the liveData element may be empty or some sub-elements will not be returned. However, when new information is available the feed will be updated - see our polling frequency recommendations for more information. |

Attribute Required Description Values
type Conditional: if element is present The type of the missed penalty String - one of the following: PM (penalty missed) | PS (penalty saved)
playerId Conditional: if element is present Unique ID (UUID) of the player who missed/saved the penalty String (Alphanumeric - UUID)
ocPlayerId No Unique Opta Core ID of the player who missed/saved the penalty. Returned only if the feed is queried by Opta Core legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
opPlayerId No Unique Opta ID of the player who missed/saved the penalty. Returned only if the feed is queried by Opta legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
playerName Conditional: if element is present The name of the player who missed/saved the penalty String
contestantId Conditional: if element is present Unique ID (UUID) of the player's team String (Alphanumeric - UUID)
ocContestantId No Unique Opta Core contestant ID. Returned only if the feed is queried by Opta Core legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
opContestantId No Unique Opta contestant ID. Returned only if the feed is queried by Opta legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
optaEventId No The Opta ID of the event String
periodId Conditional: if element is present The period ID in which the penalty was missedc - one of the following: 1 | 2 | 3 | 4 Integer
timeMin Conditional: if element is present The minute of the match in which the penalty was missed Integer
timeMinSec Conditional: if element is present The second attributed to the minute in the match in which the penalty was missed String - in the format: mm:ss
timestamp Conditional: if element is present The UTC date and time (timestamp) of when the missed penalty event occured String - in the format: YYYY-MM-DDThh:mm:ssZ
lastUpdated Conditional: if element is present The UTC date and time (timestamp) of when the event information/record was last updated String - in the format: YYYY-MM-DDThh:mm:ssZ

<card> — `match

Detailed/match/liveData/card| Property | Value | |---|---| |Nesting| matchDetailed/match/liveData/card | |Description| Optional. Root element of the fields related to a card event | |Notes` | Note:
• Only returned if the call includes the parameter-value live=yes and data is available.
• If no data is available (for example, if the fixture is scheduled but is not playing or has not been played) then the liveData element may be empty or some sub-elements will not be returned. However, when new information is available the feed will be updated - see our polling frequency recommendations for more information. |

Attribute Required Description Values
type Conditional: if element is present The type of the card - one of the following: YC (yellow) | Y2C (second yellow) | RC (red) String
playerId No Unique (UUID) of the player who received the card String (Alphanumeric - UUID)
ocPlayerId No Unique Opta Core ID of the player who received the card. Returned only if the feed is queried by Opta Core legacy ID and the card is awarded to a player; the attribute is not present otherwise. Empty string if no such value exists. String
opPlayerId No Unique Opta ID of the player who received the card. Returned only if the feed is queried by Opta Core legacy ID and the card is awarded to a player; the attribute is not present otherwise. Empty string if no such value exists. String
playerName No The name of the player who received the card String
teamOfficialId No Unique ID of the team official. To be present only if the card is awarded to a team official during a match String (Alphanumeric - UUID)
officialName No Name of the team official. To be present only if the card is awarded to a team official during a match. String
cardReason Conditional: if element is present The reason that the card was awarded - this depends on the type/colour of the card:
Yellow Card type="YC" reasons (possible values):
Foul | Persistent infringement | Hand Ball | Dangerous play | Time wasting | Argument | Dissent | Simulation | Excessive celebration | Encroachment | Leaving field of play | Entering field of play | Off the ball foul | Not Retreating | Entering referee review area | Excessive usage of review signal | Other Reason
Red Card type="RC" reasons (possible values):
Violent conduct | Spitting | Professional Foul Last Player | Professional Foul Handball | Serious Foul | Foul and abusive language | Entering video operations room
String
optaEventId No The Opta ID of the event String
contestantId Conditional: if element is present Unique ID (UUID) of the player's team String (Alphanumeric - UUID)
ocContestantId No Unique Opta Core ID of the player's team. Returned only if the feed is queried by Opta Core legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
opContestantId No Unique Opta ID of the player's team. Returned only if the feed is queried by Opta legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
periodId Conditional: if element is present Match period in which the player received the card Integer - one of the following: 1 | 2 | 3 | 4
timeMin Conditional: if element is present The minute of the match in which the player received the card Integer
timeMinSec Conditional: if element is present The second attributed to the minute in the match in which the player received the card String - in the format: mm:ss
timestamp Conditional: if element is present The UTC date and time (timestamp) of when the card was awarded String - in the format: YYYY-MM-DDThh:mm:ssZ
optaEventId No The Opta ID of the event String
lastUpdated Conditional: if element is present The UTC date and time (timestamp) of when the card event information/record was last updated String - in the format: YYYY-MM-DDThh:mm:ssZ

<substitute> — `match

Detailed/match/liveData/substitute| Property | Value | |---|---| |Nesting| matchDetailed/match/liveData/substitute | |Description| Optional. Root element of the fields related to a substitution event | |Notes` | Note:
• Only returned if the call includes the parameter-value live=yes and data is available.
• If no data is available (for example, if the fixture is scheduled but is not playing or has not been played) then the liveData element may be empty or some sub-elements will not be returned. However, when new information is available the feed will be updated - see our polling frequency recommendations for more information. |

Attribute Required Description Values
playerOnId Conditional: if element is present Unique ID (UUID) of the player being substituted on String (Alphanumeric - UUID)
ocPlayerOnId No Unique Opta Core ID of the player being substituted on. Returned only if the feed is queried by Opta Core legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
opPlayerOnId No Unique Opta ID of the player being substituted on. Returned only if the feed is queried by Opta legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
playerOnName Conditional: if element is present The match name of player being substituted on String
playerOffId Conditional: if element is present Unique ID (UUID) of the player being substituted off String (Alphanumeric - UUID)
ocPlayerOffId No Unique Opta Core ID of the player being substituted off. Returned only if the feed is queried by Opta Core legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
opPlayerOffId No Unique Opta ID of the player being substituted off. Returned only if the feed is queried by Opta legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
playerOffName Conditional: if element is present The match name of player being substituted off String
contestantId Conditional: if element is present Unique ID (UUID) of the contestant that made the substitution String (Alphanumeric - UUID)
ocContestantId No Unique Opta Core ID of the team making the substitution. Returned only if the feed is queried by Opta Core legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
opContestantId No Unique Opta ID of the team making the substitution. Returned only if the feed is queried by Opta legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
subReason Conditional: if element is present The reason that the substitution was made - one of the following: Tactical | Injury String
periodId Conditional: if element is present The period ID of the match in which the substitution was made Integer - one of the following: 1 | 2 | 3 | 4
timeMin Conditional: if element is present The minute of the match in which the substitution was made Integer
timeMinSec Conditional: if element is present The second attributed to the minute in the match in which the substitution was made String - in the format: mm:ss
timestamp Conditional: if element is present The UTC date and time (timestamp) of when the substitution was made Date/Time - in the format: YYYY-MM-DDThh:mm:ssZ
Note: Optional for Coverage level 3.
lastUpdated Conditional: if element is present The UTC date and time (timestamp) of when the substitution event information/record was last updated String - in the format: YYYY-MM-DDThh:mm:ssZ

<VAR> — `match

Detailed/match/liveData/VAR| Property | Value | |---|---| |Nesting| matchDetailed/match/liveData/VAR | |Description| Optional. A Root element of the fields relating to all VAR (Video Assistant Referee) events/reviews. | |Notes` | Note:
• Only returned if the call includes the parameter-value live=yes and data is available.
• It will only appear in an game where there has been a VAR review and will list all VAR events in a game, the player and team involved, the type of event reviewed, whether the original decision was upheld, and the outcome of the review. This list will update during a game as more events are reviewed.
• If no data is available (for example, if the fixture is scheduled but is not playing or has not been played) then the liveData element may be empty or some sub-elements will not be returned. However, when new information is available the feed will be updated - see our polling frequency recommendations for more information. |

Attribute Required Description Values
type Conditional: if element is present The type of event/decision that requires a VAR review - one of the following: Goal awarded | Goal not awarded | Penalty awarded | Penalty not awarded | Red card given | Card upgrade | Mistaken Identity | Other
• Appears in the feed, alongside other attributes related to a VAR review.
• To see a full explanation of the possible combination of VAR events, Referee decisions, and Outcomes, see: How are VAR events reported?
String
decision Conditional: if element is present The decision that the referee has made about the event, following the VAR review.
• Appears in the feed, alongside other attributes related to a VAR review.
• To see a full explanation of the possible combination of VAR events, Referee decisions, and Outcomes, see: How are VAR events reported?
String - one of the following: Confirmed | Cancelled
outcome Conditional: if element is present The outcome of the event, in relation to the original decision and following the VAR review and decision - one of the following: Goal | No goal | Penalty | No penalty | Red card awarded | No red card | Ref cautions/sends off different player | Player originally cautioned confirmed
• Appears in the feed, alongside other attributes related to a VAR review.
• To see a full explanation of the possible combination of VAR events, Referee decisions, and Outcomes, see: How are VAR events reported?
String
playerId Conditional: if element is present Unique ID (UUID) of the player involved in an event that requires a Video Assistant Referee (VAR) review. String (Alphanumeric - UUID)
ocPlayerId No Opta Core ID of the player involved in an event that requires a Video Assistant Referee (VAR) review. String
opPlayerId No Opta ID of the player involved in an event that requires a Video Assistant Referee (VAR) review. String
playerName Conditional: if element is present Name of the player involved in an event that requires a Video Assistant Referee (VAR) review. String
optaEventId No The Opta ID of the event String
optaEventUnderReviewId No The Opta Event Under Review ID number for the event that is under review. Note: This only appears for goals. Released: 12 November 2019 String
contestantId Conditional: if element is present Unique ID (UUID) of a contestant associated with a player involved in an event that requires a Video Assistant Referee (VAR) review. String (Alphanumeric - UUID)
ocContestantId No Opta Core ID of a contestant associated with a player involved in an event that requires a Video Assistant Referee (VAR) review. String
opContestantId No Opta ID of a contestant associated with a player involved in an event that requires a Video Assistant Referee (VAR) review. String
periodId Conditional: if element is present The ID of the match period in which the event was subject to the VAR review Integer - one of the following: 1 | 2 | 3 | 4 | 5
timeMin Conditional: if element is present The minute of the match in which the event was subject to the VAR review Integer
timeMinSec Conditional: if element is present The second attributed to the minute in the match in which the event was subject to the VAR review String - in the format: mm:ss
lastUpdated Conditional: if element is present The UTC date and time (timestamp) of when the event information/record was last updated String - in the format: YYYY-MM-DDThh:mm:ssZ
ownGoal No Only present when a goal that is cancelled after a VAR decision was classed as an 'own goal'. It serves as a flag to allow users to distinguish between goals and own goals in the feed. The value is always yes and it will appear with this combination of attributes in the VAR node (type: "Goal awarded"; decision: "Cancelled"; outcome: "No goal") String

`<penalty

Shootout>matchDetailed/match/liveData/penaltyShootout| Property | Value | |---|---| |Nesting| matchDetailed/match/liveData/penaltyShootout | |Description| Optional. Root element of the fields related to a penalty shootout | |Notes| Note:<br>• Only returned if the call includes the parameter-value live=yes and data is available.<br>• If no data is available (for example, if the fixture is scheduled but is not playing or has not been played) then the liveData element may be empty or some sub-elements will not be returned. However, when new information is available the feed will be updated - see our polling frequency recommendations for more information. | |Attributes` | None. Element only. |

`<penalty

Shot>matchDetailed/match/liveData/penaltyShootout/penaltyShot| Property | Value | |---|---| |Nesting| matchDetailed/match/liveData/penaltyShootout/penaltyShot | |Description| Optional. Root element of the fields related to a penalty shot | |Notes` | Note:
• Only returned if the call includes the parameter-value live=yes and data is available.
• If no data is available (for example, if the fixture is scheduled but is not playing or has not been played) then the liveData element may be empty or some sub-elements will not be returned. However, when new information is available the feed will be updated - see our polling frequency recommendations for more information. |

Attribute Required Description Values
outcome Conditional: if element is present The outcome of the penalty taken - one of the following: scored | missed | saved String
playerId Conditional: if element is present Unique ID (UUID) of the player who took the penalty String (Alphanumeric - UUID)
ocPlayerId No Unique Opta Core ID of the player who took the penalty. Returned only if the feed is queried by Opta Core legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
opPlayerId No Unique Opta ID of the player who took the penalty. Returned only if the feed is queried by Opta legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
scorerName Conditional: if element is present The match name of the player who the penalty String
contestantId Conditional: if element is present Unique ID (UUID) of the team that took the penalty String (Alphanumeric - UUID)
ocContestantId No Unique Opta Core ID of the team that took the penalty. Returned only if the feed is queried by Opta Core legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
opContestantId No Unique Opta ID of the team that took the penalty. Returned only if the feed is queried by Opta legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
teamPenaltyNumber Conditional: if element is present The ordinal number of the penalty taken by a team Integer
timeMin Conditional: if element is present The minute of the match in which the penalty shot was taken Integer
timeMinSec Conditional: if element is present The second attributed to the minute in the match in which the penalty shot was taken String - in the format: mm:ss
timestamp Conditional: if element is present The UTC date and time (timestamp) of when the substitution was made String - in the format: YYYY-MM-DDThh:mm:ssZ
lastUpdated Conditional: if element is present The UTC date and time (timestamp) of when the penalty event information/record was last updated String - in the format: YYYY-MM-DDThh:mm:ssZ

`<line

Up>matchDetailed/match/liveData/lineUp| Property | Value | |---|---| |Nesting| matchDetailed/match/liveData/lineUp | |Description| Optional. Root element of the fields related to the lineup of players in the given team (a contestant in a match) - this element is optional (it may not always be returned in the feed). | |Notes` | Note:
• This element is only returned if the request contains both of the parameter-value pairs live=yes & lineups=yes, and data is available.
• If no live data is available (for example, if the fixture is scheduled but is not playing or has not been played) then an empty liveData element is returned and some sub-elements, such as lineUp, will not be returned. However, when new information is available the feed will be updated - see our polling frequency recommendations for more information. |

Attribute Required Description Values
contestantId Yes Unique ID (UUID) of the contestant String (Alphanumeric - UUID)
ocContestantId No Unique Opta Core ID of the contestant. Returned only if the feed is queried by Opta Core legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
opContestantId No Unique Opta ID of the contestant. Returned only if the feed is queried by Opta legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
formationUsed No The formation type used by that team. Example: 4411
Note: This attribute may not be returned for every match. For an overview of possible formations, see: Match Events (MA3) guide (Appendix 5 - Formations Explained)
String

<player> — `match

Detailed/match/liveData/lineUp/player| Property | Value | |---|---| |Nesting| matchDetailed/match/liveData/lineUp/player | |Description| Optional. Root element of the fields related to each player in the lineup for the given team (a contestant in a match) | |Notes` | Note:
• Only returned if the call includes the parameter-value live=yes and lineups=yes, and data is available.
• If no data is available (for example, if the fixture is scheduled but is not playing or has not been played) then the liveData element may be empty or some sub-elements will not be returned. However, when new information is available the feed will be updated - see our polling frequency recommendations for more information. |

Attribute Required Description Values
captain No Identifies the given player is the team captain for the given match - the value is always yes. This flag is only assigned to the player who starts the match as the captain - it will not change (be removed/changed/updated in the feed) should the armband change players during the match. String
playerId Yes Unique ID (UUID) of the player String (Alphanumeric - UUID)
ocPlayerId No Unique Opta Core ID of the player. Returned only if the feed is queried by Opta Core legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
opPlayerId No Unique Opta ID of the player. Returned only if the feed is queried by Opta legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
firstName Yes The first name of the player String
lastName Yes The last name/second name of the player String
shortFirstName No The short first name of the player String
shortLastName No The short last name of the player String
birthName No The birth name of the person/player String
knownName No Known name of the player. String
matchName No Match name of the player.
Note: This node may not be returned for every player. If it does exist, you may wish to use it instead, and ignore the firstName and lastName nodes. For example, 'Neymar' will have a known name.
String
shirtNumber Yes The shirt number of the player Integer
position Yes The usual position of the person/player in the team/squad lineup - one of the following: Goalkeeper | Wing Back | Defender | Defensive Midfielder | Attacking Midfielder | Midfielder | Striker | Substitute String
positionSide No The area of the pitch the player is positioned in - one of the following: Left | Right | Centre | Left/Centre | Centre/Right
Note: Returned for all position values except Substitute
String
subPosition No Returned only when the player is position="Substitute" - the playing position/area of the pitch that the player takes on as a substitute. One of the following: Goalkeeper | Defender | Attacker | Midfielder | Striker | Unknown String
formationPlace Yes The individual position of the player within the formation. For example: 1
For an overview of possible formations, see: Match Events (MA3) guide (Appendix 5 - Formations Explained)
String

`<team

Official>matchDetailed/match/liveData/lineUp/teamOfficial| Property | Value | |---|---| |Nesting| matchDetailed/match/liveData/lineUp/teamOfficial | |Description| Optional. Root element of the fields related to the contestant's team official. Includes multiple team officials in a team's lineup. | |Notes` | Note: For JSON data type has been updated to type ‘list’ now. |

Attribute Required Description Values
id Yes Unique ID (UUID) of the team official String (Alphanumeric - UUID)
ocId No Unique Opta Core ID of the team official. Returned only if the feed is queried by Opta Core legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
opId No Unique Opta ID of the team official. Returned only if the feed is queried by Opta legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
firstName Yes The first name of the team official String
lastName Yes The last name (second name) of the team official.
Note: This replaced secondName
String
shortFirstName Yes The short first name of the team official String
shortlastName Yes The short last name of the team official String
knownName No The known name of the team official String
type Yes The type of the team official - eg 'manager' String

`<match

DetailsExtra>matchDetailed/match/liveData/matchDetailsExtra| Property | Value | |---|---| |Nesting| matchDetailed/match/liveData/matchDetailsExtra | |Description| Optional (Required with live=yes). Root element of the fields related to the extra match details | |Notes| Note:<br>• Only returned if the call includes the parameter-value live=yes and data is available.<br>• If no data is available (for example, if the fixture is scheduled but is not playing or has not been played) then the liveData element may be empty or some sub-elements will not be returned. However, when new information is available the feed will be updated - see our polling frequency recommendations for more information. | |Attributes` | None. Element only. |

<attendance> — `match

Detailed/match/liveData/matchDetailsExtra/attendance| Property | Value | |---|---| |Nesting| matchDetailed/match/liveData/matchDetailsExtra/attendance | |Description| Optional. Root element of the fields related to attendance. Value: The attendance of the match | |Notes| Note:<br>• Only returned if the call includes the parameter-value live=yes and data is available.<br>• If no data is available (for example, if the fixture is scheduled but is not playing or has not been played) then the liveData element may be empty or some sub-elements will not be returned. However, when new information is available the feed will be updated - see our polling frequency recommendations for more information. | |Attributes` | None. Element only. |

`<away

Attendance>matchDetailed/match/liveData/matchDetailsExtra/awayAttendance| Property | Value | |---|---| |Nesting| matchDetailed/match/liveData/matchDetailsExtra/awayAttendance | |Description| Root element of the fields related to the number of people who are fans of the away team in attendance at the match. This currently applies to matches in England and Scotland only. Value: The number of people who are away fans in attendance for the match | |Notes| Note:<br>• Only returned if the call includes the parameter-value live=yes and data is available.<br>• If no data is available (for example, if the fixture is scheduled but is not playing or has not been played) then the liveData element may be empty or some sub-elements will not be returned. However, when new information is available the feed will be updated - see our polling frequency recommendations for more information. | |Attributes` | None. Element only. |

`<match

Officials>(XML only) —matchDetailed/match/liveData/matchDetailsExtra/matchOfficials| Property | Value | |---|---| |Nesting| matchDetailed/match/liveData/matchDetailsExtra/matchOfficials | |Description| Optional. Root element of the fields related to match officials (XML only) | |Notes| Note:<br>• JSON/JSONP: Not present in JSON/JSONP feed response, where the individual matchOfficial elements are returned instead<br>• All formats: The matchOfficials and matchOfficial elements are only returned if the call includes the parameter-value live=yes and data is available.<br>If no data is available (for example, if the fixture is scheduled but is not playing or has not been played) then an empty liveData element is returned and some sub-elements will not be returned. However, when new information is available the feed will be updated - see our polling frequency recommendations for more information. | |Attributes` | None. Element only. |

`<match

Official>matchDetailed/match/liveData/matchDetailsExtra/matchOfficials/matchOfficial| Property | Value | |---|---| |Nesting| matchDetailed/match/liveData/matchDetailsExtra/matchOfficials/matchOfficial | |Description| Optional. Root element of the fields relating to a match official | |Notes` | Note:
• Only returned if the call includes the parameter-value live=yes and data is available.
• If no data is available (for example, if the fixture is scheduled but is not playing or has not been played) then the liveData element may be empty or some sub-elements will not be returned. However, when new information is available the feed will be updated - see our polling frequency recommendations for more information. |

Attribute Required Description Values
id Yes Unique ID (UUID) of the match official String (Alphanumeric - UUID)
ocId No Unique Opta Core ID of the match official. Returned only if the feed is queried by Opta Core legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
opId No Unique Opta ID of the match official. Returned only if the feed is queried by Opta legacy ID; the attribute is not present otherwise. Empty string if no such value exists. String
type Yes The type of match official - example: Main | Assistant referee 1 | Assistant referee 2 | Fourth official | Video Assistant Referee |Assistant VAR Official | String
firstName Yes The first name of the match official String
lastName Yes The last name/second name of the match official String
shortFirstName Yes The short first name of the match official String
shortLastName Yes The short last name of the match official String
knownName No The known name of the match official String

VAR Reporting Outcomes

When a VAR review takes place, analysts collect the type of event being reviewed, the team and player involved, and the decision of the review. The outcome describes what stands in the match after review.

Concept Description
type Original event or decision that caused the VAR review. Appears in the VAR element and aligns with the varReason value in matchDetails.
outcome Result of the VAR review; the value is the event that stands in the match.
decision Referee decision after review. Cancelled means the original event was cancelled and outcome gives the event that stands. Confirmed means the original event stands.
VAR Event / type Referee Decision / decision Outcome / outcome Explanation
Goal awarded Confirmed Goal Original decision is not changed after review.
Goal awarded Cancelled No goal Original decision is changed after review.
Goal not awarded Confirmed No goal Original decision is not changed after review.
Goal not awarded Cancelled Goal Original decision is changed after review.
Penalty awarded Confirmed Penalty Original decision is not changed after review.
Penalty awarded Cancelled No penalty Original decision is changed after review.
Penalty not awarded Confirmed No penalty Original decision is not changed after review.
Penalty not awarded Cancelled Penalty Original decision is changed after review.
Red card given Confirmed Red card Original decision is not changed after review.
Red card given Cancelled No red card Original decision is changed after review.
Card upgrade Confirmed No change Original decision is not changed after review.
Card upgrade Cancelled Card upgraded Original decision is changed after review.
Mistaken identity Confirmed Player originally cautioned/sent off confirmed Original decision is not changed after review.
Mistaken identity Cancelled Ref cautions/sends off a different player Original decision is changed after review.
Other Cancelled n/a Original decision is not changed after review.
Other Confirmed n/a Original decision is changed after review.

VAR Attribute Usage Patterns

Description Associated Attributes Node / Element
VAR review flag. Shows that there is a delay, the incident type requiring review, and the relevant team and player IDs. These attributes appear only while a VAR review is taking place and disappear after the review. delay, varReason, playerId, contestantId matchDetails
VAR information for goal events. Shows that a goal has been awarded following review and whether the goal was originally awarded and confirmed or only awarded following review. The player attached to a VAR goal event may not always be the scorer; the review can concern another player, such as an offside check. varReviewed, originalDecision goal
All VAR events in a game. Lists all VAR events, player and team involved, event reviewed, whether the original decision was upheld, and the outcome. This list updates during a game as more events are reviewed. type, decision, outcome, playerId, playerName, optaEventId, contestantId, periodId, timeMin, timeMinSec, lastUpdated VAR / liveData

The decision value in the VAR element is always Confirmed or Cancelled.

For goal events, originalDecision is only Goal awarded or Goal not awarded.