curl --request GET \
--url 'https://v5.oddspapi.io/en/fixtures/odds/clv?apiKey='import requests
url = "https://v5.oddspapi.io/en/fixtures/odds/clv?apiKey="
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://v5.oddspapi.io/en/fixtures/odds/clv?apiKey=', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://v5.oddspapi.io/en/fixtures/odds/clv?apiKey=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://v5.oddspapi.io/en/fixtures/odds/clv?apiKey="
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://v5.oddspapi.io/en/fixtures/odds/clv?apiKey=")
.asString();require 'uri'
require 'net/http'
url = URI("https://v5.oddspapi.io/en/fixtures/odds/clv?apiKey=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"fixtureId": "id1400003160574219",
"status": {
"live": false,
"statusId": 2,
"statusName": "Finished"
},
"sport": {
"sportId": 14,
"sportName": "American Football"
},
"tournament": {
"tournamentId": 31,
"tournamentName": "NFL",
"categoryName": "USA"
},
"season": {
"seasonId": null,
"seasonName": null,
"seasonRound": null
},
"venue": {
"venueId": null,
"venueName": null,
"venueLocation": null
},
"startTime": 1766685600,
"trueStartTime": "2025-12-25T18:00:17.744256+00:00",
"trueEndTime": "2025-12-25T21:09:09.345372+00:00",
"participants": {
"participant1Id": 4423,
"participant1RotNr": null,
"participant1Name": "Minnesota Vikings",
"participant1ShortName": "Vikings",
"participant1Abbr": null,
"participant2Id": 4419,
"participant2RotNr": null,
"participant2Name": "Detroit Lions",
"participant2ShortName": "Lions",
"participant2Abbr": null
},
"scores": {},
"clock": {
"currentPeriod": null,
"currentTime": null,
"remainingTime": null,
"remainingTimeInPeriod": null,
"stopped": null
},
"expectedPeriods": 4,
"periodLength": 15,
"externalProviders": {},
"odds": {
"bet365": {
"id1400003160574219:bet365:14198:0": {
"clv": {
"bookmaker": "bet365",
"outcomeId": 14198,
"playerId": 0,
"price": 1.952,
"priceFractional": "",
"priceAmerican": 0,
"active": true,
"limit": null,
"changedAt": 1766361894121
},
"olv": {
"bookmaker": "bet365",
"outcomeId": 14198,
"playerId": 0,
"price": 1.952,
"priceFractional": "",
"priceAmerican": 0,
"active": true,
"limit": null,
"changedAt": 1765975761422
}
}
}
}
}Fixture Odds CLV
Get opening vs closing line values (OLV/CLV) for a fixture.
Lookup mode: required fixtureId + optional bookmakers OR optional oddsIds.
curl --request GET \
--url 'https://v5.oddspapi.io/en/fixtures/odds/clv?apiKey='import requests
url = "https://v5.oddspapi.io/en/fixtures/odds/clv?apiKey="
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://v5.oddspapi.io/en/fixtures/odds/clv?apiKey=', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://v5.oddspapi.io/en/fixtures/odds/clv?apiKey=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://v5.oddspapi.io/en/fixtures/odds/clv?apiKey="
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://v5.oddspapi.io/en/fixtures/odds/clv?apiKey=")
.asString();require 'uri'
require 'net/http'
url = URI("https://v5.oddspapi.io/en/fixtures/odds/clv?apiKey=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"fixtureId": "id1400003160574219",
"status": {
"live": false,
"statusId": 2,
"statusName": "Finished"
},
"sport": {
"sportId": 14,
"sportName": "American Football"
},
"tournament": {
"tournamentId": 31,
"tournamentName": "NFL",
"categoryName": "USA"
},
"season": {
"seasonId": null,
"seasonName": null,
"seasonRound": null
},
"venue": {
"venueId": null,
"venueName": null,
"venueLocation": null
},
"startTime": 1766685600,
"trueStartTime": "2025-12-25T18:00:17.744256+00:00",
"trueEndTime": "2025-12-25T21:09:09.345372+00:00",
"participants": {
"participant1Id": 4423,
"participant1RotNr": null,
"participant1Name": "Minnesota Vikings",
"participant1ShortName": "Vikings",
"participant1Abbr": null,
"participant2Id": 4419,
"participant2RotNr": null,
"participant2Name": "Detroit Lions",
"participant2ShortName": "Lions",
"participant2Abbr": null
},
"scores": {},
"clock": {
"currentPeriod": null,
"currentTime": null,
"remainingTime": null,
"remainingTimeInPeriod": null,
"stopped": null
},
"expectedPeriods": 4,
"periodLength": 15,
"externalProviders": {},
"odds": {
"bet365": {
"id1400003160574219:bet365:14198:0": {
"clv": {
"bookmaker": "bet365",
"outcomeId": 14198,
"playerId": 0,
"price": 1.952,
"priceFractional": "",
"priceAmerican": 0,
"active": true,
"limit": null,
"changedAt": 1766361894121
},
"olv": {
"bookmaker": "bet365",
"outcomeId": 14198,
"playerId": 0,
"price": 1.952,
"priceFractional": "",
"priceAmerican": 0,
"active": true,
"limit": null,
"changedAt": 1765975761422
}
}
}
}
}Authorizations
Your API key (query-based auth for v5).
Query Parameters
Single fixture ID (e.g. id1400003160574219).
Comma/space-separated bookmaker slugs (default: all).
Optional: comma/space-separated oddsIds to restrict the response.
Response
Returns FixtureClvResponse (fixture meta + OLV/CLV pairs)
Fixture identifier: {prefix}{sportId}{tournamentId}{nativeId} — see Core Concepts → ID structure.
Lifecycle status of the fixture.
Show child attributes
Show child attributes
Sport reference.
Show child attributes
Show child attributes
Tournament reference.
Show child attributes
Show child attributes
Season reference, when resolved.
Show child attributes
Show child attributes
Venue reference, when known.
Show child attributes
Show child attributes
Epoch seconds (UTC).
Both participants with names, rotation numbers and abbreviations.
Show child attributes
Show child attributes
Score rows keyed by period (result, p1, …).
Show child attributes
Show child attributes
Live match clock, while in play.
Show child attributes
Show child attributes
Native identifiers of this fixture at external providers (betradar, pinnacle, …).
Show child attributes
Show child attributes
Actual start time (ISO 8601), once known — may differ from the scheduled startTime.
Actual end time (ISO 8601), once known.
Number of regular periods expected for this fixture — use it (with periodLength) to interpret period keys per sport/league.
Length of a regular period in minutes.
Per-bookmaker availability and freshness metadata. Contains only bookmakers that currently offer valid realtime odds for this fixture. Present on fixture and odds endpoints; omitted on CLV, historical-odds and settlement responses.
Show child attributes
Show child attributes