---
title: "Search markets"
method: GET
path: "/api/v1/markets/search"
tags: ["Markets"]
---

# Search markets

`GET /api/v1/markets/search`

Search prediction markets by keyword. Returns representative market matches with status, category, and platform metadata. Cursor pagination advances over grouped market results rather than raw sub-market rows.

## Query parameters

- `q` string, required
- `limit` integer
- `cursor` string
- `status` 'active' | 'closed' | 'all'
- `category` string

## Response `200`

Search results

- object
  - `object` 'list', required
  - `data` MarketSearchResult[], required
    - `id` string, required
    - `condition_id` string, required
    - `title` string, required
    - `slug` string, nullable
    - `category` string, nullable
    - `platform` string, nullable
    - `status` 'active' | 'closed', required
  - `has_more` boolean, required
  - `next_cursor` string, nullable
  - `meta` ResponseMeta, required
    - `request_id` string, required — Unique request ID (req_ prefix).
    - `cached` boolean, required
    - `cache_age_s` integer, nullable — Cache age in seconds, null if not cached.

## Other responses

- `400` — Invalid request parameter
- `401` — Missing or invalid API key
- `402` — Active Insider subscription required
- `403` — Account access denied
- `408` — Request exceeded the server's 30-second transport timeout. The timeout response has an empty body because it is generated before handler-level JSON error shaping.
- `423` — Account is locked
- `429` — Rate limit exceeded (100 req/min; batch endpoints also reserve 100 batch item units/min before execution)
- `503` — Redis-backed authenticated rate limiter unavailable; retry after the per-process outage cooldown

## Changes

- **2026-06-01** `422bd4dc1611` — 63 warning, 1 info
  - added the new `account_locked` enum value to the `error/code` response property for the response status `400`
  - added the new `account_locked` enum value to the `error/code` response property for the response status `401`
  - added the new `account_locked` enum value to the `error/code` response property for the response status `402`
  - added the new `account_locked` enum value to the `error/code` response property for the response status `403`
  - …60 more
- **2026-05-07** `2907497f4ca3` — 1 breaking, 1 warning, 2 info
  - for the `query` request parameter `q`, the minLength was increased from `0` to `1`
  - for the `query` request parameter `q`, the maxLength was set to `512`
  - added the non-success response with the status `408`
  - added the non-success response with the status `503`
- **2026-04-03** `24aa764c32ea` — 1 warning, 5 info
  - added the new `closed` enum value to the `data/items/status` response property for the response status `200`
  - added the new optional `query` request parameter `cursor`
  - added the non-success response with the status `403`
  - added the non-success response with the status `423`
  - …2 more
- **2026-03-25** `e658903dd89b` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/0xinsider/apis/0xinsider-api/changes/api/v1/markets/search/get.md)

---

[API](https://skmtc.dev/0xinsider/apis/0xinsider-api.md) · [All operations](https://skmtc.dev/0xinsider/apis/0xinsider-api/llms.txt) · [OpenAPI document](https://skmtc.dev/0xinsider/apis/0xinsider-api/revisions/137fa0fd3297?raw)
