If you are building an application on top of the Padel API, you will likely want to store data locally rather than fetching it on every request. This reduces latency, avoids hitting rate limits, and gives you more control over your data model. However, padel data is not static. Tournaments get cancelled or rescheduled, player rankings change after every event, and match results can be corrected after the fact. This guide describes a synchronization strategy to keep your local data consistent with the API.Documentation Index
Fetch the complete documentation index at: https://padelapi.org/docs/llms.txt
Use this file to discover all available pages before exploring further.
Sync frequency
| Data type | Recommended frequency | Key endpoints | Webhook events |
|---|---|---|---|
| Tournaments | Weekly | /seasons/{id}/tournaments | tournament.created, tournament.updated, tournament.deleted |
| Players | After each tournament week | /players/{player} | player.created, player.updated, player.deleted |
| Matches | After each tournament | /tournaments/{tournament}/matches | match.created, match.updated, match.deleted |
Tournaments
Tournaments, especially at lower levels like FIP Gold, FIP Silver, or regional events, are subject to changes throughout the season: name updates, date shifts, merges with other events, or even cancellations. New tournaments can also be added to the calendar mid-season. We recommend implementing a weekly synchronization process using the/seasons/{id}/tournaments endpoint as your starting point. Your sync logic should account for:
- New tournaments: New events may appear in the calendar throughout the season. Your sync should detect and store any tournaments not previously seen.
- Tournament status changes: Some events may transition to
cancelledduring the season. Cancelled tournaments are excluded from list endpoints (/tournamentsand/seasons/{id}/tournaments) but remain accessible via the tournament detail endpoint with theircancelledstatus visible. If you have previously stored a tournament, you can check its current status by fetching it directly by ID. - Redirections (merged tournaments): When a tournament has been merged into another event, the API will respond with a
302redirect pointing to the new resource. Your sync process should follow these redirects and update any stored references.
tournament.created, tournament.updated, and tournament.deleted (see all events) to react to these changes immediately instead of waiting for the next weekly sync.
Players
Player data changes regularly throughout the season. Rankings and points are updated after every tournament, so any locally cached player records will become stale quickly. Beyond rankings, the most common issue is a player appearing under multiple name variations (for example,"Juan García" and "Juan Garcia Lopez"), which results in separate player entries, each with a subset of that player’s matches.
When this happens, one player ID becomes the canonical record and the other is merged into it. The API handles this the same way as merged tournaments: the deprecated player ID will respond with a 302 redirect pointing to the canonical player. Your sync logic should:
- Re-sync rankings and points regularly: Use
/players/{player}to refresh stored player data after each tournament week. - Follow player redirects: When fetching a stored player by ID and receiving a
302, update your local reference to point to the new ID and re-fetch the canonical record. - Re-sync match history after a merge: Once a player has been merged, fetch their matches again via
/players/{player}/matchesto ensure your local data reflects the complete, consolidated match history. - Use player IDs as your primary key: Player names are not stable identifiers. Always store and reference players by their numeric ID.
player.updated fires on every ranking, points, or profile change, and player.deleted lets you detect merges the moment they happen — without waiting to receive a 302 on a stale ID.
Matches
Match results are generally stable once a tournament has concluded, but stats and point-by-point data may be added or corrected after the fact. Sync matches tournament by tournament using/tournaments/{tournament}/matches.
For each match, consider storing:
- The match result and score
- Player and pair references (by ID)
- Match stats via
/matches/{match}/stats🔒, once available
match.updated via webhooks — the event fires on score, status, and schedule changes. For point-by-point updates during a live match, use WebSockets instead; webhooks only fire at significant transitions (start, end).