Kalshi API endpoint
Returns one Kalshi market by `ticker` (such as `KXELONMARS-99`). The response has the title, subtitle, event ticker, status, result, open, close and expiration times, last and previous price, yes and no bid and ask, volume, 24-hour volume, open interest, liquidity and rules text. An unknown ticker returns a not-found error.
/kalshi/market/{ticker}Path parameters:
ticker: required Kalshi market ticker, for example KXELONMARS-99.Query parameters: none.
Notable response behavior:
| Field | In the sample | Value in the sample |
|---|---|---|
| market.ticker | Has a value | “KXELONMARS-99” |
| market.event_ticker | Has a value | “KXELONMARS-99” |
| market.title | Has a value | “Will Elon Musk visit Mars before Aug 1, 2099?” |
| market.sub_title | Has a value | “Mars” |
| market.status | Has a value | “active” |
| market.market_type | Has a value | “binary” |
| market.open_time | Has a value | 2025-08-28 |
| market.close_time | Has a value | 2099-08-01 |
| market.expiration_time | Has a value | 2099-08-08 |
| market.last_price | Has a value | 0.09 |
| market.previous_price | Has a value | 0.1 |
| market.yes_bid | Has a value | 0.09 |
| market.yes_ask | Has a value | 0.11 |
| market.no_bid | Has a value | 0.89 |
| market.no_ask | Has a value | 0.91 |
| market.volume | Has a value | 120,728.91 |
| market.volume_24h | Has a value | 4.36 |
| market.open_interest | Has a value | 40,116.54 |
| market.rules_primary | Has a value | 105 characters |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| ticker (path) | string | Yes | Kalshi market ticker | KXELONMARS-99 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/kalshi/market/KXELONMARS-99" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"market": {
"ticker": "KXELONMARS-99",
"event_ticker": "KXELONMARS-99",
"title": "Will Elon Musk visit Mars before Aug 1, 2099?",
"status": "active",
"last_price": 0.08,
"yes_bid": 0.08,
"yes_ask": 0.1,
"volume": 94840.88
},
"source_url": "https://external-api.kalshi.com/trade-api/v2/markets/KXELONMARS-99",
"fetched_at": "2026-06-07T14:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/kalshi.marketResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | kalshi.MarketResponse | No | ||||
| data.fetched_at | string | No | 2026-06-07T14:00:00Z | Time the data was fetched, in UTC (RFC 3339). | ||
| data.market | object | No | The Kalshi market that was requested. | |||
| data.market.close_time | string | No | 2099-08-01T04:59:00Z | Time trading closes, in UTC (RFC 3339). | ||
| data.market.event_ticker | string | No | KXELONMARS-99 | Ticker of the event the market belongs to. | ||
| data.market.expiration_time | string | No | 2099-08-08T15:00:00Z | Time the market expires, in UTC (RFC 3339). | ||
| data.market.last_price | number | No | 0.08 | Price of the most recent trade, in US dollars per contract. | ||
| data.market.liquidity | number | No | 0 | Market liquidity, in US dollars. | ||
| data.market.market_type | string | No | binary | Market type, such as `binary`. | ||
| data.market.no_ask | number | No | 0.92 | Lowest price asked for a No contract, in US dollars. | ||
| data.market.no_bid | number | No | 0.9 | Highest price offered for a No contract, in US dollars. | ||
| data.market.open_interest | number | No | 32773.57 | Number of contracts currently open in the market. | ||
| data.market.open_time | string | No | 2025-08-28T20:45:00Z | Time trading opened, in UTC (RFC 3339). | ||
| data.market.previous_price | number | No | 0.1 | Earlier reference price of the market, in US dollars per contract. | ||
| data.market.response_price_unit | string | No | usd_cent | Price unit label Kalshi attaches to the market, such as `usd_cent`. | ||
| data.market.result | string | No | Outcome the market settled on. Empty or omitted until it settles. | |||
| data.market.rules_primary | string | No | Primary rules text that governs how the market settles. | |||
| data.market.status | string | No | active | Market status as Kalshi reports it, such as `active`. | ||
| data.market.sub_title | string | No | Mars | Short label of the outcome the market covers, shown under the title. | ||
| data.market.ticker | string | No | KXELONMARS-99 | Kalshi ticker that identifies the market. | ||
| data.market.title | string | No | Will Elon Musk visit Mars before Aug 1, 2099? | Market title as shown on Kalshi. | ||
| data.market.volume | number | No | 94840.88 | Total number of contracts traded in the market. | ||
| data.market.volume_24h | number | No | 16 | Number of contracts traded in the last 24 hours. | ||
| data.market.yes_ask | number | No | 0.1 | Lowest price asked for a Yes contract, in US dollars. | ||
| data.market.yes_bid | number | No | 0.08 | Highest price offered for a Yes contract, in US dollars. | ||
| data.source_url | string | No | https://external-api.kalshi.com/trade-api/v2/markets/KXELONMARS-99 | URL the data was read from. | ||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/kalshi/market/KXELONMARS-99" \
-H "x-api-key: $CRAWLORA_API_KEY"