Skip to contents

Returns every stroke from PGA Tour ShotLink for a season: where each shot started and finished, its distance, and launch monitor (radar) readings when the tour captured them.

Usage

load_shots(year, tournament = NULL, player = NULL)

Arguments

year

Season year (e.g., 2026).

tournament

Optional PGA Tour tournament ID (e.g., `"R2025011"`) or partial tournament name match.

player

Optional player name filter (partial match, case-insensitive).

Value

A tibble with one row per stroke, including:

  • tournament_id, tournament_name: PGA Tour event

  • player_id, player_name: PGA Tour player

  • round, hole, par, hole_score

  • stroke: Stroke number on the hole

  • stroke_type: "STROKE", "PENALTY", "DROP" and similar

  • distance: Shot distance in yards

  • distance_remaining: Distance to the hole after the shot, in yards

  • from_location, to_location: Lie before and after (e.g., "Tee Box", "Fairway", "Green")

  • from_code, to_code: ShotLink lie codes

  • play_by_play: Text description of the shot

  • from_x, from_y, to_x, to_y: Shot position on the hole diagram, scaled 0 to 1

  • club_speed, ball_speed (mph), smash_factor, spin_rate (rpm), spin_axis, launch_angle, launch_direction (degrees), apex_height, apex_range, apex_side (feet), flight_time: radar readings, NA when not captured

Details

Data comes from pre-built files on the package's GitHub releases, built from the PGA Tour's shot tracking feed. Older seasons have strokes, lies and distances but no coordinates or radar data. Events without ShotLink coverage are not included.

Examples

# \donttest{
shots <- load_shots(2026, "Sony")
# }