MMA v2
Quick Access | |
Postman Collection | XSD Schema |
Download |
- Win probabilities for each match
- Competitor profiles
- Head-to-head statistics
- Complete list of weight class rankings
- Complete list of champions by weight class
API | API Version |
MMA | v2 |
Note: Authentication is required for all API calls. |
Example:
>To find the probabilities for a given match: >- Call the Daily Summaries for the day the sport event takes place and find the Sport Event Id for the chosen sport event
- Make note of the Sport Event Id for the given sport event
- Call the Season Probabilities using the Season Id Find Sport Event Id within the results and locate the outcome probability
require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/mma/trial/v2/en/schedules/2019-02-10/summaries.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
import http.client conn = http.client.HTTPSConnection("api.sportradar.com") conn.request("GET", "/mma/trial/v1/en/schedules/2019-02-10/summaries.xml?api_key={your_api_key}&start=0&limit=75") res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
curl -L GET 'api.sportradar.com/mma/trial/v1/en/schedules/2019-02-10/summaries.xml?api_key={your_api_key}&start=0&limit=75'In addition to the URL parameters listed above, you can paginate the response 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 (&). |
Example: start=0 | | `limit` | Number to limit the number of results. Minimum value is 1, maximum value is 200.
Example: limit=200 | Return to top ## Live Summaries Provides information for all currently live events, including results and statistics. ```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/mma/trial/v2/en/schedules/live/summaries.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", "/mma/trial/v2/en/schedules/live/summaries.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/mma/trial/v2/en/schedules/live/summaries.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Live Summaries feed by replacing the parameters in the following URL: https://api.sportradar.com/mma/`{access_level}`/`{version}`/`{language_code}`/schedules/live/summaries.`{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` | Supported Locales | | `format` | xml or json. | | `your_api_key` | Your API key. | Return to top ## Rankings Returns the current rankings for each weight class. ```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/mma/trial/v2/en/rankings.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", "/mma/trial/v2/en/rankings.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/mma/trial/v2/en/rankings.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Rankings feed by replacing the parameters in the following URL: https://api.sportradar.com/mma/`{access_level}`/`{version}`/`{language_code}`/rankings.`{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` | Supported Locales | | `format` | xml or json. | | `your_api_key` | Your API key. | Return to top ## Season Competitors Provides a list of competitors participating for a given event/season id. ```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/mma/trial/v2/en/seasons/sr:season:54879/competitors.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", "/mma/trial/v2/en/seasons/sr:season:54879/competitors.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/mma/trial/v2/en/seasons/sr:season:54879/competitors.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Season Competitors feed by replacing the parameters in the following URL: https://api.sportradar.com/mma/`{access_level}`/`{version}`/`{language_code}`/seasons/`{season_id}`/competitors.`{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` | Supported Locales | | `season_id` | Id of a given season. | | `format` | xml or json. | | `your_api_key` | Your API key. | Return to top ## Season Information Provides information for a given event/season, including a list of participants. ```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/mma/trial/v2/en/seasons/sr:season:54879/info.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", "/mma/trial/v2/en/seasons/sr:season:54879/info.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/mma/trial/v2/en/seasons/sr:season:54879/info.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Season Information feed by replacing the parameters in the following URL: https://api.sportradar.com/mma/`{access_level}`/`{version}`/`{language_code}`/seasons/`{season_id}`/info.`{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` | Supported Locales | | `season_id` | Id of a given season. | | `format` | xml or json. | | `your_api_key` | Your API key. | Return to top ## Season Probabilities Provides win probabilities for each participant for every match from a given event/season. ```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/mma/trial/v2/en/seasons/sr:season:54879/probabilities.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", "/mma/trial/v2/en/seasons/sr:season:54879/probabilities.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/mma/trial/v2/en/seasons/sr:season:54879/probabilities.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Season Probabilities feed by replacing the parameters in the following URL: https://api.sportradar.com/mma/`{access_level}`/`{version}`/`{language_code}`/seasons/`{season_id}`/probabilities.`{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` | Supported Locales | | `season_id` | Id of a given season. | | `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/mma/trial/v2/en/seasons/sr:season:54879/probabilities.xml?api_key={your_api_key}&start=200") 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.com") conn.request("GET", "/mma/trial/v2/en/seasons/sr:season:54879/probabilities.xml?api_key={your_api_key}&start=200") res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
curl -L GET 'api.sportradar.com/mma/trial/v2/en/seasons/sr:season:54879/probabilities.xml?api_key={your_api_key}&start=200'In addition to the URL parameters listed above, you can paginate the response 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 (&). |
Example: start=0 | | `limit` | Number to limit the number of results. Minimum value is 1, maximum value is 200.
Example: limit=200 | Return to top ## Season Summaries Provides schedule information and results for all fights from a given event/season. ```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/mma/trial/v2/en/seasons/sr:season:54879/summaries.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", "/mma/trial/v2/en/seasons/sr:season:54879/summaries.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/mma/trial/v2/en/seasons/sr:season:54879/summaries.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Season Summaries feed by replacing the parameters in the following URL: https://api.sportradar.com/mma/`{access_level}`/`{version}`/`{language_code}`/seasons/`{season_id}`/summaries.`{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` | Supported Locales | | `season_id` | Id of a given season. | | `format` | xml or json. | | `your_api_key` | Your API key. | Return to top ## Seasons Provides a complete list of historical event/season information for all supported competitions in the API. ```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/mma/trial/v2/en/seasons.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", "/mma/trial/v2/en/seasons.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/mma/trial/v2/en/seasons.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Seasons feed by replacing the parameters in the following URL: https://api.sportradar.com/mma/`{access_level}`/`{version}`/`{language_code}`/seasons.`{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` | Supported Locales | | `format` | xml or json. | | `your_api_key` | Your API key. | Return to top ## Sport Event Summary Provides live scoring for a given event/fight. Please note that data returned is determined by coverage level. ```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/mma/trial/v2/en/sport_events/sr:sport_event:18100773/summary.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", "/mma/trial/v2/en/sport_events/sr:sport_event:18100773/summary.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/mma/trial/v2/en/sport_events/sr:sport_event:18100773/summary.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Sport Event Summary feed by replacing the parameters in the following URL: https://api.sportradar.com/mma/`{access_level}`/`{version}`/`{language_code}`/sport_events/`{sport_event_id}`/summary.`{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` | Supported Locales | | `sport_event_id` | Id of a given sport event. | | `format` | xml or json. | | `your_api_key` | Your API key. | Return to top ## Sport Event Change Log Provides ids for sport events that have been updated in the last 24 hours. ```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/mma/trial/v2/en/sport_events/updated.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", "/mma/trial/v2/en/sport_events/updated.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/mma/trial/v2/en/sport_events/updated.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Sport Event Change Log feed by replacing the parameters in the following URL: https://api.sportradar.com/mma/`{access_level}`/`{version}`/`{language_code}`/sport_events/updated.`{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` | Supported Locales | | `format` | xml or json. | | `your_api_key` | Your API key. | Return to top ## Sport Events Created Provides ids for sport events that have been created in the last 24 hours.
Update Frequency: | As Necessary | ||
Content Type: | XML or JSON | ||
Match Info Data Points: | Id | Created At |
require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.us/mma/trial/v2/en/sport_events/created.xml?api_key={your_api_key}&start=0&limit=75") 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", "/mma/trial/v2/en/sport_events/created.xml?api_key={your_api_key}&start=0&limit=75") res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
curl -L GET 'api.sportradar.us/mma/trial/v2/en/sport_events/created.xml?api_key={your_api_key}&start=0&limit=75'In addition to the URL parameters listed above, you can paginate the response with one or more of the following optional query string parameters. By default the limit is set to 1000.
Note: Optional query string parameters must be added after your API key with an ampersand (&). |
Example: start=0 | | `limit` | Number to limit the number of results. Minimum value is 1, maximum value is 1000.
Example: limit=75 | Return to top ## Sport Event Removed Provides ids for sport events that have been removed or deleted. ```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/mma/trial/v2/en/sport_events/removed.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", "/mma/trial/v2/en/sport_events/removed.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/mma/trial/v2/en/sport_events/removed.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Sport Event Removed feed by replacing the parameters in the following URL: https://api.sportradar.com/mma/`{access_level}`/`{version}`/`{language_code}`/sport_events/removed.`{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` | Supported Locales | | `format` | xml or json. | | `your_api_key` | Your API key. | To retrieve the XML Schema Definition (.XSD) for the Sport Event Removed use the following URL. https://api.sportradar.com/mma/trial/v2/schemas/sport_events_removed.xsd?api_key=`{your_api_key}` Return to top ## Frequently Asked Questions
Q: What are the available competitions in the MMA API v2?
A: We currently cover all UFC events, including Dana White’s Contender Series.
Q: What format are date fields presented in?
A: When we present date only values we present these in the ISO 8601 standard format.
ex: 2013-04-03
We use these for attributes that have date and no time (such as birthdate). 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: Many enum values are listed in the FAQ below. For the most up-to-date values, please see the Schema section of the OpenAPI specification here: https://api.sportradar.com/mma/trial/v2/openapi/swagger/index.html
Q: What are the valid "sport_event_status - status" values?
A: Here are the valid status values and their definitions:
- not_started – The match is scheduled to be played
- started – The match has begun
- live – The match is currently in progress
- postponed – The match has been postponed to a future date
- suspended – The match has been suspended
- match_about_to_start – The match is about to begin
- delayed – The match has been temporarily delayed and will be continued
- interrupted - The match began, but coverage has stopped for a short time. Note that match scores may not be updated during this period, the last recorded match score will be displayed instead
- cancelled – The match has been cancelled and will not be played
- ended – The match is over
- closed – The match results have been confirmed.
Q: What are the possible sport_event_status – method values?
A: Here are all of the possible methods:
- ko_tko
- submission
- tko_doctors_stoppage
- decision_unanimous
- decision_split
- decision_majority
- overturned
- disqualification
Q: What are the valid outcomes for probabilities?
A: Here are the valid outcome probabilities:
- home_team_winner
- away_team_winner
Q: What are markets and what are the different markets?
A: Markets is something you can bet on that we provide probabilities for. Over time we intend to provide more and more markets in the API. Currently the only market we provide is 3-way (will the home team win? Or the away team? Or will it be a draw?)
Q: How do I get the schedule for a competition?
A: Call the Seasons endpoint and locate the start and end date for the season, then use that information to call the Daily Schedule endpoint.
Q: When are fight nights added to the schedule?
A: Within 72 hours of the event being officially announced.
Q: What is the difference between a competition and a season?
A: As with all Sportradar APIs, a competition (or in some cases depicted as a "Tournament") is comprised of seasons. In UFC this isn't necessarily intuitive, given that that structure doesn't apply to individual match ups. This structure is preserved for consistency with other sports. Competitions will contain all events, whereas Seasons will only contain those which are known for the current year.
Q: What are the valid "sport_event_status - match_status" values?
A: Here are the valid status values:
- not_started
- start_delayed
- ended
- cancelled
- postponed
- started
Q: When are the rankings updated?
A: Once per week.
Q: When is a sport_event (fight) removed? What happens next?
A: A sport_event (fight) may appear in the removed feed if the fight is cancelled. A new match, if officially announced, will appear in the season and match feeds.
Q: What if a match has incorrect details?
A: The sport_event_id won't change. The fight details will be changed, and the sport_event_id will appear in the Sport Event Change Log feed.
Q: What are the possible sport_event_status – weight_class values?
A: Here are the valid sport_event_status – weight_class values:
- flyweight (116-125)
- bantamweight (126-135)
- womens_bantamweight (126-135)
- featherweight (136-145)
- lightweight (146-155)
- welterweight (156-170)
- middleweight (171-185)
- light_heavyweight (186-205)
- heavyweight (206-265)
- catchweight (unrestricted weight)
Q: What are the possible stage – type values?
A: Here are the valid stage – type values:
- Early Prelims
- Prelims
- Under Card
- Main Card
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
- Documentation
- Football (American Football)
- Football (Soccer)
- Australian Rules Football
- Baseball
- Basketball
- NBA v8
- NBA v7
- NBA v5
- NBA v4
- WNBA v8
- WNBA v7
- WNBA v4
- WNBA v3
- NBA G League v8
- NBA G League v7
- NBA G League v5
- NCAA Men's Basketball v8
- NCAA Men's Basketball v7
- NCAA Men's Basketball v4
- NCAA Men's Basketball v3
- NCAA Women's Basketball v8
- NCAA Women's Basketball v7
- NCAA Women's Basketball v3
- Global Basketball v2
- Global Basketball v1
- NBA Historical v1
- Combat Sports
- Cricket
- Editorial Content
- Golf
- Handball
- Hockey
- Images
- Insights
- Betting Insights
- Odds
- Racing
- Rugby
- Tennis
- Widgets
- Baseline Sports Coverage
- Badminton v2
- Badminton v1
- Bandy v2
- Bandy v1
- Beach Soccer v2
- Beach Soccer v1
- Curling v2
- Curling v1
- Cycling v2
- Cycling v1
- Darts v2
- Darts v1
- Field Hockey v2
- Field Hockey v1
- Floorball v2
- Floorball v1
- Futsal v2
- Futsal v1
- Pesapallo v2
- Pesapallo v1
- Snooker v2
- Snooker v1
- Squash v2
- Squash v1
- Table Tennis v2
- Volleyball (Beach) v2
- Volleyball (Beach) v1
- Volleyball (Indoor) v2
- Volleyball (Indoor) v1
- Waterpolo v2
- Waterpolo v1
- Winter Sports v1