Trades (Unified)
Unified, per-trade feed across Polymarket and Kalshi in one consistent schema.
/v2/tradesQuery Parameters
polymarket | kalshi. Optional — omit for both.
condition_id (Polymarket) or ticker (Kalshi).
Outcome token ID (Polymarket only).
Maker or taker wallet address. Polymarket-only data.
Unix seconds. Clamped to >= 2026-05-19 (the served floor).
Unix seconds. Default: now.
Minimum notional USD (>= 0).
1..500. Default: 100.
asc | desc. Default: desc.
Cursor returned by a prior call.
Response Schema
Per-trade rows in requested order.
polymarket | kalshi.
Stable per-platform trade identifier.
condition_id (Polymarket) or ticker (Kalshi).
Outcome token ID (Polymarket only).
yes | no | null.
yes | no | null. Often null for Polymarket.
Execution price in [0, 1].
Trade size in shares.
Notional USD (price * shares).
Maker wallet (Polymarket only; null for Kalshi).
Taker wallet (Polymarket only; null for Kalshi).
ISO8601 UTC timestamp.
Unix seconds.
Cursor-based keyset pagination state.
Echoed page size.
Number of trades in this page.
Pass into the next call to get the following page. Null when has_more is false.
True if more rows exist beyond this page.
Data window and caveats.
ISO8601 served floor — earlier ranges are not served (2026-05-19T00:00:00Z).
Plain-text coverage note and the Polymarket-only wallet-filter caveat.
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 →