OddsPapi Sports Odds API Documentation
This documentation provides everything you need to start using the OddsPapi Sports Odds API — a real-time sports data service offering live betting odds, pre-match odds, player props, totals, spreads, and historical odds data from over 300 global bookmakers across 60+ sports. In just a few minutes, you’ll learn how to authenticate with your API key, request tournaments and fixtures, fetch bookmaker odds, and stream real-time line movements through our low-latency WebSocket feed.
Step 1 – Get your API key
Get your API key in your account settings
Step 2 – Get tournaments for a sport
Get the list of tournaments for your favorite sports
Details herecurl "https://api.oddspapi.io/v4/tournaments?sportId=10&apiKey={{YOUR_API_KEY}}"[
{
"tournamentId": 17,
"tournamentSlug": "premier-league",
"tournamentName": "Premier League",
"categorySlug": "england",
"categoryName": "England",
"futureFixtures": 231,
"upcomingFixtures": 0,
"liveFixtures": 0
},
{
"tournamentId": 8,
"tournamentSlug": "laliga",
"tournamentName": "LaLiga",
"categorySlug": "spain",
"categoryName": "Spain",
"futureFixtures": 229,
"upcomingFixtures": 0,
"liveFixtures": 0
},
"{ /* more tournaments... */ }"
]Step 3 – Get upcoming fixtures and odds by tournaments
Get the tournaments ids from step 2 and separate them with commas to get a list of upcoming fixtures and odds from a bookmaker
Use the oddsFormat parameter to show odds in either decimal or American format
curl "https://api.oddspapi.io/v4/odds-by-tournaments?bookmaker=pinnacle&tournamentIds=17,8&apiKey={{YOUR_API_KEY}}"[
{
"fixtureId": "id1000001764618978",
"participant1Id": 3,
"participant2Id": 35,
"sportId": 10,
"tournamentId": 17,
"seasonId": 130281,
"statusId": 0,
"hasOdds": true,
"startTime": "2025-12-08T20:00:00.000Z",
"trueStartTime": null,
"trueEndTime": null,
"updatedAt": "2025-12-02T08:01:48.812Z",
"bookmakerOdds": {
"pinnacle": {
"bookmakerIsActive": true,
"bookmakerFixtureId": "1620599468",
"fixturePath": "https://www.pinnacle.com/en/e/e/e/1620599468/#all",
"markets": {
"101": {
"outcomes": {
"101": {
"players": {
"0": {
"active": true,
"betslip": null,
"bookmakerOutcomeId": "home",
"changedAt": "2025-12-07T22:50:48.515996+00:00",
"limit": 5000,
"playerName": null,
"price": 5.01,
"exchangeMeta": {}
}
}
},
"102": {
"players": {
"0": {
"active": true,
"betslip": null,
"bookmakerOutcomeId": "draw",
"changedAt": "2025-12-07T22:50:48.516257+00:00",
"limit": 5000,
"playerName": null,
"price": 4.32,
"exchangeMeta": {}
}
}
},
"103": {
"players": {
"0": {
"active": true,
"betslip": null,
"bookmakerOutcomeId": "away",
"changedAt": "2025-12-07T22:50:48.516384+00:00",
"limit": 7704,
"playerName": null,
"price": 1.649,
"exchangeMeta": {}
}
}
}
},
"bookmakerMarketId": "line/29/1980/1620128138/3377661430/0/moneyline"
},
"104": {
"outcomes": {
"104": {
"players": {
"0": {
"active": true,
"betslip": null,
"bookmakerOutcomeId": "1620599418",
"changedAt": "2025-12-07T21:33:08.962871+00:00",
"limit": 705,
"playerName": null,
"price": 1.709,
"exchangeMeta": {}
}
}
},
"105": {
"players": {
"0": {
"active": true,
"betslip": null,
"bookmakerOutcomeId": "1620599419",
"changedAt": "2025-12-07T21:33:08.963137+00:00",
"limit": 500,
"playerName": null,
"price": 2.2,
"exchangeMeta": {}
}
}
}
},
"bookmakerMarketId": "1620128138/5608638792/1620599417"
}
}
}
}
},
{
"fixtureId": "id1000000861624232",
"participant1Id": 2820,
"participant2Id": 2849,
"sportId": 10,
"tournamentId": 8,
"seasonId": 130805,
"statusId": 0,
"hasOdds": true,
"startTime": "2025-12-08T20:00:00.000Z",
"trueStartTime": null,
"trueEndTime": null,
"updatedAt": "2025-11-30T14:00:59.994Z",
"bookmakerOdds": {
"pinnacle": {
"bookmakerIsActive": true,
"bookmakerFixtureId": "1620613130",
"fixturePath": "https://www.pinnacle.com/en/e/e/e/1620613130/#all",
"markets": {
"101": {
"outcomes": {
"101": {
"players": {
"0": {
"active": true,
"betslip": null,
"bookmakerOutcomeId": "home",
"changedAt": "2025-12-07T20:45:17.225169+00:00",
"limit": 9986,
"playerName": null,
"price": 1.751,
"exchangeMeta": {}
}
}
},
"102": {
"players": {
"0": {
"active": true,
"betslip": null,
"bookmakerOutcomeId": "draw",
"changedAt": "2025-12-07T20:45:17.225297+00:00",
"limit": 7500,
"playerName": null,
"price": 3.89,
"exchangeMeta": {}
}
}
},
"103": {
"players": {
"0": {
"active": true,
"betslip": null,
"bookmakerOutcomeId": "away",
"changedAt": "2025-12-07T20:45:17.225365+00:00",
"limit": 7500,
"playerName": null,
"price": 4.81,
"exchangeMeta": {}
}
}
}
},
"bookmakerMarketId": "line/29/2196/1620122243/3377596534/0/moneyline"
},
"104": {
"outcomes": {
"104": {
"players": {
"0": {
"active": true,
"betslip": null,
"bookmakerOutcomeId": "1620613118",
"changedAt": "2025-12-07T20:45:15.476236+00:00",
"limit": 848,
"playerName": null,
"price": 1.884,
"exchangeMeta": {}
}
}
},
"105": {
"players": {
"0": {
"active": true,
"betslip": null,
"bookmakerOutcomeId": "1620613119",
"changedAt": "2025-12-07T20:45:15.476405+00:00",
"limit": 773,
"playerName": null,
"price": 1.97,
"exchangeMeta": {}
}
}
}
},
"bookmakerMarketId": "1620122243/5608474224/1620613117"
}
}
}
}
},
"{ /* more fixtures... */ }"
]Host
All requests use the host https://api.oddspapi.io
Authorization
All endpoints require an API key to be passed as a request parameter:
| Parameter | Key | Value |
|---|---|---|
| Authorization | apiKey | {{YOUR_API_KEY}} |
Contact Us
If you have any questions, need assistance, or would like to report an issue, feel free to reach out to us at [email protected].
