The public board for one sport
using System.Net.Http.Headers;var client = new HttpClient();var request = new HttpRequestMessage{ Method = HttpMethod.Get, RequestUri = new Uri("https://oddslink.app/v1/public/board/example"),};using (var response = await client.SendAsync(request)){ response.EnsureSuccessStatusCode(); var body = await response.Content.ReadAsStringAsync(); Console.WriteLine(body);}package main
import ( "fmt" "net/http" "io")
func main() {
url := "https://oddslink.app/v1/public/board/example"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close() body, _ := io.ReadAll(res.Body)
fmt.Println(res) fmt.Println(string(body))
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder() .url("https://oddslink.app/v1/public/board/example") .get() .build();
Response response = client.newCall(request).execute();const url = 'https://oddslink.app/v1/public/board/example';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://oddslink.app/v1/public/board/exampleEvery 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.
Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters”A board sport key (nfl, nba, mlb, nhl, ncaaf, wnba, mma, soccer, tennis).
Responses
Section titled “ Responses ”The sport’s board.
object
object
object
sportsbook, exchange or prediction_market today; new kinds may appear.
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.
The main rung only, keyed h2h / spreads / totals; a key absent means the book has none.
object
object
American odds.
Example
{ "fixtures": [ { "bookmakers": [ { "link": "https://sports.nj.betmgm.com/en/sports/events/carolina-panthers-at-atlanta-falcons-17042931" } ] } ]}Headers
Section titled “Headers”Requests used this billing period.
Requests remaining this billing period.
What this one call cost against the allowance (0 for a free call).
This plan’s speed limit, in requests per second.
Requests left in the current one-second window.
Seconds until the speed-limit window resets.
This request’s id, for support and for matching against error.request_id.
The sport key does not exist.
object
object
Stored Unix-second choices on AMBIGUOUS_EVENT or INVALID_STORED_COMMENCE_TIME; independent of dateFormat.
Valid case-sensitive book keys on INVALID_BOOKMAKER.
403 only: the plan on the presented key.
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.
Example
{ "error": { "code": "UNKNOWN_SPORT", "message": "Unknown sport key: basketbal_nba", "docs_url": "https://oddslink.app/docs/errors/#unknown-sport", "request_id": "req_01hz8k4d4j6z0a5b" }}Headers
Section titled “Headers”Requests used this billing period.
Requests remaining this billing period.
What this one call cost against the allowance (0 for a free call).
This plan’s speed limit, in requests per second.
Requests left in the current one-second window.
Seconds until the speed-limit window resets.
This request’s id, for support and for matching against error.request_id.
Too many board requests from this address.
object
object
Stored Unix-second choices on AMBIGUOUS_EVENT or INVALID_STORED_COMMENCE_TIME; independent of dateFormat.
Valid case-sensitive book keys on INVALID_BOOKMAKER.
403 only: the plan on the presented key.
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.
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" }}Headers
Section titled “Headers”Requests used this billing period.
Requests remaining this billing period.
What this one call cost against the allowance (0 for a free call).
This plan’s speed limit, in requests per second.
Requests left in the current one-second window.
Seconds until the speed-limit window resets.
This request’s id, for support and for matching against error.request_id.
Seconds to wait before retrying on 429 SPEED_LIMIT or 503 ODDS_UNAVAILABLE.
The board could not be read right now; retry shortly.
object
object
Stored Unix-second choices on AMBIGUOUS_EVENT or INVALID_STORED_COMMENCE_TIME; independent of dateFormat.
Valid case-sensitive book keys on INVALID_BOOKMAKER.
403 only: the plan on the presented key.
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.
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" }}Headers
Section titled “Headers”Requests used this billing period.
Requests remaining this billing period.
What this one call cost against the allowance (0 for a free call).
This plan’s speed limit, in requests per second.
Requests left in the current one-second window.
Seconds until the speed-limit window resets.
This request’s id, for support and for matching against error.request_id.