Kalshi API endpoint
Lists Kalshi series, up to `limit` rows (default 25, max 200). Each series has its ticker, title, category, frequency, fee type and multiplier, settlement sources, and contract and contract-terms URLs. The catalogue comes back in one page, so `cursor` has no effect on this endpoint.
/kalshi/seriesPath parameters: none.
Query parameters:
limit: optional integer. Default: 25; maximum: 200.cursor: optional pagination cursor from a previous Kalshi response.Notable response behavior:
limit is applied to the returned rows and cursor has no effect on this endpoint.data.cursor is therefore empty here. Use /kalshi/events or
/kalshi/markets when you need cursor-based pagination.limit values, so
data.fetched_at is when the catalogue itself was last retrieved from Kalshi
— up to 6 hours before your request, not the time of the request. Series are
contract definitions and change on the order of days.| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| series_ticker | 20 | “EMMYDACTR” and 19 other values |
| title | 20 | “Emmys Award for Lead Drama Actress” and 19 other values |
| category | 20 | Sports (9), Politics (4), Entertainment (3) and 3 more |
| frequency | 20 | one_off (9), custom (9), annual (1) and 1 more |
| fee_type | 20 | quadratic in all 20 |
| fee_multiplier | 20 | 1 |
| contract_url | 20 | assets.kalshi.com |
| contract_terms_url | 20 | assets.kalshi.com |
| last_updated | 20 | 2026-08-29 to 2026-10-12 |
| settlement_sources | 20 | median 1 entry |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| limit | integer | No | Rows to return, default 25, max 200 | ||
| cursor | string | No | Pagination cursor from a previous Kalshi response | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/kalshi/series?limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"limit": 3,
"source_url": "https://external-api.kalshi.com/trade-api/v2/series?limit=3",
"fetched_at": "2026-06-07T14:00:00Z",
"series": [
{
"series_ticker": "KXELONMARS",
"title": "Will Elon Musk visit Mars in his lifetime?",
"category": "Politics",
"frequency": "custom",
"fee_multiplier": 1
}
]
}
}Request schema
No body schema
Response schema
#/definitions/kalshi.seriesResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | kalshi.SeriesResponse | No | ||||
| data.cursor | string | No | Cursor returned by Kalshi with the series list. Omitted when Kalshi returns none. | |||
| data.fetched_at | string | No | 2026-06-07T14:00:00Z | Time the series list was last fetched from Kalshi, in UTC (RFC 3339). | ||
| data.limit | integer | No | 25 | Number of series requested. | ||
| data.series | array | No | Kalshi series in the response. | |||
| data.series[].category | string | No | Politics | Kalshi category of the series, such as `Politics`. | ||
| data.series[].contract_terms_url | string | No | Link to the series' contract terms document. | |||
| data.series[].contract_url | string | No | Link to the series' contract document. | |||
| data.series[].fee_multiplier | number | No | 1 | Multiplier applied to the series' fee calculation. | ||
| data.series[].fee_type | string | No | quadratic | Fee model Kalshi applies to the series, such as `quadratic`. | ||
| data.series[].frequency | string | No | custom | How often the series produces events, such as `custom`. | ||
| data.series[].last_updated | string | No | 2026-06-01T15:24:00Z | Time the series was last updated, in UTC (RFC 3339). | ||
| data.series[].series_ticker | string | No | KXELONMARS | Kalshi ticker that identifies the series. | ||
| data.series[].settlement_sources | array | No | Sources Kalshi uses to settle the series' markets. | |||
| data.series[].settlement_sources[].name | string | No | The Guardian | Name of the source used to settle markets, such as `The Guardian`. | ||
| data.series[].settlement_sources[].url | string | No | https://www.theguardian.com | Link to the settlement source's website. | ||
| data.series[].title | string | No | Will Elon Musk visit Mars in his lifetime? | Series title as shown on Kalshi. | ||
| data.source_url | string | No | https://external-api.kalshi.com/trade-api/v2/series?limit=25 | 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/series?limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"