Data
How fresh is the data?
Live markets are read from each book's own push feed where it has one and polled where it doesn't. A change is published as one frame the moment the book confirms it, stamped with ts_received and ts_broadcast so you can measure us rather than take our word for it. Prematch boards re-poll on a slower cadence, because prematch prices crawl.
What exactly is normalized?
Events, teams and players get one canonical id across every book, and every odd gets a five-part id: stat, entity, period, bet type, side. A book's own line stays with the book. Two books can price the same odd at different lines and you see both, each with its own ladder, instead of a blended number that matches neither.
Which odds formats do you send?
Decimal in price and the same price as an American string in american, on every cell and every frame. A price of null means the book shows no usable price; we never send 0 for a suspended selection, because 0 silently poisons any average or best-price calculation downstream.
Do you cover live, in-play markets?
Yes, on the same socket and the same endpoints as prematch. Each event carries its phase (prematch, live, ended) and the freshest score, period and clock any book has sent, so a board can render a row without a second data source.
Do you have player props and alternate lines?
Yes. Player props come as one row per player and stat with each book's own line and ladder. Starter includes 3 alternate lines per cell, Pro and above the full ladder. Milestone props (a book quoting 'over 24.5' as '25+') are marked so your under side does not go missing.
Are there deep links?
Selection-level links into the book's bet slip where the book supports it, and event-level links elsewhere. They travel on every cell in REST and on every frame in the stream, so a 'bet now' button never needs a lookup.
Integration
REST or WebSocket?
Both, with the same key. Snapshot the board over REST (every snapshot is stamped with the stream cursor it reflects), open the socket, and apply the frames whose cursor is after that stamp. If the socket drops, reconnect with resume_from and the epoch from the hello frame and you receive exactly what you missed, or a resync_required frame telling you to snapshot again.
Can I subscribe to a subset?
Yes. Send a subscribe message naming leagues, books, market groups (core or player props) and optionally event ids. The server intersects that with your plan and tells you what it dropped. A connection that never subscribes receives everything the plan permits.
What happens when I exceed my rate limit?
Each key has a token bucket that refills at your plan's per-minute rate. Over the limit you get a 429 with the reset time; nothing is queued or silently dropped. /v1/account/usage shows the bucket, today's request count by endpoint and your open sockets, so you can watch it live.
Is there a client library?
The API is plain JSON over HTTPS and a JSON-per-frame WebSocket, so any language works with what it already has. The docs are also published as an OpenAPI document and an llms.txt, which your coding agent can read directly.
Plans & billing
How does the trial work?
7 days, no card. You pick one league, get every sportsbook on it with main lines, 60 requests a minute and one socket. Upgrade from the portal whenever you want and the key keeps working; nothing needs re-issuing.
Can I get a custom plan?
Yes. A plan is nothing more than a set of entitlements: leagues, books, props, ladder depth, request rate, sockets. Tell us the shape of your product and we set it up; billing runs through Stripe like every other plan.
What counts as a request?
One admitted authenticated HTTP call to any /v1 endpoint, whatever it returns. Stream frames are not requests; a socket is metered by connection, not by frame.
Is there an SLA?
Enterprise plans carry a monthly SLA with service credits, agreed per contract. Every plan gets the public status page and the per-book uptime it reports.
Do you offer historical odds?
The change stream is retained for resume on every plan (15 min to 24 h by tier). Queryable odds history is included on Pro for the trailing 7 days; a full archive is an Enterprise item.
Start on the trial. Upgrade when your users do.
One league, every sportsbook, 7 days, no card. The key you get today is the key you scale with.