# List markets

> Markets, filterable by event, competition, sport, status and whether they are currently trading.

Source: https://docs.stxapp.io/api/rest/markets/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.

```http
GET /api/v1/markets
```

Send it with your own demo key: [Try it](/quick-start/?op=markets_get#try-it).

:::tip[In the SDKs]
- TypeScript: [`STX.markets()`](/sdks/typescript/reference/stx/#markets)
- Python: [`STX.markets()`](/sdks/python/reference/stx/#markets)
- C#: [`STXMarketService.GetMarketInfosAsync()`](/sdks/csharp/reference/market-data/#stxmarketservice)
:::

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

| 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: &#123;"error":"Missing or invalid API key credentials"&#125; | Error |
| `403` | The account behind this key is not active, for example it is pending approval or suspended. Body: &#123;"error":"Your account is suspended. Contact support."&#125;, the message naming the account's status. | Error |

## Example

Request:

```bash
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`:

```json
{
  "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

| 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](/concepts/market-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. |
