Skip to main content
Back to Blog

Prediction Market Arbitrage via API: A Beginner's Tutorial (2025)

9 minPredictEngine TeamTutorial
Prediction market arbitrage via API is the practice of automatically exploiting price differences for the same event outcome across multiple prediction market platforms, generating near-risk-free profits by buying low and selling high simultaneously. Beginners can start with simple Python scripts that compare **Polymarket** and **Kalshi** prices via their public APIs, executing trades when implied probabilities diverge by more than 2-3%. This tutorial walks you through the complete setup—from API credentials to your first automated arbitrage trade. ## What Is Prediction Market Arbitrage? **Arbitrage** in prediction markets works similarly to traditional financial markets: you profit when identical or nearly identical assets trade at different prices. On **Polymarket**, a "Yes" share on "Will Trump win 2024?" might trade at $0.62 (62% implied probability), while **Kalshi** lists the same outcome at $0.58 (58%). Buy the cheaper share, sell the expensive one, and lock in a 4-cent profit per share—regardless of who actually wins. The key difference from manual trading? **API automation** lets you scan hundreds of markets in milliseconds, catching opportunities that disappear within seconds. Human traders simply cannot compete. | Arbitrage Type | Description | Profit Margin | Difficulty | |--------------|-------------|-------------|------------| | Cross-Platform (Polymarket ↔ Kalshi) | Same event, different platforms | 2-5% | Beginner | | Cross-Event (Related Markets) | Correlated outcomes, same platform | 1-3% | Intermediate | | Temporal (Time-Based) | Same market, price swings | 0.5-2% | Advanced | | Synthetic Arbitrage | Combining multiple outcomes | 3-8% | Expert | ## Why Use APIs Instead of Manual Trading? Manual arbitrage faces three insurmountable problems. First, **price discrepancies last 15-60 seconds** on average during volatile periods—barely enough time to log into two platforms. Second, **simultaneous execution** is impossible by hand; you buy on one platform, prices move, and your "risk-free" trade becomes speculative. Third, **scale**: profitable arbitrage requires monitoring 50+ markets continuously, a task no human can sustain. APIs solve all three. They enable **sub-second price scanning**, **atomic execution** (both legs nearly simultaneously), and **24/7 operation** without fatigue. For beginners, this means starting with $500-$2,000 and compounding small edges into meaningful returns. The [AI-Powered Polymarket Trading via API: The 2025 Guide](/blog/ai-powered-polymarket-trading-via-api-the-2025-guide) covers advanced automation strategies, but this tutorial focuses on your foundational setup. ## Getting Your API Credentials: Step-by-Step Before writing code, you need access. Here's the exact process for major platforms: ### Polymarket API Access 1. **Create a Polymarket account** and complete **KYC verification** (required for API access) 2. Navigate to **Settings → API Keys** in your dashboard 3. Generate a **read-only key** first for testing; upgrade to **trading permissions** after verification 4. Store your **API key** and **secret** in environment variables—never hardcode them Polymarket uses **REST APIs** for market data and **WebSocket feeds** for real-time prices. Their **Gamma API** provides market metadata, while **CLOB (Central Limit Order Book)** handles execution. ### Kalshi API Access 1. Register at **Kalshi.com** and complete their **accredited investor verification** (stricter than Polymarket) 2. Request API access via **[email protected]** with your use case description 3. Receive **API key** and **download their OpenAPI specification** 4. Test in **paper trading mode** before live deployment Kalshi's API is more **institutionally oriented**, with stricter rate limits (100 requests/minute for standard accounts vs. Polymarket's 300). ### Alternative Platforms - **PredictIt**: No public API; requires web scraping (legally gray, technically fragile) - **Smarkets**: REST API available for UK/EU users - **[PredictEngine](/)**: Unified API layer abstracting multiple platforms—ideal for beginners wanting one integration point ## Building Your First Arbitrage Scanner Your scanner needs three components: **price fetcher**, **opportunity detector**, and **logger**. Here's a simplified Python framework: ```python import requests import os from dotenv import load_dotenv load_dotenv() POLY_API_KEY = os.getenv('POLY_API_KEY') KALSHI_API_KEY = os.getenv('KALSHI_API_KEY') def get_polymarket_price(market_id): """Fetch best bid/ask for a Polymarket outcome""" url = f"https://clob.polymarket.com/markets/{market_id}" headers = {"POLY_API_KEY": POLY_API_KEY} response = requests.get(url, headers=headers) data = response.json() return { 'bid': float(data['bids'][0]['price']), 'ask': float(data['asks'][0]['price']) } def get_kalshi_price(ticker): """Fetch best bid/ask for Kalshi event""" url = f"https://api.elections.kalshi.com/trade/v2/markets/{ticker}/orderbook" headers = {"Authorization": f"Bearer {KALSHI_API_KEY}"} response = requests.get(url, headers=headers) data = response.json() return { 'bid': float(data['orderbook']['yes'][0]['price']), 'ask': float(data['orderbook']['no'][0]['price']) } def detect_arbitrage(poly_price, kalshi_price, threshold=0.02): """Returns arbitrage opportunity if spread exceeds threshold""" # Buy YES on cheaper, sell YES on more expensive if poly_price['ask'] < kalshi_price['bid'] - threshold: return { 'action': 'BUY_POLY_SELL_KALSHI', 'buy_price': poly_price['ask'], 'sell_price': kalshi_price['bid'], 'profit': kalshi_price['bid'] - poly_price['ask'] } elif kalshi_price['ask'] < poly_price['bid'] - threshold: return { 'action': 'BUY_KALSHI_SELL_POLY', 'buy_price': kalshi_price['ask'], 'sell_price': poly_price['bid'], 'profit': poly_price['bid'] - kalshi_price['ask'] } return None ``` This skeleton illustrates core logic. Production systems need **error handling**, **retry logic**, and **WebSocket subscriptions** for real-time feeds. ## Executing Your First Automated Trade Detection without execution is academic. Here's how to complete the loop: ### Step 1: Validate the Opportunity Before committing capital, verify: - **Market expiration alignment**: Both markets resolve at identical times? - **Outcome definition match**: "Trump wins" means the same thing on both platforms? - **Liquidity check**: Can you execute your desired size without moving the price? ### Step 2: Size Your Position Begin with **$50-$100 per leg** ($100-$200 total exposure). Calculate: - **Maximum position**: 5% of your bankroll per trade - **Minimum profit threshold**: $2-$5 gross profit after fees - **Fee impact**: Polymarket charges ~0% (gas fees only); Kalshi charges **0.5% per trade** ### Step 3: Execute Simultaneously Use **asyncio** for near-parallel execution: ```python import asyncio import aiohttp async def execute_arbitrage(opportunity, size): async with aiohttp.ClientSession() as session: # Fire both orders simultaneously poly_task = place_poly_order(session, 'buy', size, opportunity['buy_price']) kalshi_task = place_kalshi_order(session, 'sell', size, opportunity['sell_price']) results = await asyncio.gather(poly_task, kalshi_task, return_exceptions=True) # Handle partial fills or failures if any(isinstance(r, Exception) for r in results): await emergency_hedge(results) # Close open leg ``` ### Step 4: Log and Reconcile Every trade needs **post-execution verification**: - Confirm both legs filled - Calculate actual vs. expected profit - Update running **P&L spreadsheet** The [AI Agent Cross-Platform Arbitrage: Risk Analysis Guide](/blog/ai-agent-cross-platform-arbitrage-risk-analysis-guide) details failure modes and hedging strategies for when one leg fails to execute. ## Managing Risk: What Can Go Wrong "Risk-free" arbitrage has risks. Beginners underestimate these: | Risk | Probability | Mitigation | |------|-------------|------------| | Execution lag (one leg fills, other doesn't) | 5-15% | Start with small size; use limit orders | | Market resolution discrepancy | 2-5% | Verify outcome definitions character-by-character | | Platform downtime during trade | 1-3% | Maintain emergency manual hedging capability | | Smart contract failure (Polymarket) | <1% | Diversify across platforms | | Regulatory freeze (Kalshi) | <1% | Keep 50% funds in stablecoins | **Settlement risk** is particularly insidious. In November 2024, a **Senate race market** on Polymarket resolved differently than Kalshi's equivalent due to **recount timing disputes**—arbitrageurs who hadn't verified resolution criteria lost 8-12% on "winning" trades. The [Senate Race Predictions With Limit Orders: A Beginner's Tutorial](/blog/senate-race-predictions-with-limit-orders-a-beginners-tutorial) demonstrates how limit order discipline prevents adverse selection in volatile political markets. ## Scaling Your Operation: From $1K to $10K Once you've executed 20+ profitable trades manually via API, consider scaling: ### Infrastructure Upgrades - **Colocate your server**: AWS **us-east-1** (Virginia) reduces latency to Polymarket's servers by 20-40ms versus West Coast - **WebSocket feeds**: Replace REST polling with streaming price updates - **Database logging**: PostgreSQL for trade history, Redis for opportunity caching ### Strategy Evolution - **Multi-leg arbitrage**: Combine [Prediction Market Liquidity Sourcing: $10K Portfolio Quick Reference](/blog/prediction-market-liquidity-sourcing-10k-portfolio-quick-reference) techniques to access deeper pools - **Cross-asset hedging**: Offset prediction market exposure with **options** or **perpetual futures** on crypto exchanges - **Machine learning filtering**: Train models to predict which opportunities will persist long enough to execute For mobile monitoring, the [Algorithmic Science & Tech Prediction Markets on Mobile: A 2024 Guide](/blog/algorithmic-science-tech-prediction-markets-on-mobile-a-2024-guide) shows how to manage positions without being desk-bound. ## Frequently Asked Questions ### What programming language is best for prediction market arbitrage APIs? **Python** dominates for beginners due to excellent **asyncio** support, abundant **HTTP client libraries**, and the **pandas** ecosystem for analysis. **JavaScript/TypeScript** works well for WebSocket-heavy implementations. **Rust** offers 10-20% latency improvements for high-frequency operations but has steeper learning curves. ### How much capital do I need to start prediction market arbitrage? **$500-$1,000** is sufficient for learning and small profits. **$5,000-$10,000** enables meaningful returns after fees—expect **$50-$200 monthly** at $1K scale, scaling to **$500-$2,000** at $10K with mature systems. The [Algorithmic NFL Season Predictions: How to Deploy a $10K Portfolio](/blog/algorithmic-nfl-season-predictions-how-to-deploy-a-10k-portfolio) illustrates capital deployment across multiple strategies. ### Are prediction market arbitrage profits taxable? In the **United States**, arbitrage profits are typically **ordinary income**, not capital gains, because holding periods are minutes not years. **Section 1256 contracts** (futures-style) receive 60/40 treatment, but prediction markets generally don't qualify. Consult a **crypto-specialized CPA**; platforms issue **1099s** inconsistently. ### What happens if one platform suspends trading mid-arbitrage? This is **leg risk**—your primary exposure. If you've bought on Platform A and Platform B freezes before you sell, you're **directionally exposed**. Mitigation: use **smaller position sizes**, maintain **stop-loss orders** where supported, and diversify across **3+ platforms** so no single suspension devastates your book. ### How do fees impact arbitrage profitability? **Fee math is unforgiving**. Kalshi's **0.5% per leg** means **1% round-trip**. Polymarket has **zero trading fees** but **gas costs** (typically **$0.50-$3** per transaction on Polygon). An opportunity showing **2% gross spread** becomes **0.5-1% net**—barely worth the operational complexity. Target **>3% gross spreads** for sustainable operations. ### Can I arbitrage prediction markets without coding? **Semi-automated tools** exist. **[PredictEngine](/)** offers **no-code arbitrage alerts** that ping you when spreads exceed your threshold—you execute manually. **Zapier + Google Sheets** integrations can scrape prices without custom code. However, **pure manual execution** captures <10% of available opportunities due to speed constraints. ## Tools and Resources for Continued Learning | Resource | Purpose | Cost | |----------|---------|------| | Polymarket CLOB API Docs | Order execution | Free | | Kalshi API Reference | Market data & trading | Free | | PredictEngine | Unified multi-platform API | Freemium | | [Reinforcement Learning Prediction Trading via API: 5 Approaches Compared](/blog/reinforcement-learning-prediction-trading-via-api-5-approaches-compared) | Strategy evolution | Free (blog) | | [Advanced Market Making on Prediction Markets: An Institutional Guide](/blog/advanced-market-making-on-prediction-markets-an-institutional-guide) | Professional techniques | Free (blog) | ## Your Next Steps: From Tutorial to Trading You've now built the mental model and technical foundation for **prediction market arbitrage via API**. The path forward is deliberate practice: 1. **Open accounts** on **Polymarket** and **Kalshi** this week 2. **Request API access** and test with **read-only endpoints** 3. **Deploy the scanner code** above on a **$5/month DigitalOcean droplet** 4. **Paper trade** for 2 weeks, logging every detected opportunity 5. **Go live with $100** when your paper tracking shows consistent 2%+ spreads Arbitrage is a **volume game with thin margins**—patience and precision beat aggression. The traders who compound $1,000 into $10,000 in 12 months aren't finding home runs; they're executing **200+ small, high-probability trades** with mechanical discipline. Ready to eliminate platform complexity? **[PredictEngine](/)** provides a **unified API** connecting Polymarket, Kalshi, and emerging platforms—with **pre-built arbitrage detection**, **risk management guardrails**, and **institutional-grade execution infrastructure**. Start your free tier today and execute your first cross-platform arbitrage before the week ends. --- *Last updated: January 2025. Prediction markets involve risk of loss; this tutorial is educational not financial advice. Verify all API documentation against current platform specifications before deploying capital.*

Ready to Start Trading?

PredictEngine lets you create automated trading bots for Polymarket in seconds. No coding required.

Get Started Free

Continue Reading

Ready to Start Trading?

PredictEngine lets you create automated trading bots for Polymarket in seconds. No coding required.

Get Started Free