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
| Parameter | Type | Required | Description |
|---|---|---|---|
sportId | number | yes | Sport ID — from menu or sports for line |
tournamentId | number | yes | Tournament ID, or 0 for all tournaments of the sport |
format | string | yes | sub — matches are grouped by tournament, as in events |
count | number | yes | Pass 50. The value does not affect the response |
type | string | yes | Only line: the calendar works for Prematch |
hours | number | yes | Period in hours from now: 2, 4, 6, or 12. 0 — the period is set by days |
days | number | yes | Day: 0 — today (until the end of the day), 1 — tomorrow, 2 — the day after tomorrow … 5 |
lang | string | yes | Language of names; must be included in the client’s plan |
How the Period Is Selected
hours | days | Matches returned |
|---|---|---|
2, 4, 6, 12 | any | Start from now until “now + N hours” (days is ignored) |
0 | 0 | Today: from now until the end of the day |
0 | 1…5 | Only that calendar day, 00:00–24:00 (1 — tomorrow) |
0 | greater than 5 | Empty 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
hoursvalues (for example3) do not cause an error: the period is defined bydays, as withhours=0. - Tournaments without matches in the selected period are not included in the response.
- The “Top” rule of
eventsdoes 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
| Parameter | Type | Default | Description |
|---|---|---|---|
odds | boolean | true | false — 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):
| Request | Period | Tournaments | Matches |
|---|---|---|---|
.../line/2/0/ru | next 2 hours | 25 | 34 |
.../line/4/0/ru | next 4 hours | 31 | 73 |
.../line/12/0/ru | next 12 hours | 67 | 223 |
.../line/0/0/ru | today until the end of the day | 61 | 204 |
.../line/0/1/ru | tomorrow | 78 | 199 |
.../line/0/5/ru | in 5 days | 94 | 351 |
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.