Skip to main content

GET /v1/markets

Paginated list of prediction markets from Polymarket and Kalshi. Filter by source, symbol, market_type, or active status.

Minimum tier: Free | Credits: 25 flat per request

GET https://kwery-api.com/v1/markets?api-key=YOUR_KEY

Parameters

ParameterTypeRequiredDefaultDescription
api-keystringYesYour API key. Passed as a query parameter.
sourcestringNoFilter by source platform: polymarket, kalshi. Omit for all prediction market sources.
symbolstringNoFilter by underlying asset (e.g. BTC, ETH).
is_activebooleanNoFilter by active status. true returns only tradable markets, false returns only resolved/expired markets.
limitintegerNo50Number of results to return. Range: 1–500.
afterstringNoCursor for pagination. Pass the next_cursor value from a previous response.

The offset parameter is deprecated as of v1.6.0. Use after with the meta.next_cursor value for pagination.

For single-market lookups, use GET /v1/markets/{identifier}. The {identifier} path parameter accepts any of: market_id (numeric), condition_id (0x-prefixed hex), or event slug (human-readable string).

Response fields

Each object in data contains the following fields:

FieldTypeDescription
market_idstringUnique market identifier (source-specific).
sourcestring"polymarket" or "kalshi".
slugstringURL-friendly market slug.
questionstringHuman-readable market question (e.g. "Will BTC close above $100k on March 31?").
symbolstringUnderlying asset symbol.
market_typestringMarket type (e.g. binary).
start_datestringISO 8601 market open time.
end_datestringISO 8601 market close / expiry time.
is_activebooleanWhether the market is currently tradable.
resolutionstring | nullOutcome ("yes", "no", or null if unresolved).
resolved_atstring | nullISO 8601 resolution timestamp, or null.
final_volumenumber | nullTotal traded volume at resolution, or null.
final_liquiditynumber | nullLiquidity at resolution, or null.
tokensobjectSource-specific token identifiers. For Polymarket: { clob_token_up, clob_token_down, condition_id }. For Kalshi: { ticker, series_ticker }.

Response headers

HeaderDescription
X-Credits-ChargedTotal credits consumed by this request.
X-RateLimit-RemainingRequests remaining in the current rate-limit window.
X-RateLimit-ResetISO 8601 timestamp when the rate-limit window resets.

Example request

cURL

# List Kalshi prediction markets
curl "https://kwery-api.com/v1/markets?source=kalshi&symbol=BTC&limit=10" \
  -H "X-API-Key: YOUR_KEY"
curl "https://kwery-api.com/v1/markets?api-key=YOUR_KEY&source=polymarket&symbol=BTC&is_active=true&limit=2"

Python

import requests

resp = requests.get("https://kwery-api.com/v1/markets", params={
    "api-key": "YOUR_KEY",
    "source": "polymarket",
    "symbol": "BTC",
    "is_active": True,
    "limit": 2,
})
data = resp.json()

TypeScript

const params = new URLSearchParams({
  "api-key": "YOUR_KEY",
  source: "polymarket",
  symbol: "BTC",
  is_active: "true",
  limit: "2",
});

const res = await fetch(`https://kwery-api.com/v1/markets?${params}`);
const data = await res.json();

Example response

{
  "data": [
    {
      "market_id": "0xabc123",
      "source": "polymarket",
      "slug": "btc-above-100k-march-2026",
      "question": "Will BTC close above $100,000 on March 31, 2026?",
      "symbol": "BTC",
      "market_type": "binary",
      "start_date": "2026-03-01T00:00:00Z",
      "end_date": "2026-03-31T23:59:59Z",
      "is_active": true,
      "resolution": null,
      "resolved_at": null,
      "final_volume": null,
      "final_liquidity": null,
      "tokens": {
        "clob_token_up": "0xtoken_up_789",
        "clob_token_down": "0xtoken_down_012",
        "condition_id": "0xdef456"
      }
    },
    {
      "market_id": "0xdef789",
      "source": "polymarket",
      "slug": "btc-above-110k-march-2026",
      "question": "Will BTC close above $110,000 on March 31, 2026?",
      "symbol": "BTC",
      "market_type": "binary",
      "start_date": "2026-03-01T00:00:00Z",
      "end_date": "2026-03-31T23:59:59Z",
      "is_active": true,
      "resolution": null,
      "resolved_at": null,
      "final_volume": null,
      "final_liquidity": null,
      "tokens": {
        "clob_token_up": "0xtoken_up_abc",
        "clob_token_down": "0xtoken_down_def",
        "condition_id": "0xghi012"
      }
    }
  ],
  "meta": {
    "symbol": "BTC",
    "source": "polymarket",
    "interval": null,
    "count": 2,
    "next_cursor": "eyJpZCI6IjB4ZGVmNzg5In0="
  }
}

Source-specific behavior

BehaviorPolymarketKalshi
Market ID formatHex condition ID (0x...)Ticker string (KXBTCD-26MAR14-67500)
Price denomination0–1 (probability)0–100 (cents)
tokens fieldsclob_token_up, clob_token_down, condition_idticker, series_ticker
Resolution values"yes" / "no""yes" / "no"

Tier access

TierAccess
FreeActive markets only (is_active=true enforced). Requests for resolved markets return 403.
ProAll markets (active and resolved).
BusinessAll markets (active and resolved).

Errors

StatusCodeDescription
400invalid_sourceThe source value is not polymarket or kalshi.
400invalid_symbolThe symbol parameter is not recognized.
403tier_lockedFree-tier request attempted to access resolved markets.
429rate_limit_exceededYou have exceeded your per-minute or per-hour request quota.