birdieapi-com Stats + aggregation API
The Stats + aggregation API from birdieapi-com — 6 operation(s) for stats + aggregation.
The Stats + aggregation API from birdieapi-com — 6 operation(s) for stats + aggregation.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/birdieapi-com:birdieapi-com-stats-aggregation-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: BirdieAPI Stats + aggregation API
version: 1.0.0
description: BirdieAPI golf data. Every tool is a POST to /v1/{tool} with a JSON body of its arguments and costs the credits in x-credits. The same tools are an MCP server at https://mcp.birdieapi.com/mcp and free accounts get credits every month at https://birdieapi.com/signup
termsOfService: https://birdieapi.com/terms
contact:
name: BirdieAPI support
email: support@birdieapi.com
url: https://birdieapi.com/docs
servers:
- url: https://mcp.birdieapi.com
security:
- apiKey: []
- bearer: []
tags:
- name: Stats + aggregation
paths:
/v1/get_player:
post:
operationId: get_player
summary: Player
description: '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.'
tags:
- Stats + aggregation
x-credits: 5
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
player_id:
type: string
description: Player id from search_players or get_leaderboard.
league:
description: 'League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry.'
type: string
enum:
- golf
- lpga
- liv
- dpwt
- kornferry
required:
- player_id
additionalProperties: false
responses:
'200':
description: The result, wrapped in data.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
player:
type: object
propertyNames:
type: string
additionalProperties: {}
career:
type: object
propertyNames:
type: string
additionalProperties: {}
rating:
anyOf:
- type: object
propertyNames:
type: string
additionalProperties: {}
- type: 'null'
seasons:
type: array
items:
type: object
propertyNames:
type: string
additionalProperties: {}
recent_results:
type: array
items:
type: object
propertyNames:
type: string
additionalProperties: {}
required:
- player
- career
- rating
- seasons
- recent_results
additionalProperties: false
required:
- data
'400':
description: Invalid arguments.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'401':
description: Missing or invalid API key.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'402':
description: Not enough credits.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'429':
description: Rate limited.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
/v1/get_player_results:
post:
operationId: get_player_results
summary: Player results
description: '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.'
tags:
- Stats + aggregation
x-credits: 5
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
player_id:
type: string
description: Player id from search_players.
season:
description: Season year, e.g. 2025.
type:
- string
- number
limit:
description: Max tournaments (default 50).
type: integer
minimum: 1
maximum: 200
offset:
description: Page offset; use next_offset.
type: integer
minimum: 0
maximum: 9007199254740991
league:
description: 'League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry.'
type: string
enum:
- golf
- lpga
- liv
- dpwt
- kornferry
required:
- player_id
additionalProperties: false
responses:
'200':
description: The result, wrapped in data.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
player_id:
type: string
results:
type: array
items:
type: object
propertyNames:
type: string
additionalProperties: {}
count:
type: number
next_offset:
type:
- number
- 'null'
required:
- player_id
- results
- count
additionalProperties: false
required:
- data
'400':
description: Invalid arguments.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'401':
description: Missing or invalid API key.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'402':
description: Not enough credits.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'429':
description: Rate limited.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
/v1/get_player_stats:
post:
operationId: get_player_stats
summary: Player stats
description: '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.'
tags:
- Stats + aggregation
x-credits: 5
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
player_id:
type: string
description: Player id from search_players.
season:
description: Season year, e.g. 2025.
type:
- string
- number
league:
description: 'League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry.'
type: string
enum:
- golf
- lpga
- liv
- dpwt
- kornferry
required:
- player_id
- season
additionalProperties: false
responses:
'200':
description: The result, wrapped in data.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
player:
type: object
propertyNames:
type: string
additionalProperties: {}
season:
type: number
results:
type: object
propertyNames:
type: string
additionalProperties: {}
hole_scoring:
anyOf:
- type: object
propertyNames:
type: string
additionalProperties: {}
- type: 'null'
ball_striking:
anyOf:
- type: object
propertyNames:
type: string
additionalProperties: {}
- type: 'null'
published_season:
anyOf:
- type: object
propertyNames:
type: string
additionalProperties: {}
- type: 'null'
note:
type: string
required:
- player
- season
- results
- hole_scoring
- ball_striking
- published_season
additionalProperties: false
required:
- data
'400':
description: Invalid arguments.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'401':
description: Missing or invalid API key.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'402':
description: Not enough credits.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'429':
description: Rate limited.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
/v1/get_course_history:
post:
operationId: get_course_history
summary: Course history
description: '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.'
tags:
- Stats + aggregation
x-credits: 5
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
player_id:
type: string
description: Player id from search_players.
tournament_id:
description: Any year's id of the tournament; every edition is returned.
type: string
course_id:
description: A course id (list_tournaments lists each tournament's courses).
type: string
league:
description: 'League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry.'
type: string
enum:
- golf
- lpga
- liv
- dpwt
- kornferry
required:
- player_id
additionalProperties: false
responses:
'200':
description: The result, wrapped in data.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
player:
type: object
propertyNames:
type: string
additionalProperties: {}
course:
type: object
propertyNames:
type: string
additionalProperties: {}
tournament:
type: string
summary:
type: object
propertyNames:
type: string
additionalProperties: {}
rounds:
type: array
items:
type: object
propertyNames:
type: string
additionalProperties: {}
editions:
type: array
items:
type: object
propertyNames:
type: string
additionalProperties: {}
count:
type: number
required:
- player
- summary
- count
additionalProperties: false
required:
- data
'400':
description: Invalid arguments.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'401':
description: Missing or invalid API key.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'402':
description: Not enough credits.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'429':
description: Rate limited.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
/v1/get_head_to_head:
post:
operationId: get_head_to_head
summary: Head to head
description: '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.'
tags:
- Stats + aggregation
x-credits: 5
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
player_a:
type: string
description: First player id.
player_b:
type: string
description: Second player id.
season:
description: Season year, e.g. 2025.
type:
- string
- number
league:
description: 'League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry.'
type: string
enum:
- golf
- lpga
- liv
- dpwt
- kornferry
required:
- player_a
- player_b
additionalProperties: false
responses:
'200':
description: The result, wrapped in data.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
player_a:
type: object
propertyNames:
type: string
additionalProperties: {}
player_b:
type: object
propertyNames:
type: string
additionalProperties: {}
summary:
type: object
propertyNames:
type: string
additionalProperties: {}
meetings:
type: array
items:
type: object
propertyNames:
type: string
additionalProperties: {}
count:
type: number
required:
- player_a
- player_b
- summary
- meetings
- count
additionalProperties: false
required:
- data
'400':
description: Invalid arguments.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'401':
description: Missing or invalid API key.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'402':
description: Not enough credits.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'429':
description: Rate limited.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
/v1/get_leaders:
post:
operationId: get_leaders
summary: Leaders
description: '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.'
tags:
- Stats + aggregation
x-credits: 5
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
stat:
type: string
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
description: The stat to rank.
season:
description: Season year, e.g. 2025.
type:
- string
- number
min:
description: 'Minimum sample: rounds (default 40), starts (1) or tournaments with a stat line (8).'
type: integer
minimum: 1
maximum: 9007199254740991
limit:
description: Max players (default 25).
type: integer
minimum: 1
maximum: 200
league:
description: 'League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry.'
type: string
enum:
- golf
- lpga
- liv
- dpwt
- kornferry
required:
- stat
- season
additionalProperties: false
responses:
'200':
description: The result, wrapped in data.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
stat:
type: string
label:
type: string
season:
type: number
minimum:
type: number
minimum_of:
type: string
leaders:
type: array
items:
type: object
propertyNames:
type: string
additionalProperties: {}
count:
type: number
note:
type: string
required:
- stat
- label
- season
- minimum
- minimum_of
- leaders
- count
additionalProperties: false
required:
- data
'400':
description: Invalid arguments.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'401':
description: Missing or invalid API key.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'402':
description: Not enough credits.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'429':
description: Rate limited.
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
components:
securitySchemes:
apiKey:
type: apiKey
in: header
name: x-api-key
bearer:
type: http
scheme: bearer
description: The same API key as a bearer token.
externalDocs:
description: Documentation
url: https://birdieapi.com/docs