Skip to Content

Markets

Get available market types, their configurations, and sport availability.

GET /api/v1/markets

Requires an API key. Available on all tiers (Free included). Unauthenticated requests return 401.

Query ParametersPermalink for this section

This endpoint takes no query parameters — it always returns the full market catalog. (A sport parameter is silently ignored; filter client-side on each market’s sports array instead.)

Example RequestsPermalink for this section

# List all markets curl -X GET "https://api.sharpapi.io/api/v1/markets" \ -H "X-API-Key: YOUR_API_KEY"

ResponsePermalink for this section

Success (200)Permalink for this section

Real response, truncated to three of the ~420 market types currently returned (ordered by event_count descending):

{ "data": [ { "id": "moneyline", "name": "Moneyline", "numerical_id": 878, "event_count": 22608, "sports": ["aussie_rules", "badminton", "baseball", "basketball", "boxing", "cricket", "cycling", "darts", "entertainment", "esports", "football", "golf", "handball", "hockey", "lacrosse", "mma", "motorsports", "olympics", "politics", "rugby_league", "rugby_union", "snooker", "soccer", "table_tennis", "tennis", "unknown", "volleyball"] }, { "id": "total_points", "name": "Total Points", "numerical_id": 1344, "event_count": 14852, "sports": ["aussie_rules", "badminton", "basketball", "darts", "esports", "football", "handball", "lacrosse", "motorsports", "olympics", "rugby_league", "rugby_union", "snooker", "unknown", "volleyball"] }, { "id": "player_points", "name": "Player Points", "numerical_id": 1030, "event_count": 2090, "sports": ["basketball", "motorsports", "rugby_league", "soccer"] } ], "updated_at": "2026-07-02T18:18:04.820409247Z" }

Market Object SchemaPermalink for this section

FieldTypeDescription
idstringMarket slug — the exact value the odds endpoints accept as market_type= (or its alias market=). See Using Markets in Filters.
namestringHuman-readable label, for display only. It is not a filter value — pass id instead.
numerical_idintegerStable integer key (frozen, never reused; omitted when unmapped). New (May 2026) — additive, optional. See Entity reference IDs.
event_countintegerNumber of events currently offering this market
sportsstring[]Sport IDs that currently have this market

New (May 2026): numerical_idPermalink for this section

numerical_id is a frozen, dense-from-1 integer assigned per market type in the SharpAPI atlas. The market catalog covers ~3,000 canonical types (core lines + period markets + player props across all sports).

  • Frozen: never reused or remapped.
  • Optional: omitted for niche markets that haven’t been assigned an integer yet — slug id is always present.
  • Domain-scoped: unique across markets only.

Every odds row and opportunity leg also carries a matching market_ref block ({id, label, numerical_id}). See Entity reference IDs.

Changed (September 2026): MLB walks props are split by rolePermalink for this section

Before 2026-09-08, MLB walks props arrived under a single market id — player_walks — on most sportsbooks, whether the line was a batter’s walks drawn or a pitcher’s walks allowed. Two books used ids no other book used. Filtering market=player_walks therefore returned a mix of the two stats, and comparing that id across books could line a batter up against a pitcher.

Three market ids now carry distinct meanings:

Market idMeaning
player_walksBatter walks — bases on balls drawn at the plate
player_walks_allowedPitcher walks allowed — bases on balls issued
player_batting_walksRetired. These rows now publish as player_walks

What this means for existing integrations:

  • player_walks_allowed gained books. It previously carried Underdog only; it now also carries DraftKings and ProphetX. If you already query it, expect more rows and more cross-book comparisons on it.
  • player_walks lost pitcher rows on every book that labels the two stats distinguishably. A filter that treated every player_walks row as a batter prop is now correct on those books.
  • player_batting_walks no longer receives rows. One book published its batter walks there and now publishes them as player_walks. Query player_walks instead; a filter on the retired id returns nothing.
  • No response field changed shape, no id was removed from the /markets catalog, and nothing outside MLB walks was touched.

Known limitation — some books are still mixed. Splitting the two stats relies on the sportsbook labelling them differently in its own feed. Four books do not, so their player_walks rows still contain pitcher walks-allowed alongside batter walks: Stake, Betway, bwin and bet365 US (as of 2026-09-09). If you compare walks props across books, either exclude those four or check the player’s position on your side. This note will be updated as they are split.

Market TypesPermalink for this section

The tables below are a descriptive market reference. The has line column is a property of the market concept, not a field on the /markets response (the response carries only id, name, numerical_id, event_count, sports).

Core MarketsPermalink for this section

The most popular and widely available betting markets.

MarketDescriptionhasLineExamples
moneylinePick the winner outrightNoLakers -150, Celtics +130
point_spreadPoint spread / handicap bettingYesLakers -4.5 (-110), Celtics +4.5 (-110)
total_pointsOver/Under combined scoreYesOver 220.5 (-110), Under 220.5 (-110)
team_totalBet on one team’s scoreYesLakers Over 112.5, Lakers Under 112.5

Prop MarketsPermalink for this section

Player and game proposition bets for more specific outcomes.

MarketDescriptionhasLineExamples
player_propIndividual player statistics (points, rebounds, assists, etc.)YesLeBron James Over 25.5 Points
game_propGame-specific outcomes (will there be overtime, etc.)NoFirst Team to Score

Period MarketsPermalink for this section

Markets for specific periods within a game (halves, quarters).

MarketDescriptionhasLine
1st_half1st half moneyline, spread, or totalYes
1st_quarter1st quarter moneyline, spread, or totalYes

Other MarketsPermalink for this section

MarketDescriptionhasLineExamples
futureLong-term bets on season outcomes or championshipsNoNBA Championship Winner, MVP Award Winner

Selection TypesPermalink for this section

TypeUsed InDescription
homeMoneyline, Spread, PeriodHome team wins or covers
awayMoneyline, Spread, PeriodAway team wins or covers
overTotal, Props, PeriodOver the line value
underTotal, Props, PeriodUnder the line value
yesGame Props, Team PropsOutcome occurs
noGame Props, Team PropsOutcome does not occur

Market Availability by SportPermalink for this section

SportMoneylineSpreadTotalPlayer PropsTeam PropsPeriod
Basketball (NBA)YesYesYesYesYesYes
Football (NFL)YesYesYesYesYesYes
Baseball (MLB)YesYesYesYesYesYes
Hockey (NHL)YesYesYesYesYesYes
Basketball (NCAAB)YesYesYesLimitedLimitedYes
Football (NCAAF)YesYesYesLimitedLimitedYes
SoccerYesYesYesLimitedLimitedLimited
TennisYesNoYesLimitedNoNo
MMA (UFC)YesNoNoLimitedNoNo
Golf (PGA)YesNoNoLimitedNoNo

“Limited” means the market is available for some events but not all, depending on the sportsbook and event. Use the odds endpoints to see which markets are available for a specific event.

Using Markets in FiltersPermalink for this section

Use the market id as a filter parameter on other endpoints. The odds endpoints accept it as market_type= or, equivalently, as market=. The name field is a display label — it is not a filter value.

# Get only moneyline odds curl "https://api.sharpapi.io/api/v1/odds?market=moneyline" \ -H "X-API-Key: YOUR_API_KEY" # Get spread and total odds curl "https://api.sharpapi.io/api/v1/odds?market=point_spread,total_points" \ -H "X-API-Key: YOUR_API_KEY" # Get player props only curl "https://api.sharpapi.io/api/v1/odds?market=player_prop" \ -H "X-API-Key: YOUR_API_KEY" # Best odds for moneyline markets curl "https://api.sharpapi.io/api/v1/odds/best?market=moneyline" \ -H "X-API-Key: YOUR_API_KEY"

Worked example: a /markets row to an odds queryPermalink for this section

Props are where the display name and the slug differ most, so this is where the mapping matters. Take this row from the /markets response (other fields omitted):

{ "id": "player_longest_reception", "name": "Player Longest Reception", "sports": ["football"] }

Pass the id — player_longest_reception — and not the name:

curl "https://api.sharpapi.io/api/v1/odds?market_type=player_longest_reception&league=nfl" \ -H "X-API-Key: YOUR_API_KEY"

Every row that comes back echoes the same slug in its own market_type field, so you can always go from a result back to its /markets entry.

Understanding LinesPermalink for this section

Markets with hasLine: true include a numerical line value in the odds response:

  • Spread: The point handicap (e.g., -6.5 means the team must win by 7+)
  • Total: The combined score threshold (e.g., 215.5 for over/under)
  • Player Props: The stat threshold (e.g., 24.5 points for a player)
  • Team Props: The team stat threshold (e.g., 105.5 team total points)

Markets with hasLine: false (like moneyline) will have line: null in the odds response.

Last updated on