# TheRundown — Full LLM Context This document concatenates the full text of every TheRundown page that an AI agent needs to answer questions about the product, pricing, API endpoints, integration steps, and competitive positioning. Updated 2026-09-02. --- ## 1. Overview **TheRundown** is a B2B sports data API for developers building odds-aware applications. It exposes a unified `event → markets → participants → lines → prices` schema across 22 leagues + 9 season variants and 20+ sportsbooks and exchanges, including BookMaker, BetCRIS, Circa Sports, Heritage Sports, Bet105, Kalshi, Polymarket, Polymarket US, Novig, and ProphetX. Source, sport, and market availability varies; `/api/v2/affiliates` is the current roster. The product wedge against incumbents (OddsJam, OpticOdds, LSports, DonBest, Unabated) is **public pricing + self-serve API key + no sales call**. Many established competitors gate pricing behind a sales form; TheRundown ships a free tier and a public price list. ### Key facts - **Coverage:** 22 leagues + 9 season variants and 550+ market types. - **Data sources:** 20+ sportsbooks and exchanges. - **Sportsbook sources:** BookMaker, BetCRIS, Circa Sports, Heritage Sports, and Bet105 are published integrations. Availability varies by source, sport, and market. - **Exchange-model sources:** Kalshi, Polymarket, Polymarket US, Novig, and ProphetX are published today. Check the affiliates endpoint for the sources currently publishing. - **Performance:** Sub-second across all books. Real-time WebSocket push on the Ultra tier. Reconstruction-grade history with every price change, close, and reopen timestamped. - **Free tier:** 20,000 data points/day, up to 200,000 per UTC calendar month, no credit card, all REST endpoints. - **Tiers:** Free / Starter $49 / Pro $149 / Ultra $399 / Enterprise (contact). ### Audience - Indie developers and quant builders shipping arb / EV / sportsbook side projects - Small fantasy + media tools companies - Sportsbook traders and operator data leads (Enterprise) --- ## 2. Quickstart ### Get a free API key in 30 seconds 1. Visit https://therundown.io/docs/quickstart 2. Click **Get free API key**. 3. Copy the key from the dashboard. No credit card is required. The free tier gives 20,000 data points/day, up to 200,000 per UTC calendar month, across all REST endpoints. ### First request In Python: ```python import os from datetime import datetime, timezone import requests KEY = os.environ["RUNDOWN_KEY"] TODAY = datetime.now(timezone.utc).date().isoformat() URL = f"https://therundown.io/api/v2/sports/4/events/{TODAY}" PARAMS = { "affiliate_ids": "3,19,23", "market_ids": "1,2,3", "main_line": "true", "hide_closed": "true", } r = requests.get( URL, params=PARAMS, headers={"X-TheRundown-Key": KEY}, ) r.raise_for_status() payload = r.json() print(r.headers.get("X-Datapoints"), r.headers.get("X-Datapoints-Breakdown")) print(len(payload.get("events", []))) ``` In Node: ```javascript const today = new Date().toISOString().slice(0, 10); const url = "https://therundown.io/api/v2/sports/4/events/" + today + "?affiliate_ids=3,19,23&market_ids=1,2,3&main_line=true&hide_closed=true"; const headers = { "X-TheRundown-Key": process.env.RUNDOWN_KEY }; const r = await fetch(url, { headers }); if (!r.ok) throw new Error("HTTP " + r.status); const payload = await r.json(); console.log(r.headers.get("x-datapoints"), r.headers.get("x-datapoints-breakdown")); console.log(payload.events.length); ``` In Go: ```go package main import ( "encoding/json" "log" "net/http" "os" "time" ) func main() { today := time.Now().UTC().Format("2006-01-02") req, err := http.NewRequest("GET", "https://therundown.io/api/v2/sports/4/events/"+today, nil) if err != nil { log.Fatal(err) } q := req.URL.Query() q.Set("affiliate_ids", "3,19,23") q.Set("market_ids", "1,2,3") q.Set("main_line", "true") q.Set("hide_closed", "true") req.URL.RawQuery = q.Encode() req.Header.Set("X-TheRundown-Key", os.Getenv("RUNDOWN_KEY")) resp, err := http.DefaultClient.Do(req) if err != nil { log.Fatal(err) } if resp.StatusCode != http.StatusOK { resp.Body.Close() log.Fatalf("HTTP %d", resp.StatusCode) } var payload json.RawMessage if err := json.NewDecoder(resp.Body).Decode(&payload); err != nil { log.Fatal(err) } resp.Body.Close() } ``` cURL: ```bash DATE=$(date -u +%F) URL="https://therundown.io/api/v2/sports/4/events/$DATE?affiliate_ids=3,19,23&market_ids=1,2,3&main_line=true&hide_closed=true" curl --fail-with-body -sS -D response-headers.txt -o snapshot.json "$URL" \ -H "X-TheRundown-Key: $RUNDOWN_KEY" awk 'tolower($1)=="x-datapoints:" {print "Billed data points: " $2}' response-headers.txt jq . snapshot.json ``` ### Authentication Pass `?key=YOUR_API_KEY` as a query parameter, or pass `X-TheRundown-Key: YOUR_API_KEY` as a request header. Both work on every endpoint. ### Response shape ```json { "meta": { "delta_last_id": 11929034100012 }, "events": [ { "event_id": "…", "sport_id": 4, "event_date": "2026-07-22T19:00:00Z", "teams": [ { "name": "Lakers", "is_home": true }, { "name": "Celtics", "is_home": false } ], "markets": [{ "market_id": 1, "name": "moneyline", "participants": [{ "name": "Lakers", "lines": [{ "value": "0", "prices": { "3": { "price": -145 }, "19": { "price": -148 } }}] }] }] } ] } ``` The numeric keys under `prices` are affiliate/data-source IDs. The `/sports`, `/affiliates`, and `/markets` reference endpoints return the lookup tables. Starter and other delayed plans should keep the snapshot narrow and request it only at the cadence their use case needs; every successful snapshot bills its returned rows. Do not seed `/markets/delta` from a delayed response's body `meta.delta_last_id`: the global cursor can be ahead of rows visible through the plan delay. On zero-delay plans only, store `X-Delta-Last-ID` (using body `meta.delta_last_id` only as an older zero-delay fallback), then poll `/api/v2/markets/delta?last_id=…&sport_id=4&market_ids=1,2,3&affiliate_ids=3,19,23`. Store the next cursor and continue while `meta.has_more` is true. Apply each row's `is_main_line` and `closed_at` fields client-side. If a cursor returns 400, bootstrap once and resume. --- ## 3. Endpoints (canonical paths) All endpoints are under `https://therundown.io/api/v2/`. Full OpenAPI 3 spec at `https://docs.therundown.io/openapi.yaml`. | Path | Purpose | |---|---| | `GET /api/v2/sports` | List sports + sport IDs | | `GET /api/v2/affiliates` | List sportsbooks + affiliate IDs | | `GET /api/v2/markets` | List markets (moneyline, spread, total, props, alts) | | `GET /api/v2/sports/{sport_id}/events/{YYYY-MM-DD}` | Events on a date for a sport, with lines | | `GET /api/v2/events/{event_id}` | One event with lines | | `GET /api/v2/markets/delta?last_id=…&sport_id=…` | Zero-delay plans: changed price rows since a market cursor | | `wss://therundown.io/api/v2/ws/markets` | WebSocket push for every line move (Ultra tier) | Common query parameters: - `affiliate_ids=3,19,23` — restrict to specific sportsbooks (comma-separated IDs) - `market_ids=1,2,3` — restrict to specific markets (moneyline=1, spread=2, total=3, …) - `main_line=true` — exclude alt lines - `hide_closed=true` — exclude closed prices from the bootstrap snapshot - `offset={minutes}` — use only with a matching local calendar date and that date's UTC offset; the generic snippets use a UTC date and omit this parameter --- ## 4. Pricing All tiers are listed publicly at https://therundown.io/pricing/api — no quotes, no sales call. | Tier | Price | Data points | Rate limit | Data delay | WebSocket | Notes | |---|---|---|---|---|---|---| | Free | $0 | 20,000/day · 200,000/UTC month | 1 req/sec | 5 min | ❌ | No card. Pre-match only. 3 sportsbooks (DraftKings, FanDuel, BetMGM). | | Starter | $49/mo | 5,000,000/mo | 2 req/sec | 60 sec | ❌ | Live odds from currently published paid-tier sources, 7-day history. Monthly/annual overage requires opt-in; weekly overage is automatic at $0.002/pt. | | Pro | $149/mo | 25,000,000/mo | 5 req/sec | 30 sec | ❌ | +EV calcs, opening/closing lines, 30-day history. Monthly/annual overage requires opt-in; weekly overage is automatic at $0.001/pt. | | Ultra | $399/mo | 100,000,000/mo | 10 req/sec | Real-time | ✅ | WebSocket real-time push, 90-day history, priority support. Monthly/annual overage requires opt-in; weekly overage is automatic at $0.0005/pt. | | Super | $649/mo | 250,000,000/mo | 15 req/sec | Real-time | ✅ | 6-month history, priority support. Monthly/annual overage requires opt-in; weekly overage is automatic at $0.0004/pt. | | Mega | $999/mo | 500,000,000/mo | 20 req/sec | Real-time | ✅ | 1-year history. Monthly/annual overage requires opt-in; weekly overage is automatic at $0.0003/pt. | | Max | $2,499/mo | 2,500,000,000/mo | 50 req/sec | Real-time | ✅ | Unlimited history. Monthly/annual overage requires opt-in; weekly overage is automatic at $0.0001/pt. | | Enterprise | Contact | Custom | Custom | Real-time | ✅ | SLA, dedicated support, custom contracts. | Annual plans are available at a discount. Monthly and annual paid self-serve plans start with overage off, and API access blocks at the hard cap. Per-point overage begins only after explicit opt-in. Opting in without a saved dollar limit creates an initial cap equal to one subscription-period price. New weekly subscriptions start in metered bill mode, so overage is charged automatically at the listed plan rate; without a saved limit, their fallback is 3× the weekly price. The applicable cap is editable in Spend Controls. For odds, one **data point** is one returned participant/outcome × line/value × affiliate/data-source price row. Missing prices are not billed; participants, alternate lines, and data sources each add rows. V2 event snapshot responses additionally bill one event row per event, one score row when present, and another score-category row when live game state is present. `X-Datapoints` is authoritative for the billed total on billed responses. `X-Datapoints-Breakdown` is optional and is not currently emitted by `/api/v2/markets/delta`. The assumption-based safe-main-line vs expanded-snapshot calculator is at https://therundown.io/pricing/api#calculator. --- ## 5. Why TheRundown vs the incumbents ### vs OddsJam / OpticOdds (same parent: Gambling.com Group, acquired January 2025) - **Public pricing.** OddsJam + OpticOdds gate pricing behind a sales form. TheRundown ships a free tier and a price list. - **Self-serve API key.** No sales call required. - **Independent.** Not owned by an affiliate. (OddsJam + OpticOdds are owned by Gambling.com Group, which operates sportsbook affiliate sites.) - **Lawsuit footnote (OpticOdds only):** OpticOdds is named in a data-theft lawsuit filed by Swish Analytics in January 2025 (factual reference: SBC Americas, Jan 2025). ### vs LSports - **Public pricing + self-serve.** LSports is enterprise-only, sales-gated. - **Modern stack.** REST + WebSocket vs LSports' enterprise integration model. - **Free tier.** Try without commitment. ### vs DonBest - **Modern stack.** REST + WebSocket from day one. DonBest still ships XML feeds + FTP for some clients. - **Public pricing.** ### vs Unabated - **API-first.** Unabated is a consumer screen with API access bolted on; TheRundown is API-first. - **Public pricing.** ### vs other self-serve sports-data APIs - **Speed.** TheRundown is sub-second across all books. It offers WebSocket push. Many smaller self-serve providers update every few minutes. - **Coverage.** 20+ sportsbooks and exchanges — including BookMaker, BetCRIS, Circa Sports, Heritage Sports, Bet105, Kalshi, Polymarket, Polymarket US, Novig, and ProphetX — in one unified schema. Availability varies by source, sport, and market. - **Quality.** Reconstruction-grade history with every price change/close/reopen timestamped — most self-serve competitors lose this fidelity. --- ## 6. Common developer questions **Q: How do I get an API key?** A: Visit https://therundown.io/docs/quickstart and click "Get free API key". 30 seconds, no credit card. **Q: What does the free tier include?** A: 20,000 data points/day, up to 200,000 per UTC calendar month. For odds, one point is one returned participant/outcome × line/value × affiliate price row. V2 event snapshot responses also bill event, score, and live-state rows; inspect the billing headers. All REST endpoints. Pre-match lines only (no live in-game). 3 sportsbooks (DraftKings, FanDuel, BetMGM). **Q: How do I authenticate?** A: Pass `?key=YOUR_API_KEY` as a query parameter or `X-TheRundown-Key: YOUR_API_KEY` as a header. **Q: How do I subscribe to real-time updates?** A: WebSocket endpoint `wss://therundown.io/api/v2/ws/markets?key=YOUR_API_KEY` — Ultra tier ($399/mo) and above. (Pro tier has 30-second-delay REST instead of WebSocket push.) **Q: Which paid-tier sportsbook sources are available?** A: Currently published sources include Pinnacle, BookMaker, BetCRIS, Circa Sports, Heritage Sports, and Bet105. The free tier covers DraftKings, FanDuel, and BetMGM. Check `/api/v2/affiliates` for current IDs and integration status because availability varies by source, sport, and market. **Q: What about Kalshi, Polymarket, Polymarket US, Novig, and ProphetX?** A: These exchange-model sources are returned in the same schema as sportsbook lines on paid tiers. Check `/api/v2/affiliates` for currently published sources and use the returned IDs rather than assuming every announced feed is active. **Q: Do you have historical odds data?** A: Yes — Starter has 7-day history, Pro has 30-day, Ultra has 90-day. Every price change/close/reopen is timestamped, so you can backtest models against real history. **Q: What sports / leagues do you cover?** A: 22 leagues + 9 season variants. See `/api/v2/sports` for the current list and IDs. **Q: What languages do you have code examples for?** A: Python, Node.js, Go, cURL. See https://therundown.io/docs/quickstart. **Q: What's the request rate limit?** A: Free: 1 req/sec. Starter: 2 req/sec. Pro: 5 req/sec. Ultra: 10 req/sec. Enterprise: custom. **Q: Is there a Postman collection?** A: The OpenAPI 3 spec at https://docs.therundown.io/openapi.yaml imports into Postman directly. **Q: How do I cancel?** A: Stripe customer portal, accessible from the dashboard. No retention call. --- ## 7. Free utility calculators - https://therundown.io/calculators/no-vig — Free implied-probability calculator - https://therundown.io/calculators/bet-payout — Free bet-payout calculator - https://therundown.io/odds — Free odds screen (no signup required) --- ## 8. Contact + links - API docs: https://docs.therundown.io/ - OpenAPI spec: https://docs.therundown.io/openapi.yaml - Pricing: https://therundown.io/pricing/api - Quickstart: https://therundown.io/docs/quickstart - Compare pages: /compare/oddsjam, /compare/opticodds, /compare/donbest, /compare/jsonodds - Instagram: https://instagram.com/therundown_io - Support: support@therundown.io