Skip to main content

Documentation Index

Fetch the complete documentation index at: https://pmxt.dev/docs/llms.txt

Use this file to discover all available pages before exploring further.

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.

The Router — cross-venue intelligence

The Router is PMXT’s cross-venue intelligence layer. Search, match, and compare prices across every venue — all from a single PMXT API key:
router = pmxt.Router(pmxt_api_key="pmxt_live_...")

# Search every venue at once
markets = router.fetch_markets(query="fed rate cut")

# Find this market on other venues with confidence scores
matches = router.fetch_market_matches(market_id=markets[0].market_id)

# Compare prices for matched markets across venues
prices = router.fetch_matched_markets(min_difference=0.03)

Cross-venue search

One query fans out across every venue. Results in ~10ms from a shared catalog.

Market matching

Find the same or related market on other venues with relation types, confidence, and reasoning.

Price comparison

Compare bid/ask across venues and find related markets.

Compose with venues

Discover with the Router, trade on venue exchanges. Same schema, same marketId.

Unified venue interface

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

Unified schema

Event / Market / Outcome — the shape that works everywhere.

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.