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 athttps://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 (Highest temperature in NYC today?). This series tracks the highest temperature recorded in Central Park, New York on a given day. We’ll use the Get Series endpoint.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.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.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:- Explore other public series and events
- Build real-time market monitoring tools
- Create market analysis dashboards
- Set up a WebSocket connection for live updates (requires authentication)