Prediction Market Arbitrage Api
Find arbitrage opportunities across Polymarket and Kalshi via AIsa API.
Setup
export AISA_API_KEY="your-key"
Get a key at aisa.one ($0.01/query, pay-as-you-go).
Workflow
Finding arbitrage involves these steps:
- Scan matching markets across platforms (
scanfor bulk,matchfor specific) - Review spreads — the tool calculates price differences automatically
- Verify liquidity — use
prediction_market_client.py orderbooksto check depth before acting
Quick Examples
Scan a sport for arbitrage
# Scan all NBA markets on a date — shows spreads automatically
python3 scripts/arbitrage_finder.py scan nba --date 2025-04-01
Analyze a specific market
# By Polymarket slug
python3 scripts/arbitrage_finder.py match --polymarket-slug <slug>
# By Kalshi ticker
python3 scripts/arbitrage_finder.py match --kalshi-ticker <ticker>
Verify liquidity before acting
# Check orderbook depth on both sides
python3 scripts/prediction_market_client.py polymarket orderbooks --token-id <id>
python3 scripts/prediction_market_client.py kalshi orderbooks --ticker <ticker>
Commands
arbitrage_finder.py — Automated Detection
python3 scripts/arbitrage_finder.py scan <sport> --date <YYYY-MM-DD> [--min-spread <pct>] [--min-liquidity <usd>] [--json]
python3 scripts/arbitrage_finder.py match --polymarket-slug <slug> [--min-spread <pct>] [--min-liquidity <usd>] [--json]
python3 scripts/arbitrage_finder.py match --kalshi-ticker <ticker> [--min-spread <pct>] [--min-liquidity <usd>] [--json]
Sports: nba, nfl, mlb, nhl, soccer, tennis.
prediction_market_client.py — Raw Market Data
Use for manual price checks and deeper analysis.
# Search markets
python3 scripts/prediction_market_client.py polymarket markets --search <kw> --status open --limit 5
python3 scripts/prediction_market_client.py kalshi markets --search <kw> --status open --limit 5
# Get prices (use token_id / market_ticker from markets output)
python3 scripts/prediction_market_client.py polymarket price <token_id>
python3 scripts/prediction_market_client.py kalshi price <market_ticker>
# Cross-platform sports matching
python3 scripts/prediction_market_client.py sports by-date <sport> --date <YYYY-MM-DD>
python3 scripts/prediction_market_client.py sports matching (--polymarket-slug <slug> | --kalshi-ticker <ticker>)
# Orderbook depth
python3 scripts/prediction_market_client.py polymarket orderbooks --token-id <id>
python3 scripts/prediction_market_client.py kalshi orderbooks --ticker <ticker>
Understanding Arbitrage
Arbitrage exists when the combined cost of all mutually exclusive outcomes across platforms is less than 1.0:
"Yes" at
0.40on Polymarket + "No" at0.55on Kalshi = cost0.95, guaranteed payout1.00→ 5.3% profit.
Always verify orderbook depth — a spread without liquidity is not executable.
Security & Permissions
Requires: AISA_API_KEY environment variable.
All operations are read-only via HTTPS GET to api.aisa.one. Arbitrage spreads are calculated locally. No trades executed, no wallets connected, no personal data sent beyond the API key. Every response includes usage.cost and usage.credits_remaining.
Full docs: AIsa API Reference.