Kalshi Price History

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

Price time series for a Kalshi market with daily or hourly OHLC data, or latest price from recent trades.

Data refresh: ~30 minutes

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
time_rangeenum<string>

Window of history to return: `7d`, `30d`, `90d`, `180d`, or `1y`. Ignored when `interval=latest`. Distinct from `interval` (which sets bucket size within the window).

Available options:7d30d90d180d1y
Example: 30d
intervalenum<string>

Bucket size for each point in the series: `1h` (hourly OHLC), `1d` (daily OHLC), or `latest` (single most-recent trade price). Distinct from `time_range` (window size).

Available options:1h1dlatest
Example: 1d
Kalshi Price History
const options = {method: 'GET'};

fetch('https://api.asksurf.ai/gateway/v1/prediction-market/kalshi/prices?ticker=KXBTC2026250-27JAN01-250000&time_range=30d&interval=1d', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
OK
{
  "$schema": "https://example.com/schemas/DataResponseKalshiPricePoint.json",
  "data": [
    {
      "high": 123,
      "low": 123,
      "open": 123,
      "side_a": {
        "label": "<string>",
        "price": 123
      },
      "side_b": {
        "label": "<string>",
        "price": 123
      },
      "timestamp": 123
    }
  ],
  "meta": {
    "cached": true,
    "credits_used": 123,
    "empty_reason": "<string>",
    "has_more": true,
    "limit": 123,
    "offset": 123,
    "total": 123,
    "watermark": 123
  }
}