Back to home

Prediction market data
via SDK, API, SQL & Parquet

Multiple ways to access clean, cross-platform data — pull it into a dataframe with the Python SDK, query it in ClickHouse SQL, fetch via REST, or export Parquet — including the historical order book no real-time feed keeps.

Get Started
REST API

Simple, powerful API

RESTful endpoints for markets, trades, orderbooks, and historical data. Consistent response format across all platforms. Paginated, filterable, and fast.

  • Unified schema — same format across all platforms
  • Filter by platform, category, date range, and more
  • Bearer-token auth — one key across every endpoint
GET/api/v1/markets
200 OK
{
  "data": [
    {
      "id": "06960165-09b7-55bc-bf39-d639e854e474",
      "platform": "POLYMARKET",
      "title": "BTC above $100k?",
      "status": "ACTIVE",
      "outcomes": ["Yes", "No"],
      "closes_at": "2026-12-31"
    }
  ],
  "meta": { "total": 12847, "page": 1 }
}
Orderbook Data · New

Tick-level historical order book

Full bid/ask depth persisted at 1ms — replay the exact state of any market at any past moment. Most providers only stream the book live; we keep the history. Query via SQL or export Parquet.

  • Tick-level full-depth book — replay any past millisecond
  • 1ms resolution — no gaps in your data
  • Up to 2B+ snapshots/day across Polymarket and Kalshi
Granularity Comparison
ProbalyticsUp to 2B+ / day
Competitors20M / day
Direct S3 Access · Coming Soon

Mount the bucket yourself

Parquet exports are live today — pull any slice through the API or the SDK. What's coming is direct S3 bucket access for large-scale ML pipelines: the same files, partitioned by date and platform, read straight from your own jobs with no export step.

  • Parquet exports available today via the API and Python SDK
  • Works with Spark, DuckDB, Polars, and pandas
  • Coming soon: read the bucket directly, no export step
s3://probalytics-data/
markets/
trades/
trades/polymarket/2026/
2026-03-01.parquet
847 MB
2026-03-02.parquet
912 MB
2026-03-03.parquet
891 MB
Python SDK

Three lines to a dataframe

The probalytics package talks to ClickHouse for you and returns Polars or pandas dataframes. Load markets as typed models, then pull that market's fills or full-depth order book straight off the model.

  • pip install probalytics — Python 3.11+
  • Markets as typed Pydantic models, fills and books as dataframes
  • Polars by default, pandas with frame="pandas"
  • Escape-hatch client.query() for arbitrary read-only SQL
quickstart.py
# pip install probalytics
from probalytics import ProbalyticsClient

with ProbalyticsClient.from_env() as client:
    markets = client.markets(
        platform=['POLYMARKET', 'KALSHI'],
        status='ACTIVE',
        limit=100,
    )

    # Every fill, as a Polars dataframe
    fills = markets[0].fills(
        start_time='2026-03-15T00:00:00Z',
        end_time='2026-03-16T00:00:00Z',
    )

print(markets[0].title, fills.height)
One unified schema across every venue SDK on GitHub →
SQL Access

Query with SQL

Connect directly to our ClickHouse cluster from your browser or any SQL client. Run complex analytical queries on billions of rows in milliseconds.

  • In-browser SQL console — no setup required
  • Connect via HTTPS or native ClickHouse protocol
  • Sub-second queries across all historical data
DBeaverDataGripMetabaseGrafana
SQL Console
ClickHouse
SELECT
  market_id,
  platform,
  AVG(price) as avg_price,
  COUNT(*) as trade_count
FROM fills
WHERE timestamp > now() - INTERVAL 1 HOUR
GROUP BY market_id, platform
ORDER BY trade_count DESC
LIMIT 10
10 rows · 23ms Run Query

FAQ

Frequently asked questions

Which prediction markets does Probalytics cover?

Polymarket and Kalshi are live, including perpetuals on both — full markets, trades, and order book history in one unified schema. Any venue we add slots into the same tables, so your queries keep working unchanged.

How do I access the data?

Four ways from the same warehouse: the probalytics Python SDK (dataframes in three lines), ClickHouse SQL (in-browser console or any SQL client), a REST API, and Parquet exports.

Do you have historical order book data?

Yes. We persist full bid/ask depth at 1ms resolution, so you can replay the exact state of any market at any past moment — something real-time-only feeds can't offer.

How far back does the data go?

Market and trade history goes back to 2020 for Polymarket and 2021 for Kalshi. The 1ms historical order book is captured from November 2025 onward for Polymarket and May 2026 onward for Kalshi.

Can I query Polymarket and Kalshi together?

Yes — one normalized schema lets you join and compare both venues in a single SQL query, with no per-venue ETL.

What export formats are supported?

Query live in SQL, fetch JSON via the REST API, or download Parquet for DuckDB, Polars, Spark, and pandas.

Is there a free trial?

Yes — every paid plan includes a 3-day free trial. The trial covers the last 7 days of data across every venue and access method, so you can test your queries and pipelines end to end before committing to full history.

Ready to get started?

Start building with unified prediction market data today.

Sign up now