Skip to main content

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.

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

FieldLocationTypeDescription
event_start_timemetadataTimestamp (UTC)Scheduled start time of the underlying event. Updated in place when a game is rescheduled.
event_subcategorymetadataEnumThe sport. Values: BASKETBALL, FOOTBALL, BASEBALL, SOCCER, etc.
outcome_typemetadataEnumThe market structure. See the enum list below.
market_sport_typemetadataEnumThe fully-qualified market type, including sport, participant scope, and game period. See the enum list below.
outcome_strikemetadataString (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_idmetadataStringGlobally 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.
ValueMeaning
moneylineWin/lose market (no handicap).
spreadsPoint/goal/run handicap market.
totalsOver/under combined-score market.
propsPlayer or team prop.
futuresSeason-long or event-long futures market.
drawable_outcomeExclusive 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.
ValueSportScopePeriodType
baseball_player_home_runsBaseballPlayerFull gameHome runs prop
baseball_player_strikeoutsBaseballPlayerFull gameStrikeouts prop
baseball_team_first_inning_runBaseballTeam1st inningRun scored
baseball_team_first_five_winnerBaseballTeamFirst 5 inningsMoneyline
baseball_team_first_five_spreadBaseballTeamFirst 5 inningsSpread
baseball_team_first_five_totalBaseballTeamFirst 5 inningsTotal
basketball_player_pointsBasketballPlayerFull gamePoints prop
basketball_player_assistsBasketballPlayerFull gameAssists prop
basketball_team_first_half_winnerBasketballTeamFirst halfMoneyline
basketball_team_first_half_spreadBasketballTeamFirst halfSpread
basketball_team_first_half_totalBasketballTeamFirst halfTotal
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.

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 moneylineoutcome_type = "moneyline"
Full-game spreadoutcome_type = "spreads"
Full-game totaloutcome_type = "totals"
Season/event-long futuresoutcome_type = "futures"
3-way outcome (e.g. soccer home/draw/away)outcome_type = "drawable_outcome"
MLB first-5-innings moneylineoutcome_type = "moneyline" AND market_sport_type = "baseball_team_first_five_winner"
MLB first-5-innings spreadoutcome_type = "spreads" AND market_sport_type = "baseball_team_first_five_spread"
MLB first-5-innings totaloutcome_type = "totals" AND market_sport_type = "baseball_team_first_five_total"
MLB first-inning runmarket_sport_type = "baseball_team_first_inning_run"
MLB player home runs propoutcome_type = "props" AND market_sport_type = "baseball_player_home_runs"
MLB player strikeouts propoutcome_type = "props" AND market_sport_type = "baseball_player_strikeouts"
NBA first-half moneylineoutcome_type = "moneyline" AND market_sport_type = "basketball_team_first_half_winner"
NBA first-half spreadoutcome_type = "spreads" AND market_sport_type = "basketball_team_first_half_spread"
NBA first-half totaloutcome_type = "totals" AND market_sport_type = "basketball_team_first_half_total"
NBA player points propoutcome_type = "props" AND market_sport_type = "basketball_player_points"
NBA player assists propoutcome_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:
{
  "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:
{
  "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 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.