---
title: "Kalshi Trades"
method: GET
path: "/gateway/v1/prediction-market/kalshi/trades"
tags: ["Prediction Market"]
---

# Kalshi Trades

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

## Request

- Base URL: `https://api.asksurf.ai`
- URL: `https://api.asksurf.ai/gateway/v1/prediction-market/kalshi/trades`
- Auth: HTTP bearer

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

- `ticker` string, required: Market ticker identifier. Use GET /v1/prediction-market/kalshi/markets or GET /v1/search/prediction-market?platform=kalshi&q={keyword} to discover valid tickers.
- `taker_side` 'yes' | 'no': Filter by taker side: `yes` or `no`
- `min_amount` integer: Minimum notional volume in USD (each contract = $1)
- `from` string: Start of time range. Accepts Unix seconds (`1704067200`) or date string (`2024-01-01`)
- `to` string: End of time range. Accepts Unix seconds (`1706745600`) or date string (`2024-02-01`)
- `sort_by` 'timestamp' | 'notional_volume_usd': Field to sort results by
- `order` 'asc' | 'desc': Sort order
- `limit` integer: Results per page
- `offset` integer: Pagination offset

## Response `200`

OK

- DataResponseKalshiTrade
  - `$schema` string, uri: A URL to the JSON Schema for this object.
  - `data` KalshiTrade[], nullable, required
    - `market_ticker` string, required: Unique market ticker identifier
    - `no_price` number, double, required: No outcome price as probability (0-1)
    - `notional_volume_usd` integer, required: Notional volume in USD (each contract = $1)
    - `taker_side` string, required: Taker side: `yes` or `no`
    - `timestamp` integer, required: Unix timestamp in seconds
    - `trade_id` string, required: Unique trade identifier
    - `yes_price` number, double, required: Yes outcome price as probability (0-1)
  - `meta` OffsetMeta, required
    - `cached` boolean, required: Whether this response was served from cache
    - `credits_used` integer, required: Credits deducted for this request
    - `empty_reason` string: Hint explaining why the data array is empty, when applicable
    - `has_more` boolean: Whether more items may exist beyond this response. For offset-paged endpoints, continue with a larger offset. For time-series endpoints without offset/cursor controls, true means the requested time range hit an upstream cap; narrow from/to to continue. Omitted when exhaustion cannot be proven.
    - `limit` integer, required: Maximum number of items returned in this response
    - `offset` integer, required: Number of items skipped (pagination offset)
    - `total` integer: Total number of matching items (before pagination). Omitted when total is unknown.
    - `watermark` integer: Warehouse watermark (Unix seconds) this response was computed at, on warehouse-backed endpoints (e.g. Hyperliquid /trades/aggregate) — rows up to this time come from the warehouse, newer rows from the live tail. Omitted elsewhere.

## Other responses

- `default`: Error

---

[API](https://skmtc.dev/asksurf/apis/asksurf-public-rest-api.md) - [All operations](https://skmtc.dev/asksurf/apis/asksurf-public-rest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/asksurf/apis/asksurf-public-rest-api/revisions/91774fdd5302?raw)
