Odds Comparison Prematch

Frequently Asked Questions
Quick Access
Postman Collection XSD Schema
Download
## Odds Comparison Prematch API Overview The Prematch API provides aggregated odds data for a wide variety of pre-match betting markets. Top US bookmakers are available, and return odds for NFL, NBA, MLB, NHL, NCAA Men's Basketball and top soccer leagues. The API is consistent in structure, format, and behavior with the other General Sport APIs. Primary feeds will return books, categories, sports, and tournaments offered. Additional feeds provide a huge selection of pre-match markets broken down by sport, league, and event.
API API Version
Odds Comparison Prematch
Note: Authentication is required for all API calls.
## Odds Comparison Prematch API Map To best utilize the Odds Comparison Prematch API, you will need several parameters to create your API calls. The map below illustrates how you can obtain the parameters you need. >

Example:

>To find 3-way prematch odds for a sport event on a given day: >
  1. Call the Sports resource and make note of the Sport Id for your event
  2. Call the Daily Sport Event Markets for your given date, using the Sport Id
  3. Find the Sport Event Id of your event within the results
  4. Call the Sport Event Markets using your located Sport Event Id
  5. The prematch odds for your event are displayed
  6. Find the "1x2" market within the results
Primary feeds require only a Sport parameter, while other feeds may require dates, IDs or other human-readable parameters to identify the category, sport, sport event or tournament that the feed will describe. The primary feeds provide IDs for categories, competitions and stages. Mapping feeds provide a list of IDs for players, competitions, sport events, teams, and stages which are mapped between General Sport IDs and League Specific IDs. The mapping feeds have a limit of 30,000 results per page. To get additional results you need to use the optional query string parameters “start” and “limit” which are detailed in the affected feeds below. ## Available Markets See the table below for a complete breakdown of every prematch market available.
Market ID/Name Sports Market Structure
1
1x2
American Football
Basketball
Soccer
Team A / Team B / Draw
11
Draw no Bet
Soccer Team A / Team B
14
Handicap
Soccer Team A / Team B / Draw
18
Total
Soccer Team A / Team B
19
Home Total
Ice Hockey Over / Under
20
Away Total
Ice Hockey Over / Under
23
2nd Quarter Betting
Basketball Team A / Team B
26
Total Points Odd/Even
Basketball Over / Under
47
Double Result
American Football
Basketball
Tie / Team A
Tie / Team B
Team A / Team B
Team B / Team A
Team A / Team A
Team B / Team B
60
1st Half - 1x2
American Football
Basketball
Team A / Team B / Draw
64
1st Half - Draw No Bet
American Football
Basketball
Team A / Team B
66
1st Half - Handicap
American Football
Basketball
Team A / Team B
68
1st Half - Total
American Football
Basketball
Over / Under
69
1st Half - Home Total
American Football Over / Under
70
1st Half - Away Total
American Football Over / Under
74
1st Half Total Points
Odd/Even
Basketball Even / Odd
83
2nd Half Betting
American Football Team A / Team B
94
2nd Half Total Points
Odd/Even
Basketball Even / Odd
219
Winner
(incl. overtime)
American Football
220
Will There Be Overtime?
American Football
Basketball
Yes / No
223
Handicap
(incl. overtime)
American Football Team A / Team B
225
Total
(incl. overtime)
American Football
Basketball
Over / Under
227
Home Total
(incl. overtime)
American Football
Basketball
Over / Under
228
Away Total
(incl. overtime)
American Football
Basketball
Over / Under
231
2nd Half Handicap
(incl. overtime)
American Football
Basketball
Team A / Team B
232
2nd Half Total
(incl. overtime)
American Football
Basketball
Over / Under
234
Highest Scoring Quarter
American Football 920: First Quarter
921: Second Quarter
922: Third Quarter
923: Fourth Quarter
924: Equal
235
1st Quarter Betting
American Football
Basketball
Team A / Team B
235
2nd Quarter Betting
American Football
Basketball
Team A / Team B
235
3rd Quarter Betting
American Football
Basketball
Team A / Team B
235
4th Quarter Betting
American Football
Basketball
Team A / Team B
236
1st Quarter Total Points
American Football
Basketball
Over / Under
236
2nd Quarter Total Points
American Football
Basketball
Over / Under
236
3rd Quarter Total Points
American Football
Basketball
Over / Under
236
4th Quarter Total Points
American Football
Basketball
Over / Under
251
Winner
(incl. extra innings)
Baseball Team A / Team B
256
Handicap
(incl. extra innings)
Baseball Team A / Team B
274
Innings 1 to 5 - 1x2
Baseball Team A / Team B / Draw
275
Innings 1 to 5 - Handicap
Baseball Team A / Team B
276
Innings 1 to 5 - Total
Baseball Over / Under
293
2nd Half - 1x2
(incl. overtime)
American Football
Basketball
Team A / Team B / Draw
294
2nd Half - Draw No Bet
(incl. overtime)
American Football
Basketball
Team A / Team B
302
1st Quarter Money Line
American Football
Basketball
Team A / Team B
303
1st Quarter Spread
American Football
Basketball
Team A / Team B
303
2nd Quarter Spread
American Football
Basketball
Team A / Team B
303
3rd Quarter Spread
American Football
Basketball
Team A / Team B
303
4th Quarter Spread
American Football
Basketball
Team A / Team B
304
1st Quarter Total Points
Basketball Even / Odd
304
2nd Quarter Total Points
Basketball Even / Odd
304
3rd Quarter Total Points
Basketball Even / Odd
304
4th Quarter Total Points
Basketball Even / Odd
1124
Innings 1 to 5 - Winner
Baseball Team A / Team B
6022
Will There Be a Safety?
American Football Yes / No
6023
1st Half Result/2nd Half Result
American Football Team A / Tie
Team B / Tie
Team A / Team B
Tie / Team A
Tie / Team B
Team B / Team A
Tie / Tie
Team A / Team A
Team B / Team B
6024
1st Team Touchdown
American Football 4: Team A
5: Team B
10008: No Touchdown
6025
1st Scoring Play
American Football 10002: Team A Safety
10003: Team A Field Goal
10004: Team A Touchdown
10005: Team B Safety
10006: Team B Field Goal
10007: Team B Touchdown
6026
Quarter Of 1st Field Goal
American Football First Quarter
Second Quarter
Third Quarter
Fourth Quarter
10008: No Field Goal
6027
Quarter Of 1st Touchdown
American Football First Quarter
Second Quarter
Third Quarter
Fourth Quarter
10008: No Touchdown
6028
Score All Quarters?
American Football 10009: Team A Yes
10010: Team A No
10011: Team B Yes
10012: Team B No
6029
Total 1st Half Touchdowns
American Football 0, 1 , 2, 3, 4 or more
6030
Total 2nd Half Touchdowns
American Football 0, 1 , 2, 3, 4 or more
6031
1st Half Winning Margin
American Football Team A / Team B
6032
Winning Margin
American Football Team A 1-6 pts
Team A 7-12 pts
Team A 13-18 pts
Team A 19-24 pts
Team A 25-30 pts
Team A 31pts or more
Team B 1-6 pts
Team B 7-12 pts
Team B 13-18 pts
Team B 19-24 pts
Team B 25-30 pts
Team B 31pts or more
8010
1st Half Winning Margin
Basketball Team A / Team B
8011
Winning Margin
Basketball Team A / Team B
## Books Returns a list of configured bookmakers and their IDs.
TTL / Cache: 300 seconds
Update Frequency: As Necessary
Content Type: XML or JSON
Market & Book Info Data Points: Book Id Book Name
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/books.xml?api_key={your_api_key}") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) response = http.request(request) puts response.read_body ``` ```python import http.client conn = http.client.HTTPSConnection("api.sportradar.us") conn.request("GET", "/oddscomparison-prematch/trial/v2/en/books.xml?api_key={your_api_key}") res = conn.getresponse() data = res.read() print(data.decode("utf-8")) ``` ```shell curl -X GET "https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/books.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Books feed by replacing the parameters in the following URL: https://api.sportradar.us/oddscomparison-prematch/`{access_level}`/`{version}`/`{language_code}`/books.`{format}`?api_key=`{your_api_key}` | Parameter | Description | | --------- | ----------- | | `access_level` | Defines the access level of your API key as Production (production) or Trial (trial). | | `version` | Version number of the API you are accessing (Current Version: v2). | | `language_code` | 2 letter code for supported languages

English (en) is the only fully supported language for this API. | | `format` | xml or json. | | `your_api_key` | Your API key. | Return to top ## Competition Mappings Provides competition ID mapping between League Specific and General Sport ID types.
TTL / Cache: 600 seconds
Update Frequency: As Necessary
Content Type: XML or JSON
Mapping Info Data Points: External Id Id
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/competitions/mappings.xml?api_key={your_api_key}") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) response = http.request(request) puts response.read_body ``` ```python import http.client conn = http.client.HTTPSConnection("api.sportradar.us") conn.request("GET", "/oddscomparison-prematch/trial/v2/en/competitions/mappings.xml?api_key={your_api_key}") res = conn.getresponse() data = res.read() print(data.decode("utf-8")) ``` ```shell curl -X GET "https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/competitions/mappings.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Competition Mappings feed by replacing the parameters in the following URL: https://api.sportradar.us/oddscomparison-prematch/`{access_level}`/`{version}`/`{language_code}`/competitions/mappings.`{format}`?api_key=`{your_api_key}` | Parameter | Description | | --------- | ----------- | | `access_level` | Defines the access level of your API key as Production (production) or Trial (trial). | | `version` | Version number of the API you are accessing (Current Version: v2). | | `language_code` | 2 letter code for supported languages

English (en) is the only fully supported language for this API. | | `format` | xml or json. | | `your_api_key` | Your API key. | Return to top ## Competition Schedules Provides scheduling info for all events with odds available in a given competition. Note: Data will be removed from this endpoint 24 hours after the end of a day
Note: Pagination will often be required to pull all data within this feed. By default, the feed will return 200 events.
TTL / Cache: 1 second
Update Frequency: As Necessary
Content Type: XML or JSON
Competitor & Player Info Data Points: Competitor Abbreviation
Competitor Age Group
Competitor Country
Competitor Country Code
Competitor Gender
Competitor Id
Competitor Name
Competitor Qualifier
Competitor Rotation Number
Competitor Virtual
Sport Event Info Data Points: Sport Event Id
Sport Event Replaced By
Sport Event Resume Time
Sport Event Start Time
Sport Event Start Time Confirmed
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/competitions/sr:competition:109/schedules.xml?api_key={your_api_key}") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) response = http.request(request) puts response.read_body ``` ```python import http.client conn = http.client.HTTPSConnection("api.sportradar.us") conn.request("GET", "/oddscomparison-prematch/trial/v2/en/competitions/sr:competition:109/schedules.xml?api_key={your_api_key}") res = conn.getresponse() data = res.read() print(data.decode("utf-8")) ``` ```shell curl -X GET "https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/competitions/sr:competition:109/schedules.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Competition Schedules feed by replacing the parameters in the following URL: https://api.sportradar.us/oddscomparison-prematch/`{access_level}`/`{version}`/`{language_code}`/competitions/`{competition_id}`/schedules.`{format}`?api_key=`{your_api_key}` | Parameter | Description | | --------- | ----------- | | `access_level` | Defines the access level of your API key as Production (production) or Trial (trial). | | `version` | Version number of the API you are accessing (Current Version: v2). | | `language_code` | 2 letter code for supported languages

English (en) is the only fully supported language for this API. | | `competition_id` | Id of a given competition. | | `format` | xml or json. | | `your_api_key` | Your API key. | Return to top ### Optional Query String Parameters >Example including optional query string parameters:
require 'uri'
require 'net/http'
require 'openssl'

url = URI("https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/competitions/sr:competition:109/schedules.xml?api_key={your_api_key}&start=0&limit=50")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
import http.client

conn = http.client.HTTPSConnection("api.sportradar.us")

conn.request("GET", "/oddscomparison-prematch/trial/v2/en/competitions/sr:competition:109/schedules.xml?api_key={your_api_key}&start=0&limit=50")

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
curl -L GET 'api.sportradar.us/oddscomparison-prematch/trial/v2/en/competitions/sr:competition:109/schedules.xml?api_key={your_api_key}&start=0&limit=50'
In addition to the URL parameters listed above, you can paginate the market information with one or more of the following optional query string parameters.
Note: Optional query string parameters must be added after your API key with an ampersand (&).
Replace placeholders with the following query parameters: | Parameter | Description | | --------- | ----------- | | `start` | Number to start the list of results from.
Example: start=0 | | `limit` | Number to limit the number of results. Minimum value is 1, maximum value is 200.
Example: limit=50 | Return to top ## Competitor Mappings Provides competitor ID mapping between League Specific and General Sport ID types.
TTL / Cache: 600 seconds
Update Frequency: As Necessary
Content Type: XML or JSON
Mapping Info Data Points: External Id Id
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/competitors/mappings.xml?api_key={your_api_key}") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) response = http.request(request) puts response.read_body ``` ```python import http.client conn = http.client.HTTPSConnection("api.sportradar.us") conn.request("GET", "/oddscomparison-prematch/trial/v2/en/competitors/mappings.xml?api_key={your_api_key}") res = conn.getresponse() data = res.read() print(data.decode("utf-8")) ``` ```shell curl -X GET "https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/competitors/mappings.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Competitor Mappings feed by replacing the parameters in the following URL: https://api.sportradar.us/oddscomparison-prematch/`{access_level}`/`{version}`/`{language_code}`/competitors/mappings.`{format}`?api_key=`{your_api_key}` | Parameter | Description | | --------- | ----------- | | `access_level` | Defines the access level of your API key as Production (production) or Trial (trial). | | `version` | Version number of the API you are accessing (Current Version: v2). | | `language_code` | 2 letter code for supported languages

English (en) is the only fully supported language for this API. | | `format` | xml or json. | | `your_api_key` | Your API key. | Return to top ### Optional Query String Parameters >Example including optional query string parameters:
require 'uri'
require 'net/http'
require 'openssl'

url = URI("https://api.sportradar.us/oddscomparison-prematch/trial/v2/en/competitors/mappings.xml?api_key={your_api_key}&start=0&limit=1000")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
import http.client

conn = http.client.HTTPSConnection("api.sportradar.us")

conn.request("GET", "/oddscomparison-prematch/trial/v2/en/competitors/mappings.xml?api_key={your_api_key}&start=0&limit=1000")

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
curl -L GET 'api.sportradar.us/oddscomparison-prematch/trial/v2/en/competitors/mappings.xml?api_key={your_api_key}&start=0&limit=1000'
In addition to the URL parameters listed above, you can paginate the competitor information with one or more of the following optional query string parameters.
Note: Optional query string parameters must be added after your API key with an ampersand (&).
Replace placeholders with the following query parameters: | Parameter | Description | | --------- | ----------- | | `start` | Number to start the list of results from.
Example: start=0 | | `limit` | Number to limit the number of results. Minimum value is 1, maximum value is 1000.
Example: limit=1000 | Return to top ## Daily Schedules Provides scheduling info for all events with odds available on a given sport and date.
Note: Pagination will often be required to pull all data within this feed. By default, the feed will return 200 events.
TTL / Cache: 1 second
Update Frequency: As Necessary
Content Type: XML or JSON
Competitor & Player Info Data Points: Competitor Abbreviation
Competitor Age Group
Competitor Country
Competitor Country Code
Competitor Gender
Competitor Id
Competitor Name
Competitor Qualifier
Competitor Rotation Number
Competitor Virtual
Sport Event Info Data Points: Sport Event Id
Sport Event Replaced By
Sport Event Resume Time
Sport Event Start Time
Sport Event Start Time Confirmed
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/sports/sr:sport:1/schedules/2023-03-31/schedules.xml?api_key={your_api_key}") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) response = http.request(request) puts response.read_body ``` ```python import http.client conn = http.client.HTTPSConnection("api.sportradar.us") conn.request("GET", "/oddscomparison-prematch/trial/v2/en/sports/sr:sport:2/schedules/2023-03-31/schedules.xml?api_key={your_api_key}") res = conn.getresponse() data = res.read() print(data.decode("utf-8")) ``` ```shell curl -X GET "https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/sports/sr:sport:2/schedules/2023-03-31/schedules.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Daily Sport Event Schedules feed by replacing the parameters in the following URL: https://api.sportradar.us/oddscomparison-prematch/`{access_level}`/`{version}`/`{language_code}`/sports/`{sport_id}`/schedules/`{date}`/schedules.`{format}`?api_key=`{your_api_key}` | Parameter | Description | | --------- | ----------- | | `access_level` | Defines the access level of your API key as Production (production) or Trial (trial). | | `version` | Version number of the API you are accessing (Current Version: v2). | | `language_code` | 2 letter code for supported languages

English (en) is the only fully supported language for this API. | | `sport_id` | ID of a given sport. | | `date` | Date in the following format: YYYY-MM-DD | | `format` | xml or json. | | `your_api_key` | Your API key. | Return to top ### Optional Query String Parameters >Example including optional query string parameters:
require 'uri'
require 'net/http'
require 'openssl'

url = URI("https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/sports/sr:sport:2/schedules/2023-03-31/schedules.xml?api_key={your_api_key}&start=0&limit=50")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
import http.client

conn = http.client.HTTPSConnection("api.sportradar.us")

conn.request("GET", "/oddscomparison-prematch/trial/v2/en/sports/sr:sport:2/schedules/2023-03-31/schedules.xml?api_key={your_api_key}&start=0&limit=50")

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
curl -L GET 'api.sportradar.us/oddscomparison-prematch/trial/v2/en/sports/sr:sport:2/schedules/2023-03-31/schedules.xml?api_key={your_api_key}&start=0&limit=50'
In addition to the URL parameters listed above, you can paginate the market information with one or more of the following optional query string parameters.
Note: Optional query string parameters must be added after your API key with an ampersand (&).
Replace placeholders with the following query parameters: | Parameter | Description | | --------- | ----------- | | `start` | Number to start the list of results from.
Example: start=0 | | `limit` | Number to limit the number of results. Minimum value is 1, maximum value is 200.
Example: limit=50 | | `live` | Boolean value to return live/non-live markets
Example: live=true or live=false | Return to top ## Player Mappings Provides player ID mapping between League Specific and General Sport ID types.
TTL / Cache: 600 seconds
Update Frequency: As Necessary
Content Type: XML or JSON
Mapping Info Data Points: External Id Id
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/players/mappings.xml?api_key={your_api_key}") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) response = http.request(request) puts response.read_body ``` ```python import http.client conn = http.client.HTTPSConnection("api.sportradar.us") conn.request("GET", "/oddscomparison-prematch/trial/v2/en/players/mappings.xml?api_key={your_api_key}") res = conn.getresponse() data = res.read() print(data.decode("utf-8")) ``` ```shell curl -X GET "https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/players/mappings.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Player Mappings feed by replacing the parameters in the following URL: https://api.sportradar.us/oddscomparison-prematch/`{access_level}`/`{version}`/`{language_code}`/players/mappings.`{format}`?api_key=`{your_api_key}` | Parameter | Description | | --------- | ----------- | | `access_level` | Defines the access level of your API key as Production (production) or Trial (trial). | | `version` | Version number of the API you are accessing (Current Version: v2). | | `language_code` | 2 letter code for supported languages

English (en) is the only fully supported language for this API. | | `format` | xml or json. | | `your_api_key` | Your API key. | ### Optional Query String Parameters >Example including optional query string parameters:
require 'uri'
require 'net/http'
require 'openssl'

url = URI("https://api.sportradar.us/oddscomparison-prematch/trial/v2/en/players/mappings.xml?api_key={your_api_key}&start=0&limit=1000")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
import http.client

conn = http.client.HTTPSConnection("api.sportradar.us")

conn.request("GET", "/oddscomparison-prematch/trial/v2/en/players/mappings.xml?api_key={your_api_key}&start=0&limit=1000")

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
curl -L GET 'api.sportradar.us/oddscomparison-prematch/trial/v2/en/players/mappings.xml?api_key={your_api_key}&start=0&limit=1000'
In addition to the URL parameters listed above, you can paginate the player information with one or more of the following optional query string parameters.
Note: Optional query string parameters must be added after your API key with an ampersand (&).
Replace placeholders with the following query parameters: | Parameter | Description | | --------- | ----------- | | `start` | Number to start the list of results from.
Example: start=0 | | `limit` | Number to limit the number of results. Minimum value is 1, maximum value is 1000.
Example: limit=1000 | Return to top ## Sport Categories Returns a list of categories for a sport ID that have odds available.
TTL / Cache: 300 seconds
Update Frequency: As Necessary
Content Type: XML or JSON
Category & Sport Info Data Points: Category Country Code Category Id Category Name
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/sports/sr:sport:2/categories.xml?api_key={your_api_key}") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) response = http.request(request) puts response.read_body ``` ```python import http.client conn = http.client.HTTPSConnection("api.sportradar.us") conn.request("GET", "/oddscomparison-prematch/trial/v2/en/sports/sr:sport:2/categories.xml?api_key={your_api_key}") res = conn.getresponse() data = res.read() print(data.decode("utf-8")) ``` ```shell curl -X GET "https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/sports/sr:sport:2/categories.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Sport Categories feed by replacing the parameters in the following URL: https://api.sportradar.us/oddscomparison-prematch/`{access_level}`/`{version}`/`{language_code}`/sports/`{sport_id}`/categories.`{format}`?api_key=`{your_api_key}` | Parameter | Description | | --------- | ----------- | | `access_level` | Defines the access level of your API key as Production (production) or Trial (trial). | | `version` | Version number of the API you are accessing (Current Version: v2). | | `language_code` | 2 letter code for supported languages

English (en) is the only fully supported language for this API. | | `sport_id` | ID of a given sport. | | `format` | xml or json. | | `your_api_key` | Your API key. | Return to top ## Sport Competitions Returns a list of competitions for a sport ID that have odds available.
TTL / Cache: 300 seconds
Update Frequency: As Necessary
Content Type: XML or JSON
Category & Sport Info Data Points: Category Country Code Category Id Category Name
Competition Info Data Points: Competition Futures
Competition Gender
Competition Id
Competition Markets
Competition Name
Competition Player Props
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/sports/sr:sport:2/competitions.xml?api_key={your_api_key}") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) response = http.request(request) puts response.read_body ``` ```python import http.client conn = http.client.HTTPSConnection("api.sportradar.us") conn.request("GET", "/oddscomparison-prematch/trial/v2/en/sports/sr:sport:2/competitions.xml?api_key={your_api_key}") res = conn.getresponse() data = res.read() print(data.decode("utf-8")) ``` ```shell curl -X GET "https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/sports/sr:sport:2/competitions.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Sport Competitions feed by replacing the parameters in the following URL: https://api.sportradar.us/oddscomparison-prematch/`{access_level}`/`{version}`/`{language_code}`/sports/`{sport_id}`/competitions.`{format}`?api_key=`{your_api_key}` | Parameter | Description | | --------- | ----------- | | `access_level` | Defines the access level of your API key as Production (production) or Trial (trial). | | `version` | Version number of the API you are accessing (Current Version: v2). | | `language_code` | 2 letter code for supported languages

English (en) is the only fully supported language for this API. | | `sport_id` | ID of a given sport. | | `format` | xml or json. | | `your_api_key` | Your API key. | Return to top ## Sport Event Mappings Provides sport event ID mapping between League Specific and General Sport ID types.
TTL / Cache: 600 seconds
Update Frequency: As Necessary
Content Type: XML or JSON
Mapping Info Data Points: External Id Id
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/sport_events/mappings.xml?api_key={your_api_key}") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) response = http.request(request) puts response.read_body ``` ```python import http.client conn = http.client.HTTPSConnection("api.sportradar.us") conn.request("GET", "/oddscomparison-prematch/trial/v2/en/sport_events/mappings.xml?api_key={your_api_key}") res = conn.getresponse() data = res.read() print(data.decode("utf-8")) ``` ```shell curl -X GET "https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/sport_events/mappings.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Sport Event Mappings feed by replacing the parameters in the following URL: https://api.sportradar.us/oddscomparison-prematch/`{access_level}`/`{version}`/`{language_code}`/sport_events/mappings.`{format}`?api_key=`{your_api_key}` | Parameter | Description | | --------- | ----------- | | `access_level` | Defines the access level of your API key as Production (production) or Trial (trial). | | `version` | Version number of the API you are accessing (Current Version: v2). | | `language_code` | 2 letter code for supported languages

English (en) is the only fully supported language for this API. | | `format` | xml or json. | | `your_api_key` | Your API key. | ### Optional Query String Parameters >Example including optional query string parameters:
require 'uri'
require 'net/http'
require 'openssl'

url = URI("https://api.sportradar.us/oddscomparison-prematch/trial/v2/en/sport_events/mappings.xml?api_key={your_api_key}&start=0&limit=1000")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
import http.client

conn = http.client.HTTPSConnection("api.sportradar.us")

conn.request("GET", "/oddscomparison-prematch/trial/v2/en/sport_events/mappings.xml?api_key={your_api_key}&start=0&limit=1000")

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
curl -L GET 'api.sportradar.us/oddscomparison-prematch/trial/v2/en/sport_events/mappings.xml?api_key={your_api_key}&start=0&limit=1000'
In addition to the URL parameters listed above, you can paginate the sport event information with one or more of the following optional query string parameters.
Note: Optional query string parameters must be added after your API key with an ampersand (&).
Replace placeholders with the following query parameters: | Parameter | Description | | --------- | ----------- | | `start` | Number to start the list of results from.
Example: start=0 | | `limit` | Number to limit the number of results. Minimum value is 1, maximum value is 1000.
Example: limit=1000 | Return to top ## Sport Event Markets Returns a list of markets for a given sport event.
TTL / Cache: 1 second
Update Frequency: As Necessary
Content Type: XML or JSON
Competitor & Player Info Data Points: Competitor Abbreviation
Competitor Age Group
Competitor Country
Competitor Country Code
Competitor Gender
Competitor Id
Competitor Name
Competitor Qualifier
Competitor Rotation Number
Competitor Virtual
Sport Event Info Data Points: Sport Event Id
Sport Event Replaced By
Sport Event Resume Time
Sport Event Start Time
Sport Event Start Time Confirmed
Market & Book Info Data Points: Book External Market Id
Book External Sport Event Id
Book Id
Book Name
Book Removed
Market Id
Market Is Live
Market Name
Outcome Info Data Points: External Outcome Id
Field Id
Handicap
Outcome Id
Odds - American
Odds - Decimal
Odds - Fraction
Open Handicap
Open Odds - American
Open Odds - Decimal
Open Odds - Fraction
Open Spread
Open Total
Player Id
Player Name
Removed
Spread
Total
Trend
Type
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/sport_events/sr:sport_event:27751520/sport_event_markets.xml?api_key={your_api_key}") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) response = http.request(request) puts response.read_body ``` ```python import http.client conn = http.client.HTTPSConnection("api.sportradar.us") conn.request("GET", "/oddscomparison-prematch/trial/v2/en/sport_events/sr:sport_event:27751520/sport_event_markets.xml?api_key={your_api_key}") res = conn.getresponse() data = res.read() print(data.decode("utf-8")) ``` ```shell curl -X GET "https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/sport_events/sr:sport_event:27751520/sport_event_markets.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Sport Event Markets feed by replacing the parameters in the following URL: https://api.sportradar.us/oddscomparison-prematch/`{access_level}`/`{version}`/`{language_code}`/sport_events/`{sport_event_id}`/sport_event_markets.`{format}`?api_key=`{your_api_key}` | Parameter | Description | | --------- | ----------- | | `access_level` | Defines the access level of your API key as Production (production) or Trial (trial). | | `version` | Version number of the API you are accessing (Current Version: v2). | | `language_code` | 2 letter code for supported languages

English (en) is the only fully supported language for this API. | | `sport_event_id` | ID of a given sport event. | | `format` | xml or json. | | `your_api_key` | Your API key. | ### Optional Query String Parameters >Example including optional query string parameters:
require 'uri'
require 'net/http'
require 'openssl'

url = URI("https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/sport_events/sr:sport_event:27751520/sport_event_markets.xml?api_key={your_api_key}&live=true")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
import http.client

conn = http.client.HTTPSConnection("api.sportradar.us")

conn.request("GET", "/oddscomparison-prematch/trial/v2/en/sport_events/sr:sport_event:27751520/sport_event_markets.xml?api_key={your_api_key}&live=true")

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
curl -L GET 'api.sportradar.us/oddscomparison-prematch/trial/v2/en/sport_events/sr:sport_event:27751520/sport_event_markets.xml?api_key={your_api_key}&live=true'
In addition to the URL parameters listed above, you can limit the returned information to live/non-live markets.
Note: Optional query string parameters must be added after your API key with an ampersand (&).
Replace placeholders with the following query parameters: | Parameter | Description | | --------- | ----------- | | `live` | Boolean value to return live/non-live markets
Example: live=true or live=false | Return to top ## Sport Event Markets Change Log Returns a list of sport events with odds changes in the last 5 minutes.
TTL / Cache: 1 second
Update Frequency: As Necessary
Content Type: XML or JSON
Change Log Info Data Points: Change Id
Change Type
Sport Event Markets Odds Change Status From
Status To
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/sport_event_markets_changelog.xml?api_key={your_api_key}") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) response = http.request(request) puts response.read_body ``` ```python import http.client conn = http.client.HTTPSConnection("api.sportradar.us") conn.request("GET", "/oddscomparison-prematch/trial/v2/en/sport_event_markets_changelog.xml?api_key={your_api_key}") res = conn.getresponse() data = res.read() print(data.decode("utf-8")) ``` ```shell curl -X GET "https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/sport_event_markets_changelog.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Sport Event Markets Change Log feed by replacing the parameters in the following URL: https://api.sportradar.us/oddscomparison-prematch/`{access_level}`/`{version}`/`{language_code}`/sport_event_markets_changelog.`{format}`?api_key=`{your_api_key}` | Parameter | Description | | --------- | ----------- | | `access_level` | Defines the access level of your API key as Production (production) or Trial (trial). | | `version` | Version number of the API you are accessing (Current Version: v2). | | `language_code` | 2 letter code for supported languages

English (en) is the only fully supported language for this API. | | `format` | xml or json. | | `your_api_key` | Your API key. | Return to top ## Sport Stages Returns a list of stages and categories for a sport ID that have odds available.
TTL / Cache: 300 seconds
Update Frequency: As Necessary
Content Type: XML or JSON
Category & Sport Info Data Points: Category Country Code Category Id Category Name
Competition Info Data Points: Stage Id
Stage Description
Stage Scheduled Stage Scheduled End
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/sports/sr:sport:9/stages.xml?api_key={your_api_key}") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) response = http.request(request) puts response.read_body ``` ```python import http.client conn = http.client.HTTPSConnection("api.sportradar.us") conn.request("GET", "/oddscomparison-prematch/trial/v2/en/sports/sr:sport:9/stages.xml?api_key={your_api_key}") res = conn.getresponse() data = res.read() print(data.decode("utf-8")) ``` ```shell curl -X GET "https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/sports/sr:sport:9/stages.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Sport Stages feed by replacing the parameters in the following URL: https://api.sportradar.us/oddscomparison-prematch/`{access_level}`/`{version}`/`{language_code}`/sports/`{sport_id}`/stages.`{format}`?api_key=`{your_api_key}` | Parameter | Description | | --------- | ----------- | | `access_level` | Defines the access level of your API key as Production (production) or Trial (trial). | | `version` | Version number of the API you are accessing (Current Version: v2). | | `language_code` | 2 letter code for supported languages

English (en) is the only fully supported language for this API. | | `sport_id` | ID of a given sport. | | `format` | xml or json. | | `your_api_key` | Your API key. | Return to top ## Sports Returns a list of sports and sport IDs.
TTL / Cache: 300 seconds
Update Frequency: As Necessary
Content Type: XML or JSON
Category & Sport Info Data Points: Sport Id Sport Name Sport Type
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/sports.xml?api_key={your_api_key}") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) response = http.request(request) puts response.read_body ``` ```python import http.client conn = http.client.HTTPSConnection("api.sportradar.us") conn.request("GET", "/oddscomparison-prematch/trial/v2/en/sports.xml?api_key={your_api_key}") res = conn.getresponse() data = res.read() print(data.decode("utf-8")) ``` ```shell curl -X GET "https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/sports.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Sports feed by replacing the parameters in the following URL: https://api.sportradar.us/oddscomparison-prematch/`{access_level}`/`{version}`/`{language_code}`/sports.`{format}`?api_key=`{your_api_key}` | Parameter | Description | | --------- | ----------- | | `access_level` | Defines the access level of your API key as Production (production) or Trial (trial). | | `version` | Version number of the API you are accessing (Current Version: v2). | | `language_code` | 2 letter code for supported languages

English (en) is the only fully supported language for this API. | | `format` | xml or json. | | `your_api_key` | Your API key. | Return to top ## Stage Mappings Provides stage ID mapping between League Specific and General Sport ID types.
TTL / Cache: 600 seconds
Update Frequency: As Necessary
Content Type: XML or JSON
Mapping Info Data Points: External Id Id
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/stages/mappings.xml?api_key={your_api_key}") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) response = http.request(request) puts response.read_body ``` ```python import http.client conn = http.client.HTTPSConnection("api.sportradar.us") conn.request("GET", "/oddscomparison-prematch/trial/v2/en/stages/mappings.xml?api_key={your_api_key}") res = conn.getresponse() data = res.read() print(data.decode("utf-8")) ``` ```shell curl -X GET "https://api.sportradar.com/oddscomparison-prematch/trial/v2/en/stages/mappings.xml?api_key={your_api_key}" ``` Access the Stage Mapping feed by replacing the parameters in the following URL: https://api.sportradar.us/oddscomparison-prematch/`{access_level}`/`{version}`/`{language_code}`/stages/mappings.`{format}`?api_key=`{your_api_key}` | Parameter | Description | | --------- | ----------- | | `access_level` | Defines the access level of your API key as Production (production) or Trial (trial). | | `version` | Version number of the API you are accessing (Current Version: v2). | | `language_code` | 2 letter code for supported languages

English (en) is the only fully supported language for this API. | | `format` | xml or json. | | `your_api_key` | Your API key. | ### Optional Query String Parameters >Example including optional query string parameters:
require 'uri'
require 'net/http'
require 'openssl'

url = URI("https://api.sportradar.us/oddscomparison-prematch/trial/v2/en/stages/mappings.xml?api_key={your_api_key}&start=0&limit=1000")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
import http.client

conn = http.client.HTTPSConnection("api.sportradar.us")

conn.request("GET", "/oddscomparison-prematch/trial/v2/en/stages/mappings.xml?api_key={your_api_key}&start=0&limit=1000")

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
curl -L GET 'api.sportradar.us/oddscomparison-prematch/trial/v2/en/stages/mappings.xml?api_key={your_api_key}&start=0&limit=1000'
In addition to the URL parameters listed above, you can paginate the sport event information with one or more of the following optional query string parameters.
Note: Optional query string parameters must be added after your API key with an ampersand (&).
Replace placeholders with the following query parameters: | Parameter | Description | | --------- | ----------- | | `start` | Number to start the list of results from.
Example: start=0 | | `limit` | Number to limit the number of results. Minimum value is 1, maximum value is 1000.
Example: limit=1000 | Return to top ## Frequently Asked Questions

Q: What format are date fields presented in?

A: We present date only values in the ISO 8601 standard format.

Example: 2013-04-03

For more information: https://en.wikipedia.org/wiki/ISO_8601

Q: What time zone are the date time fields presented in?

A: All of our Date/Time attributes are in UTC, presented in the ISO 8601 standard format.
ex: 2013-04-03T18:15:00+00:00
For more information: https://en.wikipedia.org/wiki/ISO_8601

Q: How can I find the values for various enum data points within the API?

A: For the most up-to-date values, please see the Schema section of the OpenAPI specification here:

https://api.sportradar.com/oddscomparison-prematch/trial/v2/openapi/swagger/index.html

Q: What sports are covered?

A: The sports coverage varies depending on configured bookmakers offering in that particular point in time. To get a list of available sports call the Sports endpoint.

Q: What competitions are covered?

A: The competition coverage varies depending on configured bookmakers offering in that particular point in time. To get a list of all the competitions for a sport call the Sport Competitions endpoint.

Q: What happens if a bookmaker suspends/removes a market or outcome?

A: Markets that have been suspended/removed are indicated as removed="true" at the book level. Outcomes that have been suspended/removed are indicated by removed="true" at the outcome level.

Q: How do I tell what the closing odds/line was?

A: When a game goes live and the pre-match markets have been removed by the bookmaker, we add a removed="true" attribute at the book level and continue to display the last known odds which can be interpreted as the closing line.

Q: Why do some outcomes show nonsensical odds?

A: If an outcome is flagged as removed="true" and is displaying decimal odds of 1.00 then that means that the selection was never offered for betting by the bookmaker. This will often happen on "under" selections where the bookmaker does not want to offer the "under" side of the bet.

Q: How do I use the change log?

A: The change log will display a list of Sport Event IDs which have changed in the last 5 minutes using Unix timestamps. The actual time of the odds change is denoted by the "sport_event_markets_odds_change" attribute. This can be used to trigger calls to the Sport Event Markets endpoint.

Q: What is the refresh rate of the Prematch data?

A: We check for changes to the data every 60 seconds.

Q: Why would a player ID (ex. sr:player:830531) appear more than once in the Player Mappings endpoint?

A: A player may appear in multiple APIs with a separate ID unique to that API. For example, multiple ID mapping entries could occur from the American Football API to the NFL, NCAA Men’s Football, or USFL APIs.

Q: How do I locate the TTL (Time to Live)/cache on an API endpoint?

A: The cache (in seconds) can be accessed in the returned header information on each RESTful API call, under cache-control.
ex. cache-control: max-age=1, public, s-maxage=1 or
cache-control: public, must-revalidate, max-age=120

Return to top

Docs Navigation