> ## Documentation Index
> Fetch the complete documentation index at: https://docs.polymarket.us/llms.txt
> Use this file to discover all available pages before exploring further.

# Sports Schema

> Common instrument fields for safely identifying sports markets

This page documents the strongly-typed fields on the instrument that should be used to identify a sports market. **Do not parse the instrument symbol or slug** — symbol formats are not part of the public contract and may change. Always identify markets using the fields below.

## Section 1: Common Identifying Fields

The following fields appear on every sports instrument. Together they uniquely describe the sport, league, event, period, market type, and handicap of a contract.

### Field Reference

| Field                 | Location   | Type             | Description                                                                                                                                                                                                                                                        |
| --------------------- | ---------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `event_start_time`    | `metadata` | Timestamp (UTC)  | Scheduled start time of the underlying event. Updated in place when a game is rescheduled.                                                                                                                                                                         |
| `event_subcategory`   | `metadata` | Enum             | The sport. Values: `BASKETBALL`, `FOOTBALL`, `BASEBALL`, `SOCCER`, etc.                                                                                                                                                                                            |
| `outcome_type`        | `metadata` | Enum             | The market structure. Still present on every instrument, but **do not use it for market mapping** — use `market_sport_type` instead. See the enum list below.                                                                                                      |
| `market_sport_type`   | `metadata` | Enum             | The fully-qualified market type, including sport, participant scope, and game period. **Always populated on every sports instrument**, including full-game spreads, totals, and outright winners. See the enum list below.                                         |
| `outcome_strike`      | `metadata` | String (numeric) | The handicap or threshold for the market. Unsigned magnitude — the side the contract pays out on is encoded by `long_participant_id`. For a Cleveland +3.5 spread, this is `"3.5"`. For an over/under total of 4.5, this is `"4.5"`. Empty/`"0.0"` for moneylines. |
| `long_participant_id` | `metadata` | String           | Globally unique ID of the side the contract pays out on (e.g. `mlb-cle`). Only populated on individual game markets (moneylines, spreads, totals, props) — do not rely on it for futures.                                                                          |

### `outcome_type` Enum

The market structure of a sports instrument.

| Value              | Meaning                                                                |
| ------------------ | ---------------------------------------------------------------------- |
| `moneyline`        | Win/lose market (no handicap).                                         |
| `spreads`          | Point/goal/run handicap market.                                        |
| `totals`           | Over/under combined-score market.                                      |
| `props`            | Player or team prop.                                                   |
| `futures`          | Season-long or event-long futures market.                              |
| `drawable_outcome` | Exclusive group market that admits a draw (e.g. 3-way soccer outcome). |

### `market_sport_type` Enum

The fully-qualified market type, including sport, participant scope, and game period. This field is populated on **every** sports instrument — full-game spreads, totals, and outright winners included — so you can treat it as the single source of truth for any market. **You no longer need to check `outcome_type` to map a market**; `market_sport_type` alone is sufficient.

| Value                                         | Sport      | Scope   | Period          | Type                                               |
| --------------------------------------------- | ---------- | ------- | --------------- | -------------------------------------------------- |
| `baseball_player_home_runs`                   | Baseball   | Player  | Full game       | Home runs prop                                     |
| `baseball_player_strikeouts`                  | Baseball   | Player  | Full game       | Strikeouts prop                                    |
| `baseball_player_hits`                        | Baseball   | Player  | Full game       | Hits prop                                          |
| `baseball_player_total_bases`                 | Baseball   | Player  | Full game       | Total bases prop                                   |
| `baseball_player_hits_runs_rbis`              | Baseball   | Player  | Full game       | Hits + runs + RBIs prop                            |
| `baseball_player_outs`                        | Baseball   | Player  | Full game       | Pitcher outs prop                                  |
| `baseball_player_earned_runs_allowed`         | Baseball   | Player  | Full game       | Earned runs allowed prop                           |
| `baseball_player_hits_allowed`                | Baseball   | Player  | Full game       | Hits allowed prop                                  |
| `baseball_player_walks_allowed`               | Baseball   | Player  | Full game       | Walks allowed prop                                 |
| `baseball_team_first_inning_run`              | Baseball   | Team    | 1st inning      | Run scored                                         |
| `baseball_game_extra_innings`                 | Baseball   | Game    | Full game       | Extra innings yes/no                               |
| `baseball_team_first_five_winner`             | Baseball   | Team    | First 5 innings | Prop                                               |
| `baseball_team_first_five_spread`             | Baseball   | Team    | First 5 innings | Spread                                             |
| `baseball_team_first_five_total`              | Baseball   | Team    | First 5 innings | Total                                              |
| `baseball_team_full_game_winner`              | Baseball   | Team    | Full game       | Moneyline                                          |
| `baseball_team_full_game_spread`              | Baseball   | Team    | Full game       | Spread                                             |
| `baseball_team_full_game_total`               | Baseball   | Team    | Full game       | Total                                              |
| `basketball_player_points`                    | Basketball | Player  | Full game       | Points prop                                        |
| `basketball_player_assists`                   | Basketball | Player  | Full game       | Assists prop                                       |
| `basketball_player_rebounds`                  | Basketball | Player  | Full game       | Rebounds prop                                      |
| `basketball_player_threes`                    | Basketball | Player  | Full game       | Three-pointers prop                                |
| `basketball_player_steals`                    | Basketball | Player  | Full game       | Steals prop                                        |
| `basketball_player_blocks`                    | Basketball | Player  | Full game       | Blocks prop                                        |
| `basketball_player_double_double`             | Basketball | Player  | Full game       | Double-double yes/no                               |
| `basketball_player_triple_double`             | Basketball | Player  | Full game       | Triple-double yes/no                               |
| `basketball_team_first_half_winner`           | Basketball | Team    | First half      | Prop                                               |
| `basketball_team_first_half_spread`           | Basketball | Team    | First half      | Spread                                             |
| `basketball_team_first_half_total`            | Basketball | Team    | First half      | Total                                              |
| `basketball_team_second_half_winner`          | Basketball | Team    | Second half     | Prop                                               |
| `basketball_team_second_half_spread`          | Basketball | Team    | Second half     | Spread                                             |
| `basketball_team_second_half_total`           | Basketball | Team    | Second half     | Total                                              |
| `basketball_team_first_quarter_spread`        | Basketball | Team    | 1st quarter     | Spread                                             |
| `basketball_team_first_quarter_total`         | Basketball | Team    | 1st quarter     | Total                                              |
| `basketball_team_second_quarter_spread`       | Basketball | Team    | 2nd quarter     | Spread                                             |
| `basketball_team_second_quarter_total`        | Basketball | Team    | 2nd quarter     | Total                                              |
| `basketball_team_third_quarter_spread`        | Basketball | Team    | 3rd quarter     | Spread                                             |
| `basketball_team_third_quarter_total`         | Basketball | Team    | 3rd quarter     | Total                                              |
| `basketball_team_fourth_quarter_spread`       | Basketball | Team    | 4th quarter     | Spread                                             |
| `basketball_team_fourth_quarter_total`        | Basketball | Team    | 4th quarter     | Total                                              |
| `basketball_game_overtime`                    | Basketball | Game    | Full game       | Overtime yes/no                                    |
| `basketball_team_full_game_winner`            | Basketball | Team    | Full game       | Moneyline                                          |
| `basketball_team_full_game_spread`            | Basketball | Team    | Full game       | Spread                                             |
| `basketball_team_full_game_total`             | Basketball | Team    | Full game       | Total                                              |
| `football_team_full_game_winner`              | Football   | Team    | Full game       | Moneyline                                          |
| `football_team_full_game_spread`              | Football   | Team    | Full game       | Spread                                             |
| `football_team_full_game_total`               | Football   | Team    | Full game       | Total                                              |
| `soccer_team_full_time_winner`                | Soccer     | Team    | Full time       | Moneyline (3-way)                                  |
| `soccer_team_full_game_spread`                | Soccer     | Team    | Full game       | Spread                                             |
| `soccer_team_full_game_total`                 | Soccer     | Game    | Full game       | Total goals across **both** teams (combined)       |
| `soccer_game_btts`                            | Soccer     | Game    | Full game       | Both teams to score                                |
| `soccer_game_first_team_to_score`             | Soccer     | Game    | Full game       | First team to score                                |
| `soccer_game_next_team_to_score`              | Soccer     | Game    | Full game       | Next team to score                                 |
| `soccer_game_goal_in_interval`                | Soccer     | Game    | Interval        | Goal in interval                                   |
| `soccer_game_exact_score`                     | Soccer     | Game    | Full game       | Exact score                                        |
| `soccer_game_to_advance`                      | Soccer     | Team    | Tie/match       | To advance                                         |
| `soccer_team_first_half_winner`               | Soccer     | Team    | First half      | Prop                                               |
| `soccer_team_first_half_spread`               | Soccer     | Team    | First half      | Spread                                             |
| `soccer_team_first_half_total`                | Soccer     | Game    | First half      | Total goals across **both** teams (combined)       |
| `soccer_game_first_half_btts`                 | Soccer     | Game    | First half      | Both teams to score, first-half goals only         |
| `soccer_game_first_half_first_team_to_score`  | Soccer     | Game    | First half      | First team to score, first-half goals only         |
| `soccer_game_total_corners`                   | Soccer     | Game    | Full game       | Total corners across **both** teams (combined)     |
| `soccer_team_second_half_winner`              | Soccer     | Team    | Second half     | Prop                                               |
| `soccer_team_second_half_spread`              | Soccer     | Team    | Second half     | Spread                                             |
| `soccer_team_second_half_total`               | Soccer     | Game    | Second half     | Total goals across **both** teams (combined)       |
| `soccer_game_second_half_btts`                | Soccer     | Game    | Second half     | Both teams to score, second-half goals only        |
| `soccer_game_second_half_first_team_to_score` | Soccer     | Game    | Second half     | First team to score, second-half goals only        |
| `soccer_team_total_goals`                     | Soccer     | Team    | Full game       | Total goals for a **single** team                  |
| `soccer_team_total_goals_first_half`          | Soccer     | Team    | First half      | Total goals for a **single** team                  |
| `soccer_game_total_goals_odd_even`            | Soccer     | Game    | Full game       | Total goals odd/even                               |
| `soccer_game_first_half_exact_score`          | Soccer     | Game    | First half      | Exact score                                        |
| `soccer_player_goals`                         | Soccer     | Player  | Full game       | Goals prop                                         |
| `soccer_player_assists`                       | Soccer     | Player  | Full game       | Assists prop                                       |
| `soccer_player_shots`                         | Soccer     | Player  | Full game       | Shots prop                                         |
| `soccer_player_shots_on_target`               | Soccer     | Player  | Full game       | Shots on target prop                               |
| `soccer_player_goalkeeper_saves`              | Soccer     | Player  | Full game       | Goalkeeper saves prop                              |
| `soccer_player_goals_plus_assists`            | Soccer     | Player  | Full game       | Goals + assists prop                               |
| `soccer_team_total_corners`                   | Soccer     | Team    | Full game       | Total corners for a **single** team                |
| `soccer_game_corners_odd_even`                | Soccer     | Game    | Full game       | Corners odd/even                                   |
| `soccer_game_goes_to_extra_time`              | Soccer     | Game    | Full time       | Will the match go to extra time (knockout)         |
| `soccer_team_extra_time_spread`               | Soccer     | Team    | Extra time      | Spread — extra-time goals only                     |
| `soccer_game_extra_time_total`                | Soccer     | Game    | Extra time      | Total goals across **both** teams, extra time only |
| `soccer_game_extra_time_btts`                 | Soccer     | Game    | Extra time      | Both teams to score in extra time                  |
| `soccer_game_extra_time_first_team_to_score`  | Soccer     | Game    | Extra time      | First team to score in extra time                  |
| `hockey_team_full_game_winner`                | Hockey     | Team    | Full game       | Moneyline                                          |
| `hockey_team_full_game_spread`                | Hockey     | Team    | Full game       | Spread (puck line)                                 |
| `hockey_team_full_game_total`                 | Hockey     | Team    | Full game       | Total                                              |
| `hockey_game_overtime`                        | Hockey     | Game    | Full game       | Overtime yes/no                                    |
| `hockey_game_double_overtime`                 | Hockey     | Game    | Full game       | Double overtime yes/no                             |
| `hockey_player_goals`                         | Hockey     | Player  | Full game       | Goals prop                                         |
| `hockey_player_assists`                       | Hockey     | Player  | Full game       | Assists prop                                       |
| `hockey_player_points`                        | Hockey     | Player  | Full game       | Points prop                                        |
| `tennis_match_winner`                         | Tennis     | Player  | Match           | Moneyline                                          |
| `tennis_match_games_spread`                   | Tennis     | Player  | Match           | Games spread                                       |
| `tennis_match_sets_spread`                    | Tennis     | Player  | Match           | Sets spread                                        |
| `tennis_match_total_games`                    | Tennis     | Match   | Match           | Total games                                        |
| `tennis_match_total_sets`                     | Tennis     | Match   | Match           | Total sets                                         |
| `tennis_match_exact_score`                    | Tennis     | Match   | Match           | Exact set score                                    |
| `tennis_set_1_winner`                         | Tennis     | Player  | Set 1           | Prop                                               |
| `tennis_set_2_winner`                         | Tennis     | Player  | Set 2           | Prop                                               |
| `tennis_set_3_winner`                         | Tennis     | Player  | Set 3           | Prop                                               |
| `cricket_match_winner`                        | Cricket    | Team    | Match           | Moneyline                                          |
| `ufc_fight_winner`                            | UFC        | Fighter | Fight           | Moneyline                                          |
| `ufc_method_of_victory`                       | UFC        | Fighter | Fight           | Method of victory                                  |
| `ufc_go_the_distance`                         | UFC        | Game    | Fight           | Go the distance yes/no                             |
| `ufc_round_of_victory`                        | UFC        | Fighter | Fight           | Round of victory                                   |
| `ufc_round_of_finish`                         | UFC        | Fight   | Fight           | Round of finish                                    |
| `ufc_method_of_finish`                        | UFC        | Fight   | Fight           | Method of finish                                   |
| `esports_match_winner`                        | Esports    | Team    | Match           | Moneyline                                          |
| `esports_map_winner_1`                        | Esports    | Team    | Map 1           | Prop                                               |
| `esports_map_winner_2`                        | Esports    | Team    | Map 2           | Prop                                               |
| `esports_map_winner_3`                        | Esports    | Team    | Map 3           | Prop                                               |
| `esports_map_winner_4`                        | Esports    | Team    | Map 4           | Prop                                               |
| `esports_game_winner_1`                       | Esports    | Team    | Game 1          | Prop                                               |
| `esports_game_winner_2`                       | Esports    | Team    | Game 2          | Prop                                               |
| `esports_game_winner_3`                       | Esports    | Team    | Game 3          | Prop                                               |
| `esports_game_winner_4`                       | Esports    | Team    | Game 4          | Prop                                               |

<Info>
  The `market_sport_type` enum is the source of truth for sport, period, and prop variants, and is now guaranteed to be present on every instrument. When in doubt about which value applies to a market you're seeing, use this field rather than parsing the symbol.
</Info>

***

## Section 2: Identifying Markets

Use this table as a recipe book for identifying a specific market type from instrument metadata. **Match on `market_sport_type` alone** — it fully identifies any market (structure and period), so you no longer need to check `outcome_type`.

| To identify...                    | `market_sport_type`                                                                          |
| --------------------------------- | -------------------------------------------------------------------------------------------- |
| **Full-game moneyline**           | `<sport>_team_full_game_winner` (soccer uses `soccer_team_full_time_winner`, a 3-way market) |
| **Full-game spread**              | `<sport>_team_full_game_spread`                                                              |
| **Full-game total**               | `<sport>_team_full_game_total`                                                               |
| **MLB first-5-innings moneyline** | `baseball_team_first_five_winner`                                                            |
| **MLB first-5-innings spread**    | `baseball_team_first_five_spread`                                                            |
| **MLB first-5-innings total**     | `baseball_team_first_five_total`                                                             |
| **MLB first-inning run**          | `baseball_team_first_inning_run`                                                             |
| **MLB player home runs prop**     | `baseball_player_home_runs`                                                                  |
| **MLB player strikeouts prop**    | `baseball_player_strikeouts`                                                                 |
| **NBA first-half moneyline**      | `basketball_team_first_half_winner`                                                          |
| **NBA first-half spread**         | `basketball_team_first_half_spread`                                                          |
| **NBA first-half total**          | `basketball_team_first_half_total`                                                           |
| **NBA player points prop**        | `basketball_player_points`                                                                   |
| **NBA player assists prop**       | `basketball_player_assists`                                                                  |

### Worked Example: Cleveland/Detroit Over 4.5 Total

A full-game total on the May 21 Cleveland Guardians vs Detroit Tigers MLB game:

```json theme={null}
{
  "symbol": "tsc-mlb-cle-det-2026-05-21-4pt5",
  "metadata": {
    "event_id": "mlb-cle-det-2026-05-21",
    "event_start_time": "2026-05-21 17:10:00+00",
    "event_subcategory": "BASEBALL",
    "outcome_type": "totals",
    "market_sport_type": "baseball_team_full_game_total",
    "outcome_strike": "4.5",
    "long_participant_id": "mlb-cle",
    "long_participant_name": "Cleveland Guardians",
    "short_participant_id": "mlb-det"
  }
}
```

To safely interpret this contract:

1. `market_sport_type = "baseball_team_full_game_total"` → full-game total. (`outcome_type` is also present but you don't need it.)
2. `event_subcategory = "BASEBALL"` → MLB game.
3. `outcome_strike = "4.5"` → over/under line is 4.5 combined runs.
4. The contract resolves "Over" if the combined score is 4.5 or more, otherwise "Under".

### Worked Example: Cleveland +3.5 Spread

A full-game run-line spread on the May 20 Cleveland Guardians vs Detroit Tigers MLB game:

```json theme={null}
{
  "symbol": "asc-mlb-cle-det-2026-05-20-pos-3pt5",
  "metadata": {
    "event_id": "mlb-cle-det-2026-05-20",
    "event_start_time": "2026-05-20 22:40:00+00",
    "event_subcategory": "BASEBALL",
    "outcome_type": "spreads",
    "market_sport_type": "baseball_team_full_game_spread",
    "outcome_strike": "3.5",
    "long_participant_id": "mlb-cle",
    "long_participant_name": "Cleveland Guardians",
    "short_participant_id": "mlb-det"
  }
}
```

To safely interpret this contract:

1. `market_sport_type = "baseball_team_full_game_spread"` → full-game spread. (`outcome_type` is also present but you don't need it.)
2. `long_participant_id = "mlb-cle"` → the contract pays out on Cleveland.
3. `outcome_strike = "3.5"` → handicap magnitude is 3.5 runs.
4. The contract resolves to Cleveland if Cleveland wins, or loses by fewer than 3.5 runs.

***

## Best Practices

* **Never parse the symbol or slug** to determine market type, period, or handicap. Symbol formats are not part of the public contract.
* **Map on `market_sport_type` alone.** It is guaranteed on every instrument — full-game, sub-period, and prop alike — and fully identifies the market. `outcome_type` is still present on the instrument, but **do not rely on it for mapping** (it is subject to change); the sole exception is futures, which carry no `market_sport_type` and are identified by `outcome_type = "futures"`.
* **Treat `outcome_strike` as a string** in client code and convert to your numeric type. The value is unsigned — the spread direction is determined by `long_participant_id`.
* **Cache and version your enum mappings.** New `market_sport_type` values are announced in the [changelog](/changelog) and rolled out in preprod before production. Subscribe to the RSS feed to be notified before new enums appear in production.
* **Subscribe to instrument updates** via the streaming APIs to catch new instruments as they are listed.
