> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kalshi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Quick Start: Market Data

> Learn how to access real-time market data without authentication

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://external-api.kalshi.com/trade-api/v2`.

> [!NOTE]
>
> **Note about the API URL**: Despite the "elections" subdomain, the production Trade API provides access to ALL Kalshi markets - not just election-related ones. This includes markets on economics, climate, technology, entertainment, and more.

> [!NOTE]
>
> 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?](https://kalshi.com/markets/kxhighny/highest-temperature-in-nyc)). This series tracks the highest temperature recorded in Central Park, New York on a given day. We'll use the [Get Series](/api-reference/market/get-series.md) endpoint.

```python Python theme={null}
import requests

# Get series information for KXHIGHNY
url = "https://external-api.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']}")
```

```javascript JavaScript theme={null}
// Get series information for KXHIGHNY
fetch('https://external-api.kalshi.com/trade-api/v2/series/KXHIGHNY')
  .then(response => response.json())
  .then(data => {
    console.log(`Series Title: ${data.series.title}`);
    console.log(`Frequency: ${data.series.frequency}`);
    console.log(`Category: ${data.series.category}`);
  });
```

```curl cURL theme={null}
curl -X GET "https://external-api.kalshi.com/trade-api/v2/series/KXHIGHNY"
```

## 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](/api-reference/market/get-markets.md) endpoint with the series ticker filter to find all active markets. If there are no open markets today, remove `status=open` or use `status=all` to see the full series history.

```python Python theme={null}
# Get all open markets for the KXHIGHNY series
markets_url = f"https://external-api.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_bid_dollars']} | Volume: {market['volume_fp']}")
    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://external-api.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']}")
```

```javascript JavaScript theme={null}
// Get markets for the KXHIGHNY series
async function getSeriesMarkets() {
  // Get all open markets for this series
  const marketsResponse = await fetch('https://external-api.kalshi.com/trade-api/v2/markets?series_ticker=KXHIGHNY&status=open');
  const marketsData = await marketsResponse.json();

  console.log('\nActive markets in KXHIGHNY series:');
  marketsData.markets.forEach(market => {
    console.log(`- ${market.ticker}: ${market.title}`);
    console.log(`  Event: ${market.event_ticker}`);
    console.log(`  Yes Price: $${market.yes_bid_dollars} | Volume: ${market.volume_fp}`);
    console.log();
  });

  // Get details for a specific event if markets exist
  if (marketsData.markets.length > 0) {
    const eventTicker = marketsData.markets[0].event_ticker;
    const eventResponse = await fetch(`https://external-api.kalshi.com/trade-api/v2/events/${eventTicker}`);
    const eventData = await eventResponse.json();

    console.log('Event Details:');
    console.log(`Title: ${eventData.event.title}`);
    console.log(`Category: ${eventData.event.category}`);
  }
}

getSeriesMarkets();
```

> [!NOTE]
>
> You can view these markets in the Kalshi UI at: [https://kalshi.com/markets/kxhighny](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](/api-reference/market/get-market-order-book) endpoint. This snippet assumes you still have the `markets_data` from the previous step. If `markets_data['markets']` is empty, pick a market from a different series or remove the `status=open` filter.

```python Python theme={null}
# Get orderbook for a specific market
# Replace with an actual market ticker from the markets list
if not markets_data['markets']:
    raise ValueError("No open markets found. Try removing status=open or choose another series.")

market_ticker = markets_data['markets'][0]['ticker']
orderbook_url = f"https://external-api.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 price_dollars, count_fp in orderbook_data['orderbook_fp']['yes_dollars'][:5]:  # Show top 5
    print(f"  Price: ${price_dollars}, Quantity: {count_fp}")

print("\nNO BIDS:")
for price_dollars, count_fp in orderbook_data['orderbook_fp']['no_dollars'][:5]:  # Show top 5
    print(f"  Price: ${price_dollars}, Quantity: {count_fp}")
```

```javascript JavaScript theme={null}
// Get orderbook data
async function getOrderbook(marketTicker) {
  const response = await fetch(`https://external-api.kalshi.com/trade-api/v2/markets/${marketTicker}/orderbook`);
  const data = await response.json();

  console.log(`\nOrderbook for ${marketTicker}:`);
  console.log('YES BIDS:');
  data.orderbook_fp.yes_dollars.slice(0, 5).forEach(([priceDollars, countFp]) => {
    console.log(`  Price: $${priceDollars}, Quantity: ${countFp}`);
  });

  console.log('\nNO BIDS:');
  data.orderbook_fp.no_dollars.slice(0, 5).forEach(([priceDollars, countFp]) => {
    console.log(`  Price: $${priceDollars}, Quantity: ${countFp}`);
  });
}
```

## 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](/getting_started/pagination.md) 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](/getting_started/orderbook_responses.md) 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](/getting_started/api_keys.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.