BWF Badminton APIbwfbadminton.com ↗
Access BWF tournament calendars, draw structures, and detailed match results including player scores, seeds, and disciplines via 3 REST endpoints.
What is the BWF Badminton API?
The BWF Badminton API exposes 3 endpoints covering the Badminton World Federation's official tournament calendar, draw structures, and match-level results. Starting with list_tournaments, you can retrieve every BWF event for a given year — including tournament codes, prize money, dates, and locations — then drill into draw brackets and individual match data with scores, round, discipline, court, and player seedings.
curl -X GET 'https://api.parse.bot/scraper/9b6754e3-5d0f-436a-91b8-ec4da53973b7/list_tournaments?year=2025&category=20' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace bwfbadminton-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.bwf_badminton_tournament___match_data_api import BWF, Tournament, Match, Discipline
client = BWF()
# List all 2025 tournaments
for tournament in client.tournaments.list(year=2025):
print(tournament.tournament_name, tournament.tournament_category, tournament.date_start)
# Construct a known tournament and list its draws
malaysia_open = client.tournament(tournament_code="BD7DDFAC-145A-4865-B58A-C00977D5A3C3")
for draw in malaysia_open.draws.list():
print(draw.name, draw.size, draw.stage_name)
# Get matches filtered by discipline
for match in malaysia_open.matches.list(date="2025-01-12", discipline=Discipline.MS):
print(match.player_1_name, match.score_string, match.round)
List BWF tournaments for a given year. Returns tournament names, dates, locations, categories, prize money, and tournament codes needed for draw and match queries. Supports filtering by BWF category tier. Paginates as a single page containing all tournaments for the year.
| Param | Type | Description |
|---|---|---|
| year | integer | Year to fetch tournaments for. |
| category | string | Comma-separated category IDs to filter. Accepted values: 20, 21, 22, 23, 24, 25, 26, 27. These map to BWF tournament tiers. Omitting returns all categories. |
{
"type": "object",
"fields": {
"year": "integer, the queried year",
"tournaments": "array of tournament objects with tournament_id, tournament_code, tournament_name, tournament_category, date_start, date_end, location, country, prize_money, live_status, url",
"total_tournaments": "integer, count of tournaments returned"
},
"sample": {
"data": {
"year": 2025,
"tournaments": [
{
"url": "https://bwfworldtour.bwfbadminton.com/tournament/5222/petronas-malaysia-open-2025/results/",
"country": "Malaysia",
"date_end": "2025-01-12",
"location": "Kuala Lumpur, Malaysia",
"date_start": "2025-01-07",
"live_status": "post",
"prize_money": "1,450,000",
"tournament_id": 5222,
"tournament_code": "BD7DDFAC-145A-4865-B58A-C00977D5A3C3",
"tournament_name": "PETRONAS Malaysia Open 2025",
"tournament_category": "HSBC BWF World Tour Super 1000"
}
],
"total_tournaments": 43
},
"status": "success"
}
}About the BWF Badminton API
Tournament Calendar
The list_tournaments endpoint returns an array of tournament objects for a specified year, each containing id, code, name, category, dates, location, country, prize_money, live_status, and url. The category filter accepts one or more of eight numeric IDs (20–27) mapping to BWF tour tiers, so you can isolate, for example, Super 1000 events from lower-tier tournaments. The code field from each tournament object is the UUID required by both downstream endpoints.
Draw Structures
get_tournament_draws accepts a tournament_code UUID and returns the draw categories available for that event — typically Men's Singles (MS), Women's Singles (WS), Men's Doubles (MD), Women's Doubles (WD), and Mixed Doubles (XD). Each draw object includes name, code, type, type_id, slug, size, stage_type, stage_name, and stage_order, giving you the bracket size and stage metadata needed to understand the tournament's structure.
Match Results
get_tournament_matches returns match-level data for a tournament, filterable by a single date (YYYY-MM-DD) or a date_start/date_end range, with an optional discipline filter (MS, WS, MD, WD, or XD). Each match object in the matches array includes player names, countries, seeds, set scores, match duration, round, discipline, court assignment, and winner. The response also exposes dates_queried and total_matches, making it straightforward to paginate by date range across a multi-week event.
The BWF Badminton API is a managed, monitored endpoint for bwfbadminton.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when bwfbadminton.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official bwfbadminton.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a badminton tournament tracker showing upcoming BWF events filtered by tier category and country
- Populate bracket visualizations using draw size and stage metadata from get_tournament_draws
- Analyze head-to-head player performance by querying match results across multiple tournament_codes
- Monitor live tournament status using the live_status field from list_tournaments
- Aggregate prize money data across categories to compare BWF tour tier payouts by year
- Filter match results by discipline to produce discipline-specific leaderboards or win-rate statistics
- Track seeded players' progression through rounds using seed, round, and winner fields in match objects
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.