> For the complete documentation index, see [llms.txt](https://docs.sportradar.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.sportradar.com/live-data/live-data-golf-api-design/ld-golf-api-documentation/state-leaderboard-scoreboard-hole-by-hole/stroke-play-hole-by-hole.md).

# Stroke Play Hole-by-hole

### Overview

Use this endpoint to retrieve the current hole-by-hole state for one competitor.

The competitor can be a player or a team, depending on the tournament format.

**URL:** `GET https://{domain}/golf/rest/v1/tournaments/{tournament_id}/stroke-play-team-hole-by-hole/{team_competitor_id}`

### Path parameters

* `tournament_id`
  * type: integer
  * Tournament identifier.
  * example: `12345`
* `team_competitor_id`
  * type: integer
  * Competitor identifier.
  * In team events, this value refers to the team rather than an individual player.
  * example: `2345`

### Response example

{% code overflow="wrap" expandable="true" %}

```json
{
  "is_official": true,
  "timestamp": "2026-04-17T12:00:00Z",
  "playoff_score": {
    "holes": [
      {
        "hole_number": 18,
        "hole_sequence": 1,
        "hole_par": 5,
        "hole_score_to_par": -1,
        "hole_strokes": 4,
        "hole_yardage": 551
      }, 
      {...}
    ],
    "round_par": 5,
    "round_strokes": 4,
    "round_score_to_par": -1
  },
  "players": [
    {
        "player_id": 22,
        "sr_player_id": "sr:competitor:22",
        "country": "ENG",
        "display_name": "Tommy Fleetwood",
        "first_name": "Tommy",
        "last_name": "Fleetwood",
        "is_amateur": false,
        "gender": "male"
    },
    {...}
  ],
  "round_scores": {
    "1": {
      "holes": {
        "1": {
          "hole_sequence": 1,
          "hole_par": 4,
          "hole_score_to_par": 0,
          "hole_strokes": 4,
          "hole_yardage": 480
        },
        {...}
      },
      "in_score": {
        "par": 35,
        "score_to_par": 1,
        "strokes": 36,
        "yardage": 3452
      },
      "out_score": {
        "par": 35,
        "score_to_par": -5,
        "strokes": 30,
        "yardage": 3592
      },
      "round_par": 70,
      "round_strokes": 66,
      "round_score_to_par": -4
    },
    "2": {...},
    "3": {...},
    "4": {...}
  },
  "scoring_format": "single", 
  "competitor_id": 1234,
  "sr_competitor_id": "sr:competitor:1234",
  "tournament_id": 124567,
  "sr_tournament_id": "sr:stage:1234567"
}
```

{% endcode %}

### Field details

The REST response matches the payload used by the WebSocket version.

### Stroke Play hole-by-hole - WebSocket Version

Use this endpoint to stream the current hole-by-hole state for one competitor.

The WebSocket message uses the state envelope.

The example below shows the `data.payload` object.

**URL:** `wss://{domain}/golf/stream/v1/tournaments/{tournament_id}/stroke-play-team-hole-by-hole/{team_competitor_id}`

### Path parameters

* `tournament_id`
  * type: integer
  * Tournament identifier.
  * example: `12345`
* `team_competitor_id`
  * type: integer
  * Competitor identifier.
  * In team events, this value refers to the team rather than an individual player.
  * example: `2345`

### Response example

{% code overflow="wrap" expandable="true" %}

```json
{
  "is_official": true,
  "timestamp": "2026-04-17T12:00:00Z",
  "playoff_score": {
    "holes": [
      {
        "hole_number": 18,
        "hole_sequence": 1,
        "hole_par": 5,
        "hole_score_to_par": -1,
        "hole_strokes": 4,
        "hole_yardage": 551
      }, 
      {...}
    ],
    "round_par": 5,
    "round_strokes": 4,
    "round_score_to_par": -1
  },
  "players": [
    {
        "player_id": 22,
        "sr_player_id": "sr:competitor:22",
        "country": "ENG",
        "display_name": "Tommy Fleetwood",
        "first_name": "Tommy",
        "last_name": "Fleetwood",
        "is_amateur": false,
        "gender": "male"
    },
    {...}
  ],
  "round_scores": {
    "1": {
      "holes": {
        "1": {
          "hole_sequence": 1,
          "hole_par": 4,
          "hole_score_to_par": 0,
          "hole_strokes": 4,
          "hole_yardage": 480
        },
        {...}
      },
      "in_score": {
        "par": 35,
        "score_to_par": 1,
        "strokes": 36,
        "yardage": 3452
      },
      "out_score": {
        "par": 35,
        "score_to_par": -5,
        "strokes": 30,
        "yardage": 3592
      },
      "round_par": 70,
      "round_strokes": 66,
      "round_score_to_par": -4
    },
    "2": {...},
    "3": {...},
    "4": {...}
  },
  "scoring_format": "single", 
  "competitor_id": 1234,
  "sr_competitor_id": "sr:competitor:1234",
  "tournament_id": 124567,
  "sr_tournament_id": "sr:stage:1234567"
}

```

{% endcode %}

{% hint style="info" %}
For the full WebSocket envelope, see [State (leaderboard, scoreboard, hole-by-hole)](/live-data/live-data-golf-api-design/ld-golf-api-documentation/state-leaderboard-scoreboard-hole-by-hole.md).
{% endhint %}

### Field details

| field                                                                 | type               | details                                               | required                | IMGA equivalent |
| --------------------------------------------------------------------- | ------------------ | ----------------------------------------------------- | ----------------------- | --------------- |
| is\_official                                                          | Boolean            | Indicates whether the results/data are fully official | yes                     | isOfficial      |
| playoff\_score                                                        | Object             | Object containing results from the playoff phase      | no (optional)           | playOffScore    |
| playoff\_score.holes\[]                                               | Array              | List of holes played during the playoff               | no                      | holes           |
| playoff\_score.holes\[].hole\_number                                  | Integer            | The number of the hole played in the playoff          | yes (if playoff\_score) | holeNo          |
| playoff\_score.holes\[].hole\_sequence                                | Integer            | The playing order of the hole in the playoff          | yes (if playoff\_score) | holeOrder       |
| playoff\_score.holes\[].hole\_par                                     | Integer            | Par value for the hole                                | yes (if playoff\_score) | holePar         |
| playoff\_score.holes\[].hole\_score\_to\_par                          | Integer            | Score on the hole relative to par (e.g., -1)          | yes (if playoff\_score) | holeScore       |
| playoff\_score.holes\[].hole\_strokes                                 | Integer            | Number of strokes taken on the hole                   | yes (if playoff\_score) | holeStrokes     |
| playoff\_score.holes\[].hole\_yardage                                 | Integer            | Length of the hole in yards                           | yes (if playoff\_score) | holeYardage     |
| playoff\_score.round\_par                                             | Integer            | Total par value for the playoff holes                 | yes (if playoff\_score) | roundPar        |
| playoff\_score.round\_strokes                                         | Integer            | Total number of strokes taken in the playoff          | yes (if playoff\_score) | roundScore      |
| playoff\_score.round\_score\_to\_par                                  | Integer            | Total playoff score relative to par                   | yes (if playoff\_score) | roundToPar      |
| players\[]                                                            | Array              | List of player objects associated with this score     | yes                     | players         |
| players\[].player\_id                                                 | Integer            | Numeric player ID                                     | yes                     | id              |
| players\[].sr\_player\_id                                             | String             | SR format ID for the player                           | yes                     | -               |
| players\[].country                                                    | String             | Three-letter country code (e.g., ENG)                 | yes                     | country         |
| players\[].display\_name                                              | String             | Player's display name                                 | yes                     | displayName     |
| players\[].first\_name                                                | String             | Player's first name                                   | yes                     | firstName       |
| players\[].last\_name                                                 | String             | Player's last name                                    | yes                     | lastName        |
| players\[].is\_amateur                                                | Boolean            | Indicates if the player is an amateur                 | yes                     | isAmateur       |
| players\[].gender                                                     | String             | Player's gender (e.g., male)                          | yes                     | gender          |
| round\_scores                                                         | Map                | Map containing scores grouped by round number         | yes                     | roundScores     |
| round\_scores{round\_number}.holes                                    | Map                | Scores for individual holes in this round             | yes                     | holes           |
| round\_scores{round\_number}.holes{hole\_number}.hole\_sequence       | Integer            | Playing order of the hole in this round               | yes                     | holeOrder       |
| round\_scores{round\_number}.holes{hole\_number}.hole\_par            | Integer            | Par value for this hole                               | yes                     | holePar         |
| round\_scores{round\_number}.holes{hole\_number}.hole\_score\_to\_par | Integer            | Score on this hole relative to par                    | yes                     | holeScore       |
| round\_scores{round\_number}.holes{hole\_number}.hole\_strokes        | Integer            | Number of strokes taken on this hole                  | yes                     | holeStrokes     |
| round\_scores{round\_number}.holes{hole\_number}.hole\_yardage        | Integer            | Length of the hole in yards                           | yes                     | holeYardage     |
| round\_scores{round\_number}.in\_score                                | Object             | Summary for Back 9 (holes 10–18)                      | yes                     | inScore         |
| round\_scores{round\_number}.in\_score.par                            | Integer            | Total par for Back 9                                  | yes                     | par             |
| round\_scores{round\_number}.in\_score.score\_to\_par                 | Integer            | Score relative to par for Back 9                      | yes                     | score           |
| round\_scores{round\_number}.in\_score.strokes                        | Integer            | Total strokes for Back 9                              | yes                     | strokes         |
| round\_scores{round\_number}.in\_score.yardage                        | Integer            | Total yardage for Back 9                              | yes                     | yardage         |
| round\_scores{round\_number}.out\_score                               | Object             | Summary for Front 9 (holes 1–9)                       | yes                     | outScore        |
| round\_scores{round\_number}.out\_score.par                           | Integer            | Total par for Front 9                                 | yes                     | par             |
| round\_scores{round\_number}.out\_score.score\_to\_par                | Integer            | Score relative to par for Front 9                     | yes                     | score           |
| round\_scores{round\_number}.out\_score.strokes                       | Integer            | Total strokes for Front 9                             | yes                     | strokes         |
| round\_scores{round\_number}.out\_score.yardage                       | Integer            | Total yardage for Front 9                             | yes                     | yardage         |
| round\_scores{round\_number}.round\_par                               | Integer            | Total par for the round (usually 70–72)               | yes                     | roundPar        |
| round\_scores{round\_number}.round\_strokes                           | Integer            | Total strokes in the round                            | yes                     | roundScore      |
| round\_scores{round\_number}.round\_score\_to\_par                    | Integer            | Round score relative to par                           | yes                     | roundToPar      |
| scoring\_format                                                       | String             | The scoring format used (e.g., "single")              | yes                     | scoringFormat   |
| competitor\_id                                                        | Integer            | Numeric ID of the player or team                      | yes                     | teamNo          |
| sr\_competitor\_id                                                    | String             | SR format ID of the player or team                    | yes                     | -               |
| tournament\_id                                                        | Integer            | Numeric ID of the tournament                          | yes                     | tournamentId    |
| timestamp                                                             | String (date-time) | Time when the hole-by-hole snapshot was generated     | yes                     | timestamp       |
| sr\_tournament\_id                                                    | String             | SR format ID of the tournament                        | yes                     | -               |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.sportradar.com/live-data/live-data-golf-api-design/ld-golf-api-documentation/state-leaderboard-scoreboard-hole-by-hole/stroke-play-hole-by-hole.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
