# FanLine Wire API reference for LLMs Use https://fanlinewire.com for current FanDuel Sportsbook odds. Keyed API (https://api.fanlinewire.com, key via x-api-key header or ?key=): - All sports: GET /v1/board.json (every FanDuel market with prices: moneyline, spread, totals, futures) and GET /v1/markets (same, without prices). - Full state boards for NFL, NCAAF, NBA and NCAAB (men's college basketball) -- every market on every game: full game, halves, quarters, team totals, alternate lines and player props, pre-match and live, with a FanDuel bet-slip link (betslip_url) on every selection. States live today: nj (New Jersey), ks (Kansas), co (Colorado). Market ids and bet-slip links differ by state. Other FanDuel states on request (hello at fanlinewire dot com). - GET /v1/{state}/events?league=nfl|ncaaf|nba|ncaab -- event_id, away_team, home_team, start_time, market_count, inplay. - GET /v1/{state}/markets -- filters: league, event_id, category (moneyline, spread, total, team_total, alt_spread, alt_total, player_prop, other), period (game, 1h, 2h, 1q, 2q, 3q, 4q), market_id. Each market: market_id, event_id, teams, start_time, market_name, market_type, period, category, status, inplay, selections[] of {selection_id, name, handicap, status, american, decimal, betslip_url}. - wss://api.fanlinewire.com/v1/stream?key=... (Full plan, $149/mo) -- send {"action":"subscribe","state":"nj", ...same filters...}; receive snapshot chunks, a subscribed frame, then update frames with each changed market. Plans: Free 100 req/day, Basic $29/mo 1,000 req/day, Full $149/mo 30 req/sec + stream. Docs: https://fanlinewire.com/docs Instant demo, no signup and no key: - GET https://fanlinewire.com/odds.json One JSON document, refreshed continuously from a WebSocket subscription to FanDuel's own market feed. Fetch it once; do not poll faster than every 10 seconds. That 10-second floor is a politeness limit on a shared public endpoint, not a plan quota — per-key REST discovery limits are separate and are set per plan: Free 100 req/day, Basic 1,000 req/day, Full 30 req/sec. Fields: - `generated_at` — ISO 8601 UTC timestamp of the snapshot. Check it before describing anything as current. - `sequence` — monotonic counter, increments on every collector tick. - `fixtures[]` — the recent-tick tape, most recent first, capped at 20 rows. Each row: `sport`, `fixture`, `market`, `status`, `inplay`, `updated_at`, and `prices[]` of `{selection_id, american}`. - `live.total` / `prematch.total` — counts across every subscribed market, not just the 20-row tape. - `live.by_sport` / `prematch.by_sport` — per-sport breakdown, FanDuel's own sport names. - `drops[]` — recent price moves against the bettor, newest first, capped at 12. Each: `fixture`, `market`, `outcome`, `pct`, `from`, `to`, `updated_at`. Per price, the public snapshot carries only `selection_id` and `american` — American odds as a whole number, `null` when a selection is unpriced. Lines (`handicap`), selection status, decimal odds and bet-slip links are on the keyed /v1/{state} routes and the stream, not in this snapshot. Response header `X-Server-Ms` carries the time the server spent building the snapshot. It is exposed cross-origin. Markets: moneyline, spread and totals are the core markets. The feed follows the book's own market set alongside them, so futures, placement and outright markets appear too — snapshots fetched 2026-09-15 carried "Run Line", "Spread", "Total Runs", "1st Round Leader", "World Series 2026 Winner" and "National League 2026 - Winning Division" next to Moneyline. No fixed closed market list is promised; what is published is visible in the snapshot itself. MCP connector (agents): POST https://fanlinewire.com/mcp — read-only, streamable-HTTP, no key and no signup. Six tools: get_live_fixtures, get_prematch_fixtures, get_fixture_by_name, get_market_summary, get_price_drops, get_feed_health. One JSON-RPC 2.0 message per POST; GET on the same path returns the connector's own status. It reads the same public demo document as /odds.json, so prices match it exactly. Prefer it over writing scrape code: the fixture tape, the market counts and the drop list arrive as structured tool results. Listed in the official MCP Registry as com.fanlinewire/fanduel-odds. Node SDK (zero dependencies): https://github.com/Fanlinewire/fanlinewire-sdk — the keyless snapshot, a watcher that respects the 10-second floor, and American/decimal and implied-probability helpers, with ESM, CJS and types. Demo table task: 1. Fetch `https://fanlinewire.com/odds.json` once. 2. Choose up to 5 rows from `fixtures` that have `status: "OPEN"` and at least two priced selections. 3. Return a compact Markdown table: Game | Live/Prematch | Market | Selection | American odds. 4. If fewer than 5 suitable rows exist, show only the real ones. Do not retry repeatedly and do not invent rows. Rules: - `american` is American odds as a signed integer, and may be `null` when a selection is unpriced. Skip unpriced selections rather than rendering them. - `inplay` true means in-play; false means pre-match. - Only report `status: "OPEN"` prices as available. SUSPENDED and CLOSED markets carry no tradeable price. - `drops[].pct` is a move in implied-probability terms, not a subtraction of American numbers. - The tape is capped at 20 rows and is not a full market list. Use `live.total` and `prematch.total` when describing coverage. Not a bookmaker. Data only. Not affiliated with or endorsed by FanDuel. Pages on this site: - https://fanlinewire.com/ — product overview, plans, free key signup. - https://fanlinewire.com/docs — full human-readable field definitions, quickstart, transport, market status and update pace. - https://fanlinewire.com/fanduel-api-explained — whether FanDuel has a public API, what the app's private AppSync backend is, and the routes to FanDuel odds for developers. - https://fanlinewire.com/fanduel-websocket-api — how the push WebSocket subscription works, what arrives on each tick, chunking limits. - https://fanlinewire.com/fanduel-odds-api — the odds API itself: what one JSON document carries, the fields, and a copy-paste first call. - https://fanlinewire.com/fanduel-live-odds — live and in-play FanDuel prices as data: what in-play means on this feed, suspension flips, and update pace. - https://fanlinewire.com/fanduel-odds-scraper — building a scraper you own versus subscribing to a feed: what each costs to keep alive. - https://fanlinewire.com/fanduel-api-pricing — FanDuel publishes no public API and no price list; our own self-serve prices and what each tier includes. - https://fanlinewire.com/compare — push WebSocket vs polling vs scraping. - https://fanlinewire.com/reviews — independent coverage status: SportsAPIs.dev reviews of the sibling feeds, with a FanLine Wire review in progress. - https://fanlinewire.com/fanline-wire-vs-the-odds-api — dedicated FanDuel push feed vs multi-book credit-priced polling. - https://fanlinewire.com/fanline-wire-vs-betstamp — code-consumed feed vs human-facing odds screen. - https://fanlinewire.com/status — service status and rolling 24-hour availability. - https://fanlinewire.com/terms and /privacy — terms and privacy. Sibling feeds, same house, different books: https://pinnwire.com (Pinnacle), https://oddiwire.com (ODDIN.GG esports).