Skip to main content
GET /api/v1/markets Returns a flat array of UnifiedMarket objects from the specified exchanges with filtering and pagination.

Modes

The endpoint operates in two modes:
  • Exchanges mode — pass exchanges to browse markets with optional filters.
  • Parsec IDs mode — pass parsec_ids for direct lookup. No other filters allowed.

Parameters

exchanges
string
Comma-separated exchange IDs: polymarket, kalshi, limitless, opinion, predictfun. Required unless parsec_ids is provided.
parsec_ids
string
Comma-separated parsec IDs for direct lookup (format: {exchange}:{market_id}). When provided, no other filters are allowed.
status
string
Filter by market status: active, closed, or resolved.
Case-insensitive keyword search across title, description, and question.
min_volume
number
Minimum volume filter.
min_liquidity
number
Minimum liquidity filter.
limit
number
default:"100"
Results per page.
cursor
string
Pagination cursor from a previous response.

Response

success
boolean
Whether the request succeeded.
data
object
# Browse active Polymarket markets
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parsecapi.com/api/v1/markets?exchanges=polymarket&status=active&limit=10"

# Search across multiple exchanges
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parsecapi.com/api/v1/markets?exchanges=polymarket,kalshi&search=bitcoin&min_volume=1000"

# Direct lookup by parsec IDs
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parsecapi.com/api/v1/markets?parsec_ids=polymarket:0x1234,kalshi:KXBTC-25DEC"
{
  "success": true,
  "data": {
    "markets": [
      {
        "parsec_id": "polymarket:0x1234abcd",
        "exchange": "polymarket",
        "group_id": "group_123",
        "id": "0x1234abcd",
        "slug": "will-btc-reach-100k",
        "title": "Will BTC reach $100k?",
        "question": "Will BTC reach $100k by end of 2025?",
        "description": "Resolves Yes if Bitcoin reaches $100,000...",
        "status": "active",
        "market_type": "binary",
        "token_id_yes": "token_yes_123",
        "token_id_no": "token_no_456",
        "condition_id": "0xcond123",
        "volume": 500000,
        "liquidity": 75000,
        "close_time": "2025-12-31T23:59:59Z",
        "open_time": "2025-01-01T00:00:00Z",
        "outcomes": ["Yes", "No"],
        "outcome_tokens": [
          { "outcome": "Yes", "token_id": "token_yes_123" },
          { "outcome": "No", "token_id": "token_no_456" }
        ]
      }
    ],
    "pagination": {
      "count": 1,
      "total": 150,
      "has_more": true,
      "next_cursor": "1"
    },
    "meta": {
      "exchanges_queried": ["polymarket"],
      "exchanges_succeeded": ["polymarket"]
    }
  }
}

Pagination

  1. Make an initial request without a cursor
  2. Check pagination.has_more — if true, pass pagination.next_cursor as cursor in the next request
  3. Repeat until has_more is false