# Sports Market Taxonomy

Sports prediction-market events include a `sportsMarket` object that classifies the sport, market family, subject, settlement scope, and measured statistic. Use this metadata to discover and group markets without parsing titles, descriptions, or provider ticker formats.

<Callout type="info" title="Classification, not availability">
  These mappings describe how sports markets are classified when offered. They do not guarantee that every market is currently listed. Use [List Events](/rest-api/prediction-markets/events/list-events) to discover available events.
</Callout>

## Response structure

```json
{
  "sportsMarket": {
    "sport": "baseball",
    "type": "spread",
    "subject": "team",
    "scope": {
      "type": "inning",
      "start": 1,
      "end": 5
    },
    "metric": "runs"
  }
}
```

<DocTable
  headers={["Field", "Required", "Description"]}
  rows={[
    ["`sport`", "Yes", "Sport whose rules give the scope and metric their sport-specific meaning."],
    ["`type`", "Yes", "Conventional market family, such as `moneyline`, `spread`, `total`, or `prop`."],
    ["`subject`", "Yes", "What the market is about: a `contest`, `team`, `player`, or other `participant`."],
    ["`scope`", "Yes", "Settlement unit, with a required `type` and optional `ordinal`, `start`, or `end` qualifier."],
    ["`metric`", "No", "Measured statistic, such as `points`, `runs`, `passing_yards`, or `strikeouts`. Omitted when no metric is needed."],
  ]}
/>

The classification applies to every contract grouped under the event. Team or player identity, numeric lines, tradable instrument data, and resolution terms remain contract-specific.

## Market-family distinctions

The `subject` distinguishes familiar markets without requiring a separate type for every combination:

<DocTable
  headers={["Classification", "Meaning"]}
  rows={[
    ["`total` + `contest`", "Combined contest total."],
    ["`total` + `team`", "Team total."],
    ["`prop` + `player`", "Player proposition, including player-stat over/under lines."],
    ["`prop` + `team`", "Team proposition."],
    ["`prop` + `contest`", "Game or contest proposition."],
    ["`futures`", "Long-horizon season, tournament, award, or championship market."],
  ]}
/>

## Filtering

The response classification is nested under `sportsMarket`. Event-list filters are flat query parameters:

```bash
curl "https://api.gemini.com/v1/prediction-markets/events?status=active&sport=american_football&sports_market_type=prop&sports_market_subject=player&sports_market_scope=full_contest&sports_market_metric=passing_yards"
```

<DocTable
  headers={["Filter", "Response field"]}
  rows={[
    ["`sport`", "`sportsMarket.sport`"],
    ["`sports_market_type`", "`sportsMarket.type`"],
    ["`sports_market_subject`", "`sportsMarket.subject`"],
    ["`sports_market_scope`", "`sportsMarket.scope.type`"],
    ["`sports_market_metric`", "`sportsMarket.metric`"],
  ]}
/>

Filters compose independently. A metric-only search such as `sports_market_metric=points` can return markets from any sport using that metric; add `sport` when its sport-specific meaning matters. League and competition filters remain separate from `sportsMarket`.

The scope filter selects only `scope.type`. Inspect `scope.ordinal`, `scope.start`, and `scope.end` in the response when you need an exact unit or range. For example:

- First half: `{ "type": "half", "ordinal": 1 }`
- First quarter: `{ "type": "quarter", "ordinal": 1 }`
- First five innings: `{ "type": "inning", "start": 1, "end": 5 }`

### Example query patterns

Fetch all active full-contest moneylines across all sports:

```bash
curl "https://api.gemini.com/v1/prediction-markets/events?status=active&sports_market_type=moneyline&sports_market_scope=full_contest"
```

Fetch all active spreads (run lines) for baseball:

```bash
curl "https://api.gemini.com/v1/prediction-markets/events?status=active&sport=baseball&sports_market_type=spread"
```

Fetch all active game and team totals for baseball:

```bash
curl "https://api.gemini.com/v1/prediction-markets/events?status=active&sport=baseball&sports_market_type=total"
```

Fetch all active player props for American football:

```bash
curl "https://api.gemini.com/v1/prediction-markets/events?status=active&sport=american_football&sports_market_type=prop&sports_market_subject=player"
```

## Common market mappings

A dash in the Metric column means that the market does not require a metric to be discoverable.

### Baseball

<DocTable
  headers={["Market", "Type", "Subject", "Scope", "Metric"]}
  rows={[
    ["Game moneyline", "`moneyline`", "`contest`", "`full_contest`", "—"],
    ["Run line", "`spread`", "`team`", "`full_contest`", "`runs`"],
    ["Game total", "`total`", "`contest`", "`full_contest`", "`runs`"],
    ["Team total", "`total`", "`team`", "`full_contest`", "`runs`"],
    ["First-five-innings moneyline", "`moneyline`", "`contest`", "`inning`, range 1–5", "—"],
    ["First-five-innings run line", "`spread`", "`team`", "`inning`, range 1–5", "`runs`"],
    ["First-five-innings total", "`total`", "`contest`", "`inning`, range 1–5", "`runs`"],
    ["NRFI / YRFI", "`prop`", "`contest`", "`inning`, ordinal 1", "`runs`"],
    ["Batter hits", "`prop`", "`player`", "`full_contest`", "`hits`"],
    ["Batter home runs", "`prop`", "`player`", "`full_contest`", "`home_runs`"],
    ["Batter singles / doubles / triples", "`prop`", "`player`", "`full_contest`", "`singles` / `doubles` / `triples`"],
    ["Batter RBIs", "`prop`", "`player`", "`full_contest`", "`runs_batted_in`"],
    ["Batter total bases", "`prop`", "`player`", "`full_contest`", "`total_bases`"],
    ["Pitcher strikeouts", "`prop`", "`player`", "`full_contest`", "`strikeouts`"],
    ["Pitcher walks", "`prop`", "`player`", "`full_contest`", "`walks`"],
    ["Pitching outs recorded", "`prop`", "`player`", "`full_contest`", "`pitching_outs_recorded`"],
    ["Team to make playoffs", "`to_advance`", "`team`", "`season`", "—"],
    ["World Series winner", "`futures`", "`team`", "`competition`", "—"],
  ]}
/>

### Soccer

<DocTable
  headers={["Market", "Type", "Subject", "Scope", "Metric"]}
  rows={[
    ["Three-way match result", "`moneyline`", "`contest`", "`regulation`", "—"],
    ["Match handicap", "`spread`", "`team`", "`regulation`", "`goals`"],
    ["Match total", "`total`", "`contest`", "`regulation`", "`goals`"],
    ["Team total", "`total`", "`team`", "`regulation`", "`goals`"],
    ["First-half result", "`moneyline`", "`contest`", "`half`, ordinal 1", "—"],
    ["First-half total", "`total`", "`contest`", "`half`, ordinal 1", "`goals`"],
    ["Both teams to score", "`prop`", "`contest`", "`regulation`", "`goals`"],
    ["First team to score", "`prop`", "`team`", "`regulation`", "`goals`"],
    ["Correct score", "`correct_score`", "`contest`", "`regulation`", "`goals`"],
    ["Player goals", "`prop`", "`player`", "`regulation`", "`goals`"],
    ["Player assists", "`prop`", "`player`", "`regulation`", "`assists`"],
    ["Player shots on target", "`prop`", "`player`", "`regulation`", "`shots_on_target`"],
    ["Player passes / completed passes", "`prop`", "`player`", "`regulation`", "`passes` / `completed_passes`"],
    ["Player tackles", "`prop`", "`player`", "`regulation`", "`tackles`"],
    ["Player cards", "`prop`", "`player`", "`regulation`", "`yellow_cards` / `red_cards`"],
    ["Goalkeeper clean sheet", "`prop`", "`player`", "`regulation`", "`clean_sheets`"],
    ["Match corners", "`total`", "`contest`", "`regulation`", "`corners`"],
    ["Match cards", "`total`", "`contest`", "`regulation`", "`cards`"],
    ["Team to advance", "`to_advance`", "`team`", "`round`", "—"],
    ["League or tournament winner", "`futures`", "`team`", "`competition`", "—"],
  ]}
/>

### American football

The `american_football` sport value covers professional and college football. Use the surrounding league or competition metadata to distinguish NFL from college football.

<DocTable
  headers={["Market", "Type", "Subject", "Scope", "Metric"]}
  rows={[
    ["Game moneyline", "`moneyline`", "`contest`", "`full_contest`", "—"],
    ["Point spread", "`spread`", "`team`", "`full_contest`", "`points`"],
    ["Game total", "`total`", "`contest`", "`full_contest`", "`points`"],
    ["Team total", "`total`", "`team`", "`full_contest`", "`points`"],
    ["First-half spread", "`spread`", "`team`", "`half`, ordinal 1", "`points`"],
    ["First-quarter total", "`total`", "`contest`", "`quarter`, ordinal 1", "`points`"],
    ["Passing yards", "`prop`", "`player`", "`full_contest`", "`passing_yards`"],
    ["Passing touchdowns", "`prop`", "`player`", "`full_contest`", "`passing_touchdowns`"],
    ["Pass attempts / completions", "`prop`", "`player`", "`full_contest`", "`pass_attempts` / `pass_completions`"],
    ["Interceptions thrown", "`prop`", "`player`", "`full_contest`", "`interceptions_thrown`"],
    ["Rushing yards / attempts", "`prop`", "`player`", "`full_contest`", "`rushing_yards` / `rush_attempts`"],
    ["Receiving yards / receptions", "`prop`", "`player`", "`full_contest`", "`receiving_yards` / `receptions`"],
    ["Anytime / first touchdown scorer", "`prop`", "`player`", "`full_contest`", "`touchdowns`"],
    ["Field goals made", "`prop`", "`player`", "`full_contest`", "`field_goals_made`"],
    ["Tackles / sacks", "`prop`", "`player`", "`full_contest`", "`tackles` / `sacks`"],
    ["Rushing / receiving touchdowns", "`prop`", "`player`", "`full_contest`", "`rushing_touchdowns` / `receiving_touchdowns`"],
    ["Longest pass / rush / reception", "`prop`", "`player`", "`full_contest`", "`longest_pass_completion` / `longest_rush` / `longest_reception`"],
    ["Kicking points", "`prop`", "`player`", "`full_contest`", "`kicking_points`"],
    ["Fumbles", "`prop`", "`player`", "`full_contest`", "`fumbles`"],
    ["Fantasy points", "`prop`", "`player`", "`full_contest`", "`fantasy_points`"],
    ["First team to score", "`prop`", "`team`", "`full_contest`", "`points`"],
    ["Overtime yes / no", "`prop`", "`contest`", "`full_contest`", "—"],
    ["Correct final score", "`correct_score`", "`contest`", "`full_contest`", "`points`"],
    ["Team to make playoffs", "`to_advance`", "`team`", "`season`", "—"],
    ["Regular-season win total", "`futures`", "`team`", "`season`", "`wins`"],
    ["Conference / championship winner", "`futures`", "`team`", "`competition`", "—"],
    ["MVP or season award", "`futures`", "`player`", "`season`", "—"],
  ]}
/>

### Cricket

<DocTable
  headers={["Market", "Type", "Subject", "Scope", "Metric"]}
  rows={[
    ["Match winner", "`moneyline`", "`contest`", "`full_contest`", "—"],
    ["Innings total", "`total`", "`team`", "`team_innings`, ordinal 1", "`runs`"],
    ["First-innings handicap", "`spread`", "`team`", "`team_innings`, ordinal 1", "`runs`"],
    ["Over total", "`total`", "`team`", "`over`, ordinal supplied", "`runs`"],
    ["Powerplay total", "`total`", "`team`", "`powerplay`", "`runs`"],
    ["Batter runs", "`prop`", "`player`", "`team_innings`", "`runs`"],
    ["Bowler wickets", "`prop`", "`player`", "`team_innings`", "`wickets`"],
    ["Batter fours", "`prop`", "`player`", "`team_innings`", "`fours`"],
    ["Batter sixes", "`prop`", "`player`", "`team_innings`", "`sixes`"],
    ["Batter balls faced", "`prop`", "`player`", "`team_innings`", "`balls_faced`"],
    ["Bowler runs conceded / maiden overs", "`prop`", "`player`", "`team_innings`", "`runs_conceded` / `maiden_overs`"],
    ["Fielder catches", "`prop`", "`player`", "`full_contest`", "`catches`"],
    ["Match boundaries", "`total`", "`contest`", "`full_contest`", "`boundaries`"],
    ["Super-over winner", "`moneyline`", "`contest`", "`super_over`", "—"],
    ["Team to advance", "`to_advance`", "`team`", "`round`", "—"],
    ["Tournament winner", "`futures`", "`team`", "`tournament`", "—"],
  ]}
/>

### Hockey

<DocTable
  headers={["Market", "Type", "Subject", "Scope", "Metric"]}
  rows={[
    ["Game winner", "`moneyline`", "`contest`", "`full_contest`", "—"],
    ["Three-way regulation result", "`moneyline`", "`contest`", "`regulation`", "—"],
    ["Puck line", "`spread`", "`team`", "`full_contest`", "`goals`"],
    ["Game total", "`total`", "`contest`", "`full_contest`", "`goals`"],
    ["Team total", "`total`", "`team`", "`full_contest`", "`goals`"],
    ["First-period result", "`moneyline`", "`contest`", "`period`, ordinal 1", "—"],
    ["First-period total", "`total`", "`contest`", "`period`, ordinal 1", "`goals`"],
    ["Player goals", "`prop`", "`player`", "`full_contest`", "`goals`"],
    ["Player assists", "`prop`", "`player`", "`full_contest`", "`assists`"],
    ["Player points", "`prop`", "`player`", "`full_contest`", "`points`"],
    ["Player shots on goal", "`prop`", "`player`", "`full_contest`", "`shots_on_goal`"],
    ["Goalie saves", "`prop`", "`player`", "`full_contest`", "`saves`"],
    ["Player power-play points", "`prop`", "`player`", "`full_contest`", "`power_play_points`"],
    ["Player blocked shots / hits", "`prop`", "`player`", "`full_contest`", "`blocked_shots` / `hits`"],
    ["Player penalty minutes / faceoff wins", "`prop`", "`player`", "`full_contest`", "`penalty_minutes` / `faceoff_wins`"],
    ["Goalie goals allowed / shutout", "`prop`", "`player`", "`full_contest`", "`goals_allowed` / `shutouts`"],
    ["First team to score", "`prop`", "`team`", "`full_contest`", "`goals`"],
    ["Correct score", "`correct_score`", "`contest`", "`full_contest`", "`goals`"],
    ["Team to make playoffs", "`to_advance`", "`team`", "`season`", "—"],
    ["Championship winner", "`futures`", "`team`", "`competition`", "—"],
  ]}
/>

### Basketball

<DocTable
  headers={["Market", "Type", "Subject", "Scope", "Metric"]}
  rows={[
    ["Game moneyline", "`moneyline`", "`contest`", "`full_contest`", "—"],
    ["Point spread", "`spread`", "`team`", "`full_contest`", "`points`"],
    ["Game total", "`total`", "`contest`", "`full_contest`", "`points`"],
    ["Team total", "`total`", "`team`", "`full_contest`", "`points`"],
    ["First-half spread", "`spread`", "`team`", "`half`, ordinal 1", "`points`"],
    ["First-quarter total", "`total`", "`contest`", "`quarter`, ordinal 1", "`points`"],
    ["Player points", "`prop`", "`player`", "`full_contest`", "`points`"],
    ["Player rebounds", "`prop`", "`player`", "`full_contest`", "`rebounds`"],
    ["Player assists", "`prop`", "`player`", "`full_contest`", "`assists`"],
    ["Player steals / blocks", "`prop`", "`player`", "`full_contest`", "`steals` / `blocks`"],
    ["Three-pointers made", "`prop`", "`player`", "`full_contest`", "`three_pointers_made`"],
    ["Field goals / free throws made", "`prop`", "`player`", "`full_contest`", "`field_goals_made` / `free_throws_made`"],
    ["Offensive / defensive rebounds", "`prop`", "`player`", "`full_contest`", "`offensive_rebounds` / `defensive_rebounds`"],
    ["Fantasy points", "`prop`", "`player`", "`full_contest`", "`fantasy_points`"],
    ["Points + rebounds + assists", "`prop`", "`player`", "`full_contest`", "`points_rebounds_assists`"],
    ["Points + rebounds", "`prop`", "`player`", "`full_contest`", "`points_rebounds`"],
    ["Points + assists", "`prop`", "`player`", "`full_contest`", "`points_assists`"],
    ["Rebounds + assists", "`prop`", "`player`", "`full_contest`", "`rebounds_assists`"],
    ["Double-double / triple-double", "`prop`", "`player`", "`full_contest`", "`double_double` / `triple_double`"],
    ["Team to make playoffs", "`to_advance`", "`team`", "`season`", "—"],
    ["Conference / league champion", "`futures`", "`team`", "`competition`", "—"],
    ["MVP or season award", "`futures`", "`player`", "`season`", "—"],
  ]}
/>

### Motorsports

<DocTable
  headers={["Market", "Type", "Subject", "Scope", "Metric"]}
  rows={[
    ["Race winner", "`moneyline`", "`contest`", "`race`", "—"],
    ["Sprint winner", "`moneyline`", "`contest`", "`sprint`", "—"],
    ["Qualifying winner", "`moneyline`", "`contest`", "`qualifying`", "—"],
    ["Driver head-to-head", "`prop`", "`participant`", "`race`", "`finishing_position`"],
    ["Driver top 3 / 5 / 10", "`prop`", "`participant`", "`race`", "`finishing_position`"],
    ["Qualifying position", "`prop`", "`participant`", "`qualifying`", "`qualifying_position`"],
    ["Starting-grid position", "`prop`", "`participant`", "`race`", "`grid_position`"],
    ["Fastest lap", "`prop`", "`participant`", "`race`", "`fastest_lap`"],
    ["Lap time", "`prop`", "`participant`", "`lap`, ordinal supplied", "`lap_time`"],
    ["Race points", "`prop`", "`participant`", "`race`", "`points`"],
    ["Laps completed", "`prop`", "`participant`", "`race`", "`laps_completed`"],
    ["Laps led", "`prop`", "`participant`", "`race`", "`laps_led`"],
    ["Positions gained", "`prop`", "`participant`", "`race`", "`positions_gained`"],
    ["Driver retirement", "`prop`", "`participant`", "`race`", "`retirements`"],
    ["Safety-car total", "`total`", "`contest`", "`race`", "`safety_cars`"],
    ["Driver / team pit stops", "`total`", "`participant` / `team`", "`race`", "`pit_stops`"],
    ["Driver championship", "`futures`", "`participant`", "`season`", "—"],
    ["Constructor championship", "`futures`", "`team`", "`season`", "—"],
  ]}
/>

### Tennis

<DocTable
  headers={["Market", "Type", "Subject", "Scope", "Metric"]}
  rows={[
    ["Match winner", "`moneyline`", "`contest`", "`full_contest`", "—"],
    ["Set winner", "`moneyline`", "`contest`", "`set`, ordinal supplied", "—"],
    ["Game winner", "`moneyline`", "`contest`", "`game`, ordinal supplied", "—"],
    ["Match game spread", "`spread`", "`player`", "`full_contest`", "`games`"],
    ["Set game spread", "`spread`", "`player`", "`set`, ordinal supplied", "`games`"],
    ["Match total games", "`total`", "`contest`", "`full_contest`", "`games`"],
    ["Set total games", "`total`", "`contest`", "`set`, ordinal supplied", "`games`"],
    ["Total sets", "`total`", "`contest`", "`full_contest`", "`sets`"],
    ["Player aces", "`prop`", "`player`", "`full_contest`", "`aces`"],
    ["Player double faults", "`prop`", "`player`", "`full_contest`", "`double_faults`"],
    ["Player break points won", "`prop`", "`player`", "`full_contest`", "`break_points_won`"],
    ["Player tiebreaks won", "`prop`", "`player`", "`full_contest`", "`tiebreaks_won`"],
    ["Player total points won", "`prop`", "`player`", "`full_contest`", "`total_points_won`"],
    ["Player to advance", "`to_advance`", "`player`", "`round`", "—"],
    ["Tournament winner", "`futures`", "`player`", "`tournament`", "—"],
  ]}
/>

### Mixed martial arts

<DocTable
  headers={["Market", "Type", "Subject", "Scope", "Metric"]}
  rows={[
    ["Fight winner", "`moneyline`", "`contest`", "`full_contest`", "—"],
    ["Total rounds", "`total`", "`contest`", "`full_contest`", "`rounds`"],
    ["Fight goes the distance", "`prop`", "`contest`", "`full_contest`", "—"],
    ["Method of victory", "`prop`", "`participant`", "`full_contest`", "—"],
    ["Fight ends in a given round", "`prop`", "`contest`", "`round`, ordinal supplied", "—"],
    ["Fighter significant strikes", "`prop`", "`participant`", "`full_contest`", "`significant_strikes`"],
    ["Fighter takedowns", "`prop`", "`participant`", "`full_contest`", "`takedowns`"],
    ["Fighter submission attempts", "`prop`", "`participant`", "`full_contest`", "`submission_attempts`"],
    ["Fighter knockdowns", "`prop`", "`participant`", "`full_contest`", "`knockdowns`"],
    ["Fighter total strikes", "`prop`", "`participant`", "`full_contest`", "`total_strikes`"],
    ["Fighter control time", "`prop`", "`participant`", "`full_contest`", "`control_time`"],
    ["Tournament advancement", "`to_advance`", "`participant`", "`round`", "—"],
    ["Tournament winner", "`futures`", "`participant`", "`tournament`", "—"],
  ]}
/>

### Golf

<DocTable
  headers={["Market", "Type", "Subject", "Scope", "Metric"]}
  rows={[
    ["Tournament winner", "`futures`", "`participant`", "`tournament`", "—"],
    ["Top 5 / 10 / 20 finish", "`prop`", "`participant`", "`tournament`", "`finishing_position`"],
    ["Make / miss cut", "`to_advance`", "`participant`", "`tournament`", "—"],
    ["Round leader", "`moneyline`", "`contest`", "`round`, ordinal supplied", "—"],
    ["Tournament head-to-head", "`moneyline`", "`contest`", "`tournament`", "—"],
    ["Round head-to-head", "`moneyline`", "`contest`", "`round`, ordinal supplied", "—"],
    ["Player round strokes", "`prop`", "`participant`", "`round`, ordinal supplied", "`strokes`"],
    ["Player tournament strokes", "`prop`", "`participant`", "`tournament`", "`strokes`"],
    ["Hole score", "`prop`", "`participant`", "`hole`, ordinal supplied", "`strokes`"],
    ["Player birdies", "`prop`", "`participant`", "`round` / `tournament`", "`birdies`"],
    ["Player eagles", "`prop`", "`participant`", "`round` / `tournament`", "`eagles`"],
    ["Player bogeys", "`prop`", "`participant`", "`round` / `tournament`", "`bogeys`"],
    ["Player pars", "`prop`", "`participant`", "`round` / `tournament`", "`pars`"],
    ["Player putts", "`prop`", "`participant`", "`round` / `tournament`", "`putts`"],
    ["Fairways hit", "`prop`", "`participant`", "`round` / `tournament`", "`fairways_hit`"],
    ["Greens in regulation", "`prop`", "`participant`", "`round` / `tournament`", "`greens_in_regulation`"],
    ["Holes-in-one", "`prop`", "`participant`", "`round` / `tournament`", "`holes_in_one`"],
    ["Team-event winner", "`futures`", "`team`", "`tournament`", "—"],
  ]}
/>

## Canonical values

The mapping tables cover common market combinations. The OpenAPI schemas remain the canonical source for the complete closed enum values, including sports and metrics not shown in these examples. See the [Prediction Markets schemas](/prediction-markets-spec/~schemas).

Sports ticker encodings are a separate provider-facing representation. Do not derive `sportsMarket` by parsing a ticker; consume the classification returned by the event API. See [Sports Ticker Format](/prediction-markets/tickers-sports) when you specifically need ticker construction or parsing rules.
