# Golf Live API
> Live professional golf data across six tours — PGA, LPGA, DP World (European), PGA Champions, Korn Ferry and LIV — sourced from the same official scoring feed the major networks use. Pull the current tournament scoreboard for any tour (the event name, status, venue and the leader), then the full live leaderboard with every player in the field: position, score to par (e.g. -12), hole-by-hole and round-by-round scoring. Look up a player profile by id (e.g. 10505 → J.T. Poston, USA, turned pro 2015, Western Carolina) and read the latest golf news. Real-time during play, no key needed upstream. Ideal for golf betting and fantasy apps, live scoreboards, sports media and tournament dashboards.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/golflive-api/..."
```

## Pricing
- **Free** (Free) — 3,500 calls/Mo, 2 req/s
- **Starter** ($9/Mo) — 65,000 calls/Mo, 8 req/s
- **Pro** ($29/Mo) — 360,000 calls/Mo, 25 req/s
- **Elite** ($99/Mo) — 1,600,000 calls/Mo, 60 req/s

## Endpoints

### Golf

#### `GET /v1/leaderboard` — Full live leaderboard for a tournament

**Parameters:**
- `tour` (query, optional, string) — pga | lpga | eur | champions-tour | ntw | liv Example: `pga`
- `event` (query, optional, string) — Optional ESPN event id (defaults to the active event)
- `dates` (query, optional, string) — Optional YYYYMMDD or range

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/golflive-api/v1/leaderboard?tour=pga"
```

**Response:**
```json
{
    "data": {
        "tour": "pga",
        "field_size": 72,
        "tournament": {
            "id": "401811950",
            "date": "2026-06-04T04:00Z",
            "name": "the Memorial Tournament pres. by Workday",
            "state": "post",
            "status": "Final",
            "end_date": "2026-06-07T04:00Z"
        },
        "leaderboard": [
            {
                "id": "10505",
                "score": "-12",
                "player": "J.T. Poston",
                "rounds": [
                    {
                        "holes": 18,
                        "round": 1,
                        "to_par": "-2",
                        "strokes": 70
                    },
                    {
                        "holes": 18,
                        "round": 2,
                        "to_par": "-7",
                        "strokes": 65
                    },
                    {
                        "holes": 18,
                        "round": 3,
                        "to_par": "-3",
                        "strokes": 69
                    },
                    {
                        "holes": 18,
                        "round": 4,
                        "to_par": "E",
                        "strokes": 72
                    },
                    {
                        "holes": 2,
                        "round": 5,
                        "to_par": "E",
                        "strokes": 8
                    },
             
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/news` — Latest golf news for a tour

**Parameters:**
- `tour` (query, optional, string) — pga | lpga | eur | champions-tour | ntw | liv Example: `pga`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/golflive-api/v1/news?tour=pga"
```

**Response:**
```json
{
    "data": {
        "tour": "pga",
        "count": 6,
        "articles": [
            {
                "link": "https://www.espn.com/golf/story/_/id/48995143/jt-poston-tops-ryan-gerard-playoff-capture-memorial",
                "image": "https://a.espncdn.com/photo/2026/0607/r1669553_600x600_1-1.jpg",
                "headline": "J.T. Poston tops Ryan Gerard in playoff to capture Memorial",
                "published": "2026-06-08T01:16:32Z",
                "description": "J.T. Poston made a 7-foot birdie putt on the 18th hole to salvage an even-par 72 and force a playoff with Ryan Gerard, then won the Memorial on the second extra hole when Gerard missed a 6-foot par putt."
            },
            {
                "link": "https://www.espn.com/golf/story/_/id/48992540/tyrrell-hatton-holds-jon-rahm-win-second-liv-golf-title",
                "image": "https://a.espncdn.com/photo/2026/0607/r1669411_1296x729_16-9.jpg",
                "headline": "Tyrrell Hatton holds off Jon Rahm to win second LIV Golf title",
                "published": "2026-06-07T17:16:55Z",
                "description": "Tyrrell Hatton had two late birdies to hold off Jon Rahm and close with a 1-under 71, giving him a two-shot victory in LIV Golf Andalucia for his second title in the league."
            },
            {
                "link": "https://www.espn.com/golf/story/_/id/48992387/jt-poston-seizes-control-4-shot-lead-memorial",
                "image": "https://a.espncdn.com/photo/2
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/player` — A player profile by id

**Parameters:**
- `tour` (query, optional, string) — pga | lpga | eur | champions-tour | ntw | liv Example: `pga`
- `id` (query, required, string) — Numeric player id, e.g. 10505 Example: `10505`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/golflive-api/v1/player?tour=pga&id=10505"
```

**Response:**
```json
{
    "data": {
        "player": {
            "id": "10505",
            "age": 33,
            "hand": "RIGHT",
            "name": "J.T. Poston",
            "height": "6' 2\"",
            "status": "active",
            "weight": "165 lbs",
            "college": "Western Carolina",
            "country": "USA",
            "headshot": "https://a.espncdn.com/i/headshots/golf/players/full/10505.png",
            "last_name": "Poston",
            "debut_year": 2018,
            "first_name": "J.T.",
            "turned_pro": 2015,
            "birth_place": "Hickory, North Carolina           ",
            "date_of_birth": "1/6/1993"
        }
    },
    "meta": {
        "timestamp": "2026-06-08T01:20:04.442Z",
        "request_id": "227eaba5-f073-431e-af9a-4f51228e292a"
    },
    "status": "ok",
    "message": "Player retrieved successfully",
    "success": true
}
```

#### `GET /v1/scoreboard` — Tournaments for a tour with the current leader

**Parameters:**
- `tour` (query, optional, string) — pga | lpga | eur | champions-tour | ntw | liv Example: `pga`
- `dates` (query, optional, string) — Optional YYYYMMDD or range

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/golflive-api/v1/scoreboard?tour=pga"
```

**Response:**
```json
{
    "data": {
        "tour": "pga",
        "count": 1,
        "tournaments": [
            {
                "id": "401811950",
                "date": "2026-06-04T04:00Z",
                "name": "the Memorial Tournament pres. by Workday",
                "state": "post",
                "leader": {
                    "id": "10505",
                    "score": "-12",
                    "player": "J.T. Poston"
                },
                "status": "Final",
                "end_date": "2026-06-07T04:00Z",
                "field_size": 72,
                "short_name": "the Memorial Tournament pres. by Workday"
            }
        ]
    },
    "meta": {
        "timestamp": "2026-06-08T01:20:04.608Z",
        "request_id": "b76f0a1e-acee-4366-bb59-194c4e134880"
    },
    "status": "ok",
    "message": "Scoreboard retrieved successfully",
    "success": true
}
```

### Meta

#### `GET /v1/meta` — Service description, tours & endpoints

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/golflive-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "tours": [
            "pga",
            "lpga",
            "eur",
            "champions-tour",
            "ntw",
            "liv"
        ],
        "service": "golflive-api",
        "endpoints": {
            "GET /v1/meta": "This document.",
            "GET /v1/news": "Golf news (tour=).",
            "GET /v1/player": "Player profile by id (tour=, id=).",
            "GET /v1/scoreboard": "Tournaments for a tour with the current leader (tour=, dates=).",
            "GET /v1/leaderboard": "Full live leaderboard for a tournament (tour=, optional event=id, dates=)."
        },
        "description": "Professional golf live data across six tours (PGA, LPGA, DP World, Champions, Korn Ferry, LIV): the tournament scoreboard, the full live leaderboard with every player's position, score to par and round-by-round scoring, player profiles and news. Real live data, no key."
    },
    "meta": {
        "timestamp": "2026-06-08T01:20:04.689Z",
        "request_id": "2d1d0d68-1cf1-46bf-9c8c-66487eab36ef"
    },
    "status": "ok",
    "message": "Meta",
    "success": true
}
```


---
Marketplace page: https://www.oanor.com/api/golflive-api
OpenAPI spec: https://www.oanor.com/api/golflive-api/openapi.json
