Skip to main content
PMXT is a unified API for every major prediction market — Polymarket, Kalshi, Limitless, Smarkets, and 8 more venues. Same SDK methods, same response shape, regardless of which venue you’re talking to. It runs two ways:
  • Locally — the open-source pmxt sidecar runs on your machine. No API key, no external dependency. Your requests go directly to the venues.
  • Hostedapi.pmxt.dev adds a shared catalog, cross-venue search, and you skip running infrastructure. Set an API key and the SDK switches automatically.
The code is identical either way:
import pmxt

# Local: talks directly to Polymarket
poly = pmxt.Polymarket()

# Hosted: talks to api.pmxt.dev (add an API key and that's it)
poly = pmxt.Polymarket(pmxt_api_key="pmxt_live_...")

markets = poly.fetch_markets(query="fed rate cut", limit=5)
for m in markets:
    print(m.title, m.outcomes[0].price)
Swap the venue class — pmxt.Kalshi(...), pmxt.Limitless(...) — and the methods and response shapes stay the same.

What you get

Unified interface for every venue

Same methods, same response shape, every venue. fetch_markets, create_order, fetch_positions work identically whether you’re on Polymarket or Kalshi.

Cross-venue search

The Router searches every venue in a single query and returns ranked, unified results — the foundation for a smart order router for prediction markets.

Fast reads from a shared catalog

PMXT continuously ingests every venue into a Postgres catalog. Reads hit an index instead of fanning out across 11 different APIs.

Same SDK, local or hosted

The pmxt (Python) and pmxtjs (TypeScript) SDKs work identically against localhost or the hosted API. Set one env var to switch.

What you’d build yourself

Without PMXT, getting cross-venue prediction market data means:
  • 11 venue integrations — each with its own auth, pagination, field names, and rate limits. Polymarket uses CLOB token IDs. Kalshi uses tickers. Smarkets uses contract IDs. You normalize all of it.
  • A data pipeline — to ingest, deduplicate, and keep fresh as markets open, resolve, and re-price across every venue.
  • A search layer — because querying 11 APIs sequentially is slow.
  • Ongoing maintenance — every time a venue changes a field name or ships a new endpoint, your integration breaks.
PMXT handles all of that. You write fetch_markets(query="...") and get back clean, unified data.

Get started

Quickstart

API key to working code in 30 seconds.

Router

Cross-venue search and the beginning of smart order routing.

Unified schema

The data shape that works everywhere.

API reference

Every method, with interactive try-it-out.