/v1/events

Events: past, running and scheduled, newest first.

GEThttps://api.tabletennisapi.com/v1/events
Plans:Free keyLiveArchiveComplete

Parameters

NameInTypeRequiredWhat it doesExample
fromquerydateoptionalEvents ending on or after this day (YYYY-MM-DD)2026-09-13
toquerydateoptionalEvents starting on or before this day (YYYY-MM-DD)2026-09-13
qquerystringoptionalWords in the event name, such as "Champions" or "Doha"Harimoto
countryquerystringoptionalHost country, three letters (CHN, QAT)CHN
tierqueryintoptional1 the top senior events, 2 other senior events, 3 feeders, 4 youth, 5 other1

Run it live

GET /v1/eventsA real call to the API, from your browser
Your key stays in this page: it is sent only to api.tabletennisapi.com and never stored. Left empty, the call runs on a free key with its dates and fields, 20 calls a minute.
GEThttps://api.tabletennisapi.com/v1/events
Not run yet
Press Run it to see the answer here.

Response

A real answer from the data, two rows shown. Every field is described in the manual.

200 OKapplication/json
{
    "data": [
        {
            "id": "ev_c9k4098k",
            "name": "Contender Panagyurishte 2026 Presented by ASAREL",
            "start_date": "2026-09-08",
            "end_date": "2026-09-13",
            "venue": "Arena Asarel",
            "city": "Panagyurishte",
            "country": "BUL",
            "tier": 2,
            "utc_offset_min": 180,
            "matches": 225
        },
        {
            "id": "ev_w5hw10am",
            "name": "Champions Macao 2026 Presented by Galaxy Entertainment Group",
            "start_date": "2026-09-08",
            "end_date": "2026-09-13",
            "venue": "Macao East Asian Games Dome",
            "city": "Macao",
            "country": "MAC",
            "tier": 1,
            "utc_offset_min": 480,
            "matches": 62
        }
    ],
    "meta": {
        "count": 2,
        "next_cursor": null,
        "page": 1,
        "per_page": 2,
        "total": 2,
        "total_pages": 1,
        "next_page": null,
        "prev_page": null
    }
}

Example

curl
curl https://api.tabletennisapi.com/v1/events \
  -H "Authorization: Bearer $TT_KEY"
Python
import os, requests
res = requests.get("https://api.tabletennisapi.com/v1/events",
    headers={"Authorization": "Bearer " + os.environ["TT_KEY"]}).json()

Answers come back as data and meta; errors as error. See Errors and Pagination.