GET /api/v1/trades
Returns the public trade tape for a market outcome, using either the normalized or
exchange-native selector.
If you do not know the IDs yet, start with /markets. This
endpoint accepts either parsec_id or exchange + market_id.
Error Semantics
403 means your API key is not authorized for the request.
503 means the upstream exchange is temporarily unavailable.
Parameters
Canonical selector. Provide either parsec_id or both exchange + market_id.
Exchange selector used with market_id.
Exchange-native market ID used with exchange.
Outcome selector, typically yes or no for binary markets.
Max trades to return. Range: 1-500.
Historical start timestamp in Unix seconds.
Historical end timestamp in Unix seconds.
Pagination cursor from the previous response.
Response
Canonical market identifier.
Exchange-specific token/asset identifier for the requested outcome. null for exchanges that do not use token IDs (e.g., Kalshi).
Exchange-native market ID.
Trade rows ordered newest-first.
Whether more rows are available.
Cursor for the next page.
Explanatory field for empty results. null for normal responses. "no_data_yet" when the market exists but has no trade data for the requested range.
Examples
curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.parsecapi.com/api/v1/trades?parsec_id=kalshi:KXPRESPERSON-28-GNEWS&outcome=yes&limit=5"
{
"parsec_id": "kalshi:KXPRESPERSON-28-GNEWS",
"exchange": "kalshi",
"outcome": "Yes",
"token_id": null,
"market_id": "KXPRESPERSON-28-GNEWS",
"trades": [
{
"id": "02025da9-d3e3-58ea-a865-351e8b8ea012",
"price": 0.21,
"size": 112.0,
"side": "buy",
"aggressor_side": "buy",
"timestamp": "2026-03-10T07:18:18.845367Z",
"source_channel": "kalshi_rest_trade",
"outcome": "Yes",
"yes_price": 0.21,
"no_price": null
}
],
"has_more": true,
"next_cursor": "eyJ0cyI6MTczOTM1MDY5OH0"
}
For real-time streaming, use the WebSocket API.