Pulling Schedules
This scenario explains how to retrieve a tour's tournament schedule: the calendar of events for a season, with dates, venues, purses, and the IDs you use to pull every downstream feed.
This scenario is commonly used to:
- Render a season calendar for a tour
- Resolve
tournament.idvalues for live and historical data - Surface defending champions and past winners
Before You Start
A schedule request is scoped to a tour and a season year, so resolve those first from the Seasons feed. Use the lowercase tour alias (pga, euro, ...) in the URL.
Relevant Feeds
| Feed | Purpose |
|---|---|
| Seasons | Resolve the tour and season before requesting a schedule |
| Tournament Schedule | The calendar of events for a season, with IDs, dates, venues, and winners |
| Tournament Summary | Per-event detail (field, course layout, rounds) once you have a tournament.id |
High-Level Workflow
Seasons → Tournament Schedule → Extract tournament.id → Downstream feeds
- Identify the tour and season
- Request the Tournament Schedule
- Extract
tournament.idvalues - Use those IDs for live or historical data (Summary, Leaderboard, Scorecards)
Integration Steps
1. Request the Tournament Schedule
GET https://api.sportradar.com/golf/{access_level}/{golf_tour}/v3/{language_code}/{season_year}/tournaments/schedule.{format}
x-api-key: YOUR_API_KEYEach tournament entry carries its id, name, event_type, status, dates, total_rounds, purse, winning_share, network, venue, and a parent_id (the cross-season link). For completed events it also includes the winner, and for all events the defending_champ. The example below is the opening event of the PGA Tour 2024 season (course hole list trimmed):
{
"tour": { "id": "b52068af-28e4-4e91-bdbb-037591b0ff84", "alias": "pga", "name": "PGA Tour" },
"season": { "id": "55827590-93f7-4493-9b4f-83ae86116ef6", "year": 2024 },
"tournaments": [
{
"id": "c03e44a6-a71d-433e-86be-e28506ffcec1",
"name": "The Sentry",
"event_type": "stroke",
"purse": 20000000.0,
"winning_share": 3600000.0,
"currency": "USD",
"points": 700,
"start_date": "2024-01-04",
"end_date": "2024-01-07",
"course_timezone": "Pacific/Honolulu",
"network": "Golf Channel",
"total_rounds": 4,
"status": "closed",
"parent_id": "bd5b1a78-eb4a-4d3e-86a6-541801b82e51",
"defending_champ": { "id": "7b52b9be-a490-4569-9bbc-57db5f232dcb", "first_name": "Jon", "last_name": "Rahm", "country": "SPAIN" },
"winner": { "id": "e4f92dca-86d5-441e-8a2d-55d5360937c5", "first_name": "Chris", "last_name": "Kirk", "country": "UNITED STATES" },
"venue": { "id": "4e353af5-a1dd-4118-963d-24ef08393155", "name": "Kapalua Resort", "city": "Kapalua", "state": "HI" }
}
]
}2. Extract Tournament IDs
Collect the id values you need. Use tournament.id for season-specific feed requests, and parent_id if you want to group an event's editions across seasons (see ID Handling).
3. Use the IDs Downstream
With a tournament.id, pull Tournament Summary for the field and rounds, then the leaderboard and scorecards for results. Read status to know which events are upcoming, live, or final; see the Tournament Status Workflow page.
Building Player-Centric ViewsGolf has no team schedule, so to build a player's season you aggregate the tournaments they appear in. That workflow (discover players, then join schedule and results by
player.id) lives in Retrieving Player Details and Statistics; start there rather than duplicating it here.
Common Use Cases
- Season calendars and event pages
- "Defending champion" and "past winners" modules
- Resolving IDs for a live-tracking or historical pipeline
Best Practices
- Call Seasons before requesting schedules; do not hardcode tournament dates or IDs.
- Cache schedule responses and refresh per the update frequencies.
- Treat the Tournament Schedule as the authoritative source of events for a season.
- Use
tournament.idas the primary key for downstream integrations andparent_idfor cross-season history. - Read the literal
statusvalue to classify events rather than inferring from dates.
Updated 7 days ago
