Real-time FanDuel odds.
One simple feed.

FanDuel odds API — live & in-play and pre-match moneyline, spread and totals markets over a push WebSocket, plus REST market discovery. American and decimal odds on every price.

Using an AI agent? Preview live odds with no signup:

Market status flips OPEN ↔ SUSPENDED in real time, and odds arrive as pushes — a burst of ticks while the game is moving, quiet when it is not.

WebSocket

Live push

Subscribes to the markets you choose; price moves arrive as pushes — no polling. See the subscription guide.

REST

Market discovery

One REST call lists the markets you can subscribe to. Start with the discovery endpoint.

Status

OPEN ↔ SUSPENDED

Market status flips live as books pause and reopen. See what the status field carries.

Odds

American + decimal

Both formats ride along on every price. See the payload fields.

Get a free key

Free plan, no card. Full sportsbook board.

Keys are not open yet — the feed is live and you can read it right now with no signup via the public demo snapshot. Leave your address and yours goes out the day keys open. We email the key rather than showing it here, so it is tied to you and not to whoever typed your address.

Pricing VISA AMEX Pay with: Card $

Full sends every price move live — no polling, no daily cap.

Free
REST + sample stream
$0
free forever, no card
Try the feed

For tests and prototypes.

Included REST discoveryQuota TBA Live WebSocketSample SportsFull sportsbook
Get a free key
Volume
Scale
High-frequency
$149
per month
Built for scanners

More markets, more subscriptions.

Included REST discoveryQuota TBA Live WebSocketUnlimited RegionsUS states
Notify me

Pay by card or crypto. Cancel any time.

What you get

FanDuel odds, straight from the source feed.

Moneyline, spread, totals

The three markets that matter, on every covered event.

American + decimal

Both odds formats ride on the same price.

Live & pre-match

In-play and pre-match events on one feed.

OPEN ↔ SUSPENDED

Market status flips live — a useful signal on its own.

Push, not poll

Updates are event-driven: a burst during action, quiet otherwise.

US-region data

State-scoped: nj, ny, pa today.

Questions people ask

What is FanLine Wire?

A data feed for FanDuel Sportsbook odds: a push WebSocket for live prices plus a REST endpoint for market discovery. It is data only — we don't place bets, and we're not a bookmaker.

Which markets are covered?

Moneyline, spread and totals. That's the feed today. If the coverage grows, this page will say so.

Which sports?

The full FanDuel Sportsbook board. The feed is sourced from the sportsbook itself, so coverage follows the book — and its rollout across the full board is underway. This page will be updated as that completes.

Do I get American and decimal odds?

Both. Every price carries an American display value and a decimal value in the same payload.

How do updates arrive?

Over an AWS AppSync GraphQL WebSocket — event-driven and push-based. When a game is live you get a burst of ticks; when nothing is happening, it's quiet. Quiet is normal, not an outage.

Why does a market keep flipping between OPEN and SUSPENDED?

Because the sportsbook suspended and reopened it — typically around a review or a big play. The status field flips live, and that signal is one of the reasons traders watch this feed.

Which regions?

US-region data, scoped by state slug — nj, ny and pa today.

Do you have historical odds?

Not in the feed today. Store what you receive if you want history.

Can I use this for betting models?

That's the intent — a clean, structured, real-time FanDuel price stream. We supply data; what you do with it is yours. See the terms.

Does FanDuel have an official API?

No. FanDuel doesn't offer a public odds API or developer key program — its app runs on a private AppSync backend, and the only signup-form route to FanDuel odds is through third-party feeds like this one. The full picture is on Does FanDuel have an API?

How do I get FanDuel odds in Python?

One call to the public demo snapshot needs no key at all:

import json, urllib.request

snap = json.load(urllib.request.urlopen("https://fanlinewire.com/odds.json"))
print(snap["generated_at"], "|", snap["live"]["total"], "live markets")

For pushed live prices rather than snapshots, subscribe over the WebSocket — see the WebSocket page.