> ## 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. See the enum list below.                                                                                                                                                                                                                     |
| `market_sport_type`   | `metadata` | Enum             | The fully-qualified market type, including sport, participant scope, and game period. 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 period or prop variant of a sports market. Only set for sub-period markets and props.

| 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_team_first_inning_run`    | Baseball   | Team   | 1st inning      | Run scored      |
| `baseball_team_first_five_winner`   | Baseball   | Team   | First 5 innings | Moneyline       |
| `baseball_team_first_five_spread`   | Baseball   | Team   | First 5 innings | Spread          |
| `baseball_team_first_five_total`    | Baseball   | Team   | First 5 innings | Total           |
| `basketball_player_points`          | Basketball | Player | Full game       | Points prop     |
| `basketball_player_assists`         | Basketball | Player | Full game       | Assists prop    |
| `basketball_team_first_half_winner` | Basketball | Team   | First half      | Moneyline       |
| `basketball_team_first_half_spread` | Basketball | Team   | First half      | Spread          |
| `basketball_team_first_half_total`  | Basketball | Team   | First half      | Total           |

<Info>
  The `market_sport_type` enum is the source of truth for game period and prop variants. 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. Full-game markets are identified by `outcome_type` alone — `market_sport_type` is not set. Period markets and props always set `market_sport_type`.

| To identify...                                 | Check                                                                                      |
| ---------------------------------------------- | ------------------------------------------------------------------------------------------ |
| **Full-game moneyline**                        | `outcome_type = "moneyline"`                                                               |
| **Full-game spread**                           | `outcome_type = "spreads"`                                                                 |
| **Full-game total**                            | `outcome_type = "totals"`                                                                  |
| **Season/event-long futures**                  | `outcome_type = "futures"`                                                                 |
| **3-way outcome** (e.g. soccer home/draw/away) | `outcome_type = "drawable_outcome"`                                                        |
| **MLB first-5-innings moneyline**              | `outcome_type = "moneyline"` AND `market_sport_type = "baseball_team_first_five_winner"`   |
| **MLB first-5-innings spread**                 | `outcome_type = "spreads"` AND `market_sport_type = "baseball_team_first_five_spread"`     |
| **MLB first-5-innings total**                  | `outcome_type = "totals"` AND `market_sport_type = "baseball_team_first_five_total"`       |
| **MLB first-inning run**                       | `market_sport_type = "baseball_team_first_inning_run"`                                     |
| **MLB player home runs prop**                  | `outcome_type = "props"` AND `market_sport_type = "baseball_player_home_runs"`             |
| **MLB player strikeouts prop**                 | `outcome_type = "props"` AND `market_sport_type = "baseball_player_strikeouts"`            |
| **NBA first-half moneyline**                   | `outcome_type = "moneyline"` AND `market_sport_type = "basketball_team_first_half_winner"` |
| **NBA first-half spread**                      | `outcome_type = "spreads"` AND `market_sport_type = "basketball_team_first_half_spread"`   |
| **NBA first-half total**                       | `outcome_type = "totals"` AND `market_sport_type = "basketball_team_first_half_total"`     |
| **NBA player points prop**                     | `outcome_type = "props"` AND `market_sport_type = "basketball_player_points"`              |
| **NBA player assists prop**                    | `outcome_type = "props"` AND `market_sport_type = "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",
    "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. `outcome_type = "totals"` and `market_sport_type` is unset → full-game total.
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",
    "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. `outcome_type = "spreads"` and `market_sport_type` is unset → full-game spread.
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.
* **Full-game markets are identified by `outcome_type` alone.** `market_sport_type` is only set for sub-period markets and props.
* **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.
