This guide will walk you through accessing Kalshi’s public market data endpoints without authentication. You’ll learn how to retrieve series information, events, markets, and orderbook data for the popular “Who will have a higher net approval” market.

Making Unauthenticated Requests

Kalshi provides several public endpoints that don’t require API keys. These endpoints allow you to access market data directly from our production servers at https://api.elections.kalshi.com/trade-api/v2.
Note about the API URL: Despite the “elections” subdomain, api.elections.kalshi.com provides access to ALL Kalshi markets - not just election-related ones. This includes markets on economics, climate, technology, entertainment, and more.
No authentication headers are required for the endpoints in this guide. You can start making requests immediately!

Step 1: Get Series Information

Let’s start by fetching information about the KXHIGHNY series (Who will have a higher net approval). This series tracks approval ratings for political figures. We’ll use the Get Series endpoint.
import requests

# Get series information for KXHIGHNY
url = "https://api.elections.kalshi.com/trade-api/v2/series/KXHIGHNY"
response = requests.get(url)
series_data = response.json()

print(f"Series Title: {series_data['series']['title']}")
print(f"Frequency: {series_data['series']['frequency']}")
print(f"Category: {series_data['series']['category']}")

Step 2: Get Today’s Events and Markets

Now that we have the series information, let’s get the markets for this series. We’ll use the Get Markets endpoint with the series ticker filter to find all active markets.
# Get all markets for the KXHIGHNY series
markets_url = f"https://api.elections.kalshi.com/trade-api/v2/markets?series_ticker=KXHIGHNY&status=open"
markets_response = requests.get(markets_url)
markets_data = markets_response.json()

print(f"\nActive markets in KXHIGHNY series:")
for market in markets_data['markets']:
    print(f"- {market['ticker']}: {market['title']}")
    print(f"  Event: {market['event_ticker']}")
    print(f"  Yes Price: {market['yes_price']}¢ | Volume: {market['volume']}")
    print()

# Get details for a specific event if you have its ticker
if markets_data['markets']:
    # Let's get details for the first market's event
    event_ticker = markets_data['markets'][0]['event_ticker']
    event_url = f"https://api.elections.kalshi.com/trade-api/v2/events/{event_ticker}"
    event_response = requests.get(event_url)
    event_data = event_response.json()
    
    print(f"Event Details:")
    print(f"Title: {event_data['event']['title']}")
    print(f"Category: {event_data['event']['category']}")
You can view these markets in the Kalshi UI at: https://kalshi.com/markets/kxhighny

Step 3: Get Orderbook Data

Now let’s fetch the orderbook for a specific market to see the current bids and asks using the Get Market Orderbook endpoint.
# Get orderbook for a specific market
# Replace with an actual market ticker from the markets list
market_ticker = markets_data['markets'][0]['ticker']
orderbook_url = f"https://api.elections.kalshi.com/trade-api/v2/markets/{market_ticker}/orderbook"

orderbook_response = requests.get(orderbook_url)
orderbook_data = orderbook_response.json()

print(f"\nOrderbook for {market_ticker}:")
print("YES BIDS:")
for bid in orderbook_data['orderbook']['yes'][:5]:  # Show top 5
    print(f"  Price: {bid[0]}¢, Quantity: {bid[1]}")

print("\nNO BIDS:")
for bid in orderbook_data['orderbook']['no'][:5]:  # Show top 5
    print(f"  Price: {bid[0]}¢, Quantity: {bid[1]}")

Working with Large Datasets

The Kalshi API uses cursor-based pagination to handle large datasets efficiently. To learn more about navigating through paginated responses, see our Understanding Pagination guide.

Understanding Orderbook Responses

Kalshi’s orderbook structure is unique due to the nature of binary prediction markets. The API only returns bids (not asks) because of the reciprocal relationship between YES and NO positions. To learn more about orderbook responses and why they work this way, see our Orderbook Responses guide.

Next Steps

Now that you understand how to access market data without authentication, you can:
  1. Explore other public series and events
  2. Build real-time market monitoring tools
  3. Create market analysis dashboards
  4. Set up a WebSocket connection for live updates (requires authentication)
For authenticated endpoints that allow trading and portfolio management, check out our API Keys guide.