---
title: "Search Prediction Markets"
method: GET
path: "/gateway/v1/search/prediction-market"
tags: ["Search"]
---

# Search Prediction Markets

`GET /gateway/v1/search/prediction-market`

## Request

- Base URL: `https://api.asksurf.ai`
- URL: `https://api.asksurf.ai/gateway/v1/search/prediction-market`
- Auth: HTTP bearer

Browse and search prediction markets across all supported platforms.

Filter by platform, category, status, keyword search, and smart money direction. Each result includes volume, open interest, trade counts, and smart money signals.

Supports single-market lookup via `condition_id` or `market_ticker`.

**Data refresh:** ~5 minutes.

## Query parameters

- `condition_id` string: Polymarket condition ID for single-market lookup
- `market_ticker` string: Kalshi market ticker for single-market lookup
- `platform` 'polymarket' | 'kalshi': Filter by platform (omit for both)
- `category` 'crypto' | 'culture' | 'economics' | 'financials' | 'politics' | 'stem' | 'sports': Filter by Surf-curated category
- `status` 'active' | 'closed' | 'finalized': Market status filter
- `sort_by` 'volume_1d' | 'volume_7d' | 'volume_30d' | 'open_interest' | 'trade_count_7d' | 'days_to_resolution': Sort field
- `order` 'asc' | 'desc': Sort direction
- `smart_money` 'bullish' | 'bearish': Filter by smart money direction (Polymarket only)
- `q` string: Search markets by keyword in question text or ticker. Results include slug and event fields when available, but machine slugs are not searched.
- `limit` integer: Results per page
- `offset` integer: Pagination offset

## Response `200`

OK

- DataResponseDiscoverMarketItem
  - `$schema` string, uri: A URL to the JSON Schema for this object.
  - `data` DiscoverMarketItem[], nullable, required
    - `category` string, required: Surf-curated category
    - `condition_id` string: Polymarket condition ID
    - `days_to_resolution` integer: Days until market end date
    - `event_group_slug` string: Canonical Polymarket event group slug for sibling event pages
    - `event_slug` string: Polymarket event slug
    - `event_ticker` string: Kalshi event ticker
    - `event_title` string: Event title
    - `latest_price` number, double: Probability (0-1) for token_id/outcome_label from realtime price store. Omitted when no selected outcome token is available.
    - `market_link` string: Direct link to market
    - `market_slug` string: Polymarket market slug
    - `market_ticker` string: Kalshi market ticker
    - `matched_counterpart` string: Matching market ID on the other platform
    - `open_interest_usd` number, double, required: Current open interest (USD)
    - `outcome_label` string: Polymarket selected outcome label
    - `platform` string, required: polymarket or kalshi
    - `question` string, required: Market question text
    - `smart_money_direction` string: BULLISH, BEARISH, or NEUTRAL (Polymarket only)
    - `status` string, required: Market status
    - `subcategory` string: Surf-curated subcategory
    - `token_id` string: Polymarket selected outcome token ID
    - `trade_count_7d` integer, required: Number of trades last 7 days
    - `volume_1d` number, double, required: Notional volume last 24h (USD)
    - `volume_30d` number, double, required: Notional volume last 30 days (USD)
    - `volume_7d` number, double, required: Notional volume last 7 days (USD)
  - `meta` OffsetMeta, required
    - `cached` boolean, required: Whether this response was served from cache
    - `credits_used` integer, required: Credits deducted for this request
    - `empty_reason` string: Hint explaining why the data array is empty, when applicable
    - `has_more` boolean: Whether more items may exist beyond this response. For offset-paged endpoints, continue with a larger offset. For time-series endpoints without offset/cursor controls, true means the requested time range hit an upstream cap; narrow from/to to continue. Omitted when exhaustion cannot be proven.
    - `limit` integer, required: Maximum number of items returned in this response
    - `offset` integer, required: Number of items skipped (pagination offset)
    - `total` integer: Total number of matching items (before pagination). Omitted when total is unknown.
    - `watermark` integer: Warehouse watermark (Unix seconds) this response was computed at, on warehouse-backed endpoints (e.g. Hyperliquid /trades/aggregate) — rows up to this time come from the warehouse, newer rows from the live tail. Omitted elsewhere.

## Other responses

- `default`: Error

---

[API](https://skmtc.dev/asksurf/apis/asksurf-public-rest-api.md) - [All operations](https://skmtc.dev/asksurf/apis/asksurf-public-rest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/asksurf/apis/asksurf-public-rest-api/revisions/91774fdd5302?raw)
