Kalshi Trades

GET/gateway/v1/prediction-market/kalshi/trades

Returns individual trade records for a Kalshi market.

Filters: `taker_side`, `min_contracts`, and date range.

Sort: `timestamp` or `num_contracts`.

Data refresh: real-time

Query Parameters

tickerstringrequired

Market ticker identifier. Use GET /v1/prediction-market/kalshi/markets or GET /v1/search/kalshi?q={keyword} to discover valid tickers.

Example: KXBTC2026250-27JAN01-250000
taker_sideenum<string>

Filter by taker side: `yes` or `no`

Available options:yesno
min_amountinteger

Minimum notional volume in USD (each contract = $1)

fromstring

Start of time range. Accepts Unix seconds (`1704067200`) or date string (`2024-01-01`)

tostring

End of time range. Accepts Unix seconds (`1706745600`) or date string (`2024-02-01`)

sort_byenum<string>

Field to sort results by

Available options:timestampnotional_volume_usd
Example: timestamp
orderenum<string>

Sort order

Available options:ascdesc
Example: desc
limitinteger

Results per page

Example: 50
offsetinteger

Pagination offset

Example: 0
Kalshi Trades
const options = {method: 'GET'};

fetch('https://api.asksurf.ai/gateway/v1/prediction-market/kalshi/trades?ticker=KXBTC2026250-27JAN01-250000&sort_by=timestamp&order=desc&limit=50&offset=0', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
OK
{
  "$schema": "https://example.com/schemas/DataResponseKalshiTrade.json",
  "data": [
    {
      "market_ticker": "<string>",
      "no_price": 123,
      "notional_volume_usd": 123,
      "taker_side": "<string>",
      "timestamp": 123,
      "trade_id": "<string>",
      "yes_price": 123
    }
  ],
  "meta": {
    "cached": true,
    "credits_used": 123,
    "empty_reason": "<string>",
    "has_more": true,
    "limit": 123,
    "offset": 123,
    "total": 123,
    "watermark": 123
  }
}