DataSportAPI
Docs
Your first call in one line

The free key reads yesterday for every sport, 50 calls a day. No card.

Get a free key
Table tennis: Results
Results/v1/table-tennis/results
Table tennis: Search
Search/v1/table-tennis/search
Every sport, one key

Complete reads all sixteen sports for $249 a month.

Take Complete
Ask in plain words

"Who won at Kempton yesterday?" Your assistant picks the tool and answers from your plan.

Connect in two minutes
Showing
Documentation / Table tennis / Schedule and live

Table tennis fixtures API

Fixtures
Sport plan, liveMCP tool: fixturesKept 2 minutes

Upcoming matches by date.

This lists what is coming, with start times in UTC and the ids that carry on into results once played. It comes with the Table tennis plan.

GET/v1/table-tennis/fixtures

Try it

Your key stays in this browser and is filled in on every docs page.

GET
200 OK2182 ms2 rows shownReal answer from 2026-11-03, trimmed
{
    "data": [
        {
            "id": "tt_vf1pkfwr90",
            "event": {
                "id": "tt_qhdn2gmfkd",
                "name": "Champions Frankfurt 2026"
            },
            "date": "2026-11-03",
            "start_time": "2026-11-03T11:00:00Z",
            "discipline": "WS",
            "age_group": null,
            "para_class": null,
            "round": "round_of_32",
            "round_name": "Round of 32",
            "rubber": null,
            "status": "finished",
            "best_of": 5,
            "points_per_game": 11,
            "win_by": 2,
            "utc_offset_min": 60,
            "sides": [
                {
                    "side": "a",
                    "name": "Polcanova Sofia",
                    "country": "AUT",
                    "players": [
                        {
                            "id": "tt_9ephymbdxw",
                            "name": "Polcanova Sofia",
                            "country": "AUT"
                        }
                    ]
                },
                {
                    "side": "b",
                    "name": "Harimoto Miwa",
                    "country": "JPN",
                    "players": [
                        {
                            "id": "tt_6qcq985bnf",
                            "name": "Harimoto Miwa",
                            "country": "JPN"
                        }
                    ]
                }
            ],
            "score": {
                "a": 3,
                "b": 0
            },
            "winner": "a",
            "result_note": null,
            "games": [
                {
                    "a": 11,
                    "b": 3
                },
                {
                    "a": 11,
                    "b": 1
                },
                {
                    "a": 11,
                    "b": 0
                }
            ],
            "duration_s": 457,
            "table": 1,
            "started_at": "2026-11-03T01:21:29Z",
            "timeouts": {
                "a": 1,
                "b": 1
            },
            "cards": {
                "a": [
                    "yellow",
                    "yellow-red",
                    "yellow-red 2"
                ],
                "b": [
                    "yellow",
                    "yellow-red",
                    "yellow-red 2"
                ]
            },
            "video_review": false,
            "challenges_each": 99,
            "serving": null
        },
        {
            "id": "tt_73xb5atvfw",
            "event": {
                "id": "tt_qhdn2gmfkd",
                "name": "Champions Frankfurt 2026"
            },
            "date": "2026-11-03",
            "start_time": "2026-11-03T11:35:00Z",
            "discipline": "MS",
            "age_group": null,
            "para_class": null,
            "round": "round_of_32",
            "round_name": "Round of 32",
            "rubber": null,
            "status": "finished",
            "best_of": 5,
            "points_per_game": 11,
            "win_by": 2,
            "utc_offset_min": 60,
            "sides": [
                {
                    "side": "a",
                    "name": "Zhou Qihao",
                    "country": "CHN",
                    "players": [
                        {
                            "id": "tt_zywf2zafdh",
                            "name": "Zhou Qihao",
                            "country": "CHN"
                        }
                    ]
                },
                {
                    "side": "b",
                    "name": "Poret Thibault",
                    "country": "FRA",
                    "players": [
                        {
                            "id": "tt_9f42fghsg7",
                            "name": "Poret Thibault",
                            "country": "FRA"
                        }
                    ]
                }
            ],
            "score": {
                "a": 0,
                "b": 3
            },
            "winner": "b",
            "result_note": null,
            "games": [
                {
                    "a": 0,
                    "b": 11
                },
                {
                    "a": 0,
                    "b": 11
                },
                {
                    "a": 0,
                    "b": 11
                }
            ],
            "duration_s": 69532,
            "table": 1,
            "started_at": "2026-11-03T01:30:58Z",
            "timeouts": {
                "a": 0,
                "b": 0
            },
            "cards": {
                "a": [],
                "b": []
            },
            "video_review": false,
            "challenges_each": 99,
            "serving": null
        }
    ],
    "meta": {
        "sport": "table-tennis",
        "endpoint": "/fixtures",
        "count": 13,
        "page": 1,
        "per_page": 50,
        "total": 13,
        "total_pages": 1,
        "next_cursor": null,
        "next_page": null,
        "prev_page": null,
        "cached": false,
        "age_seconds": 0
    }
}
No key yet? Get a free key: it reads yesterday for every sport and is filled in here once made.

Parameters

Query values this call takes. Anything else is refused with bad_param and the list it accepts.

NameTypeWhat it does
datedateoptionalOne day, written YYYY-MM-DD. Leave it out for the default day. The free key reads yesterday only.
competitionidoptionalOnly this competition, by its id from Competitions.
pageintegeroptionalWhich page of rows, from 1.
per_pageintegeroptionalRows per page, up to 100 on most lists.

Returns

Each row of data, from a real answer. Every id is ours and opens its own endpoint.

FieldTypeWhat it holds
ididOur id for this record
eventobjectEvent
datedateThe day, YYYY-MM-DD
start_timedatetimeStart time
disciplinestringThe discipline
age_groupnullAge group
para_classnullPara class
roundstringThe round
round_namestringRound name
rubbernullRubber
statusstringIts state: scheduled, live, finished or similar
best_ofintegerBest of
points_per_gameintegerPoints per game
win_byintegerWin by
utc_offset_minintegerUtc offset in metresin
sideslistSides
scoreobjectThe score
winnerstringWho won
result_notenullResult note
gameslistEach game
duration_sintegerLength in seconds
tableintegerTable
started_atdatetimeStarted at
timeoutsobjectTimeouts
cardsobjectCards
video_reviewbooleanVideo review
challenges_eachintegerChallenges each
servingnullServing
metaWhat it holds
sport, endpointWhat you asked
countRows in this answer
page, per_page, total, next_cursorWhere you are in a paged list, when it is paged
as_ofWhen the data was built
cached, age_secondsWhether this is a stored copy, and its age
accessOn the free key: what it reads, and the plan that opens the rest

Errors

Codes this call can give. Each is explained in Errors.

StatusCodeWhen
401no_keyNo key sent, or not in a form we read
401bad_keyA key we do not know
403planThe free key, or a sport you do not hold
422bad_paramA value this call does not take
429rateOver the calls a minute for your plan
503upstreamThe data is not answering; retry after Retry-After

Fixtures comes with the Table tennis plan, $19 a month, with every date held and 250,000 calls a month.

Add Table tennis