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.
_dltshould 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=jsonpis 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=yesorlive=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=yesorlive=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
decisionvalue in theVARelement is alwaysConfirmedorCancelled.For goal events,
originalDecisionis onlyGoal awardedorGoal not awarded.