# Kalshi Markets Listing API

> Kalshi Markets Listing API is a paid API for AI agents from AIsa MPP Data APIs at api.aisa.one, paid per call via MPP, $0.02/call, status unknown (last checked 2026-10-18).

Retrieves a paginated list of Kalshi prediction market contracts with filtering by status, ticker, event, series, and time ranges

## Facts

- Endpoint: GET https://api.aisa.one/apis/v1/kalshi/markets?utm_source=zero.xyz
- Price: $0.02/call
- Payment: MPP
- Status: unknown
- Last checked: 2026-10-18
- Activations on Zero: 0
- Provider: AIsa MPP Data APIs
- Website: https://aisa.one
- Tags: web-search, financial-data, prediction-markets, weather, travel, data, search
- Canonical page: https://www.zero.xyz/c/aisa-mpp-data-apis-kalshi-markets-listing-api-eefbbd8e
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_zm-QoHVgfpx8uyS_xOw-A

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability aisa-mpp-data-apis-kalshi-markets-listing-api-eefbbd8e
```

Example prompt: Show me all open Kalshi prediction markets for the 2024 US election series — return up to 200 results.

## When to prefer this

Use this endpoint when you need to discover, browse, or filter Kalshi prediction market contracts programmatically — especially when filtering by status, event, series, or time range. Prefer this over direct Kalshi API access when you need pay-per-call access without managing Kalshi credentials. Best for agents that need to scan available markets, monitor price levels, or find specific contracts by ticker.

## Known failure modes

- Invalid or unknown ticker returns empty markets array
- Incompatible filter combinations (e.g. max_updated_ts with other filters) return 400 error
- Limit exceeds maximum of 1000 returns validation error
- Invalid status enum value returns 400 bad request
- Expired or invalid cursor returns empty or first-page results
- Rate limiting or quota exhaustion returns 429 error

## How this service works

默认价格配置

<!-- aisa-pricing:start -->
Published reference price: $0.02 USD per successful request. Account-specific pricing and final settlement may differ.
<!-- aisa-pricing:end -->

## Output

Returns a paginated array of market objects, each containing ticker, event ticker, market type (binary or scalar), yes/no bid and ask prices in dollars, last traded price, 24-hour volume, open interest, open/close times, current status, settlement result, expiration value, and market rules. Also returns a cursor string for fetching the next page.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "limit": {
   "type": "integer",
   "format": "int64",
   "default": 100,
   "maximum": 1000,
   "minimum": 0,
   "description": "Number of results per page. Defaults to 100. Maximum value is 1000.",
   "x-oapi-codegen-extra-tags": {
    "validate": "omitempty,gte=0,lte=1000"
   }
  },
  "cursor": {
   "type": "string",
   "description": "Pagination cursor. Use the cursor value returned from the previous response to get the next page of results. Leave empty for the first page.",
   "x-go-type-skip-optional-pointer": true
  },
  "status": {
   "enum": [
    "unopened",
    "open",
    "paused",
    "closed",
    "settled"
   ],
   "type": "string",
   "description": "Filter by market status. Leave empty to return markets with any status."
  },
  "tickers": {
   "type": "string",
   "description": "Filter by specific market tickers. Comma-separated list of market tickers to retrieve."
  },
  "mve_filter": {
   "enum": [
    "only",
    "exclude"
   ],
   "type": "string",
   "description": "Filter by multivariate events (combos). 'only' returns only multivariate events, 'exclude' excludes multivariate events."
  },
  "event_ticker": {
   "type": "string",
   "description": "Event ticker to filter by. Only a single event ticker is supported.",
   "x-go-type-skip-optional-pointer": true
  },
  "max_close_ts": {
   "type": "integer",
   "format": "int64",
   "description": "Filter items that close before this Unix timestamp"
  },
  "min_close_ts": {
   "type": "integer",
   "format": "int64",
   "description": "Filter items that close after this Unix timestamp"
  },
  "series_ticker": {
   "type": "string",
   "description": "Filter by series ticker",
   "x-go-type-skip-optional-pointer": true
  },
  "max_created_ts": {
   "type": "integer",
   "format": "int64",
   "description": "Filter items that created before this Unix timestamp"
  },
  "max_settled_ts": {
   "type": "integer",
   "format": "int64",
   "description": "Filter items that settled before this Unix timestamp"
  },
  "max_updated_ts": {
   "type": "integer",
   "format": "int64",
   "description": "Return markets with metadata updated at or before this Unix timestamp (in seconds). Tracks non-trading changes only. May be combined with min_updated_ts and mve_filter=exclude. May also be combined with series_ticker, which requires mve_filter=exclude. Incompatible with other filters."
  },
  "min_created_ts": {
   "type": "integer",
   "format": "int64",
   "de
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "markets",
  "cursor"
 ],
 "properties": {
  "cursor": {
   "type": "string"
  },
  "markets": {
   "type": "array",
   "items": {
    "type": "object",
    "required": [
     "ticker",
     "event_ticker",
     "market_type",
     "yes_sub_title",
     "no_sub_title",
     "created_time",
     "updated_time",
     "open_time",
     "close_time",
     "latest_expiration_time",
     "settlement_timer_seconds",
     "status",
     "notional_value_dollars",
     "yes_bid_dollars",
     "yes_ask_dollars",
     "no_bid_dollars",
     "no_ask_dollars",
     "yes_bid_size_fp",
     "yes_ask_size_fp",
     "last_price_dollars",
     "previous_yes_bid_dollars",
     "previous_yes_ask_dollars",
     "previous_price_dollars",
     "volume_fp",
     "volume_24h_fp",
     "open_interest_fp",
     "result",
     "can_close_early",
     "expiration_value",
     "rules_primary",
     "rules_secondary",
     "price_level_structure",
     "price_ranges",
     "settlement_bounds_type"
    ],
    "properties": {
     "title": {
      "type": "string",
      "deprecated": true,
      "x-go-type-skip-optional-pointer": true
     },
     "result": {
      "enum": [
       "yes",
       "no",
       "scalar",
       ""
      ],
      "type": "string"
     },
     "status": {
      "enum": [
       "initialized",
       "inactive",
       "active",
       "closed",
       "determined",
       "disputed",
       "amended",
       "finalized"
      ],
      "type": "string",
      "description": "The current status of the market in its lifecycle."
     },
     "ticker": {
      "type": "string"
     },
     "subtitle": {
      "type": "string",
      "deprecated": true,
      "x-go-type-skip-optional-pointer": true
     },
     "open_time": {
      "type": "string",
      "format": "date-time"
     },
     "volume_fp": {
      "type": "string",
      "example": "10.00",
      "description": "Fixed-point contract count string (2 decimals, e.g., \"10.00\"; referred to as \"fp\" in field names). Requests accept 0-2 decimal places (e.g., \"10\", \"10.0\", \"10.00\"); responses always emit 2 decimals. Fractional contract values (e.g., \"2.50\") are supported; the minimum granularity is 0.01 contracts."
     },
     "cap_strike": {
      "type": [
       "number",
       "null"
      ],
      "format": "double",
      "description": "Maximum expiration value that leads to a YES settlement",
      "x-omitempty": true
     },
     "close_time": {
      
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/aisa-mpp-data-apis-kalshi-markets-listing-api-eefbbd8e/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.aisa.one](https://www.zero.xyz/host/api.aisa.one/llms.txt)
