How Table Tennis Rankings Work (And How to Access Them via API)
Understand how table tennis world rankings, ranking points and movement work, including important 2026 changes, then learn how to retrieve and store current and historical ranking data through an API.

How Table Tennis Rankings Work (And How to Access Them via API)
Learn how table tennis rankings, points, movement and historical ranking snapshots work, then build current and historical player-ranking features with a developer-friendly Table Tennis Rankings API.
Rankings are one of the most important pieces of context in table tennis. They help users understand player strength, follow progression over time, compare opponents before a match and add context to tournament fields.
For developers, however, a ranking should never be treated as only one number. A production application also needs the ranking date, points, category, source, previous position and a stable player ID.
This guide explains the ranking concepts that matter for software development and then shows how to model, query and store ranking data through an API.
1. What Does a Table Tennis Ranking Represent?
A ranking is an ordered snapshot of players under a specific ranking system and category at a specific point in time.
That last part matters. A player being ranked number 8 is incomplete information unless you also know which ranking list and which ranking date the value belongs to.
Position
The player’s place in the selected ranking list.
Points
The ranking points associated with that release where supplied.
Ranking date
The date or week the ranking snapshot represents.
Category
The singles, doubles or other ranking list represented.
Treat a ranking as a time-stamped record, not a permanent attribute on the player.
2. What Should a Ranking Record Contain?
| Field | Why it matters |
|---|---|
| player_id | Connects the ranking to a stable player identity. |
| position | Stores the player’s place in that release. |
| points | Allows comparison and point-trend analysis where available. |
| ranking_date | Makes the record historically meaningful. |
| previous_position | Supports movement indicators. |
| ranking_category | Prevents different ranking lists from being mixed together. |
| ranking_source | Preserves attribution and ranking-system identity. |
{
"ranking_date": "2026-07-27",
"position": 8,
"previous_position": 10,
"movement": 2,
"points": 6420,
"ranking_source": "PRODUCTION_SOURCE",
"ranking_category": "mens_singles",
"player": {
"id": "player_tt_101",
"name": "Player A",
"nationality": "EX"
}
}
3. Important Table Tennis Ranking Changes in 2026
Ranking systems evolve, so developers should avoid hard-coding rules that assume the regulations will never change.
Senior and Youth rankings moved to Monday publication
From 2026, ITTF Senior and Youth rankings are released on Mondays at 08:00 UTC, replacing the previous Tuesday publication schedule.
Senior points distribution was adjusted
ITTF also announced a revised Senior points structure for ITTF and WTT events. The update awards more points in middle rounds while maintaining the existing allocations for winners and first-round exits.
The practical lesson for developers is simple: if your application calculates derived ranking analytics, store the ranking release and regulation context rather than assuming an old points table is still valid.
4. Table Tennis Has Multiple Ranking Categories
A common database mistake is to create one field called
world_ranking and assume it describes everything.
The official ITTF world-ranking area currently publishes separate lists for Men’s Singles, Women’s Singles, Men’s Doubles, Women’s Doubles, Mixed Doubles and doubles-individual categories. Separate ITTF resources also cover Youth, Team and Para rankings.
Men’s Singles
A distinct ranking series with its own dated releases.
Women’s Singles
Store independently from all other categories.
Doubles
Men, women and mixed doubles require their own category identifiers.
Other ranking families
Youth, Team and Para rankings should remain separate data products.
ranking_category: mens_singles womens_singles mens_doubles womens_doubles mixed_doubles ...
5. How Should Developers Think About Ranking Points?
Ranking points come from eligible competition results under the relevant ranking regulations. Event value, round reached, expiration and special ranking rules can all affect the final total.
Historically, ITTF has described the core singles ranking concept as using a player’s best eight results in the applicable period. Because current regulations can change details around eligibility, expiration and point distribution, the safest software design is to consume the published ranking record rather than reconstruct the official total from partial match data.
Eligible tournament results
↓
Ranking points by event / round
↓
Applicable ranking regulations
↓
Published ranking total
↓
Ranking position
6. Why Rankings Change Even When a Player Is Not Playing
Rankings are not only affected by the newest match result. Older results may stop contributing under the applicable ranking regulations, while other players can add stronger results.
This means a player can move up or down between releases without playing a match during the intervening period.
Developer implication
Do not infer ranking movement only from a player’s latest match. Compare two actual ranking snapshots.
7. How to Calculate Ranking Movement
Ranking movement compares the current position with the previous comparable ranking release.
previous_position = 10 current_position = 8 movement = previous_position - current_position movement = +2
Moved up
10 → 8 produces +2 positions.
Moved down
8 → 11 produces -3 positions.
No change
The current and previous positions are identical.
New entry
No comparable previous ranking is available.
Do not calculate movement across unrelated ranking categories or incomparable releases.
8. Access Current Rankings Through an API
A ranking endpoint should let your application retrieve the latest supported release and filter it by category or player.
GET /v1/table-tennis/rankings
GET /v1/table-tennis/rankings
?ranking_date=latest
&category=mens_singles
&page=1
&page_size=100
Useful ranking filters
| Parameter | Example | Purpose |
|---|---|---|
| ranking_date | latest | Retrieve the current or a historical release. |
| category | mens_singles | Select the ranking list. |
| player_id | player_tt_101 | Return one player’s ranking record. |
| country | EX | Filter by nationality where supported. |
| min_position | 1 | Start a ranking range. |
| max_position | 100 | End a ranking range. |
9. Retrieve Rankings With JavaScript
const params = new URLSearchParams({
ranking_date: 'latest',
category: 'mens_singles',
page: '1',
page_size: '100'
});
const response = await fetch(
`/api/table-tennis/rankings?${params}`
);
if (!response.ok) {
throw new Error(
`Ranking request failed: ${response.status}`
);
}
const payload = await response.json();
for (const ranking of payload.data) {
console.log(
ranking.position,
ranking.player.name,
ranking.points
);
}
Keep the private provider credential on your backend exactly as you would for live-score endpoints.
10. Retrieve Rankings With Python
import requests
response = requests.get(
"https://api.example.com/v1/table-tennis/rankings",
params={
"ranking_date": "latest",
"category": "mens_singles",
"page": 1,
"page_size": 100,
},
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Accept": "application/json",
},
timeout=15,
)
response.raise_for_status()
rankings = response.json()
11. Retrieve Rankings With PHP
<?php
$query = http_build_query([
'ranking_date' => 'latest',
'category' => 'mens_singles',
'page' => 1,
'page_size' => 100,
]);
$url = 'https://api.example.com/v1/table-tennis/rankings?' . $query;
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
'Accept: application/json',
],
CURLOPT_TIMEOUT => 15,
]);
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
12. Store Historical Ranking Snapshots
Do not overwrite a player’s old ranking every time a new release arrives. If you do, you lose ranking charts, historical movement and the ranking context that existed before earlier matches.
player_rankings id player_id ranking_source ranking_category ranking_date position previous_position points created_at UNIQUE: player_id ranking_source ranking_category ranking_date
Historical API request
GET /v1/table-tennis/players/player_tt_101/rankings
?date_from=2025-01-01
&date_to=2026-08-07
&sort=asc
{
"data": [
{
"ranking_date": "2026-05-04",
"position": 14,
"points": 5310
},
{
"ranking_date": "2026-06-01",
"position": 11,
"points": 5740
},
{
"ranking_date": "2026-07-27",
"position": 8,
"points": 6420
}
]
}
13. Build a Ranking History Chart
Once historical snapshots are stored, ranking progression becomes a straightforward time series.
const chartData = rankingHistory.map(item => ({
x: item.ranking_date,
y: item.position
}));
14. Use Rankings on Match Preview Pages
Example comparison
Player A · Ranking 8 · Previous 10 · Movement +2
Player B · Ranking 14 · Previous 13 · Movement -1
Ranking is useful context, but a match preview becomes much stronger when it also includes recent form, head-to-head history and broader statistics.
Keep those signals separate. Do not present a ranking difference as a guaranteed prediction.
15. Use Rankings as One Prediction Feature
Current ranking
A high-level player-strength signal.
Ranking difference
Compares the players before the target match.
Ranking movement
Adds recent ranking direction.
Historical ranking
Reconstructs what was known before an older match.
16. Ranking and Tournament Seeding Are Different
| Ranking | Tournament seed |
|---|---|
| Belongs to a ranking system. | Belongs to a specific tournament. |
| Changes across ranking releases. | Assigned for that event or draw. |
| Useful across many competitions. | Relevant to one tournament context. |
| Store by ranking date. | Store against the tournament entry. |
Store both values independently when both are available.
17. Cache Rankings Around Releases, Not Live Points
Rankings are slow-changing reference data compared with live match scores. They should not be polled every few seconds.
Detect new ranking release
↓
Fetch ranking list
↓
Store historical snapshot
↓
Update current player ranking
↓
Invalidate ranking cache
↓
Serve cached rankings
Because ITTF Senior and Youth rankings moved to Monday publication in 2026, release-aware refresh logic is a better fit than high-frequency polling.
18. Handle Ranking Data Carefully
- Preserve the ranking date
- Preserve the ranking category
- Preserve the ranking source
- Use stable player IDs
- Do not guess missing ranking points
- Do not mix singles and doubles lists
- Do not treat tournament seed as world ranking
- Do not overwrite historical ranking snapshots
- Version any derived calculation logic
- Confirm rights before storing or redistributing ranking history
19. Production Ranking API Checklist
- Confirm which ranking sources the API supports
- Confirm which ranking categories are available
- Check historical ranking depth
- Store one record per ranking release
- Use a unique key across player, source, category and date
- Cache current rankings between releases
- Keep ranking history separate from current player profile fields
- Use pre-match rankings in historical prediction models
- Store tournament seed independently
- Verify commercial display and storage rights
Common Ranking API Mistakes
Saving only current rank
You lose the entire ranking timeline.
Mixing categories
Singles and doubles records should never share one ranking series.
Using names as keys
Join data through stable player IDs.
Polling too often
Rankings should be refreshed around releases.
Claiming an official source
Only label data as ITTF where the source and rights support it.
Future-data leakage
Historical models must use rankings available before the match.
Frequently Asked Questions
When are ITTF Senior and Youth rankings published in 2026?
ITTF announced that from 2026 both are released on Mondays at 08:00 UTC.
Can a player’s ranking change without playing that week?
Yes. Ranking totals and positions can also be affected by changes in which results contribute and by results achieved by other players.
Can I access historical table tennis rankings through an API?
Yes where the selected API product includes historical ranking snapshots.
What is ranking movement?
It is the position change between two comparable ranking releases.
Are ranking and tournament seed the same?
No. Ranking belongs to a ranking system; seeding belongs to a specific tournament.
Can rankings be used in prediction models?
Yes, as one signal alongside form, statistics and H2H. Use only the ranking that was available before the match being predicted.
Official References
Build Ranking Features With the Table Tennis API
Retrieve current rankings, preserve historical snapshots, calculate movement and connect ranking context to player profiles, statistics and head-to-head pages.
Build Cricket Products With Reliable API Data
Access live scores, fixtures, ball-by-ball updates, statistics, odds, predictions and historical cricket data through one developer-friendly API.
Get API Access