STAT-API

PGA player_shots API

player_shotsgolf.player_shots
Shot-by-shot tracking for each player at each professional tournament — every stroke with its type, start/end location, distance, ShotLink/TOURCAST course coordinates, and radar metrics (club & ball speed, spin, launch angle, apex, carry). Available for regular PGA Tour events with ShotLink; majors such as the Masters do not publish shot tracking.
GET/api/v1/pga/player_shots
Requires one of: player_id or tournament_id — requests satisfying none of these return 400.
Parameters
player_idquerybigintoptional
Filter to a single player.
tournament_idquerybigintoptional
Filter to a single tournament.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/pga/player_shots?player_id=1'
Responses
200player_shots rows matching the declared filter set, wrapped in { player_shots, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(30 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
player_id
bigint—
e.g. 20
tournament_id
bigint—
e.g. 255
apex_height
floatnullable——
e.g. 99.61
ball_speed
floatnullable——
e.g. 175.15
carry_distance
floatnullable——
e.g. 269.59
club_speed
floatnullable——
e.g. 0
distance_remaining_yards
floatnullable—Distance to the hole after the shot, in yards
e.g. 145
distance_yards
floatnullable—Shot distance in yards (null when the source reports feet near the green)
e.g. 289
final_stroke
booleannullable——
Values:falsetrue
from_location
stringnullable——
Values:GreenTee BoxFairwayPrimary RoughIntermediate RoughGreenside BunkerFairway BunkerNative AreaOtherFringe
from_location_code
stringnullable——
Values:OGROTBOFWOROOIROGSOSTONAOTHOCO
from_x
floatnullable——
e.g. 7309.9
from_y
floatnullable——
e.g. 11300.88
from_z
floatnullable——
e.g. 246.065
hole_number
integer——
e.g. 9
launch_angle
floatnullable—Vertical launch angle (degrees)
e.g. 8.74
launch_spin
floatnullable——
e.g. 0
par
integernullable——
e.g. 4
play_by_play
stringnullable——
e.g. In the hole
round_number
integer——
e.g. 3
shot_number
integer—Stroke sequence within the hole (1 = first stroke)
e.g. 1
smash_factor
floatnullable——
e.g. 0
spin_axis
floatnullable——
e.g. 0
stroke_type
stringnullable—STROKE, PENALTY, DROP, PROVISIONAL
Values:STROKEDROPPENALTYPROVISIONAL
to_location
stringnullable——
e.g. Green
to_location_code
stringnullable——
e.g. OGR
to_x
floatnullable——
e.g. 5799.6
to_y
floatnullable——
e.g. 12140.75
to_z
floatnullable——
e.g. 358.62
GET/api/v1/pga/player_shots/{id}
Parameters
idpathbigintrequired
Primary key (id) of the player_shot row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/pga/player_shots/{pk_value}'
Responses
200Single player_shot row.application/jsonshow example ▸
404Row not found.
Response Schema(30 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
player_id
bigint—
e.g. 20
tournament_id
bigint—
e.g. 255
apex_height
floatnullable——
e.g. 99.61
ball_speed
floatnullable——
e.g. 175.15
carry_distance
floatnullable——
e.g. 269.59
club_speed
floatnullable——
e.g. 0
distance_remaining_yards
floatnullable—Distance to the hole after the shot, in yards
e.g. 145
distance_yards
floatnullable—Shot distance in yards (null when the source reports feet near the green)
e.g. 289
final_stroke
booleannullable——
Values:falsetrue
from_location
stringnullable——
Values:GreenTee BoxFairwayPrimary RoughIntermediate RoughGreenside BunkerFairway BunkerNative AreaOtherFringe
from_location_code
stringnullable——
Values:OGROTBOFWOROOIROGSOSTONAOTHOCO
from_x
floatnullable——
e.g. 7309.9
from_y
floatnullable——
e.g. 11300.88
from_z
floatnullable——
e.g. 246.065
hole_number
integer——
e.g. 9
launch_angle
floatnullable—Vertical launch angle (degrees)
e.g. 8.74
launch_spin
floatnullable——
e.g. 0
par
integernullable——
e.g. 4
play_by_play
stringnullable——
e.g. In the hole
round_number
integer——
e.g. 3
shot_number
integer—Stroke sequence within the hole (1 = first stroke)
e.g. 1
smash_factor
floatnullable——
e.g. 0
spin_axis
floatnullable——
e.g. 0
stroke_type
stringnullable—STROKE, PENALTY, DROP, PROVISIONAL
Values:STROKEDROPPENALTYPROVISIONAL
to_location
stringnullable——
e.g. Green
to_location_code
stringnullable——
e.g. OGR
to_x
floatnullable——
e.g. 5799.6
to_y
floatnullable——
e.g. 12140.75
to_z
floatnullable——
e.g. 358.62