Skip to main content
GET
cURL
Use this endpoint to read a league’s player props in one paged list, for example every NFL passing-yards line this week or every prop on one player. To read all of one game’s markets, props and game lines together, use List game markets. The games are the ones List games serves for the league. Polymarket files NFL props under a game’s -player-props and -first-td-scorer events and NBA props under the game event itself; this endpoint returns both, and each row names its game.

Parameters

Key response fields

Rows are ordered by game slug, then stat, then player name, then line (a prop with no line first), then condition_id.

Example

The list_props MCP tool calls this endpoint with the same parameters. Pass stat and expand as arrays, for example ["passing_yards"] and ["quotes"].

What it does not return

  • Game lines such as spreads, totals and team totals. Use List game markets.
  • Which team a player is on. Polymarket does not publish it.
  • Settlement payouts or a 50-50 result. List game markets carries each market’s settlement.
  • Prices, unless you send expand=quotes.

Caching

The response carries a weak semantic ETag. Send it back as If-None-Match for a 304 with an empty body. request_id and cost are excluded from the validator. With expand=quotes, the ETag changes whenever a quote does.

Authorizations

Authorization
string
header
required

Legacy default or named integration API key, or OAuth 2.1 access token, in the Authorization header as Bearer oxi_sk_live_... or Bearer oxi_at_.... Default keys retain full access; integration keys are limited to their approved read, webhooks, export and usage scopes and expire within 90 days. All credentials share the owner's account limits. Data calls require an active Pro subscription and return live data. A 401 carries WWW-Authenticate: Bearer resource_metadata="https://api.0xinsider.com/.well-known/oauth-protected-resource" (RFC 6750 section 3, RFC 9728).

Headers

X-Query-Validation
enum<string>

Opt into strict query-name validation. The default is compatible: unknown names are ignored and reported in X-Query-Ignored. With strict, an unknown name returns 400 bad_request with error.reason unknown_query_parameter before the handler runs.

Available options:
strict
If-None-Match
string

Conditional GET using a weak semantic ETag from an earlier response. A matching payload returns 304 with an empty body; request_id and cost are excluded from the validator.

Query Parameters

league
string
required

League tag as GET /api/v1/games coverage.leagues spells it, for example nfl or nba. Matched case-insensitively.

Maximum string length: 32
starts_after
string<date-time>

RFC 3339 kickoff bound. A game with no published kickoff is excluded whenever either bound is set.

starts_before
string<date-time>

RFC 3339 kickoff bound, inclusive.

player
string

Part of player.name, ignoring case and accents: jokic matches Nikola Jokić. A row with no player does not match.

Maximum string length: 80
stat
string[]

Provider sportsMarketType values to keep, case-insensitive, for example passing_yards or points. Repeat the parameter or send a comma-separated list. An unknown type returns an empty page.

stat[]
string[]

Bracket alias for stat, as expand[] is for expand. Repeatable; same values.

status
enum<string>
default:active

active (default), closed, or all. closed means the provider closed the market or it resolved.

Available options:
active,
closed,
all
max_spread_c
number

Keep only props with an outcome whose cached best ask less best bid is at most this many cents: above 0, at most 100, in steps of 0.01. The books are the ones expand=quotes serves, read from the cache with no request-path CLOB call. A prop whose book is not cached yet is left out of data and counted on coverage.rows_without_book; the board reads its league's books behind the response, so a read a few seconds later can judge it. A cursor never revisits a prop a page passed over, whether its book was wider or not cached yet, so when coverage.rows_without_book is above 0, read from the first page again after a few seconds to judge those props; the board reads books for active props only, so a closed prop, or one whose outcome has no provider token id yet, stays unjudged. When the book cache cannot be read for the first prop a page must judge, the read answers 503 with error.reason read_model_warming and Retry-After, not an empty page that repeats its cursor.

Required range: x <= 100Must be a multiple of 0.01
min_book_usd_within_2c
integer

Keep only props with an outcome whose cached book holds at least this many USD on each side within 2 cents of its midpoint: bids at or above the midpoint minus 0.02 and asks at or below the midpoint plus 0.02, each level's price times size, from the whole book. A whole number from 1 to 10000000, the measure the market_price_moved webhook filter of the same name uses; expand=quotes serves the two sums as book_depth_within_2c. With max_spread_c, one outcome must meet both. The books are read from the cache with no request-path CLOB call. A prop whose book or depth is not cached yet is left out of data and counted on coverage.rows_without_book; the board reads its league's books behind the response, so a read a few seconds later can judge it. A cursor never revisits a prop a page passed over, so when coverage.rows_without_book is above 0, read from the first page again after a few seconds to judge those props; the board reads books for active props only, so a closed prop, or one whose outcome has no provider token id yet, stays unjudged. When the book cache cannot be read for the first prop a page must judge, the read answers 503 with error.reason read_model_warming and Retry-After, not an empty page that repeats its cursor.

Required range: 1 <= x <= 10000000
limit
integer
default:50

Page size. Out-of-range values are clamped to 1..200.

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

Opaque prp_v1_ cursor from next_cursor, sent with the same filters. A cursor this endpoint did not issue returns 400 with error.param=cursor.

expand
enum<string>[]

quotes adds each outcome's cached quote, as on GET /api/v1/games/{event_slug}/markets; it adds 1 to the cost, on every plan. Repeatable: quotes.

Available options:
quotes
expand[]
enum<string>[]

Backward-compatible alias for expand. Repeatable: quotes.

Available options:
quotes

Response

One page of player props

as_of
string<date-time>
required
data
object[]
required
has_more
boolean
required
league
string
required
meta
object
required
object
string
required
coverage
object
required
next_cursor
string