SportAPI Documentation
EN
S Product documentationSport Line API
v1
Service & pricing ↗ Get access ↗
Sport Line API / EVENTS — match list

events Method — Match List

Purpose

The events method returns matches for a selected sport. You can optionally limit the list to one tournament.

The response contains:

  • tournament information;
  • main match data;
  • teams or participants;
  • start time;
  • current score and period for Live;
  • a short set of betting markets and odds;
  • available Live statistics, video, and tracker ID.

Use the event method to retrieve the complete betting market list for one match.

All fields are documented separately in the Sport Line API Field Reference.

Before Making the Request

The request requires sportId. Retrieve it through menu or sports.

To request matches from a specific tournament, you also need tournamentId. Retrieve it from menu or tournaments.

Do not use stored static sportId and tournamentId values without checking the current navigation. These IDs must be present in the current menu, or obtained through the sports → countries → tournaments sequence for the same live or line type.

The API shows only sections that currently contain matches. If the only match in a tournament ends or disappears, the tournament will be absent from the next navigation response. If that was the sport’s only match, the sport itself will disappear as well.

Even when using tournamentId=0, take sportId from a current API response.

Request

GET https://YOUR_API_DOMAIN/v1/events/{sportId}/{tournamentId}/{format}/{count}/{type}/{lang}

Send the API key in the HTTP header:

Package: YOUR_API_KEY

Path Parameters

ParameterTypeRequiredDescription
sportIdnumberyesSport ID
tournamentIdnumberyesTournament ID. Pass 0 to retrieve matches from all available tournaments of the selected sport
formatstringyesevents supports only sub, which groups matches by tournament
countnumberyesOriginally controlled the amount of returned data. This limit has been removed: pass 50, and the API will return all available matches in the selected scope
typestringyesSports line type: live or line
langstringyesLanguage of names. It must be supported by the API and included in the client’s subscription

Values of type:

ValueMatches returned
liveMatches currently in progress
lineUpcoming Prematch matches

The format Parameter

The match list supports only the sub format. It groups matches by tournament:

body
└── tournament
    └── events_list
        └── matches

The count Parameter

The parameter was created to limit the amount of returned data, but the limit was later removed. The segment remains a required part of the URL for compatibility.

Always pass 50. Regardless of this value, the API returns all available matches for the selected sport or tournament. Do not use the parameter for pagination or response size limits.

Optional Query Parameter

ParameterTypeDefaultDescription
cybersportbooleanfalseSwitches the method to esports matches

Example:

GET https://YOUR_API_DOMAIN/v1/events/{sportId}/0/sub/50/live/en?cybersport=true

The full responses stored with this documentation were retrieved without query parameters, which means cybersport=false.

Live Request Example

This example requests all Live football matches from all available tournaments:

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/events/1/0/sub/50/live/en' \
  --header 'Package: YOUR_API_KEY'

Prematch Request Example

This example requests all Prematch football matches from all available tournaments:

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/events/1/0/sub/50/line/en' \
  --header 'Package: YOUR_API_KEY'

To retrieve matches from only one tournament, replace 0 with its tournamentId:

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/events/1/1205475/sub/50/live/en' \
  --header 'Package: YOUR_API_KEY'

Shortened Live Response Example

The following excerpt comes from a real English response. It contains one match, one betting market, three selections, and one statistics row.

{
  "status": 1,
  "page": "/v1/events",
  "body": [
    {
      "tournament_id": 1205475,
      "tournament_name": "Australia. NPL Northern Territory",
      "events_list": [
        {
          "sgame_id": "0",
          "stat_id": "0",
          "game_id": 746037229,
          "game_start": 1787310000,
          "country_id": 4,
          "country_name": "Australia",
          "tournament_id": 1205475,
          "tournament_name": "Australia. NPL Northern Territory",
          "opp_1_name": "Garuda Darwin",
          "opp_2_name": "Darwin Olympic",
          "game_oc_counter": 134,
          "game_oc_list": [
            {
              "group_id": 1,
              "group_name": "1X2",
              "columns": 3,
              "oc_list": [
                {
                  "oc_group_name": "1X2",
                  "oc_name": "W2",
                  "oc_rate": 1.064,
                  "oc_size": 0,
                  "oc_pointer": "746037229|1|3|0",
                  "oc_block": false,
                  "op_id": null
                },
                {
                  "oc_group_name": "1X2",
                  "oc_name": "X",
                  "oc_rate": 10.0,
                  "oc_size": 0,
                  "oc_pointer": "746037229|1|2|0",
                  "oc_block": false,
                  "op_id": null
                },
                {
                  "oc_group_name": "1X2",
                  "oc_name": "W1",
                  "oc_rate": 27.0,
                  "oc_size": 0,
                  "oc_pointer": "746037229|1|1|0",
                  "oc_block": false,
                  "op_id": null
                }
              ]
            }
          ],
          "sport_id": 1,
          "sport_name": "Football",
          "timer": 4617,
          "score_full": "0:1",
          "score_period": "0:1;0:0",
          "stat_list": [
            {
              "id": 45,
              "name": "Attacks",
              "opp1": "62",
              "opp2": "58"
            }
          ],
          "period_name": "2nd half",
          "vi": "DR_2_1783062440",
          "zp": 746037229
        }
      ]
    }
  ]
}

This is a shortened excerpt, not a complete match object. Full responses are linked at the end of this document.

Response Structure

Top-level Fields

FieldTypeDescription
statusnumberRequest status. A successful response returns 1
pagestringMethod name. events returns /v1/events
bodyarrayTournaments containing matches

Tournament Object

FieldTypeDescription
tournament_idnumberTournament ID
tournament_namestringTournament name in the selected language
events_listarrayMatches in this tournament

Main Match Fields

FieldTypeDescription
game_idnumberMatch ID. Used to request the detailed event method
sgame_idstringReserved test field for match, team, and player statistics. It is not currently used by the API
stat_idstringReserved test field for detailed statistics. It is not currently used by the API
game_midnumber or nullMain match ID. A submatch has its own game_id, while game_mid points to the main match
game_numnumberLegacy unused field scheduled for removal from the API
game_startnumberMatch start time as a Unix timestamp in seconds
sport_idnumberSport ID
sport_namestringSport name
country_idnumberCountry ID
country_namestringCountry name
tournament_idnumberTournament ID
tournament_namestringTournament name
game_dop_namestringSubmatch type name, such as Corners, Yellow Cards, or 1st Half
game_deskstringGame segment type, such as Half, Set, or Quarter

A Prematch match’s game_id is not retained when it moves to Live. A new game_id is generated for Live, so do not link Prematch and Live matches by this field.

Do not treat sgame_id, stat_id, game_num, stat_list_extra, or game_plan as required integration fields. They are legacy, test, or reserved fields. game_num is scheduled for removal from the API.

Teams or Participants

FieldTypeDescription
opp_1_namestringFirst team or participant name
opp_2_namestringSecond team or participant name
opp_1_idnumberPrimary ID of the first team or participant
opp_2_idnumberPrimary ID of the second team or participant
opp_1_idsarray of numberParticipant IDs for the first side when it contains multiple players or teams
opp_2_idsarray of numberParticipant IDs for the second side when it contains multiple players or teams
opp_1_iconstringIcon file name for the first team or participant
opp_2_iconstringIcon file name for the second team or participant

The opp_1_ids and opp_2_ids arrays are used when one side of a match contains multiple participants. Examples include a tennis doubles team or a group match with several players or teams on each side.

Ready-to-use Team and Participant Icons

Use the standard SportAPI icons for teams and participants:

https://cdn.sportapi.net/opp/v1/color/{iconName}.webp

Take iconName from opp_1_icon or opp_2_icon. In real responses, the name may include a .png extension. Remove the original extension before creating the CDN URL, then add .webp through the URL template.

For example:

opp_1_icon: 8bd073a686a067e6732d8d1688a517c0.png
iconName:    8bd073a686a067e6732d8d1688a517c0

Complete URL:

https://cdn.sportapi.net/opp/v1/color/8bd073a686a067e6732d8d1688a517c0.webp

Apply the same rule to opp_2_icon.

Score, Period, and Live Data

FieldTypeDescription
timernumberCurrent match timer in seconds. Divide by 60 to obtain minutes. Usually 0 in Prematch
score_fullstringCurrent overall score
score_periodstringCurrent period score. May be an empty string
score_extrastringTennis game score, such as 0:15. Primarily used in tennis and may appear in related formats, including virtual tennis
period_namestringCurrent period name. Usually an empty string in Prematch
extra_timestringAdded minutes, for example +10
finaleboolean or nullIndicates that the match has ended. Not available for every match
pitchstringID of the participant serving in applicable sports. May be an empty string
stat_listarrayCurrent match statistics
stat_list_extraarrayReserved test field for additional match descriptions. It is not currently used
sub_gamesarrayNot used by events and returned as []. The submatch list is available only in a specific event response
event_planarrayNot used by events and returned as []. The component match list is available only in a specific event response
game_planany JSON value or nullReserved test field for match descriptions, such as a tournament stage or court type. It is not currently used

In Prematch, many Live fields contain default values such as 0, an empty string, an empty array, or null. The client must handle all of these variants correctly.

Object in stat_list

FieldTypeDescription
idnumberStatistic ID
namestringStatistic name
opp1stringValue for the first team or participant
opp2stringValue for the second team or participant

Object in sub_games

FieldTypeDescription
game_idnumber or nullSub-event ID
game_numnumber or nullSub-event number
game_namestring or nullSub-event name

sub_games refers to separate submatch types such as corners, cards, fouls, first half only, player statistics, and other available options.

In the events match list, the field is returned as an empty array:

"sub_games": []

The events method does not use sub_games; the field is returned only as []. The submatch list is available when requesting a specific match through event. Each item contains a submatch ID but not its odds. To retrieve the odds, make a separate event request using the selected submatch’s game_id.

The events method does not use event_plan; the field is returned as [] in match lists. A populated component match list is available only when requesting a specific match through event.

Betting Markets and Odds

Match fieldTypeDescription
game_oc_counternumberTotal count of available bets or selections for the match
game_oc_listarrayShort list of the main markets and best odds included in the match list

game_oc_counter may be significantly greater than the number of items actually present in game_oc_list. Use event to retrieve the full betting market list for a selected match.

The Short List Depends on the Sport

Do not assume that game_oc_list contains the same markets, names, or number of selections for every sport.

For example:

  • in football, the short list may contain a 1X2 market with the first team to win, a draw, and the second team to win;
  • in basketball, selections for the first or second team to win are often returned instead of 1X2;
  • tennis has no draw selection.

Handle the array dynamically during integration:

  1. Do not build the interface only around the 1X2 market.
  2. Do not expect a draw selection to be present.
  3. Read the actual group_name, columns, and oc_list from the response.
  4. Do not rely on the same market and selection order across different sports.
  5. To open all available selections, call event using the selected match’s game_id.

Market in game_oc_list

FieldTypeDescription
group_idnumberBetting market ID
group_namestringMarket name
columnsnumberRecommended number of display columns
oc_listarraySelections and odds in the market

Selection in oc_list

FieldTypeDescription
oc_group_namestringBetting market name
oc_namestringSelection name
oc_ratenumberCurrent odds value
oc_sizestring or numberHandicap, total, or another parameter value. Both types occur in real responses
oc_pointerstringUnique bet or selection code. Used to pass the selected bet to the separate bet placement and settlement system
oc_blockbooleantrue — the selection is blocked and unavailable; false — it is available
op_idnumber or nullPlayer or participant ID for player-specific bets, when applicable

Odds and oc_block may change with every response update.

Video and Live 3D Tracker

FieldTypeDescription
vistring or nullLive video stream ID. null means no ID was provided
zpnumber or nullLive 3D Tracker ID. Pass this value to the tracker as gameid
vanumber or null1 — video is available; null — no video is available. The value 0 is not used

If zp is null, Live 3D Tracker is unavailable for the match. The tracker works only for Live matches and supported sports.

More information:

Live and Prematch Differences

The match object has the same structure, but its fields are populated differently:

  • Live updates the timer, score, period, and statistics;
  • in Prematch, these fields usually contain initial or empty values;
  • vi and zp relate to additional Live features and may be null;
  • odds and selection blocking update independently in Live and Prematch;
  • when a match moves from Prematch to Live, it receives a new game_id.

Request and store Live and Prematch separately.

Snapshot of Saved Responses

The Live and Prematch examples use football (sportId=1) and tournamentId=0, so each file contains all matches from all available football tournaments. The format is sub, and the technical count value is 50.

Line typeTournaments in responseMatches in response
Live3339
Prematch (line)4272638

These figures describe specific responses retrieved on August 21, 2026. They are not a permanent description of the API.

Full unabridged responses:

The files contain only API response bodies. No API key is stored in them.

Update Frequency

Recommended request frequency for events:

  • Live — no more than once every 7 seconds;
  • Prematch (line) — no more than once every 30 seconds.

See Data Update Guidelines for more details.

Key, subscription, and parameter errors are documented in Error Handling.