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

Match Calendar — events by Period

Purpose

The calendar returns Prematch matches that start within the selected period:

  • in the next 2, 4, 6, or 12 hours;
  • today — from the current moment until the end of the day;
  • on a specific day: tomorrow, the day after tomorrow, and so on, up to 5 days ahead.

It is convenient for “Upcoming matches”, “Today”, “Tomorrow” blocks and day tabs: there is no need to load the whole line of a sport and filter it on your side.

The calendar is the same events method with two additional path segments. The response has the same structure and contains only the matches of the selected period.

Request

GET https://YOUR_API_DOMAIN/v1/events/{sportId}/{tournamentId}/{format}/{count}/line/{hours}/{days}/{lang}

Pass the API key in the HTTP header:

Package: YOUR_API_KEY

Path Parameters

ParameterTypeRequiredDescription
sportIdnumberyesSport ID — from menu or sports for line
tournamentIdnumberyesTournament ID, or 0 for all tournaments of the sport
formatstringyessub — matches are grouped by tournament, as in events
countnumberyesPass 50. The value does not affect the response
typestringyesOnly line: the calendar works for Prematch
hoursnumberyesPeriod in hours from now: 2, 4, 6, or 12. 0 — the period is set by days
daysnumberyesDay: 0 — today (until the end of the day), 1 — tomorrow, 2 — the day after tomorrow … 5
langstringyesLanguage of names; must be included in the client’s plan

How the Period Is Selected

hoursdaysMatches returned
2, 4, 6, 12anyStart from now until “now + N hours” (days is ignored)
00Today: from now until the end of the day
01…5Only that calendar day, 00:00–24:00 (1 — tomorrow)
0greater than 5Empty list: the calendar looks no further than 5 days ahead

Period rules:

  • Days follow Kyiv time (Europe/Kyiv: UTC+3 in summer, UTC+2 in winter).
  • Matches that have already started are not included — they are in Live.
  • Other hours values (for example 3) do not cause an error: the period is defined by days, as with hours=0.
  • Tournaments without matches in the selected period are not included in the response.
  • The “Top” rule of events does not apply to the calendar: all matches of the period are returned. Tournaments are ordered by popularity (top leagues first), matches within a tournament by start time.

Optional Query Parameters

ParameterTypeDefaultDescription
oddsbooleantruefalse — response without odds: matches have no game_oc_list, other fields are the same

For a schedule without betting data, pass odds=false — the response is several times smaller. The calendar does not support esports: use events with cybersport=true instead.

Request Examples

Football, matches in the next 2 hours:

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

Football, all matches today (until the end of the day), without odds:

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/events/1/0/sub/50/line/0/0/ru?odds=false' \
  --header 'Package: YOUR_API_KEY'

Football, all matches tomorrow:

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

Matches of one tournament on the day after tomorrow — replace 0 with the tournamentId:

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

Response

The response structure is the same as in events: body is a list of tournaments, each with an events_list of matches. Match fields are described in the match model.

{
  "status": 1,
  "page": "/v1/events",
  "body": [
    {
      "tournament_id": 1706694,
      "tournament_name": "UEFA Nations League",
      "events_list": [
        {
          "game_id": 758182302,
          "game_start": 1791295200,
          "opp_1_name": "Kazakhstan",
          "opp_2_name": "Faroe Islands",
          "game_oc_counter": 1261
        }
      ]
    }
  ]
}

The example is abridged: a match in the response has the same fields as in events.

If there are no matches in the selected period, the response is successful with an empty list:

{
  "status": 1,
  "page": "/v1/events",
  "body": []
}

Key, language, and access errors are the same as for other methods: Error Handling.

How Many Matches Are Returned

Example for football (October 6, 2026, around 16:20 Kyiv time):

RequestPeriodTournamentsMatches
.../line/2/0/runext 2 hours2534
.../line/4/0/runext 4 hours3173
.../line/12/0/runext 12 hours67223
.../line/0/0/rutoday until the end of the day61204
.../line/0/1/rutomorrow78199
.../line/0/5/ruin 5 days94351

These figures describe specific responses. They are not a permanent description of the API.

Update Frequency

The calendar is built from the same Prematch line as events, so its data is just as fresh. The period shifts over time, so requesting the calendar once every 1–2 minutes is enough. Matches that have started move to Live — get them through events with type=live.