Skip to content

The homepage's featured games

GET
/v1/public/featured
curl --request GET \
--url https://oddslink.app/v1/public/featured

Up to three cards for the homepage: the busiest sports right now (fixtures times books), each with its next big upcoming game (never one in play), moneyline only, five books a card with the best price per side flagged. cards is empty when nothing qualifies. No API key; cached a few seconds; per-address rate limited.

The featured cards, possibly none.

Media typeapplication/json
object
generated_at
required
string format: date-time
cards
required
Array<object>
<= 3 items

One homepage card. columns are the sides in display order: away then home, or for soccer home, Draw, away. Each row’s prices and best follow that order.

object
sport_key
required
string
sport_title
required
string
event_id
required
string
commence_time
required
string format: date-time
home_team
required
string
away_team
required
string
title
required

Short display title

string
market
required

Always “h2h” today.

string
columns
required
Array<object>
object
name
required
string
label
required

Short header for the column.

string
rows
required
Array<object>
<= 5 items
object
key
required
string
title
required
string
kind
required
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 | null
prices
required
Array<number>
best
required
Array<boolean>
more_books
required
integer
Example
{
"cards": [
{
"rows": [
{
"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.

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.