Skip to main content
GET
List Markets

Overview

The primary per-venue discovery endpoint for sports markets. Returns a paginated list of games, each containing every venue that lists that game, nested with the venue’s native market metadata and canonical outcomes. Responses are grouped per the structure described on the Sports Markets concept page:

Query Parameters

Pagination

Sports list endpoints use cursor pagination. Pass the returned pagination.pagination_key into the next request. Do not use offset-based pagination.

Filter Semantics

  • Date timezone convention: game_date, game_date_from, and game_date_to follow the sport’s local convention. US sports (NBA, NHL, MLB, NFL, CFB, MLS) use Eastern Time dates. European football (EPL, La Liga, etc.) uses UTC dates. Each game in the response includes a game_date_timezone field ("US/Eastern" or "UTC") so you can interpret dates programmatically.
  • status=open filters out games whose game_date is in the past. Games from yesterday are included to account for late-night US games (an NBA game at 10:30 PM ET has a game_date in ET but may not end until after midnight UTC). Once the upstream venue reports the market as closed, the game status flips to closed regardless of date.
  • status=closed returns explicitly closed games and any past-dated games.
  • When both game_date_from and game_date_to are provided, from must be <= to (400 otherwise).
  • Invalid enum values for sport, status, venue, or sort_by return 400 Bad Request with a descriptive error.
  • Invalid date formats return 400 Bad Request.

Response Fields

Top level

Game

market_type entry

Venue Block

Outcome

Each outcome represents one venue question/selection (e.g. “Mallorca wins”). tokens.yes and tokens.no are both included when the venue exposes executable sides for that exact selection.

Examples

MLB game - 2-way (Kalshi + Polymarket + Predict)

GET /v2/sports/markets?league=mlb&limit=1

EPL game - 3-way (Limitless)

Each outcome has its own condition_id and market_slug because on-chain venues create a separate binary market per outcome.
For 3-way football on Polymarket, Limitless, and Predict.fun, each outcome is a separate on-chain market natively. Predexon aggregates them into a single venue block and sums the volume/liquidity across the constituent markets. Each outcome retains its own condition_id and market_slug.

Caching

Responses are cached for 60 seconds. Identical query parameters will return the same cached response during that window.

Authorizations

x-api-key
string
header
required

Data key provided by Predexon. The trading key used by the Order Router on trade.predexon.com is a separate credential.

Query Parameters

sport
string | null

Filter by sport (basketball, soccer, etc.)

league
string | null

Filter by league code (nba, epl, etc.)

status
string
default:open

Market status: open or closed

game_date
string | null

Exact game date (YYYY-MM-DD)

game_date_from
string | null

Games on or after date (YYYY-MM-DD)

game_date_to
string | null

Games on or before date (YYYY-MM-DD)

venue
string | null

Filter to games with this venue (polymarket, kalshi, etc.)

search
string | null

Search game/market titles

sort_by
enum<string>
default:game_date_asc

Sort order: game_date_asc or game_date_desc.

Available options:
game_date_asc,
game_date_desc
limit
integer
default:50

Max games to return

Required range: 1 <= x <= 200
pagination_key
string

Cursor from the previous response. Omit on the first request.

Response

Successful response