Discover/PGA Tour API
live

PGA Tour APIpgatour.com

Access PGA Tour leaderboards, player scorecards, shot-by-shot data, FedExCup standings, and tournament schedules via a single REST API.

Endpoint health
verified 1d ago
get_player_scorecard
get_fedexcup_standings
get_tournament_leaderboard
get_schedule
get_tournament_details
6/6 passing latest checkself-healing
Endpoints
6
Updated
22d ago

What is the PGA Tour API?

This API exposes 6 endpoints covering PGA Tour tournament data, returning leaderboards with per-player scoring, hole-by-hole scorecards, and stroke-level shot detail including GPS coordinates and video references. Use get_tournament_leaderboard to retrieve full standings for any tournament by its tournament_id, or get_player_shots to access every stroke a player hit across a specific round.

Try it
Tournament ID in format R[Year][Number] (e.g., R2025014). Can be found in schedule data.
api.parse.bot/scraper/3db295ae-5c87-4ff2-ad38-4956e34b1cbc/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/3db295ae-5c87-4ff2-ad38-4956e34b1cbc/get_tournament_leaderboard?tournament_id=R2024016' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

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 pgatour-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.

"""PGA Tour API — schedule, leaderboard, scorecard, and shot details."""
from parse_apis.pga_tour_api import PGATour, Year, Round, TournamentNotFound

client = PGATour()

# Get the 2025 season schedule and browse completed tournaments.
schedule = client.schedules.get(year=Year._2025)
for month_group in schedule.completed[:2]:
    print(month_group.month, month_group.year)
    for t in month_group.tournaments[:2]:
        print(f"  {t.tournament_name} ({t.id}) — {t.purse}")

# Construct a tournament by ID and fetch its leaderboard.
masters = client.tournament(id="R2025014")
board = masters.leaderboard()
print(board.tournament_status, board.format_type)
if board.winner:
    print(board.winner.first_name, board.winner.last_name, board.winner.total_score)

# Inspect the top player on the leaderboard.
top = board.players[0]
print(top.display_name, top.position, top.total)

# Get the top player's scorecard via the tournament sub-resource.
scorecard = masters.players.get_scorecard(player_id=top.id)
print(scorecard.tournament_name, scorecard.total_strokes)
for rs in scorecard.round_scores[:2]:
    print(f"  Round {rs.round_number}: {rs.total} ({rs.score_to_par})")

# Get shot details for round 1.
shots = masters.players.get_shots(player_id=top.id, round=Round.ROUND_1)
print(f"Shot detail {shots.id}, holes: {len(shots.holes)}")
hole = shots.holes[0]
print(f"  Hole {hole.hole_number}: par {hole.par}, {hole.yardage} yds")

# Typed error handling: attempt to look up a non-existent tournament.
try:
    client.tournament(id="R2025999").leaderboard()
except TournamentNotFound as exc:
    print(f"Not found: {exc.tournament_id}")

# Fetch FedExCup overview.
overview = client.overviews.get()
print(overview.headline)
for node in overview.nodes[:2]:
    print(f"  {node.typename}")

print("exercised: schedules.get / tournament.leaderboard / players.get_scorecard / players.get_shots / overviews.get")
All endpoints · 6 totalmissing one? ·

Retrieve the full leaderboard for a specific PGA Tour tournament. Returns player positions, scores, round details, winner info, courses, and tournament status. The players array is ordered by leaderboard position.

Input
ParamTypeDescription
tournament_idrequiredstringTournament ID in format R[Year][Number] (e.g., R2025014). Can be found in schedule data.
Response
{
  "type": "object",
  "fields": {
    "id": "tournament identifier",
    "winner": "object with winner details",
    "courses": "array of course objects",
    "players": "array of player leaderboard entries",
    "formatType": "scoring format",
    "tournamentId": "tournament identifier",
    "tournamentStatus": "completion status"
  },
  "sample": {
    "data": {
      "id": "R2025014",
      "winner": {
        "id": "28237",
        "purse": "$4,200,000",
        "lastName": "McIlroy",
        "firstName": "Rory",
        "totalScore": "-11",
        "totalStrokes": 277
      },
      "courses": [
        {
          "id": "014",
          "courseName": "Augusta National Golf Club"
        }
      ],
      "players": [
        {
          "id": "28237",
          "player": {
            "country": "NIR",
            "displayName": "Rory McIlroy"
          },
          "scoringData": {
            "total": "-11",
            "position": "1",
            "totalStrokes": "277"
          }
        }
      ],
      "formatType": "STROKE_PLAY",
      "tournamentId": "R2025014",
      "tournamentStatus": "COMPLETED"
    },
    "status": "success"
  }
}

About the PGA Tour API

Tournament Data

The get_tournament_leaderboard endpoint accepts a tournament_id in R[Year][Number] format (e.g., R2025001) and returns a leaderboard object containing a players array with positions, round-by-round scores, and tournament status. The get_tournament_details endpoint accepts a comma-separated list of tournament IDs and returns metadata per tournament: tournamentName, courses, weather, displayDate, and current status. Both endpoints work for past and in-progress tournaments.

Player Scorecards and Shot Data

get_player_scorecard takes a numeric player_id (retrievable from leaderboard response data) and a tournament_id, returning a scorecard object with a roundScores array that breaks down each hole for every round the player completed. For deeper analysis, get_player_shots adds a round parameter (1–4) and returns a shots object with a holes array containing stroke-by-stroke entries — each with distance, location codes, geographic coordinates, and video references where available.

Schedule and Standings

get_schedule accepts an optional year parameter (e.g., 2025) and returns a schedule object split into completed and upcoming arrays, each organized by month with tournament names, IDs, and start dates. get_fedexcup_standings requires no parameters and returns the current FedExCup overview including headline text, editorial nodes, and season context — useful for tracking the points race narrative across the season.

Reliability & maintenanceVerified

The PGA Tour API is a managed, monitored endpoint for pgatour.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when pgatour.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 pgatour.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.

Last verified
1d ago
Latest check
6/6 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Display a live tournament leaderboard with player positions and round scores during PGA Tour events.
  • Build a hole-by-hole scorecard viewer for any player in any completed or in-progress round.
  • Map shot trajectories and locations on a course layout using coordinates from get_player_shots.
  • Aggregate historical tournament schedules by season year to analyze field composition and event sequencing.
  • Link shot video references from the shots endpoint into a highlights or replay interface.
  • Track tournament status across multiple events simultaneously using comma-separated IDs in get_tournament_details.
  • Monitor FedExCup standings narrative and season context for editorial or fantasy golf applications.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 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.

Frequently asked questions
Does PGA Tour have an official developer API?+
PGA Tour does not publish a public developer API. Official data partnerships exist for broadcasters and licensed vendors, but there is no self-serve developer portal or documented public endpoint available at pgatour.com.
What does get_player_shots return, and how granular is the data?+
It returns a shots object with a holes array covering every stroke in a specified round. Each shot entry includes distance, location codes (e.g., fairway, rough, green), geographic coordinates, and video references. You need a valid player_id, tournament_id, and round number (1–4) to call it.
Does the API cover player career statistics or world rankings?+
Not currently. The API covers tournament leaderboards, per-round scorecards, shot-level detail, the FedExCup standings overview, and the season schedule. It does not expose player career stats, OWGR rankings, or strokes-gained breakdowns. You can fork this API on Parse and revise it to add those endpoints.
How do I find a player's numeric ID to use with get_player_scorecard or get_player_shots?+
Player IDs are included in the players array returned by get_tournament_leaderboard. Fetch the leaderboard for any tournament the player appeared in and extract the numeric ID from that response.
Are tee times or pairing data available through this API?+
Not currently. The schedule endpoint returns tournament-level dates and the leaderboard returns round scores, but per-round tee times and pairing sheets are not exposed. You can fork this API on Parse and revise it to add a tee times endpoint.
Page content last updated . Spec covers 6 endpoints from pgatour.com.
Related APIs in SportsSee all →
datagolf.com API
Track professional golfers' strokes gained performance metrics across tournaments and rounds by accessing top player rankings and detailed historical SG data. Analyze how elite golfers perform in specific competitions to compare their scoring efficiency over time.
pdga.com API
Access player profiles, ratings history, tournament events, live scoring, world rankings, and the course directory from the Professional Disc Golf Association.
tennisexplorer.com API
Access comprehensive tennis data from TennisExplorer, including player profiles, ATP rankings, tournament schedules, and today's match listings across ATP and WTA tours at all competition levels.
espn.com API
Get live scores, schedules, standings, teams, rosters, athlete profiles, game logs, and league news across major sports from ESPN.
ittf.com API
Access official World Table Tennis player statistics, match results, and event data to track tournament outcomes, compare player rankings, and explore international competition details. Search player profiles, browse featured athletes, and review results from global table tennis events.
teeoff.com API
Find and book golf tee times across courses worldwide, compare pricing and availability, read detailed course reviews, and discover new golf destinations. Get real-time access to course information, current deals, flash sales, and locate nearby courses with a single search.
cardplayer.com API
Calculate poker odds, compare hand matchups, and access real-time tournament schedules and player profiles from Card Player. Search poker news articles, view detailed hand analysis, and research player statistics all in one place.
stats.ncaa.org API
Access comprehensive NCAA sports statistics to search for players, teams, and coaches, view game box scores and play-by-play data, and review team schedules, rosters, and rankings. Get detailed head coach records and scoreboard information to analyze performance across college sports.