Skip to content

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/markets
Try it

Every endpoint, in one place: the full Try it.

Signing happens in your browser with WebCrypto. Your private key is never sent anywhere; Send request sends your key ID and the signature to the demo host above. Only demo hosts are offered. The key ID and private key are saved in this browser's local storage, per jurisdiction, until you click Clear saved key. Use a demo key here, never a production one.

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.
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

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"
}
]
}
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.
v1.5.9Changelogllms.txtllms-full.txt