The ccxt for prediction markets. A unified API for accessing prediction market data across multiple exchanges.
Different prediction market platforms have different APIs, data formats, and conventions. pmxt provides a single, consistent interface to work with all of them.
Polymarket
Kalshi
Limitless
Baozi
Myriad
Opinion
Ensure that Node.js is installed and the node command is available on your PATH.
pip install pmxtnpm install pmxtjsIf you're currently using Dome API, pmxt is a drop-in replacement with a unified interface for Polymarket and Kalshi.
Check out pmxt as a Dome API alternative for a detailed migration guide, API comparison, and automatic codemod tool (dome-to-pmxt) to help you transition your code.
# Automatically migrate your codebase npx dome-to-pmxt ./srcPrediction markets are structured in a hierarchy to group related information.
- Event: The broad topic (e.g., "Who will Trump nominate as Fed Chair?")
- Market: A specific tradeable question (e.g., "Will Trump nominate Kevin Warsh as the next Fed Chair?")
- Outcome: The actual share you buy (e.g., "Yes" or "No")
import pmxt api = pmxt.Exchange() # 1. Search for the broad Event events = api.fetch_events(query='Who will Trump nominate as Fed Chair?') fed_event = events[0] # 2. Find the specific Market within that event warsh = fed_event.markets.match('Kevin Warsh') print(f"Price: {warsh.yes.price}")import pmxt from 'pmxtjs'; const api = new pmxt.Exchange(); // 1. Search for the broad Event const events = await api.fetchEvents({ query: 'Who will Trump nominate as Fed Chair?' }); const fedEvent = events[0]; // 2. Find the specific Market within that event const warsh = fedEvent.markets.match('Kevin Warsh'); console.log(`Price: ${warsh.yes?.price}`);pmxt supports unified trading across exchanges.
To trade, you must provide your private credentials during initialization.
exchange = pmxt.Polymarket( private_key=os.getenv('POLYMARKET_PRIVATE_KEY'), proxy_address=os.getenv('POLYMARKET_PROXY_ADDRESS'), # Optional: For proxy trading signature_type='gnosis-safe' # Default ) exchange = pmxt.Kalshi( api_key=os.getenv('KALSHI_API_KEY'), private_key=os.getenv('KALSHI_PRIVATE_KEY') # RSA Private Key )exchange = pmxt.Limitless( api_key=os.getenv('LIMITLESS_API_KEY'), private_key=os.getenv('LIMITLESS_PRIVATE_KEY') # For order signing (EIP-712) )import pmxt import os # Initialize with credentials (e.g., Polymarket) exchange = pmxt.Polymarket( private_key=os.getenv('POLYMARKET_PRIVATE_KEY'), proxy_address=os.getenv('POLYMARKET_PROXY_ADDRESS') ) # 1. Check Balance balance = exchange.fetch_balance() print(f"Available balance: {balance[0].available}") # 2. Fetch markets markets = exchange.fetch_markets(query='Trump') # 3. Place an Order (using outcome shorthand) order = exchange.create_order( outcome=markets[0].yes, side='buy', type='limit', price=0.33, amount=100 ) print(f"Order Status: {order.status}")See the API Reference for detailed documentation and more examples.
Check out the directory for more use cases: