PGA GraphQL Reference
Every professional golf tournament — the four majors, the PGA Tour stops, the FedExCup playoffs — broken down to the round, leaderboard, hole-by-hole and shot-by-shot ShotLink/TrackMan tracking, and the players, courses, season-long stats, and tournament odds behind them.
Every GraphQL type, relation, argument, and field — generated from the served schema, so it can never disagree with the API. Each column is documented inline; relations and foreign keys link straight to the type they resolve to. Root fields take the same filters as REST; requests are metered by rows resolved, nested lists included.
Main
PGAPlayersFields (18)
idBigIntkeyPrimary Key
league_idStringnullableOfficial tour player identifier
52955first_nameStringMichaellast_nameStringKimfull_nameStringZach Johnsonshort_nameStringnullableC. JohnsoncountryStringnullableUSAbirth_dateStringnullable1989-07-23T04:00:00.000Zbirth_cityStringnullableSeoulbirth_stateStringnullableCaliforniabirth_countryStringnullableUnited StatesswingsStringnullableRight, Left
collegeStringnullableOklahoma State Universityphoto_urlStringnullablepga_debut_yearIntnullable2019created_atStringupdated_atStringRelations (12)
golf.leaderboards rows whose player_id references this row.
golf.operator_player_lookups rows whose player_id references this row.
golf.player_holes rows whose player_id references this row.
golf.player_news rows whose player_id references this row.
golf.player_rounds rows whose player_id references this row.
golf.player_season_stats rows whose player_id references this row.
golf.player_shots rows whose player_id references this row.
golf.tournament_odds rows whose player_id references this row.
golf.tournament_odds rows whose matchup_opponent_id references this row.
golf.tournament_odds rows whose round_matchup_opponent_id references this row.
golf.tournament_odds rows whose three_ball_opponent1_id references this row.
golf.tournament_odds rows whose three_ball_opponent2_id references this row.
Arguments (2)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.
PGASeasonsFields (8)
league_idStringnullableOfficial tour season identifier
liv-2021start_dateString2021-01-01T00:00:00.000Zend_dateStringnullable2021-12-31T00:00:00.000Zstart_yearInt202114created_atStringupdated_atStringidBigIntkeyPrimary Key
Relations (3)
The golf.tours row referenced by tour_id; null when unlinked.
golf.player_season_stats rows whose season_id references this row.
golf.tournaments rows whose season_id references this row.
Arguments (2)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.
PGATournamentsseason_id.Fields (24)
idBigIntkeyPrimary Key
league_idStringnullableOfficial tour tournament identifier
R2025016nameStringThe RSM Classic202501612start_dateString2025-03-06T00:00:00.000Zend_dateStringnullableis_overBooleantrueValues:truefalseis_in_progressBooleanfalsevenueStringnullableTorrey Pines Golf Course (South Course)parIntnullableyardsIntnullablepurseBigIntnullableTotal prize money in cents
2000000000start_date_timeStringnullablecanceledBooleanfalsecityStringnullablePonte Vedra BeachstateStringnullableCaliforniazipStringnullablecountryStringnullableUnited States of AmericaValues:United States of AmericaMexicoJapanBermudaPuerto RicoDominican RepublicScotlandCanadaEnglandNorthern IrelandFranceItalySouth KoreaPeople's Republic of ChinaAustraliatime_zoneStringnullableroundsIntnullablecreated_atStringupdated_atString22Relations (10)
The golf.seasons row referenced by season_id; null when unlinked.
The golf.tours row referenced by tour_id; null when unlinked.
golf.course_hole_stats rows whose tournament_id references this row.
golf.leaderboards rows whose tournament_id references this row.
golf.player_holes rows whose tournament_id references this row.
golf.player_news rows whose tournament_id references this row.
golf.player_rounds rows whose tournament_id references this row.
golf.player_shots rows whose tournament_id references this row.
golf.tournament_odds rows whose tournament_id references this row.
golf.tournament_rounds rows whose tournament_id references this row.
Arguments (4)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.season_idIntFilter to a single season. Defaults to the current season.tour_idIntFilter by tour.
Plays
PGAPlayerHolesplayer_id | tournament_id.Fields (19)
idBigIntkeyPrimary Key
255193player_round_idBigInt1round_numberInt1hole_numberInt1parIntnullable4scoreIntnullable4to_parIntnullableScore relative to par for this hole
0hole_in_oneBooleannullablefalsedouble_eagleBooleannullableeagleBooleannullablefalseValues:falsetruebirdieBooleannullablefalseValues:falsetrueis_parBooleannullabletrueValues:truefalsebogeyBooleannullablefalseValues:falsetruedouble_bogeyBooleannullablefalseValues:falsetrueworse_than_double_bogeyBooleannullablefalseValues:falsetruecreated_atStringupdated_atStringRelations (3)
The golf.players row referenced by player_id; null when unlinked.
The golf.player_rounds row referenced by player_round_id; null when unlinked.
The golf.tournaments row referenced by tournament_id; null when unlinked.
Arguments (4)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.player_idIntFilter to a single player.tournament_idIntFilter to a single tournament.
PGAPlayerRoundsplayer_id | tournament_id.Fields (28)
idBigIntkeyPrimary Key
887194player_round_idInt475911round_numberInt1dayStringnullabletee_timeStringnullableback_nine_startBooleannullableparIntnullable72scoreIntnullableTotal strokes for round
70double_eaglesIntnullable0eaglesIntnullable0birdiesIntnullable4parsIntnullable12bogeysIntnullable2double_bogeysIntnullable0worse_than_double_bogeyIntnullable0triple_bogeysIntnullable0worse_than_triple_bogeyIntnullable0holes_in_oneIntnullable0created_atStringupdated_atStringsg_totalFloatnullable-0.1640sg_off_teeFloatnullable0.8570sg_approachFloatnullable-0.8480sg_around_greenFloatnullable0.7610sg_puttingFloatnullable1.6950sg_tee_to_greenFloatnullable0.2610Relations (3)
The golf.players row referenced by player_id; null when unlinked.
The golf.tournaments row referenced by tournament_id; null when unlinked.
golf.player_holes rows whose player_round_id references this row.
Arguments (4)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.player_idIntFilter to a single player.tournament_idIntFilter to a single tournament.
PGAPlayerShotsplayer_id | tournament_id.Fields (32)
idBigIntkeyPrimary Key
25520round_numberInt3hole_numberInt9shot_numberIntStroke sequence within the hole (1 = first stroke)
1parIntnullable4stroke_typeStringnullableSTROKE, PENALTY, DROP, PROVISIONAL
STROKEValues:STROKEDROPPENALTYPROVISIONALfrom_locationStringnullableGreenValues:GreenTee BoxFairwayPrimary RoughIntermediate RoughGreenside BunkerFairway BunkerNative AreaOtherFringeto_locationStringnullableGreenfrom_location_codeStringnullableOGRValues:OGROTBOFWOROOIROGSOSTONAOTHOCOto_location_codeStringnullableOGRdistance_yardsFloatnullableShot distance in yards (null when the source reports feet near the green)
289distance_remaining_yardsFloatnullableDistance to the hole after the shot, in yards
145play_by_playStringnullableIn the holefinal_strokeBooleannullablefalseValues:falsetruefrom_xFloatnullable7309.9from_yFloatnullable11300.88from_zFloatnullable246.065to_xFloatnullable5799.6to_yFloatnullable12140.75to_zFloatnullable358.62club_speedFloatnullable0ball_speedFloatnullable175.15smash_factorFloatnullable0launch_spinFloatnullable0spin_axisFloatnullable0launch_angleFloatnullableVertical launch angle (degrees)
8.74apex_heightFloatnullable99.61carry_distanceFloatnullable269.59created_atStringupdated_atStringRelations (2)
The golf.players row referenced by player_id; null when unlinked.
The golf.tournaments row referenced by tournament_id; null when unlinked.
Arguments (4)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.player_idIntFilter to a single player.tournament_idIntFilter to a single tournament.
PGATournamentRoundstournament_id.Fields (7)
idBigIntkeyPrimary Key
1round_idInt20250161round_numberInt1dayString2025-03-05T05:00:00.000Zcreated_atStringupdated_atStringRelations (1)
The golf.tournaments row referenced by tournament_id; null when unlinked.
Arguments (3)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.tournament_idIntFilter to a single tournament.
Stats
PGAOperatorPlayerLookupsoperator_id.Fields (7)
idBigIntkeyPrimary Key
Operator id: 1 DraftKings, 2 FanDuel, 3 Yahoo, 13 sportsdata.io.
2228player_nameStringnullablePlayer name for reconciliation
Ludvig Åbergcreated_atStringupdated_atStringRelations (2)
The main.operators row referenced by operator_id; null when unlinked.
The golf.players row referenced by player_id; null when unlinked.
Arguments (4)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.operator_idIntFilter by operator.player_idIntFilter to a single player.
PGAPlayerSeasonStatsseason_id | player_id.Fields (42)
idBigIntkeyPrimary Key
3812eventsIntnullable1cuts_madeIntnullable1winsIntnullable0second_placeIntnullable0third_placeIntnullable0top_fiveIntnullable0top_tenIntnullable0top_twenty_fiveIntnullable0roundsIntnullable4total_strokesIntnullable5654total_scoreIntnullableTotal score relative to par
-120double_eaglesIntnullable0eaglesIntnullable0birdiesIntnullable17parsIntnullable46bogeysIntnullable9double_bogeysIntnullable0worse_than_double_bogeyIntnullable0triple_bogeysIntnullable0worse_than_triple_bogeyIntnullable0holes_in_oneIntnullable0streaks_of_three_birdies_or_betterIntnullable0bogey_free_roundsIntnullable0rounds_under_seventyIntnullable1bounce_back_countIntnullableconsecutive_birdie_or_better_countIntnullablecreated_atStringupdated_atStringdriving_distanceFloatnullableAverage driving distance in yards
295.6000driving_accuracy_pctFloatnullable55.2500gir_pctFloatnullableGreens in regulation percentage
66.3900putts_per_roundFloatnullable28.8900scrambling_pctFloatnullable58.6000sg_totalFloatnullable-0.8370sg_off_teeFloatnullable-0.2285sg_approachFloatnullable0.0663sg_around_greenFloatnullable0.4845sg_puttingFloatnullable-1.28055Relations (3)
The golf.players row referenced by player_id; null when unlinked.
The golf.seasons row referenced by season_id; null when unlinked.
The golf.tours row referenced by tour_id; null when unlinked.
Arguments (5)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.season_idIntFilter to a single season. Defaults to the current season.player_idIntFilter to a single player.tour_idIntFilter by tour.
PGACourseHoleStatstournament_id.Fields (17)
idBigIntkeyPrimary Key
887course_codeStringPGA Tour course code (e.g., 014 = Augusta National)
006round_numberInt2hole_numberInt1parIntnullable4yardsIntnullable450scoring_averageFloatnullable4.0000scoring_average_diffFloatnullableScoring average relative to par
0.0000eaglesIntnullable0birdiesIntnullable8parsIntnullable50bogeysIntnullable4double_bogeysIntnullable0rankIntnullableDifficulty rank among holes (1 = hardest)
1created_atStringupdated_atStringRelations (1)
The golf.tournaments row referenced by tournament_id; null when unlinked.
Arguments (3)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.tournament_idIntFilter to a single tournament.
PGALeaderboardstournament_id | player_id.Fields (25)
idBigIntkeyPrimary Key
2575459161rankIntnullable2total_scoreIntnullableScore relative to par
-1total_strokesIntnullable143total_throughIntnullableCurrent hole of player for current round
earningsBigIntnullablePrize money earned in cents
fedex_ptsIntnullablemade_cutIntnullable1 if made cut, 0 if missed
1made_cut_did_not_finishBooleannullablewinIntnullable1 if won tournament
0is_alternateBooleannullableis_withdrawnBooleannullablefalseValues:falsetruetournament_statusStringnullableout, active, etc.
COMPLETEValues:COMPLETEWITHDRAWNDISQUALIFIEDtee_timeStringnullablecreated_atStringupdated_atStringsg_totalFloatnullable-0.3120sg_off_teeFloatnullable0.6840sg_approachFloatnullable11.7050sg_around_greenFloatnullable4.4940sg_puttingFloatnullable7.1580sg_tee_to_greenFloatnullable16.4630Relations (2)
The golf.players row referenced by player_id; null when unlinked.
The golf.tournaments row referenced by tournament_id; null when unlinked.
Arguments (4)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.tournament_idIntFilter to a single tournament.player_idIntFilter to a single player.
Odds
PGATournamentOddstournament_id.Fields (24)
idBigIntkeyPrimary Key
604195sportsbookStringnullableDraftKings, FanDuel, BetMGM, etc.
fanduelValues:fandueldraftkingsbetfairwilliamhill_usunibetintertopslowvigbetriversbetmgmbarstoolsugarhousebetonlineagfoxbetbovadasuperbookunibet_ustwinspiresgtbetsis_availableBooleannullabletrueis_alternateBooleannullableoutright_oddsIntnullableOdds to win tournament (American format)
15000top_five_oddsIntnullabletop_ten_oddsIntnullabletop_twenty_oddsIntnullablemake_cut_oddsIntnullablemiss_cut_oddsIntnullablefirst_round_leader_oddsIntnullablematchup_opponent_idBigIntnullablematchup_oddsIntnullablematchup_opponent_oddsIntnullableround_matchup_opponent_idBigIntnullableround_matchup_oddsIntnullableround_matchup_opponent_oddsIntnullablethree_ball_opponent1_idBigIntnullablethree_ball_opponent2_idBigIntnullablethree_ball_oddsIntnullableupdated_atStringcreated_atStringRelations (6)
The golf.players row referenced by player_id; null when unlinked.
The golf.tournaments row referenced by tournament_id; null when unlinked.
The golf.players row referenced by matchup_opponent_id; null when unlinked.
The golf.players row referenced by round_matchup_opponent_id; null when unlinked.
The golf.players row referenced by three_ball_opponent1_id; null when unlinked.
The golf.players row referenced by three_ball_opponent2_id; null when unlinked.
Arguments (4)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.tournament_idIntFilter to a single tournament.player_idIntFilter to a single player.
Misc
PGAToursFields (9)
idBigIntkeyPrimary Key
nameStringPGA TourValues:PGA TourEuropean Tour (DP World Tour)LIV GolfLPGA TourChampions TourKorn Ferry TourcodeStringTour code (pga, european, liv, lpga, champions, korn_ferry)
pgaValues:pgaeuropeanlivlpgachampionskorn_ferry1descriptionStringnullableProfessional Golf Association TourValues:Professional Golf Association TourDP World Tour (formerly European Tour)LIV Golf Invitational SeriesLadies Professional Golf Association TourPGA Tour Champions (senior tour)PGA Tour developmental touractiveBooleantruelogo_urlStringnullablecreated_atStringupdated_atStringRelations (3)
golf.player_season_stats rows whose tour_id references this row.
golf.seasons rows whose tour_id references this row.
golf.tournaments rows whose tour_id references this row.
Arguments (3)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.activeBooleanFilter by active status (defaults to true to show only currently-active rows; pass active=false to include inactive).
PGACoursesFields (17)
idBigIntkeyPrimary Key
nameStringPlantation Course at KapaluacityStringnullableLa QuintastateStringnullableCaliforniacountryStringnullableUSAValues:USACANMEXSCOPURDOMFRAJPNBERBAHzipStringnullablelongitudeFloatnullablelatitudeFloatnullableelevationFloatnullableElevation in feet above sea level
parInt72yardsInt7569timezoneStringnullableIANA timezone (e.g., America/New_York)
addressStringnullableimage_urlStringnullableURL to aerial/overview image of course
https://res.cloudinary.com/pgatour-prod/ar_0.667,c_crop/d_placeholders:tournamentBackgroundSolid.pn…created_atStringupdated_atStringArguments (2)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.
PGAPlayerNewsplayer_id | tournament_id.Fields (19)
idBigIntkeyPrimary Key
168sourceStringnullablepga_tourtitleStringOne-liners: Get to know all 70 players who made 2025 FedExCup PlayoffscontentStringnullablePairings, predictions and betting odds for each Sunday Singles matchupurlStringnullablehttps://www.pgatour.com/article/news/latest/2025/08/04/70-one-liners-for-fedexcup-playoffs-st-jude-…terms_of_useStringnullablecategoriesStringnullableLatestoriginal_sourceStringnullableoriginal_source_urlStringnullablenews_timeString2025-08-04T15:19:00.000Zupdated_timeStringnullable2025-08-04T15:28:47.169ZpriorityInt10created_atStringupdated_atStringai_processedBooleanfalsesituational_impactJSONnullableRelations (2)
The golf.players row referenced by player_id; null when unlinked.
The golf.tournaments row referenced by tournament_id; null when unlinked.
Arguments (8)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.player_idIntFilter to a single player.tournament_idIntFilter to a tournament.news_timeStringFilter by publication time (ISO 8601). Use news_time__gte to poll for items since your last check.news_time__gteStringgtecomparison onnews_time.news_time__lteStringltecomparison onnews_time.news_time__betweenStringRange filter onnews_time— pass "lo,hi".