# PGA Tour API

> PGA Tour returns tournament scores and season schedules as a workflow and API.

PGA Tour, also called PGA Tour Golf, returns tournament details and player scores through Get leaderboard, using a season year and tournament name. Get schedule returns season dates, venues, purses, statuses, winners, and defending champions using a season year.

- Page: https://fous.com/workflows/pga-tour
- Handle: `@pga-tour`
- Category: [Sports](https://fous.com/workflows/category/sports)
- Source website: https://pgatour.com
- Last verified: Sep 29, 2026
- Fous is not affiliated with PGA Tour.

## Methods

### Get leaderboard

Operation `get_leaderboard`, version 1. 1 credit per call.

Get PGA Tour tournament details and player scores by tournament name and season. Defaults to the most recent available stroke-play event; match-play events may not show stroke totals.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `year` | integer | no | `2026` | PGA Tour season year, for example 2026. Defaults to the current year. |
| `tournament` | string | no | `"The Masters"` | Tournament name, for example The Masters or U.S. Open. Defaults to the most recent scored event. |
| `max_results` | integer | no | `5` | Maximum players, for example 50 (up to 200). |

**Input schema**

```json
{
  "type": "object",
  "properties": {
    "year": {
      "type": "integer",
      "description": "PGA Tour season year, for example 2026. Defaults to the current year.",
      "x-fous-developer": true,
      "examples": [
        2026
      ]
    },
    "tournament": {
      "type": "string",
      "description": "Tournament name, for example The Masters or U.S. Open. Defaults to the most recent scored event.",
      "examples": [
        "The Masters",
        "U.S. Open"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 50,
      "maximum": 200,
      "minimum": 1,
      "description": "Maximum players, for example 50 (up to 200).",
      "x-fous-developer": true,
      "examples": [
        5,
        3
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "year": 2026,
      "tournament": "The Masters",
      "max_results": 5
    },
    {},
    {
      "year": 2026,
      "tournament": "U.S. Open",
      "max_results": 3
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `link` | string | `"https://www.pgatour.com/tournaments/2026/masters-tournament/R2026014/leaderboard"` |  |
| `course` | string or null | `"Augusta National Golf Club"` |  |
| `status` | string | `"Final"` |  |
| `players` | array |  |  |
| `players[].player` | string | `"Rory McIlroy"` |  |
| `players[].country` | string or null | `"Northern Ireland"` |  |
| `players[].position` | string | `"1"` |  |
| `players[].player_link` | string or null | `"https://www.pgatour.com/player/28237/rory-mcilroy"` |  |
| `players[].today_to_par` | string or null | `"-1"` |  |
| `players[].total_to_par` | string or null | `"-12"` |  |
| `players[].round_1_strokes` | integer or null | `67` |  |
| `players[].round_2_strokes` | integer or null | `65` |  |
| `players[].round_3_strokes` | integer or null | `73` |  |
| `players[].round_4_strokes` | integer or null | `71` |  |
| `players[].total_to_par_number` | integer or null | `-12` |  |
| `players[].holes_completed_today` | string or null | `"F"` |  |
| `end_date` | string or null | `"2026-04-12"` |  |
| `start_date` | string or null | `"2026-04-09"` |  |
| `tournament` | string | `"Masters Tournament"` |  |

**Example input**

```json
{
  "year": 2026,
  "tournament": "The Masters",
  "max_results": 5
}
```

**Example output**

```json
{
  "link": "https://www.pgatour.com/tournaments/2026/masters-tournament/R2026014/leaderboard",
  "course": "Augusta National Golf Club",
  "status": "Final",
  "players": [
    {
      "player": "Rory McIlroy",
      "country": "Northern Ireland",
      "position": "1",
      "player_link": "https://www.pgatour.com/player/28237/rory-mcilroy",
      "today_to_par": "-1",
      "total_to_par": "-12",
      "round_1_strokes": 67,
      "round_2_strokes": 65,
      "round_3_strokes": 73,
      "round_4_strokes": 71,
      "total_to_par_number": -12,
      "holes_completed_today": "F"
    },
    {
      "player": "Scottie Scheffler",
      "country": "United States",
      "position": "2",
      "player_link": "https://www.pgatour.com/player/46046/scottie-scheffler",
      "today_to_par": "-4",
      "total_to_par": "-11",
      "round_1_strokes": 70,
      "round_2_strokes": 74,
      "round_3_strokes": 65,
      "round_4_strokes": 68,
      "total_to_par_number": -11,
      "holes_completed_today": "F"
    },
    {
      "player": "Tyrrell Hatton",
      "country": "England",
      "position": "T3",
      "player_link": "https://www.pgatour.com/player/34363/tyrrell-hatton",
      "today_to_par": "-6",
      "total_to_par": "-10",
      "round_1_strokes": 74,
      "round_2_strokes": 66,
      "round_3_strokes": 72,
      "round_4_strokes": 66,
      "total_to_par_number": -10,
      "holes_completed_today": "F"
    }
  ],
  "end_date": "2026-04-12",
  "start_date": "2026-04-09",
  "tournament": "Masters Tournament"
}
```

### Get schedule

Operation `get_schedule`, version 1. 1 credit per call.

Get the PGA Tour season schedule by year, with dates, venue, purse, status, winners, and defending champions. Unannounced purses and unavailable defending champions are null.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `year` | integer | no | `2025` | PGA Tour season year, for example 2025. Defaults to the current season. |

**Input schema**

```json
{
  "type": "object",
  "properties": {
    "year": {
      "type": "integer",
      "default": null,
      "description": "PGA Tour season year, for example 2025. Defaults to the current season.",
      "examples": [
        2025,
        2027
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {},
    {
      "year": 2025
    },
    {
      "year": 2027
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `season` | integer |  |  |
| `tournaments` | array |  |  |
| `tournaments[].city` | string or null |  |  |
| `tournaments[].link` | string |  |  |
| `tournaments[].purse` | number or null |  | Tournament purse in the currency shown, or null when not announced. |
| `tournaments[].course` | string or null |  |  |
| `tournaments[].status` | string |  |  |
| `tournaments[].winner` | string or null |  |  |
| `tournaments[].end_date` | string |  |  |
| `tournaments[].start_date` | string |  |  |
| `tournaments[].currency_code` | string or null |  |  |
| `tournaments[].tournament_name` | string |  |  |
| `tournaments[].state_or_country` | string or null |  |  |
| `tournaments[].defending_champion` | string or null |  |  |

## Quick start

Call the API with a Fous API key (`FOUS_API_KEY`). To create one, turn on Developer mode in Fous Studio, then open Keys & connections → API keys (https://app.fous.com/keys).

```bash
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
: "${FOUS_API_KEY:?Set FOUS_API_KEY before running this example}"

curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 120 \
  -H "Authorization: Bearer $FOUS_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@pga-tour",
  "visibility": "public",
  "operation": "get_leaderboard",
  "version": 1,
  "input": {
    "year": 2026,
    "tournament": "The Masters",
    "max_results": 5
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
import json
import os
import urllib.error
import urllib.request

api_key = os.environ.get("FOUS_API_KEY")
if not api_key:
    raise RuntimeError("Set FOUS_API_KEY before running this example")

body = json.loads("{\n  \"api\": \"@pga-tour\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_leaderboard\",\n  \"version\": 1,\n  \"input\": {\n    \"year\": 2026,\n    \"tournament\": \"The Masters\",\n    \"max_results\": 5\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=120) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
// First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
const apiKey = process.env.FOUS_API_KEY;
if (!apiKey) throw new Error("Set FOUS_API_KEY before running this example");

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(120_000),
  body: JSON.stringify({
  "api": "@pga-tour",
  "visibility": "public",
  "operation": "get_leaderboard",
  "version": 1,
  "input": {
    "year": 2026,
    "tournament": "The Masters",
    "max_results": 5
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

Or describe the data in plain language: send `{"api":"@pga-tour","prompt":"Describe the data you need, with every detail"}` to the same URL. Fous fills in the input, runs the method that fits and returns only the fields you asked for; `data.route.calls[].request` is the exact call it made. Routing is free; the run costs the same.

## Use cases

- Compare player scores across tournament rounds
- Track tournament positions and holes completed
- Plan around season tournament dates and venues
- Review tournament winners and defending champions
- Check announced tournament purses and currencies

## FAQ

### Is Fous affiliated with PGA Tour?

No. Fous is not affiliated with PGA Tour. This workflow reads the public pgatour.com website and returns its data.

### How much does it cost?

Each run costs 1 credit. With pay-as-you-go, a credit costs 1¢; monthly plans cost less per credit.

### Do I need a PGA Tour account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from pgatour.com when you run it; repeating the same request within a day may return the saved result. Fous checks this workflow automatically; it last passed a check on Sep 29, 2026.

### What are the players’ scores in a tournament?

Get leaderboard returns player positions, scores, and round strokes for a selected tournament and season.

### What tournaments are on the season schedule?

Get schedule returns tournaments by season, including dates, venues, and status.

### Who won a scheduled tournament?

Get schedule returns each tournament’s winner and defending champion when available.

## Related

- [ATP Tour API](https://fous.com/workflows/atp-tour.md): ATP Tour provides official men's tennis rankings as of their latest publication and tournament results, including champions, for a specified year or most recent listed edition.
- [MLB API](https://fous.com/workflows/mlb.md): MLB provides scores, schedules and game details for one date or up to seven days, regular-season division standings defaulting to the current year, and player profiles with regular-season stats for a selected season and career.
- [ESPN API](https://fous.com/workflows/espn.md): ESPN provides daily scores and schedules, team results, player statistics, matchup summaries, and latest topic-specific headlines; coverage and published details vary, especially for college and soccer.
- [Yahoo Sports API](https://fous.com/workflows/yahoo-sports.md): Yahoo Sports returns date-based scores and schedules, seasonal standings, and player regular-season and career stats when Yahoo provides them; unavailable data may be missing.
- [FIFA API](https://fous.com/workflows/fifa.md): FIFA provides official men’s and women’s national-team rankings, excluding unranked teams, and year-specific tournament matches with scores, teams, stages and venues.
- [Premier League API](https://fous.com/workflows/premier-league.md): Premier League provides current/chosen-season tables and recent form, date-range fixtures/results (up to 380), player profiles and stats, and seasonal leaders; older-season stats may be limited.
- [Sports Reference API](https://fous.com/workflows/sports-reference.md): Sports Reference provides regular-season career stats, awards and season records across basketball, football, baseball and hockey, plus season leaders using the latest published season if unspecified.
- [Formula 1 API](https://fous.com/workflows/formula-1.md): Formula 1 provides official calendars with session times and venues, completed race results defaulting to the latest current-season race, and driver and team standings through the last completed race.
- [All Sports workflows](https://fous.com/workflows/category/sports)
