Odds Comparison Player Props

Frequently Asked Questions
Quick Access
Postman Collection XSD Schema
Download
## Odds Comparison Player Props API Overview The Player Props API provides aggregated odds data for player props and player markets. Top US bookmakers are available, and return odds for NFL, NBA, MLB, NHL, NCAA Football 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 player props broken down by sport, league, and event.
API API Version
Odds Comparison Player Props
Note: Authentication is required for all API calls.
## Available Markets See the table below for a complete breakdown of every player props market available.
Sport Market Name Market ID
Basketball (NBA) Total points (incl. overtime) sr:market:921
Total assists (incl. overtime) sr:market:922
Total rebounds (incl. overtime) sr:market:923
Total 3-point field goals (incl. overtime) sr:market:924
Total steals (incl. overtime) sr:market:8000
Total blocks (incl. overtime) sr:market:8001
Total turnovers (incl. overtime) sr:market:8002
Total points plus rebounds (incl. overtime) sr:market:8003
Total points plus assists (incl. overtime) sr:market:8004
Total rebounds plus assists (incl. overtime) sr:market:8005
Total points plus assists plus rebounds (incl. overtime) sr:market:8006
Total blocks plus steals (incl. overtime) sr:market:8007
Double double (incl. overtime) sr:market:8008
Triple double (incl. overtime) sr:market:8009
Baseball (MLB) Total pitcher strikeouts (incl. extra innings) sr:market:925
Total bases (incl. extra innings) sr:market:926
Total earned runs (incl. extra innings) sr:market:928
Total hits (incl. extra innings) sr:market:9000
Total runs (incl. extra innings) sr:market:9001
Total runs batted in (incl. extra innings) sr:market:9002
Total home runs (incl. extra innings) sr:market:9003
Total singles (incl. extra innings) sr:market:9004
Total doubles (incl. extra innings) sr:market:9005
Total triples (incl. extra innings) sr:market:9006
Total stolen bases (incl. extra innings) sr:market:9007
Total pitcher outs (incl. extra innings) sr:market:9008
Total strikeouts (incl. extra innings) sr:market:9009
Total hits allowed (incl. extra innings) sr:market:9010
Total home runs allowed (incl. extra innings) sr:market:9011
To hit a home run sr:market:9012
Ice Hockey (NHL) First goalscorer sr:market:38
Last goalscorer sr:market:39
Anytime goalscorer sr:market:40
Total shots (incl. overtime) sr:market:7000
Total assists (incl. overtime) sr:market:7001
Total points (incl. overtime) sr:market:7002
Total power play points (incl. overtime) sr:market:7003
American Football (NFL, NCAA) Total passing yards (incl. overtime) sr:market:914
Total passing completions (incl. overtime) sr:market:915
Total passing touchdowns (incl. overtime) sr:market:916
Total carries (incl. overtime) sr:market:917
Total rushing yards (incl. overtime) sr:market:918
Total receiving yards (incl. overtime) sr:market:919
Total receptions (incl. overtime) sr:market:920
Total passing interceptions (incl. overtime) sr:market:6000
Total passing attempts (incl. overtime) sr:market:6001
First touchdown scorer sr:market:6014
Anytime touchdown scorer sr:market:6016
Player to score 2 or more touchdowns sr:market:6017
Player to score 3 or more touchdowns sr:market:6018
American Football (NFL) Longest passing completion (incl. overtime) sr:market:6002
Total passing plus rushing yards (incl. overtime) sr:market:6003
Longest reception (incl. overtime) sr:market:6004
Total rushing plus receiving yards (incl. overtime) sr:market:6005
Longest rush (incl. overtime) sr:market:6006
Total kicking points (incl. overtime) sr:market:6007
Total extra points made (incl. overtime) sr:market:6008
Total field goals made (incl. overtime) sr:market:6009
Total assists (incl. overtime) sr:market:6010
Total tackles (incl. overtime) sr:market:6011
Total tackles plus assists (incl. overtime) sr:market:6012
Total sacks (incl. overtime) sr:market:6013
Last touchdown scorer sr:market:6015
To record a sack (incl. overtime) sr:market:6019
To record an interception (incl. overtime) sr:market:6020
To throw an interception (incl. overtime) sr:market:6021
Soccer First goalscorer sr:market:38
Last goalscorer sr:market:39
Anytime goalscorer sr:market:40
## Odds Comparison Player Props API Map To best utilize the Odds Comparison Player Props 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 the player props 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 Player Props 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 Player Props using your located Sport Event Id
>The player props for your event are displayed. 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, sports and stages. Mapping feeds provide a list of IDs for players, competitions, sport events, teams, and stages which are mapped between US IDs and Sportradar 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. ## Books Returns a list of configured bookmakers and their IDs.
TTL / Cache: 300 seconds
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/oddscomparison-player-props/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-player-props/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-player-props/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-player-props/`{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 global and US id types.
TTL / Cache: 600 seconds
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/oddscomparison-player-props/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-player-props/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-player-props/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-player-props/`{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 props 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 1 sport event.
TTL / Cache: 60 seconds
Update Frequency: As Necessary
Content Type: XML or JSON
Competitor Info Data Points: Abbreviation
Age Group
Country
Country Code
Gender
Id
Name
Qualifier
Rotation Number
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-player-props/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-player-props/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-player-props/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-player-props/`{access_level}`/`{version}`/`{language_code}`/competitions/`{competition_id}`/schedules.`{format}`?api_key=`{your_api_key}&start=0&limit=1` | 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-player-props/trial/v2/en/competitions/sr:competition:109/schedules.xml?api_key={your_api_key}&start=0&limit=1")

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-player-props/trial/v2/en/competitions/sr:competition:109/schedules.xml?api_key={your_api_key}&start=0&limit=1")

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

print(data.decode("utf-8"))
curl -L GET 'api.sportradar.us/oddscomparison-player-props/trial/v2/en/competitions/sr:competition:109/schedules.xml?api_key={your_api_key}&start=0&limit=1'
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 and maximum value is 1.
Example: limit=1 | Return to top ## Competitor Mappings Provides competitor id mapping between global and US id types.
TTL / Cache: 600 seconds
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/oddscomparison-player-props/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-player-props/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-player-props/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-player-props/`{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 ## Daily Schedules Provides scheduling info for all events with props available for a given sport and date.
Note: Pagination will often be required to pull all data within this feed. By default, the feed will return 1 sport event.
TTL / Cache: 60 seconds
Update Frequency: As Necessary
Content Type: XML or JSON
Competitor Info Data Points: Abbreviation
Age Group
Country
Country Code
Gender
Id
Name
Qualifier
Rotation Number
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-player-props/trial/v2/en/sports/sr:sport:3/schedules/2023-03-30/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-player-props/trial/v2/en/sports/sr:sport:3/schedules/2023-03-30/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-player-props/trial/v2/en/sports/sr:sport:3/schedules/2023-03-30/schedules.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Daily Schedules feed by replacing the parameters in the following URL: https://api.sportradar.us/oddscomparison-player-props/`{access_level}`/`{version}`/`{language_code}`/sports/`{sport_id}`/schedules/`{date}`/schedules.`{format}`?api_key=`{your_api_key}`&start=0&limit=1 | 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 ### Query String Parameters >Example including optional query string parameters:
require 'uri'
require 'net/http'
require 'openssl'

url = URI("https://api.sportradar.com/oddscomparison-player-props/trial/v2/en/sports/sr:sport:3/schedules/2023-03-30/schedules.xml?api_key={your_api_key}&start=0&limit=1")

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-player-props/trial/v2/en/sports/sr:sport:3/schedules/2023-03-30/schedules.xml?api_key={your_api_key}&start=0&limit=1")

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

print(data.decode("utf-8"))
curl -L GET 'api.sportradar.us/oddscomparison-player-props/trial/v2/en/sports/sr:sport:3/schedules/2023-03-30/schedules.xml?api_key={your_api_key}&start=0&limit=1'
In addition to the URL parameters listed above, you can paginate the response with one or more of the following optional query string parameters. | Parameter | Description | | --------- | ----------- | | `start` | Number to start the list of results from.
Example: start=0 | | `limit` | Number to limit the number of results. Minimum and maximum value is 1. | `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 global and US id types.
TTL / Cache: 600 seconds
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/oddscomparison-player-props/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-player-props/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-player-props/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-player-props/`{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("http://api.sportradar.us/oddscomparison-player-props/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-player-props/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-player-props/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 ## Player Props Change Log Returns a list of the latest odds changes.
TTL / Cache: 1 second
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/oddscomparison-player-props/trial/v2/en/players_props_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-player-props/trial/v2/en/players_props_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-player-props/trial/v2/en/players_props_changelog.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Player Props Change Log feed by replacing the parameters in the following URL: https://api.sportradar.us/oddscomparison-player-props/`{access_level}`/`{version}`/`{language_code}`/players_props_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 Categories Returns a list of categories for a sport ID that have odds available.
TTL / Cache: 300 seconds
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/oddscomparison-player-props/trial/v2/en/sports/sr:sport:3/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-player-props/trial/v2/en/sports/sr:sport:3/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-player-props/trial/v2/en/sports/sr:sport:3/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-player-props/`{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
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/oddscomparison-player-props/trial/v2/en/sports/sr:sport:1/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-player-props/trial/v2/en/sports/sr:sport:1/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-player-props/trial/v2/en/sports/sr:sport:1/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-player-props/`{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 global and US id types.
TTL / Cache: 600 seconds
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/oddscomparison-player-props/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-player-props/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-player-props/trial/v2/en/sport_events/mappings.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Sport Event Mapping feed by replacing the parameters in the following URL: https://api.sportradar.us/oddscomparison-player-props/`{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("http://api.sportradar.us/oddscomparison-player-props/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-player-props/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-player-props/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 Player Props Returns a list of player props for a given sport event ID.
TTL / Cache: 300 seconds
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/oddscomparison-player-props/trial/v2/en/sport_events/sr:sport_event:27605772/players_props.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-player-props/trial/v2/en/sport_events/sr:sport_event:27605772/players_props.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-player-props/trial/v2/en/sport_events/sr:sport_event:27605772/players_props.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Sport Event Player Props feed by replacing the parameters in the following URL: https://api.sportradar.us/oddscomparison-player-props/`{access_level}`/`{version}`/`{language_code}`/sport_events/`{sport_event_id}`/players_props.`{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-player-props/trial/v2/en/sport_events/sr:sport_event:27605772/players_props.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-player-props/trial/v2/en/sport_events/sr:sport_event:27605772/players_props.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-player-props/trial/v2/en/sport_events/sr:sport_event:27605772/players_props.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 Stages Returns a list of stages and categories for a sport ID that have odds available.
TTL / Cache: 300 seconds
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/oddscomparison-player-props/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-player-props/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-player-props/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-player-props/`{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
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/oddscomparison-player-props/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-player-props/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-player-props/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-player-props/`{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 global and US id types.
TTL / Cache: 600 seconds
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/oddscomparison-player-props/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-player-props/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-player-props/trial/v2/en/stages/mappings.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Stage Mapping feed by replacing the parameters in the following URL: https://api.sportradar.us/oddscomparison-player-props/`{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("http://api.sportradar.us/oddscomparison-player-props/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-player-props/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-player-props/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: When we present date only values we present these in the ISO 8601 standard format.

Example: 2013-04-03

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

Q: What format 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-player-props/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 bookmakers are included for Player Props?

A: Player Props data is available for the following Bookmakers - Draft Kings, William Hill, MGM, Pointsbet, FanDuel.

Q: How can I tell what Competitions have Player Props available?

A: Competitions that have Player Props data available from the last 24 hours and into the future are indicated by player_props="true" in 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: Is the Player Props data pre-match or live?

A: Currently Player Props data is all pre-match but we are looking to add live player props subject to data availability sometime in the future.

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 changelog?

A: The Changelog 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 "player_props_odds_change" attribute. This can be used to trigger calls to the Sport Event Players Props endpoint.

Q: What is the refresh rate of the Player Props 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