---
type: "firecrawl-provider"
description: "Public WTT table tennis events, official match results and cards, and senior/youth ITTF ranking lists."
use_when: "Public WTT table tennis events, official match results and cards, and senior/youth ITTF ranking lists."
categories: "Sports"
capabilities: 5
credits_per_call: 5
---
# World Table Tennis on Firecrawl Alexandria

Public WTT table tennis events, official match results and cards, and senior/youth ITTF ranking lists.

- Categories: Sports
- Category index: [Sports category](https://firecrawl.dev/alexandria/agents/categories/sports)
- Provider key: `worldtabletennis-com`
- Access: Firecrawl credits
- Cost: 5 credits per call

## More

- [Human guide](https://firecrawl.dev/app/alexandria/worldtabletennis-com)
- [OpenAPI spec](https://firecrawl.dev/alexandria/agents/providers/worldtabletennis-com/openapi.json)

## Capabilities

- [Event results](https://firecrawl.dev/alexandria/agents/providers/worldtabletennis-com/table-tennis/event_results): Official match results for one completed WTT/ITTF event, identified by its numeric event id (from `events`). Returns every official match with round, start time and, by default, the full match card (competitors, game scores, winner). Filter by sub-event (MS, WS, MD, WD, XD, MT, WT, XT) and round (FNL, SFNL, QFNL, 8FNL, R32, R64, RND1.., GP). Events still in progress or not yet archived return an upstream not-found error.
- [Events](https://firecrawl.dev/alexandria/agents/providers/worldtabletennis-com/table-tennis/events): Search the WTT/ITTF tournament calendar (2022 to date, including scheduled events). Input optionally narrows by season year, free-text name/city/country and three-letter association code; returns event ids (needed by event_results and match), names, tier, dates, venue and sub-events, latest first.
- [Match](https://firecrawl.dev/alexandria/agents/providers/worldtabletennis-com/table-tennis/match): One match card by event id and WTT document code (as listed by `event_results`): competitors with ITTF ids and associations, best-of, per-game points, overall score, status, venue, table, local/UTC start and duration. Unknown document codes return an upstream not-found error.
- [Ranking weeks](https://firecrawl.dev/alexandria/agents/providers/worldtabletennis-com/table-tennis/ranking_weeks): Published ITTF senior ranking weeks (year, week number, publication date), newest first. Input is just an optional limit; useful to learn which week the `rankings` list reflects and how often it updates.
- [Rankings](https://firecrawl.dev/alexandria/agents/providers/worldtabletennis-com/table-tennis/rankings): Current ITTF world ranking list. Input selects senior (SEN, default) or youth (YOU) category, the list (MS/WS singles, MD/WD/XD doubles pairs, MDI/WDI/XDI doubles individual; default MS), an optional youth age group (U19, U17, U15, U13, U11) and an optional association filter. Returns rank, previous rank, points, player or pair identity and the publication date of the week in force.

## 1. Choose this provider when

Public WTT table tennis events, official match results and cards, and senior/youth ITTF ranking lists.

## 2. Minimal request

Call `POST https://api.firecrawl.dev/v2/scrape` with `{ alexandria: { provider, capability, options } }`. For a batch, send `{ alexandria: [...] }` with up to 10 calls.

```json
{
  "provider": "worldtabletennis-com",
  "capability": "table-tennis/event_results",
  "options": {
    "event_id": 3246,
    "round": "FNL",
    "sub_event": "MS"
  }
}
```

## 3. Add provider options

Use only the options needed for the task:

- `event_id` (number, required): WTT event id, e.g. 3246 for Europe Smash Sweden 2026. Example: `10`
- `include_scores` (boolean): Embed the shaped match card under `match`; false returns the index only. Example: `false`
- `round` (string): FNL, SFNL, QFNL, 8FNL, R32, R64, R128, RND1, RND2, RND3 or GP (any group; GP01.. for one group). Example: `<round>`
- `sub_event` (string): Men/Women Singles, Men/Women/Mixed Doubles, Men/Women/Mixed Team. Example: `MS`
- `take` (number): Maximum matches returned, latest first. Example: `50`

## 4. Request through your preferred interface

### JavaScript

```javascript
const result = await firecrawl.scrape({
  alexandria: {
    provider: "worldtabletennis-com",
    capability: "table-tennis/event_results",
    options: {
      event_id: 3246,
      round: "FNL",
      sub_event: "MS",
    },
  },
});
```

### Python

```python
result = firecrawl.scrape_alexandria({
  "provider": "worldtabletennis-com",
  "capability": "table-tennis/event_results",
  "options": {
    "event_id": 3246,
    "round": "FNL",
    "sub_event": "MS"
  }
})
```

### cURL

```sh
curl https://api.firecrawl.dev/v2/scrape \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "alexandria": {
    "provider": "worldtabletennis-com",
    "capability": "table-tennis/event_results",
    "options": {
      "event_id": 3246,
      "round": "FNL",
      "sub_event": "MS"
    }
  }
}'
```

### CLI

```sh
firecrawl scrape 'worldtabletennis-com/table-tennis/event_results' \
  --options '{"event_id":3246,"round":"FNL","sub_event":"MS"}'
```


### MCP

Call the FCX MCP retrieve tool with this object:

```json
{
  "provider": "worldtabletennis-com",
  "capability": "table-tennis/event_results",
  "options": {
    "event_id": 3246,
    "round": "FNL",
    "sub_event": "MS"
  }
}
```

Ask for only the returned fields needed by the task.

## 5. Full request shape

```json
{
  "provider": "worldtabletennis-com",
  "capability": "table-tennis/event_results",
  "options": {
    "event_id": 3246,
    "round": "FNL",
    "sub_event": "MS"
  }
}
```

## 6. Response data

The response includes `success`, `provider`, `capability`, `creditsCost` and `data`. This example shows the provider payload in `data`:

```json
{
  "count": 1,
  "event_id": 3246,
  "event_url": "https://www.worldtabletennis.com/eventInfo?eventId=3246",
  "filters": {
    "round": "FNL",
    "sub_event": "MS"
  },
  "matches": [
    {
      "age_group": null,
      "document_code": "TTEMSINGLES-----------FNL-000100----------",
      "event_id": 3246,
      "match": {
        "age_group": null,
        "best_of": 7,
        "competitors": [
          {
            "association": "FRA",
            "game_points": [
              11,
              11,
              5,
              11,
              11
            ],
            "games_won": 4,
            "id": "135977",
            "irm": null,
            "name": "LEBRUN Felix",
            "players": [
              {
                "association": "FRA",
                "ittf_id": "135977",
                "name": "LEBRUN Felix"
              }
            ],
            "side": "home"
          },
          {
            "association": "JPN",
            "game_points": [
              5,
              8,
              11,
              9,
              9
            ],
            "games_won": 1,
            "id": "123980",
            "irm": null,
            "name": "HARIMOTO Tomokazu",
            "players": [
              {
                "association": "JPN",
                "ittf_id": "123980",
                "name": "HARIMOTO Tomokazu"
              }
            ],
            "side": "away"
          }
        ],
        "description": "Men's Singles - Final - Match 1",
        "document_code": "TTEMSINGLES-----------FNL-000100----------",
        "duration": "00:32:45",
        "event_id": 3246,
        "game_scores": [
          "11-5",
          "11-8",
          "5-11",
          "11-9",
          "11-9"
        ],
        "is_team_tie": false,
        "match_number": 100,
        "overall_score": "4-1",
        "round": "Final",
        "round_code": "FNL",
        "start_local": "08/16/2026 19:00:00",
        "start_utc": "08/16/2026 17:00:00",
        "status": "OFFICIAL",
        "sub_event": "Men's Singles",
        "table": "Table 1",
        "team_matches": [],
        "venue": "Malmö Arena",
        "winner": {
          "association": "FRA",
          "id": "135977",
          "name": "LEBRUN Felix"
        }
      },
      "match_number": 100,
      "result_status": "OFFICIAL",
      "round": "Final",
      "round_code": "FNL",
      "start_local": "2026-08-16T19:00:00",
      "sub_event": "MS",
      "sub_event_name": "Men Singles"
    }
  ],
  "observed_at_ms": 1789447290000,
  "source_url": "https://wtt-web-frontdoor-cthahjeqhbh6aqe3.a01.azurefd.net/websitearchivedresults/3246/officialresult/officialresult.json",
  "total_matching": 1,
  "total_official": 307
}
```

## API reference-derived contract

The following capability contract is generated from the same normalized Alexandria API reference exposed in the API spec.

### Event results

- Capability: `table-tennis/event_results`
- Description: Official match results for one completed WTT/ITTF event, identified by its numeric event id (from `events`). Returns every official match with round, start time and, by default, the full match card (competitors, game scores, winner). Filter by sub-event (MS, WS, MD, WD, XD, MT, WT, XT) and round (FNL, SFNL, QFNL, 8FNL, R32, R64, RND1.., GP). Events still in progress or not yet archived return an upstream not-found error.
- Instructions: Official match results for one completed WTT/ITTF event, identified by its numeric event id (from `events`). Returns every official match with round, start time and, by default, the full match card (competitors, game scores, winner). Filter by sub-event (MS, WS, MD, WD, XD, MT, WT, XT) and round (FNL, SFNL, QFNL, 8FNL, R32, R64, RND1.., GP). Events still in progress or not yet archived return an upstream not-found error.
- Cost: 5 credits per call
- Capability file: [Event results](https://firecrawl.dev/alexandria/agents/providers/worldtabletennis-com/table-tennis/event_results)

Accepted options:
- `event_id` (number, required): WTT event id, e.g. 3246 for Europe Smash Sweden 2026. Example: `10`
- `include_scores` (boolean): Embed the shaped match card under `match`; false returns the index only. Example: `false`
- `round` (string): FNL, SFNL, QFNL, 8FNL, R32, R64, R128, RND1, RND2, RND3 or GP (any group; GP01.. for one group). Example: `<round>`
- `sub_event` (string): Men/Women Singles, Men/Women/Mixed Doubles, Men/Women/Mixed Team. Example: `MS`
- `take` (number): Maximum matches returned, latest first. Example: `50`

Response schema example:
```json
{
  "count": 1,
  "event_id": 3246,
  "event_url": "https://www.worldtabletennis.com/eventInfo?eventId=3246",
  "filters": {
    "round": "FNL",
    "sub_event": "MS"
  },
  "matches": [
    {
      "age_group": null,
      "document_code": "TTEMSINGLES-----------FNL-000100----------",
      "event_id": 3246,
      "match": {
        "age_group": null,
        "best_of": 7,
        "competitors": [
          {
            "association": "FRA",
            "game_points": [
              11,
              11,
              5,
              11,
              11
            ],
            "games_won": 4,
            "id": "135977",
            "irm": null,
            "name": "LEBRUN Felix",
            "players": [
              {
                "association": "FRA",
                "ittf_id": "135977",
                "name": "LEBRUN Felix"
              }
            ],
            "side": "home"
          },
          {
            "association": "JPN",
            "game_points": [
              5,
              8,
              11,
              9,
              9
            ],
            "games_won": 1,
            "id": "123980",
            "irm": null,
            "name": "HARIMOTO Tomokazu",
            "players": [
              {
                "association": "JPN",
                "ittf_id": "123980",
                "name": "HARIMOTO Tomokazu"
              }
            ],
            "side": "away"
          }
        ],
        "description": "Men's Singles - Final - Match 1",
        "document_code": "TTEMSINGLES-----------FNL-000100----------",
        "duration": "00:32:45",
        "event_id": 3246,
        "game_scores": [
          "11-5",
          "11-8",
          "5-11",
          "11-9",
          "11-9"
        ],
        "is_team_tie": false,
        "match_number": 100,
        "overall_score": "4-1",
        "round": "Final",
        "round_code": "FNL",
        "start_local": "08/16/2026 19:00:00",
        "start_utc": "08/16/2026 17:00:00",
        "status": "OFFICIAL",
        "sub_event": "Men's Singles",
        "table": "Table 1",
        "team_matches": [],
        "venue": "Malmö Arena",
        "winner": {
          "association": "FRA",
          "id": "135977",
          "name": "LEBRUN Felix"
        }
      },
      "match_number": 100,
      "result_status": "OFFICIAL",
      "round": "Final",
      "round_code": "FNL",
      "start_local": "2026-08-16T19:00:00",
      "sub_event": "MS",
      "sub_event_name": "Men Singles"
    }
  ],
  "observed_at_ms": 1789447290000,
  "source_url": "https://wtt-web-frontdoor-cthahjeqhbh6aqe3.a01.azurefd.net/websitearchivedresults/3246/officialresult/officialresult.json",
  "total_matching": 1,
  "total_official": 307
}
```

### Events

- Capability: `table-tennis/events`
- Description: Search the WTT/ITTF tournament calendar (2022 to date, including scheduled events). Input optionally narrows by season year, free-text name/city/country and three-letter association code; returns event ids (needed by event_results and match), names, tier, dates, venue and sub-events, latest first.
- Instructions: Search the WTT/ITTF tournament calendar (2022 to date, including scheduled events). Input optionally narrows by season year, free-text name/city/country and three-letter association code; returns event ids (needed by event_results and match), names, tier, dates, venue and sub-events, latest first.
- Cost: 5 credits per call
- Capability file: [Events](https://firecrawl.dev/alexandria/agents/providers/worldtabletennis-com/table-tennis/events)

Accepted options:
- `country` (string): Host association code as WTT prints it, e.g. CHN, SWE, USA. Pattern: ^[A-Za-z]{3}$. Example: `<country>`
- `limit` (number): limit Example: `50`
- `query` (string): Case-insensitive substring matched against event name, city and country name. Example: `<query>`
- `year` (number): Season year of the event start date. Example: `2020`

Response schema example:
```json
{
  "count": 1,
  "events": [
    {
      "city": "Malmö",
      "country_code": "SWE",
      "country_name": "Sweden",
      "end_date": "2026-08-16",
      "event_id": 3246,
      "event_url": "https://www.worldtabletennis.com/eventInfo?eventId=3246",
      "is_closed_entry": true,
      "name": "Europe Smash - Sweden 2026",
      "start_date": "2026-08-08",
      "status": "Published",
      "sub_events": [
        {
          "code": "MS",
          "entry_type": "Closed",
          "gender": "M",
          "name": "Men's Singles"
        },
        {
          "code": "WS",
          "entry_type": "Closed",
          "gender": "W",
          "name": "Women's Singles"
        },
        {
          "code": "MD",
          "entry_type": "Open",
          "gender": "M",
          "name": "Men's Doubles"
        },
        {
          "code": "WD",
          "entry_type": "Open",
          "gender": "W",
          "name": "Women's Doubles"
        },
        {
          "code": "XD",
          "entry_type": "Open",
          "gender": "X",
          "name": "Mixed Doubles"
        }
      ],
      "tier": "WTT Series",
      "venue": "Malmö Arena"
    }
  ],
  "filters": {
    "country": null,
    "query": "Europe Smash",
    "year": 2026
  },
  "observed_at_ms": 1789447290000,
  "source_url": "https://wtt-web-frontdoor-cthahjeqhbh6aqe3.a01.azurefd.net/websitestaticapifiles/general/wtt_upcoming_only_events_list.json",
  "total_matching": 1
}
```

### Match

- Capability: `table-tennis/match`
- Description: One match card by event id and WTT document code (as listed by `event_results`): competitors with ITTF ids and associations, best-of, per-game points, overall score, status, venue, table, local/UTC start and duration. Unknown document codes return an upstream not-found error.
- Instructions: One match card by event id and WTT document code (as listed by `event_results`): competitors with ITTF ids and associations, best-of, per-game points, overall score, status, venue, table, local/UTC start and duration. Unknown document codes return an upstream not-found error.
- Cost: 5 credits per call
- Capability file: [Match](https://firecrawl.dev/alexandria/agents/providers/worldtabletennis-com/table-tennis/match)

Accepted options:
- `document_code` (string, required): e.g. TTEMSINGLES-----------FNL-000100---------- Pattern: ^TT[A-Za-z0-9-]+$. Example: `<document_code>`
- `event_id` (number, required): event_id Example: `10`

Response schema example:
```json
{
  "age_group": null,
  "best_of": 7,
  "competitors": [
    {
      "association": "FRA",
      "game_points": [
        11,
        11,
        5,
        11,
        11
      ],
      "games_won": 4,
      "id": "135977",
      "irm": null,
      "name": "LEBRUN Felix",
      "players": [
        {
          "association": "FRA",
          "ittf_id": "135977",
          "name": "LEBRUN Felix"
        }
      ],
      "side": "home"
    },
    {
      "association": "JPN",
      "game_points": [
        5,
        8,
        11,
        9,
        9
      ],
      "games_won": 1,
      "id": "123980",
      "irm": null,
      "name": "HARIMOTO Tomokazu",
      "players": [
        {
          "association": "JPN",
          "ittf_id": "123980",
          "name": "HARIMOTO Tomokazu"
        }
      ],
      "side": "away"
    }
  ],
  "description": "Men's Singles - Final - Match 1",
  "document_code": "TTEMSINGLES-----------FNL-000100----------",
  "duration": "00:32:45",
  "event_id": 3246,
  "event_url": "https://www.worldtabletennis.com/eventInfo?eventId=3246",
  "game_scores": [
    "11-5",
    "11-8",
    "5-11",
    "11-9",
    "11-9"
  ],
  "is_team_tie": false,
  "match_number": 100,
  "observed_at_ms": 1789447290000,
  "overall_score": "4-1",
  "round": "Final",
  "round_code": "FNL",
  "source_url": "https://wtt-web-frontdoor-cthahjeqhbh6aqe3.a01.azurefd.net/matchdata/3246/TTEMSINGLES-----------FNL-000100----------.json",
  "start_local": "08/16/2026 19:00:00",
  "start_utc": "08/16/2026 17:00:00",
  "status": "OFFICIAL",
  "sub_event": "Men's Singles",
  "table": "Table 1",
  "team_matches": [],
  "venue": "Malmö Arena",
  "winner": {
    "association": "FRA",
    "id": "135977",
    "name": "LEBRUN Felix"
  }
}
```

### Ranking weeks

- Capability: `table-tennis/ranking_weeks`
- Description: Published ITTF senior ranking weeks (year, week number, publication date), newest first. Input is just an optional limit; useful to learn which week the `rankings` list reflects and how often it updates.
- Instructions: Published ITTF senior ranking weeks (year, week number, publication date), newest first. Input is just an optional limit; useful to learn which week the `rankings` list reflects and how often it updates.
- Cost: 5 credits per call
- Capability file: [Ranking weeks](https://firecrawl.dev/alexandria/agents/providers/worldtabletennis-com/table-tennis/ranking_weeks)

Accepted options:
- `limit` (number): limit Example: `52`

Response schema example:
```json
{
  "count": 3,
  "observed_at_ms": 1789447290000,
  "source_url": "https://wtt-web-frontdoor-cthahjeqhbh6aqe3.a01.azurefd.net/ranking/PUBLISH_DATE.json",
  "total": 221,
  "weeks": [
    {
      "category": "SEN",
      "organization": "WTT",
      "ranking_month": 9,
      "ranking_week": 38,
      "ranking_year": 2026,
      "status": "Published",
      "status_date": "09/14/2026 00:00:00"
    },
    {
      "category": "SEN",
      "organization": "WTT",
      "ranking_month": 9,
      "ranking_week": 37,
      "ranking_year": 2026,
      "status": "Published",
      "status_date": "09/07/2026 00:00:00"
    },
    {
      "category": "SEN",
      "organization": "WTT",
      "ranking_month": 9,
      "ranking_week": 36,
      "ranking_year": 2026,
      "status": "Published",
      "status_date": "08/31/2026 00:00:00"
    }
  ]
}
```

### Rankings

- Capability: `table-tennis/rankings`
- Description: Current ITTF world ranking list. Input selects senior (SEN, default) or youth (YOU) category, the list (MS/WS singles, MD/WD/XD doubles pairs, MDI/WDI/XDI doubles individual; default MS), an optional youth age group (U19, U17, U15, U13, U11) and an optional association filter. Returns rank, previous rank, points, player or pair identity and the publication date of the week in force.
- Instructions: Current ITTF world ranking list. Input selects senior (SEN, default) or youth (YOU) category, the list (MS/WS singles, MD/WD/XD doubles pairs, MDI/WDI/XDI doubles individual; default MS), an optional youth age group (U19, U17, U15, U13, U11) and an optional association filter. Returns rank, previous rank, points, player or pair identity and the publication date of the week in force.
- Cost: 5 credits per call
- Capability file: [Rankings](https://firecrawl.dev/alexandria/agents/providers/worldtabletennis-com/table-tennis/rankings)

Accepted options:
- `age_group` (string): Youth lists only. Example: `U19`
- `category` (string): category Example: `SEN`
- `country` (string): Keep players (or pairs with a member) from this association, e.g. JPN. Pattern: ^[A-Za-z]{3}$. Example: `<country>`
- `event` (string): event Example: `MS`
- `limit` (number): limit Example: `100`

Response schema example:
```json
{
  "age_group": null,
  "category": "SEN",
  "count": 3,
  "country": null,
  "event": "MS",
  "list_type": "individual",
  "observed_at_ms": 1789447290000,
  "publish_date": "09/14/2026 00:00:00",
  "rankings": [
    {
      "age_group": "SEN",
      "association_code": "CHN",
      "category": "SEN",
      "country_code": "CHN",
      "country_name": "China",
      "event": "MS",
      "ittf_id": "121558",
      "player_name": "WANG Chuqin",
      "points": 8157,
      "previous_rank": 1,
      "publish_date": "09/14/2026 00:00:00",
      "rank": 1,
      "rank_change": 0,
      "ranking_week": 38,
      "ranking_year": 2026
    },
    {
      "age_group": "SEN",
      "association_code": "FRA",
      "category": "SEN",
      "country_code": "FRA",
      "country_name": "France",
      "event": "MS",
      "ittf_id": "135977",
      "player_name": "Felix LEBRUN",
      "points": 7479,
      "previous_rank": 2,
      "publish_date": "09/14/2026 00:00:00",
      "rank": 2,
      "rank_change": 0,
      "ranking_week": 38,
      "ranking_year": 2026
    },
    {
      "age_group": "SEN",
      "association_code": "JPN",
      "category": "SEN",
      "country_code": "JPN",
      "country_name": "Japan",
      "event": "MS",
      "ittf_id": "123980",
      "player_name": "Tomokazu HARIMOTO",
      "points": 6363,
      "previous_rank": 4,
      "publish_date": "09/14/2026 00:00:00",
      "rank": 4,
      "rank_change": 0,
      "ranking_week": 38,
      "ranking_year": 2026
    }
  ],
  "source_url": "https://wtt-web-frontdoor-cthahjeqhbh6aqe3.a01.azurefd.net/ranking/SEN_SINGLES.json",
  "total_in_list": 94
}
```
