# Kalshi Scraper (`piotrv1001/kalshi-scraper`) Actor

The Kalshi Scraper extracts prediction markets from Kalshi — market titles, YES/NO prices, implied probabilities, bid/ask, volume, open interest, close dates, resolution rules, plus optional order books and 30-day price history — ideal for odds tracking, forecasting research and arbitrage.

- **URL**: https://apify.com/piotrv1001/kalshi-scraper.md
- **Developed by:** [FalconScrape](https://apify.com/piotrv1001) (community)
- **Categories:** Developer tools, Automation, Other
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 market records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### 🚀 Kalshi Scraper — Prediction Market Odds, Order Books & Price History

Extract live prediction-market data from Kalshi, the CFTC-regulated exchange for trading on real-world events. The **Kalshi Scraper** returns every market's YES/NO prices, implied probability, bid/ask, volume, open interest and resolution rules — optionally with the full order book and 30 days of daily price history — as clean JSON, CSV or Excel.

### ✨ Features

- 📈 **Odds & probabilities**: last price, implied probability, previous price, YES/NO bid and ask for every market.
- 💰 **Liquidity metrics**: all-time volume, 24-hour volume, open interest and liquidity.
- 🗂️ **Filter by category, series or event**: Politics, Economics, Sports, Crypto, Climate… or target exact tickers such as `KXFED` (Fed rate) or `KXHIGHNY` (NYC temperature).
- ⏳ **Open, closed or settled markets**: track live odds or pull resolved markets with their final result.
- 📊 **Order book** (optional): every YES/NO price level with size.
- 🕰️ **Price history** (optional): 30 daily candles with open/high/low/close, volume and open interest.
- 🏆 **Ranked by volume**: the most-traded markets come first, thin markets are skipped via `minVolume`.
- ⚡ **Fast**: scans 100,000+ open markets in about 30 seconds.

### 🛠️ How It Works

1. **Pick a scope** – choose a category, or paste series/event tickers (the first part of any Kalshi market ticker, e.g. `KXFED`). Leave everything default to get the 50 most-traded open markets across all of Kalshi.
2. **Optionally add depth** – turn on **Include order book** and/or **Include price history**.
3. **Run the scraper** – results land in the dataset, ready to download or fetch via API.

### 💵 Pricing

Pay only for what you extract:

| Event                                       | Price              |
| ------------------------------------------- | ------------------ |
| Market record (odds, volume, rules)         | $0.0015 per market |
| Market with order book and/or price history | $0.003 per market  |

### 📊 Sample Output Data

```json
{
    "ticker": "KXFED-26DEC-T3.75",
    "eventTicker": "KXFED-26DEC",
    "seriesTicker": "KXFED",
    "title": "Will the upper bound of the federal funds rate be above 3.75% following the Fed's Dec 9, 2026 meeting?",
    "subtitle": "Above 3.75%",
    "category": "Economics",
    "seriesTitle": "Fed funds rate",
    "status": "active",
    "result": null,
    "marketType": "binary",
    "strikeType": "greater",
    "floorStrike": 3.75,
    "capStrike": null,
    "yesPrice": 0.54,
    "impliedProbability": 54,
    "previousPrice": 0.54,
    "yesBid": 0.52,
    "yesAsk": 0.54,
    "noBid": 0.46,
    "noAsk": 0.48,
    "volume": 23970.49,
    "volume24h": 0,
    "openInterest": 19151.86,
    "liquidity": 0,
    "openTime": "2025-08-06T14:30:00Z",
    "closeTime": "2026-12-09T18:55:00Z",
    "expirationTime": "2026-12-16T19:05:00Z",
    "rules": "If the upper bound of the target federal funds rate published on the Federal Reserve's website is above 3.75% following the Fed's Dec 9, 2026 meeting, then the market resolves to Yes.",
    "rulesSecondary": null,
    "orderbook": {
        "yes": [
            { "price": 0.52, "size": 40 },
            { "price": 0.5, "size": 195 }
        ],
        "no": [
            { "price": 0.46, "size": 37 },
            { "price": 0.45, "size": 2.13 }
        ]
    },
    "priceHistory": [
        {
            "date": "2026-08-25",
            "open": 0.55,
            "high": 0.56,
            "low": 0.55,
            "close": 0.56,
            "volume": 17,
            "openInterest": 19148.86
        },
        {
            "date": "2026-08-26",
            "open": 0.54,
            "high": 0.54,
            "low": 0.54,
            "close": 0.54,
            "volume": 3,
            "openInterest": 19151.86
        }
    ]
}
```

`orderbook` and `priceHistory` appear only when the corresponding option is enabled. Prices are in dollars per contract (0–1); `impliedProbability` is the same number in percent.

### 💡 Use Cases

- **Forecasting & research** – pull crowd probabilities for elections, Fed decisions, inflation prints or climate outcomes.
- **Arbitrage & odds comparison** – compare Kalshi prices against sportsbooks or other prediction markets.
- **Trading signals** – monitor volume spikes, open-interest changes and price moves across thousands of markets.
- **Dashboards & alerts** – schedule runs and pipe the dataset into Google Sheets, a database or a Slack alert.

Track the wisdom of the crowd with **Kalshi Scraper** today! 🚀

# Actor input Schema

## `category` (type: `string`):

Only markets from this Kalshi category. Ignored when series or event tickers are given.

## `seriesTickers` (type: `array`):

Limit to specific Kalshi series, e.g. KXFED (Fed rate), KXHIGHNY (NYC high temp), KXNCAAFSPREAD. The series ticker is the first part of any market ticker and appears in kalshi.com/markets/<series>/… URLs.

## `eventTickers` (type: `array`):

Limit to specific events, e.g. KXLAYOFFSYINFO-26. Returns every market (outcome) of the event.

## `status` (type: `string`):

Open = currently tradable. Closed = trading ended, awaiting result. Settled = resolved with a final result.

## `minVolume` (type: `integer`):

Skip thin markets below this all-time traded volume. Results are ranked by volume, highest first.

## `includeOrderbook` (type: `boolean`):

Attach the live YES/NO order book (price levels and sizes) to every market. Adds cost per market, so it is off by default.

## `includeHistory` (type: `boolean`):

Attach 30 days of daily candles (open/high/low/close, volume, open interest) to every market. Adds cost per market, so it is off by default.

## `maxItems` (type: `integer`):

Maximum number of markets to return.

## Actor input object example

```json
{
  "category": "all",
  "status": "open",
  "minVolume": 1000,
  "includeOrderbook": false,
  "includeHistory": false,
  "maxItems": 50
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/kalshi-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/kalshi-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call piotrv1001/kalshi-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,piotrv1001/kalshi-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/z5FouwwUvSitk07Hq/builds/9QfY23kIINL4TYEzi/openapi.json
