Discover/LIV Golf API
live

LIV Golf APIlivgolf.com

Access per-shot data for LIV Golf players: club used, distance travelled, distance to pin, wind conditions, and landing zone for every round.

This API takes change requests — .
Endpoint health
verified 21h ago
get_player_shots
1/1 passing latest checkself-healing
Endpoints
1
Updated
21h ago

What is the LIV Golf API?

The LIV Golf API exposes 1 endpoint — get_player_shots — that returns every shot a player took in a given round of a LIV Golf event. Each response includes up to a dozen fields per shot: club selection, distance travelled, distance to pin, wind conditions, stroke position, and landing zone, giving developers granular per-hole performance data for individual players across events and seasons.

Try it
Season year (e.g. '2026', '2025').
URL slug of the event (e.g. 'andalucia', 'hong-kong', 'jeddah').
URL slug of the player, typically first-last name hyphenated (e.g. 'tyrrell-hatton', 'jon-rahm', 'dustin-johnson').
Round number (1-4).
api.parse.bot/scraper/66d06f70-6cdc-4f29-bbcc-39e9873386d4/<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/66d06f70-6cdc-4f29-bbcc-39e9873386d4/get_player_shots?season=2026&event_slug=andalucia&player_slug=tyrrell-hatton&round_number=1' \
  -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 livgolf-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.

"""Walkthrough: LIV Golf SDK — bounded, re-runnable; every call capped."""
from parse_apis.livgolf_com_api import LivGolf, ShotDataNotFound

client = LivGolf()

# Get shot-by-shot data for a player's round
for shot in client.player_rounds.get(event_slug="andalucia", player_slug="tyrrell-hatton", round_number="1", limit=5):
    print(shot.hole_number, shot.stroke_number, shot.club_used, shot.distance_travelled, shot.zone_desc)

# Take one shot to inspect details
shot = client.player_rounds.get(event_slug="andalucia", player_slug="jon-rahm", round_number="2", limit=1).first()
if shot:
    print(shot.player_name, shot.stroke_position, shot.wind_speed, shot.wind_direction)

# Handle missing data gracefully
try:
    client.player_rounds.get(event_slug="andalucia", player_slug="tyrrell-hatton", round_number="1", limit=1).first()
except ShotDataNotFound as e:
    print(f"Not found: {e.player_slug} at {e.event_slug}")

print("exercised: player_rounds.get")
All endpoints · 1 totalmissing one? ·

Returns every shot a player took in a specific round of a LIV Golf event, ordered by hole sequence. Each shot includes club used, distance travelled, distance to pin, wind conditions, stroke position, and landing zone. Distances are in tenths of yards from the source (divide by 36 for approximate yards). One round typically yields 60-75 shots across 18 holes.

Input
ParamTypeDescription
seasonstringSeason year (e.g. '2026', '2025').
event_slugrequiredstringURL slug of the event (e.g. 'andalucia', 'hong-kong', 'jeddah').
player_slugrequiredstringURL slug of the player, typically first-last name hyphenated (e.g. 'tyrrell-hatton', 'jon-rahm', 'dustin-johnson').
round_numberstringRound number (1-4).
Response
{
  "type": "object",
  "fields": {
    "shots": "array of shot objects with stroke details",
    "season": "string — season year",
    "event_slug": "string — the event slug used in the request",
    "player_slug": "string — the player slug used in the request",
    "total_shots": "integer — total number of shots in this round",
    "round_number": "integer — round number"
  },
  "sample": {
    "data": {
      "shots": [
        {
          "hole_par": 4,
          "club_used": "Driver",
          "stroke_id": 70309732,
          "zone_desc": "SECOND_CUT",
          "hole_order": 1,
          "hole_score": 3,
          "is_captain": false,
          "wind_speed": 1.8,
          "hole_number": 18,
          "in_the_hole": false,
          "player_name": "Tyrrell Hatton",
          "stroke_type": "NORMAL",
          "country_code": "ENG",
          "hole_yardage": 463,
          "round_number": 1,
          "stroke_number": 1,
          "wind_direction": "W",
          "distance_to_pin": 4155.8,
          "stroke_position": "Tee",
          "tournament_name": "LIV Golf Andalucia",
          "distance_travelled": 11676.7
        }
      ],
      "season": "2026",
      "event_slug": "andalucia",
      "player_slug": "tyrrell-hatton",
      "total_shots": 69,
      "round_number": 1
    },
    "status": "success"
  }
}

About the LIV Golf API

What the API Returns

The get_player_shots endpoint returns an ordered array of shot objects for a single player in a single round of a LIV Golf event. Each shot object carries the club used, distance travelled (in tenths of yards — divide by 3 to get feet, or by 36 to get approximate meters), distance remaining to the pin, wind conditions at the time of the stroke, the stroke's positional context, and the landing zone. The response envelope also includes total_shots (an integer count of all strokes in that round), round_number, season, event_slug, and player_slug for easy request reconciliation.

Parameters

Required inputs are event_slug — the URL slug identifying the tournament (e.g. andalucia, hong-kong, jeddah) — and player_slug, which follows a first-last hyphenated convention (e.g. tyrrell-hatton, jon-rahm). The optional season parameter (e.g. 2025, 2026) scopes requests to a specific LIV Golf season, and round_number (1–4) filters results to a single round when you don't need the full event picture.

Data Scope and Freshness

Coverage spans LIV Golf events where shot-level tracking data is available. Distance values are returned as integers in tenths of yards as sourced, so client-side conversion is needed for display in yards, feet, or meters. Data is scoped to individual rounds — to build a full-event picture for a player, you call the endpoint once per round. There is no bulk endpoint that returns all players in a field simultaneously.

Reliability & maintenanceVerified

The LIV Golf API is a managed, monitored endpoint for livgolf.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when livgolf.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 livgolf.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
21h ago
Latest check
1/1 endpoint 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
  • Build a shot-dispersion chart for a specific player across multiple LIV Golf events using landing zone and distance-to-pin fields.
  • Compare club selection patterns between two players at the same event by querying each player's get_player_shots response.
  • Analyse how wind conditions correlate with distance travelled on par-5 holes for a given season.
  • Track round-by-round total_shots trends for a player over a full season to model scoring consistency.
  • Compute strokes-gained approximations by combining distance-to-pin before and after each shot across a round.
  • Identify which landing zones a player favours off the tee at specific event slugs like jeddah or hong-kong.
  • Power a fantasy golf analytics tool that surfaces per-round shot quality metrics for LIV Golf competitors.
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 LIV Golf have an official developer API?+
LIV Golf does not publish a public developer API or documentation portal. There is no official endpoint consumers can register for at livgolf.com.
What exactly does `get_player_shots` return, and how are distances expressed?+
The endpoint returns an array of shot objects ordered by hole sequence. Each object includes the club used, distance travelled, distance to pin, wind conditions, stroke position, and landing zone. Distance values are integers in tenths of yards as delivered by the source — divide by 36 to convert to approximate meters or by 3 to get feet.
Can I retrieve shot data for all players in a field with a single call?+
No — get_player_shots is scoped to one player_slug per request. Retrieving a full field requires one call per player. You can fork this API on Parse and revise it to add a field-wide endpoint that batches or aggregates player data.
Does the API return leaderboard standings, scoring summaries, or hole-by-hole scores?+
Not currently. The API covers per-shot stroke data: club, distances, wind, landing zone, and stroke position. It does not return leaderboard rankings or aggregate score-to-par summaries. You can fork it on Parse and revise to add a leaderboard or scoring endpoint.
How do I identify the correct `event_slug` and `player_slug` values to use?+
Event slugs follow the tournament location name in lowercase hyphenated form (e.g. andalucia, hong-kong, jeddah). Player slugs use the first-last hyphenated convention visible in LIV Golf URLs (e.g. tyrrell-hatton, dustin-johnson). Checking the player or event URL on livgolf.com is the most reliable way to confirm exact slugs before making a request.
Page content last updated . Spec covers 1 endpoint from livgolf.com.
Related APIs in SportsSee all →
transfermarkt.com API
Search Transfermarkt for football players and retrieve detailed player profiles, transfer histories, market value timelines, performance stats, and club squad/club information.
opendota.com API
Access detailed Dota 2 match statistics, player performance metrics, hero win rates, and professional tournament data to analyze gameplay trends and competitive performance. Search for specific players, explore custom data queries through SQL, and retrieve comprehensive match histories to improve your understanding of the game.
nhl.com API
Access data from nhl.com.
hltv.org API
Access Counter-Strike esports data from HLTV.org including match results, player and team statistics, team rankings, upcoming match schedules, tournament information, and fantasy league data.
flashscore.com API
Search teams and competitions, pull daily fixtures and live scores, and retrieve match details including events, statistics, and league standings from FlashScore.
racecenter.letour.fr API
Track live Tour de France race updates by accessing real-time rider positions, detailed stage information, and current general classification standings. Monitor how your favorite cyclists are performing throughout each stage and their overall ranking in the competition.
transfermarkt.de API
Access data from transfermarkt.de.
pro-football-reference.com API
Access comprehensive NFL data including season schedules, team standings, player statistics, game boxscores, play-by-play details, and player profiles to research teams, players, and game information. Search for specific players and dive into detailed game analysis with boxscore information and minute-by-minute play data.