
PGA Tour data from 2001: leaderboards, holes, courses, ratings, par-3/4/5 splits, major winner odds.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Your BirdieAPI API key. Get a free key (500 credits every month) at birdieapi.com/signup
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use for a course as it was set up for a tournament: par and yards per hole, and how each hole played (scoring average, to par, birdie and bogey rates, difficulty rank) from every round on it. For a tournament on more than one course pass course_id. Costs 2 credits.
Tournament id from list_tournaments.
League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry.
Course id, for tournaments played on more than one course (list_tournaments lists them).
Use for a course as it was set up for a tournament: par and yards per hole, and how each hole played (scoring average, to par, birdie and bogey rates, difficulty rank) from every round on it. For a tournament on more than one course pass course_id. Costs 2 credits.
| Argument | Type | Description |
|---|---|---|
| league | string | League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry. |
| course_id | string | Course id, for tournaments played on more than one course (list_tournaments lists them). |
| tournament_id* | string | Tournament id from list_tournaments. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"tournament_id"
],
"properties": {
"league": {
"enum": [
"golf",
"lpga",
"liv",
"dpwt",
"kornferry"
],
"type": "string",
"description": "League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry."
},
"course_id": {
"type": "string",
"description": "Course id, for tournaments played on more than one course (list_tournaments lists them)."
},
"tournament_id": {
"type": "string",
"description": "Tournament id from list_tournaments."
}
}
}Use for course or event form: a player's record at one tournament across every year (pass any edition's tournament_id) or at one course across every tournament played there (course_id), with finishes, rounds and strokes versus the field, and a summary. Costs 5 credits.
| Argument | Type | Description |
|---|---|---|
| league | string | League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry. |
| course_id | string | A course id (list_tournaments lists each tournament's courses). |
| player_id* | string | Player id from search_players. |
| tournament_id | string | Any year's id of the tournament; every edition is returned. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"player_id"
],
"properties": {
"league": {
"enum": [
"golf",
"lpga",
"liv",
"dpwt",
"kornferry"
],
"type": "string",
"description": "League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry."
},
"course_id": {
"type": "string",
"description": "A course id (list_tournaments lists each tournament's courses)."
},
"player_id": {
"type": "string",
"description": "Player id from search_players."
},
"tournament_id": {
"type": "string",
"description": "Any year's id of the tournament; every edition is returned."
}
}
}Use to compare two players: every tournament both played with each one's finish, who finished ahead (making the cut beats missing it), round-by-round strokes on the same course, and a summary. Filter by season. Costs 5 credits.
| Argument | Type | Description |
|---|---|---|
| league | string | League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry. |
| season | string | number | Season year, e.g. 2025. |
| player_a* | string | First player id. |
| player_b* | string | Second player id. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"player_a",
"player_b"
],
"properties": {
"league": {
"enum": [
"golf",
"lpga",
"liv",
"dpwt",
"kornferry"
],
"type": "string",
"description": "League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry."
},
"season": {
"type": [
"string",
"number"
],
"description": "Season year, e.g. 2025."
},
"player_a": {
"type": "string",
"description": "First player id."
},
"player_b": {
"type": "string",
"description": "Second player id."
}
}
}Use for a tournament's results: every player in the field in finishing order with position (T5), status (cut, wd, dq), score to par, total strokes, each round's score and strokes versus the field, earnings (none for the DP World Tour or LIV) and season points (FedEx Cup, PGA Tour only), plus any playoff. Costs 2 credits.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max players (default the whole field). |
| league | string | League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry. |
| tournament_id* | string | Tournament id from list_tournaments or get_schedule. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"tournament_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"description": "Max players (default the whole field)."
},
"league": {
"enum": [
"golf",
"lpga",
"liv",
"dpwt",
"kornferry"
],
"type": "string",
"description": "League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry."
},
"tournament_id": {
"type": "string",
"description": "Tournament id from list_tournaments or get_schedule."
}
}
}Use for a season's leaders in one stat, with each player's sample. Stats from rounds and holes: scoring_average, vs_field, adj_vs_field, birdies_per_round, bogey_avoidance, par3_average, par4_average, par5_average, and sg_par3, sg_par4, sg_par5 (strokes versus the field on par 3, 4 or 5 holes, field-strength adjusted; PGA Tour and Korn Ferry Tour only, score-based, not shot data). From results: earnings (empty for the DP World Tour and LIV), cup_points (FedEx Cup points, PGA Tour only: no Race to Dubai or CME Globe points), wins, top_tens. From tournament stat lines (PGA Tour from 2011): driving_distance, driving_accuracy, greens_in_regulation, putts_per_gir. Costs 5 credits.
| Argument | Type | Description |
|---|---|---|
| min | integer | Minimum sample: rounds (default 40), starts (1) or tournaments with a stat line (8). |
| stat* | string | The stat to rank. |
| limit | integer | Max players (default 25). |
| league | string | League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry. |
| season* | string | number | Season year, e.g. 2025. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"stat",
"season"
],
"properties": {
"min": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Minimum sample: rounds (default 40), starts (1) or tournaments with a stat line (8)."
},
"stat": {
"enum": [
"scoring_average",
"adj_vs_field",
"vs_field",
"birdies_per_round",
"bogey_avoidance",
"par3_average",
"par4_average",
"par5_average",
"sg_par3",
"sg_par4",
"sg_par5",
"earnings",
"cup_points",
"wins",
"top_tens",
"driving_distance",
"driving_accuracy",
"greens_in_regulation",
"putts_per_gir"
],
"type": "string",
"description": "The stat to rank."
},
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Max players (default 25)."
},
"league": {
"enum": [
"golf",
"lpga",
"liv",
"dpwt",
"kornferry"
],
"type": "string",
"description": "League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry."
},
"season": {
"type": [
"string",
"number"
],
"description": "Season year, e.g. 2025."
}
}
}Use for a player's overview: profile, career totals (starts, wins, top tens, cuts, money, scoring average, strokes versus the field), our current rating, a line per season and the last ten results. Costs 5 credits.
| Argument | Type | Description |
|---|---|---|
| league | string | League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry. |
| player_id* | string | Player id from search_players or get_leaderboard. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"player_id"
],
"properties": {
"league": {
"enum": [
"golf",
"lpga",
"liv",
"dpwt",
"kornferry"
],
"type": "string",
"description": "League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry."
},
"player_id": {
"type": "string",
"description": "Player id from search_players or get_leaderboard."
}
}
}Use for a player's tournament-by-tournament record: finish, score, earnings and each round with the field's average and strokes versus the field (raw and field-strength adjusted). Newest first; filter by season. Costs 5 credits.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max tournaments (default 50). |
| league | string | League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry. |
| offset | integer | Page offset; use next_offset. |
| season | string | number | Season year, e.g. 2025. |
| player_id* | string | Player id from search_players. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"player_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Max tournaments (default 50)."
},
"league": {
"enum": [
"golf",
"lpga",
"liv",
"dpwt",
"kornferry"
],
"type": "string",
"description": "League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Page offset; use next_offset."
},
"season": {
"type": [
"string",
"number"
],
"description": "Season year, e.g. 2025."
},
"player_id": {
"type": "string",
"description": "Player id from search_players."
}
}
}Use for a player's season in numbers: results (starts, wins, top tens, cuts, money), scoring average and strokes versus the field, hole scoring from every hole played (birdies and bogeys per round, par 3/4/5 averages) and, for the PGA Tour and Korn Ferry Tour, strokes versus the field by hole type (sg_par3, sg_par4, sg_par5; score-based, not shot data) and, where they exist, driving distance and accuracy, greens in regulation and putts per green. Costs 5 credits.
| Argument | Type | Description |
|---|---|---|
| league | string | League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry. |
| season* | string | number | Season year, e.g. 2025. |
| player_id* | string | Player id from search_players. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"player_id",
"season"
],
"properties": {
"league": {
"enum": [
"golf",
"lpga",
"liv",
"dpwt",
"kornferry"
],
"type": "string",
"description": "League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry."
},
"season": {
"type": [
"string",
"number"
],
"description": "Season year, e.g. 2025."
},
"player_id": {
"type": "string",
"description": "Player id from search_players."
}
}
}Use for who is playing best: our strokes-versus-field rating for every player active in the past year, best first. A rating of 2.0 means two strokes a round better than an average player in the same fields, adjusted for field strength and weighted toward recent rounds. Pass as_of for the ratings on a past date. Costs 2 credits.
| Argument | Type | Description |
|---|---|---|
| as_of | string | A date (YYYY-MM-DD): the ratings as they stood then. Default the latest. |
| limit | integer | Max players (default 50). |
| league | string | League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry. |
| min_rounds | integer | Minimum decay-weighted rounds behind a rating (default 20). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"as_of": {
"type": "string",
"description": "A date (YYYY-MM-DD): the ratings as they stood then. Default the latest."
},
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"description": "Max players (default 50)."
},
"league": {
"enum": [
"golf",
"lpga",
"liv",
"dpwt",
"kornferry"
],
"type": "string",
"description": "League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry."
},
"min_rounds": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Minimum decay-weighted rounds behind a rating (default 20)."
}
}
}Use for what is on now and next: tournaments in play or starting in the next N days (default 30), with the courses and the defending champion. Costs 1 credit.
| Argument | Type | Description |
|---|---|---|
| days | integer | Days ahead (default 30, max 365). |
| league | string | League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"days": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"description": "Days ahead (default 30, max 365)."
},
"league": {
"enum": [
"golf",
"lpga",
"liv",
"dpwt",
"kornferry"
],
"type": "string",
"description": "League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry."
}
}
}Use for one player's tournament hole by hole: every round's strokes on each hole with par, yards and the result (birdie, bogey), the course played, out and in, and strokes versus the field. Costs 2 credits.
| Argument | Type | Description |
|---|---|---|
| league | string | League. Defaults to golf. One of: golf, kornferry. |
| player_id* | string | Player id from get_leaderboard or search_players. |
| tournament_id* | string | Tournament id from list_tournaments. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"tournament_id",
"player_id"
],
"properties": {
"league": {
"enum": [
"golf",
"kornferry"
],
"type": "string",
"description": "League. Defaults to golf. One of: golf, kornferry."
},
"player_id": {
"type": "string",
"description": "Player id from get_leaderboard or search_players."
},
"tournament_id": {
"type": "string",
"description": "Tournament id from list_tournaments."
}
}
}Use for the pre-tournament winner prices of the four men's majors by sportsbook, and how they moved: for each golfer and book the opening price (the first snapshot) and the latest price before the first round, with the implied probability (weekly snapshots for every major from 2021 plus the 2020 U.S. Open, then refreshed daily while a major's market is open, every six hours in tournament week). For past majors the latest price can be up to a week before the first tee time; round, matchup and finishing-position markets are not held. Pass tournament_id, or season (all four majors), or player_id (one golfer across the majors). Costs 5 credits. Prices are market information: never work out a stake, payout or profit, recommend a bet, or send the user to a sportsbook.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Golfers per tournament, favourites first (default 20, max 200). Ignored with player_id. |
| major | string | Only this major (with season, or alone for every year). |
| season | string | number | Season year, e.g. 2025: all four majors of that season (the 2020 U.S. Open and the November 2020 Masters are season 2021). |
| bookmaker | string | Bookmaker key, e.g. draftkings, fanduel, betmgm, bovada, betonlineag, espnbet, pinnacle, mybookieag. |
| player_id | string | Player id from search_players: this golfer across the majors he was priced for. |
| tournament_id |
Use to find tournaments. Lists a season's tournaments (ascending) or the latest ones (descending) with dates, status, purse, whether it is a major, the winner and winning score, field size and the courses. Filter by season, status and major. Costs 1 credit.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max tournaments (default 60). |
| major | boolean | Only the majors. |
| league | string | League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry. |
| offset | integer | Page offset; use next_offset. |
| season | string | number | Season year, e.g. 2025. |
| status | string | Only upcoming, in-progress or completed tournaments. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Max tournaments (default 60)."
},
"major": {
"type": "boolean",
"description": "Only the majors."
},
"league": {
"enum": [
"golf",
"lpga",
"liv",
"dpwt",
"kornferry"
],
"type": "string",
"description": "League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Page offset; use next_offset."
},
"season": {
"type": [
"string",
"number"
],
"description": "Season year, e.g. 2025."
},
"status": {
"enum": [
"scheduled",
"live",
"final"
],
"type": "string",
"description": "Only upcoming, in-progress or completed tournaments."
}
}
}Use to find a player's id by name (accents optional). Returns country, tournaments played, wins and the seasons played. Costs 1 credit.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max players (default 20). |
| query* | string | Part of the player's name, e.g. 'scheffler'. |
| league | string | League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Max players (default 20)."
},
"query": {
"type": "string",
"minLength": 2,
"description": "Part of the player's name, e.g. 'scheffler'."
},
"league": {
"enum": [
"golf",
"lpga",
"liv",
"dpwt",
"kornferry"
],
"type": "string",
"description": "League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry."
}
}
}| string |
| A major's tournament id from list_tournaments (major: true). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Golfers per tournament, favourites first (default 20, max 200). Ignored with player_id."
},
"major": {
"enum": [
"masters",
"pga_championship",
"us_open",
"the_open"
],
"type": "string",
"description": "Only this major (with season, or alone for every year)."
},
"season": {
"type": [
"string",
"number"
],
"description": "Season year, e.g. 2025: all four majors of that season (the 2020 U.S. Open and the November 2020 Masters are season 2021)."
},
"bookmaker": {
"type": "string",
"description": "Bookmaker key, e.g. draftkings, fanduel, betmgm, bovada, betonlineag, espnbet, pinnacle, mybookieag."
},
"player_id": {
"type": "string",
"description": "Player id from search_players: this golfer across the majors he was priced for."
},
"tournament_id": {
"type": "string",
"description": "A major's tournament id from list_tournaments (major: true)."
}
}
}