Matched Market Pairs

GET/gateway/v1/prediction-market/matching/pairs

Cross-platform prediction market pair matcher — finds the same event listed on both Polymarket and Kalshi, with live price spread data. This is prediction-market only (Polymarket and Kalshi). For crypto exchange markets, use `exchange-markets`.

Filter by category, match type, confidence score, or look up a specific market's cross-platform counterpart via `polymarket_condition_id` or `kalshi_market_ticker`.

Each pair includes current prices and spread percentage for arbitrage analysis. Sort by `spread_pct` to find the widest spreads.

Data refresh: ~5 minutes

Query Parameters

categoryenum<string>

Filter by category

Available options:cryptocultureeconomicsfinancialspoliticsstemsports
Example: politics
match_typeenum<string>

Filter by match type

Available options:exactrelated
Example: exact
active_onlyboolean

Only return pairs where both markets are currently active

min_confidenceinteger

Minimum confidence score (0-100)

polymarket_condition_idstring

Find match for this Polymarket market

kalshi_market_tickerstring

Find match for this Kalshi market

sort_byenum<string>

Sort field

Available options:confidencepolymarket_volumekalshi_volumespread_pct
orderenum<string>

Sort order

Available options:ascdesc
limitinteger

Maximum rows to return

Example: 20
offsetinteger

Pagination offset

Example: 0
Matched Market Pairs
const options = {method: 'GET'};

fetch('https://api.asksurf.ai/gateway/v1/prediction-market/matching/pairs?category=politics&match_type=exact&limit=20&offset=0', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
OK
{
  "$schema": "https://example.com/schemas/DataResponseMatchedMarketPair.json",
  "data": [
    {
      "category": "<string>",
      "confidence": 123,
      "kalshi": {
        "event_ticker": "<string>",
        "market_ticker": "<string>",
        "open_interest": 123,
        "status": "<string>",
        "title": "<string>",
        "volume_contracts": 123
      },
      "kalshi_price": 123,
      "match_type": "<string>",
      "polymarket": {
        "condition_id": "<string>",
        "event_slug": "<string>",
        "is_active": true,
        "outcome_label": "<string>",
        "question": "<string>",
        "token_id": "<string>",
        "volume_usd": 123
      },
      "polymarket_price": 123,
      "spread_pct": 123
    }
  ],
  "meta": {
    "cached": true,
    "credits_used": 123,
    "empty_reason": "<string>",
    "has_more": true,
    "limit": 123,
    "offset": 123,
    "total": 123,
    "watermark": 123
  }
}