NAV
shell

LPGA API

Welcome to the BALLDONTLIE LPGA API, with tournaments, players, leaderboards, round statistics, scorecards, tee times, standings and betting odds. An API key is required. You can obtain an API key by creating a free account on our website. Read the authentication section to learn how to use the API key.

Take a look at our other APIs.

Join us on X and Discord.

AI-Powered Integration

Using the OpenAPI Specification with AI

Our complete OpenAPI specification allows AI assistants to automatically understand and interact with our API. Simply share the spec URL with your AI assistant and describe what you want to build—the AI will handle the technical implementation.

Getting Started with AI:

  1. Copy this URL: https://www.balldontlie.io/openapi/lpga.yml
  2. Share it with your preferred AI assistant (ChatGPT, the agent, Gemini, etc.)
  3. Tell the AI what you want to build (e.g., "Create a dashboard showing the current LPGA leaderboard")
  4. The AI will read the OpenAPI spec and write the code for you

Example prompts to try:

This makes it incredibly easy for non-technical users, analysts, and researchers to leverage our sports data without needing to learn programming from scratch.

Account Tiers

Annual billing saves 20%. Choose monthly or annual billing when subscribing. Annual prices are charged once per year.

PlanMonthly (USD)Annual (USD)
ALL-STAR$9.99/month$95.90/year
GOAT$39.99/month$383.90/year
ALL-ACCESS$299.99/month$2,879.90/year

There are three different account tiers which provide you access to different types of data. Visit our website to create an account for free.

ALL-STAR and GOAT pricing is per league. A subscription covers only the selected league, even when multiple leagues play the same sport. ALL-ACCESS includes every endpoint for all leagues. LPGA and PGA require separate paid subscriptions unless you have ALL-ACCESS.

Read the table below to see the breakdown.

Endpoint Free ALL-STAR GOAT
Tournaments Yes Yes Yes
Tournament Yes Yes Yes
Players Yes Yes Yes
Player Yes Yes Yes
Tournament Entries No Yes Yes
Player Rounds No No Yes
Scorecards No No Yes
Tee Times No No Yes
Standings No Yes Yes
Futures No No Yes
Player Props No No Yes
Opening Player Props No No Yes

The feature breakdown per tier is shown in the table below.

Tier Requests / Min $USD / mo.
GOAT 600 39.99
ALL-STAR 60 9.99
Free 5 0

7-day free trial

Each league subscription offers a 7-day trial of the GOAT tier (all endpoints, 5 req/min during the trial). ALL-ACCESS is also available as a 7-day trial with the same 5 req/min trial limit. A payment method is required at signup; there is no charge until the trial ends, and you can cancel anytime from your dashboard. One trial per league per account. Existing ALL-STAR subscribers may trial the GOAT upgrade for their leagues.

Choose Cancel at trial end to keep trial access until the displayed deadline, or End trial now to end it immediately. A scheduled cancellation offers Undo cancellation and End now. Undo keeps the original deadline and restores automatic paid conversion. Cancelling an ALL-STAR to GOAT trial preserves ALL-STAR billing and prevents the GOAT upgrade charge. When an ALL-ACCESS trial ends, subscriptions paused for that trial resume.

Authentication

Include your API key in the Authorization header of every request. Create a free account to obtain a key.

Authorization: YOUR_API_KEY

Pagination

Collection endpoints support cursor pagination unless their section says otherwise. Use meta.next_cursor as the next request’s cursor. The default per_page is 25 and the maximum is 100.

Errors

Code Meaning
400 Invalid request parameters.
401 Missing or invalid API key, or insufficient subscription tier.
404 Resource not found.
429 Rate limit exceeded.
500 Server error.

Tournaments

List LPGA tournaments and their current status.

Minimum tier: Free.

GET https://api.balldontlie.io/lpga/v1/tournaments

curl -g "https://api.balldontlie.io/lpga/v1/tournaments?season=2026&per_page=1" \
  -H "Authorization: YOUR_API_KEY"
{
  "data": [
    {
      "id": 1,
      "season": 2026,
      "name": "Hilton Grand Vacations Tournament of Champions",
      "start_date": "2026-01-29",
      "end_date": "2026-02-01",
      "location": "Orlando, FL",
      "course": "Lake Nona Golf & Country Club",
      "timezone": null,
      "status": "final",
      "format": null,
      "total_rounds": 3,
      "current_round": 3,
      "purse": 2100000,
      "available_points": 500
    }
  ],
  "meta": {
    "next_cursor": 1,
    "per_page": 1
  }
}

Query Parameters

Parameter Type Required Description
tournament_ids[] array No Filter by tournament IDs (1–100 values).
season integer No Four-digit season year.
status string No Tournament status. Values: scheduled, in_progress, final.
start_date string No Include tournaments starting on or after this date.
end_date string No Include tournaments starting on or before this date; must be on or after start_date.
cursor integer No Cursor from the previous response’s meta.next_cursor.
per_page integer No Number of results (default 25, maximum 100; larger values are capped).

Tournament

Get a single LPGA tournament.

Minimum tier: Free.

GET https://api.balldontlie.io/lpga/v1/tournaments/{id}

curl -g "https://api.balldontlie.io/lpga/v1/tournaments/31" \
  -H "Authorization: YOUR_API_KEY"
{
  "data": {
    "id": 31,
    "season": 2026,
    "name": "The ANNIKA driven by Gainbridge at Pelican",
    "start_date": "2026-11-12",
    "end_date": "2026-11-15",
    "location": "Belleair, FL",
    "course": "Pelican Golf Club",
    "timezone": "America/New_York",
    "status": "in_progress",
    "format": "Stroke Play",
    "total_rounds": 4,
    "current_round": 4,
    "purse": 3250000,
    "available_points": 500
  }
}

Path Parameters

Parameter Type Required Description
id integer Yes Tournament ID.

Players

List LPGA players.

Minimum tier: Free.

GET https://api.balldontlie.io/lpga/v1/players

curl -g "https://api.balldontlie.io/lpga/v1/players?per_page=1" \
  -H "Authorization: YOUR_API_KEY"
{
  "data": [
    {
      "id": 1,
      "name": "Miyu Yamashita",
      "country": "JPN",
      "amateur": false
    }
  ],
  "meta": {
    "next_cursor": 1,
    "per_page": 1
  }
}

Query Parameters

Parameter Type Required Description
player_ids[] array No Filter by player IDs (1–100 values).
search string No Case-insensitive player name search.
country string No Three-letter country code; case-insensitive.
cursor integer No Cursor from the previous response’s meta.next_cursor.
per_page integer No Number of results (default 25, maximum 100; larger values are capped).

Player

Get a single LPGA player.

Minimum tier: Free.

GET https://api.balldontlie.io/lpga/v1/players/{id}

curl -g "https://api.balldontlie.io/lpga/v1/players/1" \
  -H "Authorization: YOUR_API_KEY"
{
  "data": {
    "id": 1,
    "name": "Miyu Yamashita",
    "country": "JPN",
    "amateur": false
  }
}

Path Parameters

Parameter Type Required Description
id integer Yes Player ID.

Tournament Entries

Get the tournament field, leaderboard positions and results. An entry can contain multiple players for team events. Null values indicate unavailable data.

Minimum tier: ALL-STAR.

GET https://api.balldontlie.io/lpga/v1/entries

curl -g "https://api.balldontlie.io/lpga/v1/entries?tournament_id=31&per_page=1" \
  -H "Authorization: YOUR_API_KEY"
{
  "data": [
    {
      "id": 78,
      "tournament_id": 31,
      "players": [
        {
          "id": 78,
          "name": "Macy Pate (a)",
          "country": "USA",
          "amateur": true
        }
      ],
      "field_present": true,
      "field_status": "Entered",
      "position": "CUT",
      "status": "cut",
      "strokes": 146,
      "to_par": 6,
      "thru": "F",
      "prize_money": null,
      "points": null,
      "playoff_status": null,
      "scorecards_available": true
    }
  ],
  "meta": {
    "next_cursor": 78,
    "per_page": 1
  }
}

Query Parameters

Parameter Type Required Description
tournament_id integer Yes Tournament ID.
player_ids[] array No Filter by player IDs (1–100 values).
entry_ids[] array No Filter by entry IDs (1–100 values).
status string No Entry status. Values: active, cut, withdrawn, disqualified, did_not_start, did_not_play, unknown.
field_present boolean No Filter entries currently in the field.
cursor integer No Cursor from the previous response’s meta.next_cursor.
per_page integer No Number of results (default 25, maximum 100; larger values are capped).

Player Rounds

Get round scores and statistics. Statistics may be null when unavailable.

Minimum tier: GOAT.

GET https://api.balldontlie.io/lpga/v1/rounds

curl -g "https://api.balldontlie.io/lpga/v1/rounds?tournament_id=31&per_page=1" \
  -H "Authorization: YOUR_API_KEY"
{
  "data": [
    {
      "id": 1058741,
      "tournament_id": 31,
      "entry_id": 166,
      "player_ids": [
        166
      ],
      "round": 1,
      "strokes": 69,
      "par": 70,
      "to_par": -1,
      "fairways_hit": 12,
      "fairways_total": 14,
      "greens_hit": 14,
      "greens_total": 18,
      "putts": 30,
      "driving_distance": 252,
      "sand_saves": 1,
      "sand_attempts": 1
    }
  ],
  "meta": {
    "next_cursor": 1058741,
    "per_page": 1
  }
}

Query Parameters

Parameter Type Required Description
tournament_id integer Yes Tournament ID.
player_ids[] array No Filter by player IDs (1–100 values).
entry_ids[] array No Filter by entry IDs (1–100 values).
round integer No Round number.
cursor integer No Cursor from the previous response’s meta.next_cursor.
per_page integer No Number of results (default 25, maximum 100; larger values are capped).

Scorecards

Get hole-by-hole scores. Unplayed or unavailable hole scores are null.

Minimum tier: GOAT.

GET https://api.balldontlie.io/lpga/v1/scorecards

curl -g "https://api.balldontlie.io/lpga/v1/scorecards?tournament_id=31&per_page=1" \
  -H "Authorization: YOUR_API_KEY"
{
  "data": [
    {
      "id": 1058741,
      "tournament_id": 31,
      "entry_id": 166,
      "player_ids": [
        166
      ],
      "round": 1,
      "strokes": 69,
      "par": 70,
      "to_par": -1,
      "holes": [
        {
          "hole": 1,
          "par": 4,
          "yardage": 312,
          "strokes": 4
        },
        {
          "hole": 2,
          "par": 4,
          "yardage": 397,
          "strokes": 3
        },
        {
          "hole": 3,
          "par": 3,
          "yardage": 182,
          "strokes": 3
        },
        {
          "hole": 4,
          "par": 4,
          "yardage": 408,
          "strokes": 4
        },
        {
          "hole": 5,
          "par": 4,
          "yardage": 360,
          "strokes": 4
        },
        {
          "hole": 6,
          "par": 4,
          "yardage": 369,
          "strokes": 4
        },
        {
          "hole": 7,
          "par": 5,
          "yardage": 495,
          "strokes": 4
        },
        {
          "hole": 8,
          "par": 4,
          "yardage": 425,
          "strokes": 4
        },
        {
          "hole": 9,
          "par": 3,
          "yardage": 158,
          "strokes": 5
        },
        {
          "hole": 10,
          "par": 4,
          "yardage": 420,
          "strokes": 4
        },
        {
          "hole": 11,
          "par": 4,
          "yardage": 381,
          "strokes": 4
        },
        {
          "hole": 12,
          "par": 3,
          "yardage": 143,
          "strokes": 3
        },
        {
          "hole": 13,
          "par": 4,
          "yardage": 423,
          "strokes": 4
        },
        {
          "hole": 14,
          "par": 5,
          "yardage": 529,
          "strokes": 4
        },
        {
          "hole": 15,
          "par": 3,
          "yardage": 191,
          "strokes": 3
        },
        {
          "hole": 16,
          "par": 4,
          "yardage": 388,
          "strokes": 4
        },
        {
          "hole": 17,
          "par": 4,
          "yardage": 340,
          "strokes": 4
        },
        {
          "hole": 18,
          "par": 4,
          "yardage": 428,
          "strokes": 4
        }
      ]
    }
  ],
  "meta": {
    "next_cursor": 1058741,
    "per_page": 1
  }
}

Query Parameters

Parameter Type Required Description
tournament_id integer Yes Tournament ID.
player_ids[] array No Filter by player IDs (1–100 values).
entry_ids[] array No Filter by entry IDs (1–100 values).
round integer No Round number.
cursor integer No Cursor from the previous response’s meta.next_cursor.
per_page integer No Number of results (default 25, maximum 100; larger values are capped).

Tee Times

Get tee times with local time, IANA timezone and the corresponding UTC timestamp.

Minimum tier: GOAT.

GET https://api.balldontlie.io/lpga/v1/tee_times

curl -g "https://api.balldontlie.io/lpga/v1/tee_times?tournament_id=31&per_page=1" \
  -H "Authorization: YOUR_API_KEY"
{
  "data": [
    {
      "id": 2619,
      "tournament_id": 31,
      "player_id": 163,
      "round": 1,
      "group_number": 1,
      "start_tee": 1,
      "date": "2026-11-12",
      "local_time": "07:00:00",
      "timezone": "America/New_York",
      "starts_at": "2026-11-12T12:00:00.000Z"
    }
  ],
  "meta": {
    "next_cursor": 2619,
    "per_page": 1
  }
}

Query Parameters

Parameter Type Required Description
tournament_id integer Yes Tournament ID.
player_ids[] array No Filter by player IDs (1–100 values).
round integer No Round number.
date string No Local tee-time date.
cursor integer No Cursor from the previous response’s meta.next_cursor.
per_page integer No Number of results (default 25, maximum 100; larger values are capped).

Standings

Get season points standings.

Minimum tier: ALL-STAR.

GET https://api.balldontlie.io/lpga/v1/standings

curl -g "https://api.balldontlie.io/lpga/v1/standings?season=2026&per_page=1" \
  -H "Authorization: YOUR_API_KEY"
{
  "data": [
    {
      "id": 1,
      "season": 2026,
      "player": {
        "id": 81,
        "name": "Nelly Korda",
        "country": "USA",
        "amateur": false
      },
      "rank": 1,
      "points": 3713.875,
      "events_played": 15,
      "wins": 4,
      "top_tens": 10
    }
  ],
  "meta": {
    "next_cursor": 1,
    "per_page": 1
  }
}

Query Parameters

Parameter Type Required Description
season integer Yes Four-digit season year.
player_ids[] array No Filter by player IDs (1–100 values).
cursor integer No Cursor from the previous response’s meta.next_cursor.
per_page integer No Number of results (default 25, maximum 100; larger values are capped).

Futures

Get current tournament futures prices. Market names distinguish ties, rounds, groups and excluded players. Availability varies by tournament and sportsbook.

Minimum tier: GOAT.

GET https://api.balldontlie.io/lpga/v1/futures

curl -g "https://api.balldontlie.io/lpga/v1/futures?tournament_ids[]=31&per_page=1" \
  -H "Authorization: YOUR_API_KEY"
{
  "data": [
    {
      "id": 436562011,
      "market_type": "tournament_winner",
      "market_name": "2026 The ANNIKA driven by Gainbridge at Pelican — Outright",
      "player": {
        "id": 83,
        "name": "Hye-Jin Choi",
        "country": "KOR",
        "amateur": false
      },
      "tournament": {
        "id": 31,
        "season": 2026,
        "name": "The ANNIKA driven by Gainbridge at Pelican",
        "start_date": "2026-11-12",
        "end_date": "2026-11-15",
        "location": "Belleair, FL",
        "course": "Pelican Golf Club",
        "timezone": "America/New_York",
        "status": "in_progress",
        "format": "Stroke Play",
        "total_rounds": 4,
        "current_round": 4,
        "purse": 3250000,
        "available_points": 500
      },
      "vendor": "draftkings",
      "american_odds": 172,
      "updated_at": "2026-11-14T23:45:02.846Z"
    }
  ],
  "meta": {
    "next_cursor": 436562011,
    "per_page": 1
  }
}

Query Parameters

Parameter Type Required Description
player_ids[] array No Filter by player IDs.
tournament_ids[] array No Filter by tournament IDs.
vendors[] array No Filter by sportsbook, such as draftkings or fanduel.
market_types[] array No Filter by exact market type returned by the API.
cursor integer No Cursor from the previous response’s meta.next_cursor.
per_page integer No Number of results (default 25, maximum 100).

Player Props

Get current player props for a tournament, including offered pre-tournament and live markets. Availability varies by sportsbook; specific hole or score markets are not guaranteed. The response’s game_id is the tournament ID. All matching results are returned without cursor pagination.

Minimum tier: GOAT.

GET https://api.balldontlie.io/lpga/v1/odds/player_props

curl -g "https://api.balldontlie.io/lpga/v1/odds/player_props?tournament_id=31&player_id=84" \
  -H "Authorization: YOUR_API_KEY"
{
  "data": [
    {
      "id": 11115544538,
      "game_id": 31,
      "player_id": 84,
      "vendor": "draftkings",
      "prop_type": "top_group_b_winner_group_84_86_89_96_winner_d338b49d80c5",
      "line_value": "0.5",
      "market": {
        "type": "milestone",
        "odds": -166
      },
      "updated_at": "2026-11-14T23:45:02.846Z"
    }
  ],
  "meta": {
    "per_page": 1
  }
}

Query Parameters

Parameter Type Required Description
tournament_id integer Yes Tournament ID.
player_id integer No Player ID.
prop_type string No Exact prop type returned by the API.
vendors[] array No Filter by sportsbook, such as draftkings.

Opening Player Props

Get the first captured pre-tournament quote for each player, sportsbook, prop type and line. Quotes first captured after the tournament starts are not opening prices. An empty response means no matching opening prices are available. The response’s game_id is the tournament ID; opened_at is the capture time. All matching results are returned without cursor pagination.

Minimum tier: GOAT.

GET https://api.balldontlie.io/lpga/v1/odds/player_props/opening

curl -g "https://api.balldontlie.io/lpga/v1/odds/player_props/opening?tournament_id=31&player_id=1" \
  -H "Authorization: YOUR_API_KEY"
{
  "data": [],
  "meta": {
    "per_page": 0
  }
}

Query Parameters

Parameter Type Required Description
tournament_id integer Yes Tournament ID.
player_id integer No Player ID.
prop_type string No Exact prop type returned by the API.
vendors[] array No Filter by sportsbook, such as draftkings.