Your free key in ten seconds
Sign up with Google and the key appears on the next screen, ready to use. No card, no trial clock: 50 calls a day, every day, for as long as you like.
- No card needed
- Works from any language
- Keep the same key when you upgrade
What the free key reads
Real data from every professional event, the same answers the paid plans get.
Included
/v1/matchesAny day's matches in your dates/v1/matches/{id}One match, both sides and the score/v1/results/yesterdayEvery result from yesterday/v1/eventsPast, running and scheduled events/v1/events/{id}An event and its disciplines/v1/events/{id}/matchesAn event's matches in order of play/v1/playersFind players by name or country/v1/players/{id}A player and their record/v1/rankingsThe world rankings, every list/v1/usageYour calls today, never counted/v1/matches/{id}/pointsPoint by point, with who served
On paid plans
/v1/liveScores while they are playedLive and Complete/v1/players/{id}/matchesA player's whole match listLive, Archive and Complete/v1/h2h/{a}/{b}Head to head, every meetingLive, Archive and Complete/v1/players/{id}/rankingsA player's ranking week by weekLive, Archive and Completegames, duration_s, tablePoints in every game, match length and table, null on the free keyEvery paid planbefore yesterdayOlder matches, back to December 2024Live from 1 January, Archive and Complete all of it
Your first call
Yesterday's results work on every plan, so this call always returns something.
- Put the key in a header.
Authorization: Bearerand your key. Keys in the address are refused. - Ask for yesterday. One call, every event, every finished match.
- Loop over
data. Each match has its event, round, both sides and the score.
curl https://api.tabletennisapi.com/v1/results/yesterday \
-H "Authorization: Bearer $TT_KEY"
{
"data": [{
"id": "mt_fs5ttbe2",
"event": { "name": "Champions Macao 2026 Presented by Galaxy Entertainment Group" },
"discipline": "WS", "round_name": "Final",
"status": "finished",
"sides": [{ "name": "Harimoto Miwa" }, { "name": "Chen Yi" }],
"score": { "a": 4, "b": 3 },
"games": null
}],
"meta": { "count": 1, "note": "Fields games, duration_s, table are null on the Free key..." }
}
Questions before you start
Is it really free, with no end date?
Yes. The free key has no trial period and never asks for a card. It reads yesterday, today and the calendar ahead, 50 calls a day. Paid plans add live scores, history and the fields the free key leaves empty.
What happens when I reach 50 calls?
Further calls that day get 429 quota_exceeded with the time it resets, 00:00 UTC. Nothing is charged and nothing is switched off. /v1/usage never counts, so you can always check where you stand.
I lost my key. Can you send it again?
No one can: we keep only a fingerprint of it, never the key itself. Sign in with Google, make a new key in the dashboard and revoke the old one. It takes a few seconds.
Do I get a new key when I upgrade?
No. Your key stays the same and starts reading more the moment your plan changes, so nothing in your code needs to change.