PGA Tour API: Get schedule
Returns the PGA Tour season schedule for a year, with dates, venue, purse, status, winners and defending champions.
Unofficial. Not affiliated with or endorsed by PGA Tour.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Year optional
year PGA Tour season year, for example 2025. Defaults to the current season.
2025
Whole number.
Input as JSON
{ "year": 2025}Output
{ "season": 2025, "tournaments": [ { "city": "Kapalua, Maui", "link": "https://www.pgatour.com/tournaments/2025/the-sentry/R2025016" , "purse": 20000000, "course": "Plantation Course at Kapalua", "status": "completed", "winner": "Hideki Matsuyama", "end_date": "2025-01-05", "start_date": "2025-01-02", "currency_code": "USD", "tournament_name": "The Sentry", "state_or_country": "HI", "defending_champion": "Chris Kirk" }, { "city": "Honolulu", "link": "https://www.pgatour.com/tournaments/2025/sony-open-in-hawaii/R2025006" , "purse": 8700000, "course": "Waialae Country Club", "status": "completed", "winner": "Nick Taylor", "end_date": "2025-01-12", "start_date": "2025-01-09", "currency_code": "USD", "tournament_name": "Sony Open in Hawaii", "state_or_country": "HI", "defending_champion": "Grayson Murray" }, { "city": "La Quinta", "link": "https://www.pgatour.com/tournaments/2025/the-american-express/R2025002" , "purse": 8800000, "course": "Pete Dye Stadium Course", "status": "completed", "winner": "Sepp Straka", "end_date": "2025-01-19", "start_date": "2025-01-16", "currency_code": "USD", "tournament_name": "The American Express", "state_or_country": "CA", "defending_champion": "Nick Dunlap" } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"pgatour.com/get_schedule","input":{"year":2025}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "pgatour.com/get_schedule" , "input": { "year": 2025 }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "pgatour.com/get_schedule" , "input": { "year": 2025 } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run pgatour.com/get_schedule# with {"year":2025}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "properties": { "year": { "type": "integer", "examples": [ 2025 ], "description": "PGA Tour season year, for example 2025. Defaults to the current season." } }, "additionalProperties": false}Output schema
{ "type": "object", "required": [ "season", "tournaments" ], "properties": { "season": { "type": "integer" }, "tournaments": { "type": "array", "items": { "type": "object", "required": [ "tournament_name", "start_date", "end_date", "course", "city", "state_or_country", "purse", "currency_code", "status", "winner", "defending_champion", "link" ], "properties": { "city": { "type": [ "string", "null" ] }, "link": { "type": "string", "format": "uri" }, "purse": { "type": [ "number", "null" ], "description": "Tournament purse in the currency shown, or null when not announced." }, "course": { "type": [ "string", "null" ] }, "status": { "enum": [ "upcoming", "in progress", "completed" ], "type": "string" }, "winner": { "type": [ "string", "null" ] }, "end_date": { "type": "string", "format": "date" }, "start_date": { "type": "string", "format": "date" }, "currency_code": { "type": [ "string", "null" ] }, "tournament_name": { "type": "string" }, "state_or_country": { "type": [ "string", "null" ] }, "defending_champion": { "type": [ "string", "null" ] } }, "additionalProperties": false } } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
pgatour.com/get_schedule- Returns
- season and tournaments with dates, course, purse, status, winner, defending champion, link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method pgatour.com/get_schedule with the inputs above.
Ask your agent
- What tournaments are on the PGA Tour schedule for 2025, with their dates and purses?
- Show me the full 2025 golf season calendar including venues and who won each event
- Which PGA Tour events are coming up this year and who is defending champion at each one?
- I need the 2024 PGA Tour schedule with tournament status and winners so far
- Can you list every stop on the 2025 pro golf tour with courses and prize money on pgatour.com?
See more
Gets singles match results round by round for an ATP tournament and year, including the champion, dates, surface and category. Without a year it uses the most recent listed edition.
atptour.com/get_tournament_resultsGets a Formula 1 season calendar with venues, sprint weekends, status, and session start times in circuit local time or a chosen city or IANA time zone.
formula1.com/get_race_calendarFinds the songs an artist played most on a named tour or in a year on setlist.fm, with concert counts and cover credits. Without a filter it uses the most recent tour with published song statistics.
setlist.fm/get_tour_song_statsGets Formula 1 drivers' and teams' championship standings for a season, with the last completed race. Teams' standings begin in 1958.
formula1.com/get_standingsReturns a team's past results and upcoming games for a season on ESPN, with opponents, local start times, scores, broadcasts and venues. Soccer fixtures include all competitions shown for the team.
espn.com/get_team_scheduleGets FIFA tournament matches in kick-off order, with scores, stages, teams and venues. The tournament name must include a year.
fifa.com/get_tournament_matchesLists MLB games and scores for a date or up to seven days, optionally for one team. Start times are shown in the requested time zone.
mlb.com/get_scoresReturns MLB regular-season division standings for a season: records, win percentage, games back, streak, last 10 games and wild-card games back. Defaults to the current year.
mlb.com/get_standings