Skip to content
GET /v1/markets

Contract directory

Try it live

10 free calls per day — no sign-up, no API key. Goes through the oanor gateway.

Custom headers (optional)
api.oanor.com/kalshi-api

It works. Grab an API key and use it in your project.

Get an API key

Code snippets

curl "https://api.oanor.com/kalshi-api/v1/markets" \
  -H "x-oanor-key: oanor_test_..."
await fetch("https://api.oanor.com/kalshi-api/v1/markets", {
  headers: { "x-oanor-key": "oanor_test_..." }
});
$ch = curl_init("https://api.oanor.com/kalshi-api/v1/markets");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["x-oanor-key: oanor_test_..."]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$out = curl_exec($ch);
import requests
requests.get(
    "https://api.oanor.com/kalshi-api/v1/markets",
    headers={"x-oanor-key": "oanor_test_..."}
)

Example response

A real response from this endpoint, captured by the latest health check.

{
    "data": {
        "count": 50,
        "source": "Kalshi",
        "markets": [
            {
                "title": "yes Korea Republic,yes Canada,yes USA,yes Switzerland,yes Germany,yes Spain,yes Argentina,yes Portugal,yes Colombia,yes Brazil,yes Ecuador,yes Belgium,yes Japan,yes France,yes Switzerland",
                "status": "active",
                "ticker": "KXMVESPORTSMULTIGAMEEXTENDED-S2026E0FFC9EFB95-D066B69639D",
                "open_time": "2026-06-12T01:41:11Z",
                "close_time": "2026-06-26T02:00:00Z",
                "event_ticker": "KXMVESPORTSMULTIGAMEEXTENDED-S2026E0FFC9EFB95",
                "yes_sub_title": "yes Korea Republic,yes Canada,yes USA,yes Switzerland,yes Germany,yes Spain,yes Argentina,yes Portugal,yes Colombia,yes Brazil,yes Ecuador,yes Belgium,yes Japan,yes France,yes Switzerland",
                "can_close_early": true,
                "expiration_time": "2026-06-26T02:00:00Z"
            },
            {
                "title": "yes Los Angeles D wins by over 2.5 runs,no Republic of Korea wins by over 2.5 goals,no Over 3.5 goals scored,yes New York wins by over 5.5 points,no Dallas wins by over 3.5 points",
                "status": "active",
                "ticker": "KXMVESPORTSMULTIGAMEEXTENDED-S20262347818E8FB-928FF93F346",
                "open_time": "2026-06-12T01:41:11Z",
                "close_time": "2026-06-14T22:40:00Z",
                "event_ticker": "KXMVESPORTSMULTIGAMEEXTENDED-S20262347818E8FB",
                "yes_sub_title": "yes Los Angeles D wins by over 2.5 runs,no Republic of Korea wins by over 2.5 goals,no Over 3.5 goals scored,yes New York wins by over 5.5 points,no Dallas wins by over 3.5 points",
                "can_close_early": true,
                "expiration_time": "2026-06-14T22:40:00Z"
            },
            {
                "title": "no Vegas wins by over 1.5 goals,yes Over 4.5 goals scored,no Czechia wins by over 1.5 goals,yes Over 1.5 goals scored",
                "status": "active",
                "ticker": "KXMVESPORTSMULTIGAMEEXTENDED-S202630553A6766F-5E2E7ECEAF2",
                "open_time": "2026-06-12T01:41:11Z",
                "close_time": "2026-06-26T00:00:00Z",
                "event_ticker": "KXMVESPORTSMULTIGAMEEXTENDED-S202630553A6766F",
                "yes_sub_title": "no Vegas wins by over 1.5 goals,yes Over 4.5 goals scored,no Czechia wins by over 1.5 goals,yes Over 1.5 goals scored",
                "can_close_early": true,
                "expiration_time": "2026-06-26T00:00:00Z"
            },
            {
                "title": "yes Brazil,yes Ecuador,yes Germany,yes Netherlands,yes Belgium,yes Spain,yes Uruguay,yes France,yes Norway",
                "status": "active",
                "ticker": "KXMVECROSSCATEGORY-S20263E119514F88-A4350DA7066",
                "open_time": "2026-06-12T01:41:11Z",
                "close_time": "2026-06-27T22:00:00Z",
                "event_ticker": "KXMVECROSSCATEGORY-S20263E11951
…