
One bookmaker's full odds timeline for one game: odds[bookmaker][oddsId][changedAt] = the quote at that moment, every line it offered from opening (Pinnacle on an NBA game: 290 lines, ~100 snapshots each, 2.7 MB). Exactly one bookmaker unless oddsIds are named. 1 request.
1 live route on Web / SEO, from $0.00 per call. Every route below answered our last live test on 2026-10-25; the gateway re-tests them daily.
The upstream price you are metered at, cheapest first. A route without a published price says so.
| Provider | Endpoint | Price |
|---|---|---|
odds-api1RapidAPI listing | Fixtures Odds HistoricalGET fixtures/odds/historical | $0.00$0.0e+00 / 1k calls |
From a real call to the route: odds-api1.
odds.<bookmaker>.<oddsId>.<changedAt>.pricedecimal odds at that timeodds.<bookmaker>.<oddsId>.<changedAt>.mainLinewas the main line thenodds.<bookmaker>.<oddsId>.<changedAt>.limitmaximum stake thenHTTP with your key in x-api-key, or the call_endpoint tool of our MCP server.
| Parameter | Type | Notes | |
|---|---|---|---|
| fixtureId | string · query | required | Single fixture ID.e.g. id1100119575752068 |
| oddsIds | string · query | optional | Optional: comma/space-separated oddsIds to restrict the response. |
| bookmaker | string · query | required | Single bookmaker slug. RULE: If oddsIds is NOT provided, you must pass exactly ONE bookmaker. · default stakee.g. pinnacle |
curl "https://fetchapi.co/api/gw/rapidapi-odds-api1/fixtures/odds/historical?bookmaker=pinnacle&fixtureId=id1100119575752068" \ -H "x-api-key: YOUR_KEY"
call_endpoint("rapidapi-odds-api1.fixtures_odds_historical", {"bookmaker": "pinnacle", "fixtureId": "id1100119575752068"}){
"odds": {},
"clock": {
"stopped": null,
"updatedAt": null,
"currentTime": null,
"currentPeriod": null,
"remainingTime": null,
"remainingTimeInPeriod": null
},
"sport": {
"sportId": 11,
"sportName": "Basketball"
},
"venue": {
"venueId": null,
"venueName": null,
"venueLocation": null
},
"scores": {
"p1": {
"period": "p1",
"updatedAt": "2026-10-22T05:13:49.735972+00:00",
"participant1Score": 20,
"participant2Score": 25
},
"p2": {
"period": "p2",
"updatedAt": "2026-10-22T05:34:01.164378+00:00",
"participant1Score": 22,
"participant2Score": 16
},
"p3": {
"period": "p3",
"updatedAt": "2026-10-22T05:53:10.528834+00:00",
"participant1Score": 11,
"participant2Score": 27
},
"p4": {
"period": "p4",
"updatedAt": "2026-10-22T06:13:41.77278+00:00",
"participant1Score": 16,
"participant2Score": 14
},
"result": {
"period": "result",
"updatedAt": "2026-10-22T06:10:36.643683+00:00",
"participant1Score": 69,
"participant2Score": 82
},
"fulltime": {
"period": "fulltime",
"updatedAt": "2026-10-22T06:13:41.791758+00:00",
"participant1Score": 69,
"participant2Score": 82
}
},
"season": {
"seasonId": null,
"seasonName": null,
"seasonRound": null
},
"status": {
"live": false,
"statusId": 2,
"statusName": "Finished"
},
"fixtureId": "id1100119575752068",
"startTime": 1792645200,
"bookmakers": {},
"tournament": {
"categoryName": "International",
"tournamentId": 1195,
"tournamentName": "Club Friendly Games"
},
"trueEndTime": "2026-10-22T06:12:58.655991+00:00",
"participants": {
"participant1Id": 557812,
"participant2Id": 558046,
"participant1Abbr": "NAT",
"participant1Name": "National Taiwan Sport University",
"participant2Abbr": "UCH",
"participant2Name": "Chien Hsin University of Science and Technology",
"participant1RotNr": null,
"participant2RotNr": null,
"participant1ShortName": "National Taiwan Sport University",
"participant2ShortName": "Chien Hsin University of Science and Technology"
},
"periodLength": 10,
"…": "4 more fields"
}Call it over HTTP or from any MCP client. Each key has a rate limit and a monthly cap; calls are metered at the upstream price.