Introduction
OddsLink is a JSON API for live odds and prices. Every sportsbook, exchange and prediction market we cover is joined onto one shared fixture and returned in one response, in the same shape, whether the price came from a sportsbook’s posted line or an exchange’s resting order book.
What one response looks like
Section titled “What one response looks like”A fixture carries home_team, away_team and is_live (true within the scheduled kickoff
and sport-specific time limit). This flag is time-derived, not confirmed game status; see the
In-play odds guide for delayed-start and finish limitations; each of its bookmakers[] carries markets[];
each market carries outcomes[{name, price, point}]. A few things about that shape are worth
knowing up front:
- A market’s
keyis its family alone, never a period:totalsis alwaystotals. A period market such as the first-5-innings total instead carries a separateperiodfield ({"key": "totals", "period": "f5"}); a full-game market has noperiodfield at all. Ask for periods with theperiodsrequest parameter. The market-key reference explains the worked examples and the full list of periods. - Outcomes are named after the fixture’s teams. On
h2handspreads, a team outcome’snameis exactly the fixture’saway_teamorhome_team, listed away first, then home, thenDrawon a three-way moneyline. priceis one number. Under the defaultoddsFormat=americanit is always an integer; underoddsFormat=decimalit is a decimal number above 1.pointis a decimal number and is absent on a moneyline.sizeis typed. A sportsbook’s posted limit, an exchange’s resting depth, and a prediction market’s contract count are three different quantities and are never rendered the same way; see the Odds guide.last_updatecan benull. That means the book’s latest confirmation time is unavailable, never that the price is old.- Errors are nested under
error, with a stablecode, a humanmessage, adocs_urlpointing back here, and arequest_idfor support.
Where to go next
Section titled “Where to go next”- Quickstart gets a first odds response on the page.
- Authentication covers the
X-API-Keyheader. - The Guides cover the implemented odds and history endpoint families.
- The API Reference in the sidebar is generated straight from the OpenAPI file that also
drives the code samples on this page and on the main site. Examples illustrate the response
shape; discover a current fixture ID through
/eventsbefore calling a live single-fixture route. Recorded history and market coverage depend on what was captured at the time. - Speed limits and Errors and the Reference tables (sport keys, bookmaker keys, market keys, per-book coverage) round out what a client needs to handle every case, not just the happy path.
Each API reference operation states whether it counts against your monthly allowance. The odds request in the Quickstart counts once, regardless of the number of fixtures or books returned.
Covered live soccer and tennis fixtures may include a score with updated_at.
Scores, tennis sets, points and serving always follow the fixture’s
home_team and away_team. Soccer clocks show observed cumulative match time.
Scores are absent when coverage or a fresh observation is unavailable.