Match odds
A
GET
/v1/matches/{id}/odds
Both price snapshots, volume and overround
The exchange market for one match: the three-way price at kickoff, the half-time snapshot where it exists, implied probability for each outcome, the overround, and matched volume.
The half-time price is not carried on every match. The coverage figures on each competition and season give the exact share for the rows you are asking for.
Plan
This endpoint needs Archive.
Calling it on a lower plan returns a 403 naming the plan it needs and
a link to pricing, never a bare refusal.
Parameters
match_id
string
path
required
The match id. Stable across re-imports: what you store today still resolves later. e.g.
mt_1JK5QJ9
Returns
data.match_id
string
Our id for the match. Stable: what you store today still resolves later.
data.home_team_name
string
The home side's name.
data.away_team_name
string
The away side's name.
data.kickoff
object
Kickoff.
data.kickoff.home
object
Home.
data.kickoff.draw
object
Draw.
data.kickoff.away
object
Away.
data.half_time
object
Half time.
data.half_time.home
object
Home.
data.overround
number
Overround.
data.matched_kickoff_volume
empty in this example
Matched kickoff volume.
data.market_id
empty in this example
Market: our id, stable.
meta.data_as_of
string
When the data behind this answer was last brought up to date.
meta.request_id
string
This request's id, to quote to support.
Request
curl "https://api.footballsoccerapi.com/v1/matches/mt_1JK5QJ9/odds" \ -H "X-API-Key: $FSAPI_KEY"
const res = await fetch("https://api.footballsoccerapi.com/v1/matches/mt_1JK5QJ9/odds", { headers: { "X-API-Key": process.env.FSAPI_KEY } }); const { data, meta } = await res.json();
import os, requests r = requests.get( "https://api.footballsoccerapi.com/v1/matches/mt_1JK5QJ9/odds", headers={"X-API-Key": os.environ["FSAPI_KEY"]}, ) data = r.json()["data"]
$ch = curl_init("https://api.footballsoccerapi.com/v1/matches/mt_1JK5QJ9/odds"); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ["X-API-Key: {$key}"], ]); $data = json_decode(curl_exec($ch), true)["data"];
Example response
A real row from the archive, fetched when this page rendered. Run it against your own key below.
200 OK
application/json
{
"data": {
"match_id": "mt_28QVFGW",
"home_team_name": "Once Caldas",
"away_team_name": "Alianza Valledupar",
"kickoff": {
"home": {
"price": 1.58,
"implied": 63.3
},
"draw": {
"price": 3.7,
"implied": 27
},
"away": {
"price": 6.25,
"implied": 16
}
},
"half_time": {
"home": {
"price": null
}
},
"overround": 1.0632,
"matched_kickoff_volume": null,
"market_id": null
},
"meta": {
"data_as_of": "2026-10-29T04:32:57Z",
"request_id": "01J9QW3C7M4KX2VB"
}
}
Run it live
Paste your key and fire the real request. The key is kept in this browser only and never sent anywhere but the API.