Skip to content

The public board for one sport

GET
/v1/public/board/{sport}
curl --request GET \
--url https://oddslink.app/v1/public/board/example

Every fixture in the sport’s board window (started up to 4 h ago, or starting within 36 h), each with every book’s main h2h, spread and total. In play first. No API key; cached a few seconds; per-address rate limited; capped at 60 fixtures.

sport
required
string

A board sport key (nfl, nba, mlb, nhl, ncaaf, wnba, mma, soccer, tennis).

The sport’s board.

Media typeapplication/json
object
sport_key
required
string
generated_at
required
string format: date-time
fixtures
required
Array<object>
object
id
required
string
sport_key
required
string
sport_title
string
commence_time
required
string format: date-time
home_team
required
string
away_team
required
string
in_play
required
boolean
bookmakers
required
Array<object>
object
key
required
string
title
required
string
kind
required

sportsbook, exchange or prediction_market today; new kinds may appear.

string
link

A link to this fixture on the bookmaker’s own website. Present only when the bookmaker gives one; the field is absent otherwise, never empty or null. Some bookmakers link to the competition page rather than the single event. This is an event-page link; it does not select an outcome or populate a bet slip.

string format: uri
last_update
string format: date-time
nullable
markets
required

The main rung only, keyed h2h / spreads / totals; a key absent means the book has none.

object
key
additional properties
Array<object>
object
name
required
string
price
required

American odds.

integer
point
number
Example
{
"fixtures": [
{
"bookmakers": [
{
"link": "https://sports.nj.betmgm.com/en/sports/events/carolina-panthers-at-atlanta-falcons-17042931"
}
]
}
]
}
x-requests-used
integer

Requests used this billing period.

x-requests-remaining
integer

Requests remaining this billing period.

x-requests-last
integer

What this one call cost against the allowance (0 for a free call).

X-RateLimit-Limit
integer

This plan’s speed limit, in requests per second.

X-RateLimit-Remaining
integer

Requests left in the current one-second window.

X-RateLimit-Reset
integer

Seconds until the speed-limit window resets.

X-Request-Id
string

This request’s id, for support and for matching against error.request_id.

The sport key does not exist.

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
docs_url
required
string format: uri
request_id
required
string
stored_commence_times

Stored Unix-second choices on AMBIGUOUS_EVENT or INVALID_STORED_COMMENCE_TIME; independent of dateFormat.

Array<integer>
valid_bookmakers

Valid case-sensitive book keys on INVALID_BOOKMAKER.

Array<string>
current_plan

403 only: the plan on the presented key.

string
required_plan

403 only: the lowest plan that includes this request. For history, that depends on how long ago the fixture started as well as on the endpoint.

string
Example
{
"error": {
"code": "UNKNOWN_SPORT",
"message": "Unknown sport key: basketbal_nba",
"docs_url": "https://oddslink.app/docs/errors/#unknown-sport",
"request_id": "req_01hz8k4d4j6z0a5b"
}
}
x-requests-used
integer

Requests used this billing period.

x-requests-remaining
integer

Requests remaining this billing period.

x-requests-last
integer

What this one call cost against the allowance (0 for a free call).

X-RateLimit-Limit
integer

This plan’s speed limit, in requests per second.

X-RateLimit-Remaining
integer

Requests left in the current one-second window.

X-RateLimit-Reset
integer

Seconds until the speed-limit window resets.

X-Request-Id
string

This request’s id, for support and for matching against error.request_id.

Too many board requests from this address.

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
docs_url
required
string format: uri
request_id
required
string
stored_commence_times

Stored Unix-second choices on AMBIGUOUS_EVENT or INVALID_STORED_COMMENCE_TIME; independent of dateFormat.

Array<integer>
valid_bookmakers

Valid case-sensitive book keys on INVALID_BOOKMAKER.

Array<string>
current_plan

403 only: the plan on the presented key.

string
required_plan

403 only: the lowest plan that includes this request. For history, that depends on how long ago the fixture started as well as on the endpoint.

string
Example
{
"error": {
"code": "SPEED_LIMIT",
"message": "Too many board requests; try again in a few seconds",
"docs_url": "https://oddslink.app/docs/errors/#speed-limit",
"request_id": "req_01J8Z5Q2K9V3N7M4"
}
}
x-requests-used
integer

Requests used this billing period.

x-requests-remaining
integer

Requests remaining this billing period.

x-requests-last
integer

What this one call cost against the allowance (0 for a free call).

X-RateLimit-Limit
integer

This plan’s speed limit, in requests per second.

X-RateLimit-Remaining
integer

Requests left in the current one-second window.

X-RateLimit-Reset
integer

Seconds until the speed-limit window resets.

X-Request-Id
string

This request’s id, for support and for matching against error.request_id.

Retry-After
integer

Seconds to wait before retrying on 429 SPEED_LIMIT or 503 ODDS_UNAVAILABLE.

The board could not be read right now; retry shortly.

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
docs_url
required
string format: uri
request_id
required
string
stored_commence_times

Stored Unix-second choices on AMBIGUOUS_EVENT or INVALID_STORED_COMMENCE_TIME; independent of dateFormat.

Array<integer>
valid_bookmakers

Valid case-sensitive book keys on INVALID_BOOKMAKER.

Array<string>
current_plan

403 only: the plan on the presented key.

string
required_plan

403 only: the lowest plan that includes this request. For history, that depends on how long ago the fixture started as well as on the endpoint.

string
Example
{
"error": {
"code": "SNAPSHOT_UNAVAILABLE",
"message": "odds data could not be read right now; retry shortly",
"docs_url": "https://oddslink.app/docs/errors/#snapshot-unavailable",
"request_id": "req_01J8Z5Q2K9V3N7M4"
}
}
x-requests-used
integer

Requests used this billing period.

x-requests-remaining
integer

Requests remaining this billing period.

x-requests-last
integer

What this one call cost against the allowance (0 for a free call).

X-RateLimit-Limit
integer

This plan’s speed limit, in requests per second.

X-RateLimit-Remaining
integer

Requests left in the current one-second window.

X-RateLimit-Reset
integer

Seconds until the speed-limit window resets.

X-Request-Id
string

This request’s id, for support and for matching against error.request_id.