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

# Search prediction markets

`GET /api/v1/predictions/search`

Search events and markets by keyword.

## Query parameters

- `q` string, required — Search query
- `limit` integer — Max results

## Response `200`

Polymarket events and markets matching the keyword with volume and liquidity.

- EnvelopePredictionsSearchData
  - `data` PredictionsSearchData, required
    - `query` string, required — Search query that produced these results.
    - `events_count` integer, required
    - `markets_count` integer, required — Number of markets.
    - `events` PredictionsEvent[], required — Array of event records.
      - `id` string, required — Record identifier.
      - `title` string, required — Display title.
      - `slug` string, required — URL-friendly identifier.
      - `description` string, required — Human-readable description.
      - `start_date` string, required — Start date (YYYY-MM-DD).
      - `end_date` string, required — End date (YYYY-MM-DD).
      - `active` boolean, required — Flag: record is currently active.
      - `closed` boolean, required — Flag: record is closed.
      - `volume` number, required — Trading or transaction volume.
      - `volume_24h` number, required — Trading volume over the last 24 hours.
      - `liquidity` number, required — Available liquidity (USD).
      - `open_interest` number, required — Total open interest.
      - `comment_count` integer, required — Number of comments.
      - `markets_count` integer, required — Number of markets.
      - `markets` PredictionsMarket[], required — Array of market records.
        - `id` string, required — Record identifier.
        - `question` string, required — Question text (for prediction markets).
        - `slug` string, required — URL-friendly identifier.
        - `condition_id` string, required
        - `outcomes` string, required — Array of prediction market outcomes.
        - `outcome_prices` string, nullable, required
        - `volume` string, nullable — Trading or transaction volume.
        - `volume_num` number, nullable, required
        - `volume_24h` number, nullable — Trading volume over the last 24 hours.
        - `liquidity` string, nullable — Available liquidity (USD).
        - `active` boolean, required — Flag: record is currently active.
        - `closed` boolean, required — Flag: record is closed.
        - `start_date` string, required — Start date (YYYY-MM-DD).
        - `end_date` string, required — End date (YYYY-MM-DD).
        - `last_trade_price` number, nullable, required
        - `best_ask` number, required — Best ask price.
        - `spread` number, required — Bid/ask or yield spread.
        - `one_day_change` number, nullable, required
        - `clob_token_ids` string, required
      - `tags` string[], required — Array of tags.
    - `markets` unknown[], required — Array of market records.
      - unknown
  - `meta` SugraMeta, required — Metadata attached to every /api/v1/* response envelope.
    - `endpoint` string, required — Requested endpoint path.
    - `data_time` string, required — ISO 8601 UTC timestamp of the source data, not of the request.
    - `response_time` string, required — ISO 8601 UTC timestamp when this response was produced.
    - `provider` string, required — API name and version.
    - `source` string, nullable — Identifier of the primary upstream source used for this response.
    - `attribution` string, nullable — Human-readable attribution mandated by an upstream source (e.g. a securities regulator or self-regulatory organization). Present only on responses whose source requires the owner and source to be clearly identified. Do not remove or alter it when using the response.
    - `fallback_used` boolean, nullable — True when the primary source failed and a fallback produced the data.
    - `fallback_chain` string[], nullable — Ordered list of sources attempted, in the order they were tried.
    - `cached` boolean, nullable — True when this response was served from the internal cache.
    - `stale` boolean, nullable — True when the cached response was returned after the upstream rate-limited or errored. Clients can use this to detect degraded data.

## Other responses

- `401` — Missing or invalid `x-api-key` header. JSON body with a stable `code` distinguishing `missing_api_key` (no header sent) from `invalid_api_key` (header sent, key not accepted); any other 401 source carries the generic `unauthorized` with its detail as `reason`. Plus `hint`. `plan` is always null on 401 - an unauthenticated request has no plan; quota exhaustion is 429, not 401.
- `422` — Validation Error
- `429` — Daily rate limit exceeded. Check `X-RateLimit-Reset` for the next window.
- `503` — Upstream source is temporarily unavailable. Retry after a short delay.

---

[API](https://skmtc.net/sugra/apis/sugra-api.md) · [All operations](https://skmtc.net/sugra/apis/sugra-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sugra/sugra-api/versions/d3e3d9c28132/schema)
