Markets
Browse and search all markets across platforms. Paginated by internal market id (stable order). Each market includes its latest price data. Pagination cursors are tied to the exact filter set: reuse next_cursor only with the same platform, status, category, and q parameters.
/v2/marketsQuery Parameters
Filter by platform: polymarket, kalshi, predictit, prophetx, opinion, predictfun (lowercase).
Market status: active, closed, or all. Default: active.
Category filter (e.g. 'sports', 'politics', 'economics').
Full-text search on market title.
Results per page. Default: 50, max: 500.
Opaque cursor from a previous response. Must match the same filters (platform, status, category, q) as that response; otherwise the API returns 400.
Response Schema
List of markets matching the filters.
Internal market ID.
Platform-native market identifier.
Source platform (polymarket, kalshi, etc.).
Market title / question.
Market category (sports, politics, economics, etc.).
Market status (active, closed).
ISO 8601 expiration timestamp.
Direct link to the market on the platform.
Latest price snapshot for this market.
Best bid for YES.
Best ask for YES.
Best bid for NO.
Best ask for NO.
Last traded price.
Trading volume.
Current liquidity (USD).
Opaque cursor for the next page (null if none). Must be reused only with the same platform, status, category, and search query as the request that produced it; changing filters requires omitting the cursor and starting from the first page.
Total number of markets matching the filters (across all pages). Null when no platform, category, or search query is applied (unfiltered count is omitted to avoid expensive full-table scans).
Error Responses
All errors return the same envelope. The code field is stable and programmatically branchable; error and message are human-readable. errors[] is present only on validation failures with field-level detail. See the full error code reference →
Always `false` on error responses.
Short, human-readable title (e.g. 'Invalid API Key.').
Human-readable explanation for the error. Safe to surface in UIs.
Stable, hierarchical machine-readable code (e.g. 'validation.invalid_enum'). Use for programmatic handling.
Link to this code's entry in the Error Reference.
Optional. Present only on validation failures with field-level detail.
Name of the offending parameter.
Field-level machine code.
Human-readable explanation.
Authentication
API Key
To secure your requests, we strongly recommend passing your API key via the X-API-Key header. This prevents sensitive keys from being exposed in access logs or browser history.
X-API-Key: pmx_test_5e8f...Rate Limits
API rate limits are enforced based on the tier associated with your API key. Limits are tracked on two dimensions: requests per second and requests per month. Each completed request counts toward the global monthly quota. Separate endpoint-group monthly limits (matched markets, arbitrage, EV) only advance when the response body has success: true.
Usage is returned on responses via headers such as:
X-RateLimit-Limit-Second: 10X-RateLimit-Remaining-Second: 9X-RateLimit-Limit-Month: 1000X-RateLimit-Remaining-Month: 842Example (endpoint-group, when applicable)X-RateLimit-Limit-Arb-Month: 500X-RateLimit-Remaining-Arb-Month: 412If you exceed a rate limit, the API returns a 429 status with a Retry-After header indicating when you can resume.
Request
Live API Key
Filters
Response
—Click EXECUTE to send a request →