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

# Kalshi Markets

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

## Request

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

Returns Kalshi markets, optionally filtered by `market_ticker`.

Each market includes price, volume, and status.

**Data refresh:** ~30 minutes

## Query parameters

- `market_ticker` string: Market ticker identifier. When omitted, returns top active markets by volume. Use GET /v1/search/prediction-market?platform=kalshi&q={keyword} to discover valid tickers.
- `limit` integer: Results per page
- `offset` integer: Pagination offset

## Response `200`

OK

- DataResponseKalshiMarketItem
  - `$schema` string, uri: A URL to the JSON Schema for this object.
  - `data` KalshiMarketItem[], nullable, required
    - `category` string: Surf curated market category
    - `close_time` integer: Market close time (Unix seconds)
    - `end_time` integer: Market end time (Unix seconds)
    - `event_ticker` string, required: Parent event ticker
    - `event_title` string: Event title
    - `last_day_open_interest` number, double, required: Previous day open interest from daily report
    - `market_ticker` string, required: Unique market ticker identifier
    - `notional_volume_usd` number, double, required: Last day notional trading volume in USD (each contract = $1)
    - `open_interest` number, double, required: Open interest (contracts)
    - `payout_type` string, required: Payout type
    - `result` string: Market result if resolved
    - `start_time` integer: Market start time (Unix seconds)
    - `status` string, required: Market status
    - `subcategory` string: Surf curated market subcategory
    - `title` string, required: Market title
    - `total_volume` integer, required: Total trading volume (contracts)
  - `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)
