List markets
Markets, filterable by event, competition, sport, status and whether they are currently trading. Ordered tradeable-first by default: open markets accepting orders, then pre_open markets accepting resting limit orders, then open/pre_open markets with trading paused, then scheduled, then closed/cancelled, and finally settled resulted/voided markets. Within each of those tiers the soonest event comes first. Use sort_by to replace that ordering with a plain event-start sort.
GET
/api/v1/marketsParameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
market_ids |
query |
string | no | Comma-separated market UUIDs. When present, returns exactly these markets unpaginated, and every other filter, sort and pagination param is ignored. |
event_ids |
query |
string | no | Comma-separated event UUIDs. |
status |
query |
scheduled | pre_open | open | closed | resulted | cancelled | voided[] |
no | Market statuses, lowercase. An uppercase value returns 400. Omitted, the response includes every non-archived market, not just open ones; the settled ones sort to the last pages rather than being excluded. Note that a market matched by status=open can still render its status as suspended; see the market status guide. |
trading |
query |
boolean | no | Return only markets that are (true) or are not (false) currently accepting orders. Any other value, including on/off, returns 400. Note that a market with trading: false and status open or pre_open renders its status as suspended. |
sports |
query |
string | no | Comma-separated sport names, e.g. Baseball,Basketball. Case-insensitive. |
competitions |
query |
string | no | Comma-separated competition codes, e.g. MLB,NFL. |
sort_by[name] |
query |
event_start |
no | Only event_start is supported; any other value returns 400. Supplying it replaces the default tradeable-first ordering with a plain event-start sort. The two cannot be combined, because the pagination cursor encodes a single sort direction. |
sort_by[direction] |
query |
asc | desc |
no | asc (default) or desc; any other value returns 400. Only meaningful alongside sort_by[name]. |
limit |
query |
integer | no | Rows per page. Defaults to 100 and is silently clamped to 200; a larger value is not an error. |
cursor |
query |
string | no | Cursor from the previous response. Omit for the first page. |
Responses
Section titled “Responses”| Status | Description | Schema |
|---|---|---|
200 |
Success | object |
400 |
A parameter was missing or invalid. | Error |
401 |
Missing, malformed or unrecognized signature, or a timestamp outside the 30-second window. Body: {“error”:“Missing or invalid API key credentials”} | Error |
403 |
The account behind this key is not active, for example it is pending approval or suspended. Body: {“error”:“Your account is suspended. Contact support.”}, the message naming the account’s status. | Error |
Example
Section titled “Example”Request:
curl --request GET \ --url 'https://demo.stxapp.io/api/v1/markets' \ --header 'X-STX-ACCESS-KEY: <key-id>' \ --header 'X-STX-ACCESS-TIMESTAMP: <unix-ms>' \ --header 'X-STX-ACCESS-SIGNATURE: <base64-ed25519>'Response 200:
{ "cursor": null, "markets": [ { "archived": null, "bids": null, "competition": null, "description": null, "event_id": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d", "event_short_title": null, "event_start": "2026-08-25T04:42:46.242093Z", "event_status": null, "event_title": null, "event_type": null, "featured": null, "featured_home": null, "filters": null, "group_title": null, "grouping_id": null, "grouping_name": null, "home_category": null, "in_play_delay_sec": null, "keywords": null, "last_probability_at": null, "last_traded_price": "0.6700", "manual_probability": null, "market_id": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d", "max_price": "1.0000", "offers": null, "open_interest": "2.00", "participants": null, "points_cost": null, "position": null, "powered_by": null, "price": "0.6700", "price_change24h": null, "probability": null, "question": null, "recent_trades": null, "result": null, "rules": null, "settled_at": null, "short_title": null, "specifier": null, "sport": null, "stat_detail": "string", "status": "scheduled", "symbol": null, "timestamp": "2026-08-25T04:42:46.242093Z", "timestamp_int": 0, "title": null, "total_volume": "2.00", "trading": null, "trading_filters": null, "volume24h": "2.00" } ]}Response fields
Section titled “Response fields”| Field | Type | Description |
|---|---|---|
cursor |
string | Opaque cursor for the next page. Pass the value from the previous response; omit for the first page. null once there are no more pages. |
archived |
boolean | Whether the market is archived. |
bids |
array | The top bids on the market, sorted by price descending, so the best (highest) bid is first. |
competition |
string | The text to use in describing the competition, e.g. NBA. |
description |
string | The description of the market. |
event_id |
uuid | The event the market belongs to. |
event_short_title |
string | The short title of the event associated with the market. |
event_start |
date-time | The UTC start date and time of the event. |
event_status |
string | The status of the event that the market is attached to. |
event_title |
string | The title of the event associated with the market. |
event_type |
string | The type of event associated with the market. |
featured |
boolean | Whether the market is featured. |
featured_home |
boolean | Whether the market is featured on the home page. |
filters |
array | The categorizations under which the market appears. A list, not an object. |
group_title |
string | The human readable group title for the market. |
grouping_id |
string | Identity of the set of mutually exclusive outcomes this market prices against: the 30 World Series contracts, the 4 AFC East contracts, one fixture’s moneyline pair. Opaque: compare for equality, never parse. Stable for the life of the market, and present in every status, so it is the field to map market data on. Unlike symbol, it does not move when a fixture is rescheduled. |
grouping_name |
string | The grouping in words, e.g. AL East Division, Spread - 1st Quarter. Descriptive rather than stable: for a tournament it is the event title, which can be renamed. Display it; join on grouping_id. |
home_category |
string | The category in which the market appears: Upcoming, Live or null. |
in_play_delay_sec |
integer | The order delay (in seconds) when the event is in progress. |
keywords |
array | The keywords that are set for the market. |
last_probability_at |
int64 | The time that the last probability update was received by the server. UNIX microseconds. |
last_traded_price |
decimal | The price of the last executed trade. In dollars. |
manual_probability |
boolean | true when the probability was set by hand, false when it came from the pricing feed. A flag, not a probability figure. |
market_id |
uuid | The market this record relates to. |
max_price |
decimal | The settlement value of one winning contract, and the ceiling on order prices: an order must price strictly below it. Read it per market. In dollars. |
offers |
array | The top offers on the market, sorted by price descending, so the best (lowest) offer is last. |
open_interest |
decimal | Current open interest in the market. In contracts. |
participants |
array | The participants of the market’s event, as an array. |
points_cost |
integer | The cost of each loyalty point for amount risked by the user. |
position |
string | Text describing the position this market takes, e.g. a participant name. A label, not a numeric ordering. |
powered_by |
string | The provider used to result this market. |
price |
decimal | The market price that the market is trading at. In dollars. |
price_change24h |
integer | The change in price over the last 24 hours, as a percentage. Not money: it stays a number and must not be divided by 100. |
probability |
number | The market’s probability of the outcome, between 0 and 1. |
question |
string | The question that the market is asking. |
recent_trades |
array | The last 15 trades on the market. |
result |
string | The result of the market. |
rules |
string | The rules for this market. |
settled_at |
int64 | When the market was resulted or voided. A raw microsecond integer, unlike the ISO-8601 timestamp and event_start beside it. UNIX microseconds. |
short_title |
string | The human readable short title for the market. |
specifier |
string | The specifier for the rules to properly determine the market. |
sport |
string | The text to use in describing the sport, e.g. Basketball. |
stat_detail |
The stat line this market is derived from, or null for a market that is not a stat-line prop. |
|
status |
string | Market state. See Market and order status. Note that a market with status: open may still report as suspended when trading is halted. |
symbol |
string | A unique symbol for this market. |
timestamp |
date-time | Server time when this payload was generated, as an ISO-8601 string. The timestamp_int sibling carries the same instant as UNIX microseconds. |
timestamp_int |
int64 | The UNIX microseconds timestamp of when this market info was created. |
title |
string | The human readable title for the market. |
total_volume |
decimal | Contracts traded on this market across its lifetime. |
trading |
boolean | Whether the market is accepting orders right now. |
trading_filters |
array | The categorizations used for organizing trades, settlements and related items. A list, not an object. |
volume24h |
decimal | Trade volume this market has had in the last 24 hours. In contracts. |

