Formula E v2

Frequently Asked Questions
Quick Access
Postman Collection XSD Schema
Download
## Formula E API Overview The Formula E API provides schedules and post-race results for the entire Formula E Championship. All data is collected via Sportradar’s expert operators. Select the Formula E package in our Coverage Matrix for events and data offered. This API uses a descending, stage-based structure. By changing the stage ID, you can retrieve information on a season, event, race, or any of the practice or qualifying stages. Additional feeds provide complementary stats, including:
  • Racer profiles
  • Team profiles
  • Race and Championship win probabilities
API API Version
Formula E v2
Note: Authentication is required for all API calls.
## Formula E v2 API Map To best utilize the Formula E 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 win probabilities for a given race: >
  1. Call the Seasons endpoint and find the Stage Id for the current season
  2. Call the Stage Schedule using the 'season' Stage Id
  3. Locate the Stage Id for the upcoming race
  4. Call the Stage Probabilities using the 'race' Stage Id
  5. Within the results locate the win probability for each racer
>The probability of a win for each racer is displayed. The primary Seasons feed requires only a human-readable parameter to call the endpoint. This feed provides season Stage Ids, which can be used to generate descending Stage Summary feeds to include more detailed info, such as events and races. These feeds can then be used to generate profile feeds. ## Competitor Merge Mappings Provides the valid Sportradar Id in cases when two competitors have been merged into one. Mapping entries will remain in the feed for 7 days.
TTL / Cache: 300 seconds
Update Frequency: As Necessary
Content Type: XML or JSON
Mappings Info Data Points: Name Merged Id Retained Id
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/formulae/trial/v2/en/competitors/merge_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.com") conn.request("GET", "/formulae/trial/v2/en/competitors/merge_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/formulae/trial/v2/en/competitors/merge_mappings.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Competitor Merge Mappings feed by replacing the parameters in the following URL: https://api.sportradar.com/formulae/`{access_level}`/`{version}`/`{language_code}`/competitors/merge_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` | Supported Locales | | `format` | xml or json. | | `your_api_key` | Your API key. | Return to top ## Competitor Profile Provides detailed driver information including debut date, first points, first pole, and first victory.
TTL / Cache: 300 seconds
Update Frequency: As Necessary
Content Type: Raw XML or JSON
Competitor Information Data Points: Country
Country Code
Date of Birth
Debut
First Points Date
First Pole Date
First Victory Date
Gender
Height
Id
Name
Nationality
Official Website
Origin Country Code
Place of Birth
Salary
Vehicle Nickname
WCS Won
Weight
Team Information Data Points: Country Code
Gender
Name
Nationality
Team Id
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/formulae/trial/v2/en/competitors/sr:competitor:422427/profile.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.com") conn.request("GET", "/formulae/trial/v2/en/competitors/sr:competitor:422427/profile.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/formulae/trial/v2/en/competitors/sr:competitor:422427/profile.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Competitor Profile feed by replacing the parameters in the following URL: https://api.sportradar.com/formulae/`{access_level}`/`{version}`/`{language_code}`/competitors/`{competitor_id}`/profile.`{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 is the only fully supported language for this API. Click here for a tabular list of available languages per competition. | | `competitor_id` | Id of a given competitor. | | `format` | xml or json. | | `your_api_key` | Your API key. | To retrieve the XML Schema Definition (.XSD) for the Competitor Profile, use the following URL. https://schemas.sportradar.com/bsa/genericstage/v2/xml/endpoints/genericstage/competitor_profile.xsd Return to top ## Deleted Stages Provides all deleted stages within a given season.
TTL / Cache: 300 seconds
Update Frequency: As Necessary
Content Type: Raw XML or JSON
Stage Information Data Points: Description
Disabled
Scheduled
Scheduled End
Single Event
Stage Id
Type
Unique Stage Id
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/formulae/trial/v2/en/seasons/sr:stage:272058/deleted_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.com") conn.request("GET", "/formulae/trial/v2/en/seasons/sr:stage:272058/deleted_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/formulae/trial/v2/en/seasons/sr:stage:272058/deleted_stages.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Deleted Stages feed by replacing the parameters in the following URL: https://api.sportradar.com/formulae/`{access_level}`/`{version}`/`{language_code}`/seasons/`{stage_id}`/deleted_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 is the only fully supported language for this API. Click here for a tabular list of available languages per competition. | | `stage_id` | Id of a given stage. | | `format` | xml or json. | | `your_api_key` | Your API key. | Return to top ## Seasons Provides a complete historical list of available seasons for FE. This is the starting point for the Formula E API.
TTL / Cache: 300 seconds
Update Frequency: As Necessary
Content Type: Raw XML or JSON
Category & Sport Information Data Points: Category Id
Category Name
Sport Id Sport Name
Stage Information Data Points: Description
Scheduled
Scheduled End
Stage Id
Type
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/formulae/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.com") conn.request("GET", "/formulae/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/formulae/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/formulae/`{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` | 2 letter code for supported languages

English is the only fully supported language for this API. Click here for a tabular list of available languages per competition. | | `format` | xml or json. | | `your_api_key` | Your API key. | To retrieve the XML Schema Definition (.XSD) for the Seasons, use the following URL. https://schemas.sportradar.com/bsa/genericstage/v2/xml/endpoints/genericstage/seasons.xsd Return to top ## Stage Probabilities Provides the outrights for each driver for a given race.
TTL / Cache: 300 seconds
Update Frequency: As Necessary
Content Type: Raw XML or JSON
Category & Sport Information Data Points: Category Id
Category Name
Sport Id Sport Name
Competitor Information Data Points: Competitor Id
Country Code
Gender
Name
Nationality
Team Information Data Points: Country Code
Gender
Name
Nationality
Team Id
Stage Information Data Points: Description
Pit Open
Scheduled
Scheduled End
Stage Id
Status
Type
Unique Stage Id
Probability Information Data Points: Market Description
Market Name
Market Type
Outcome Id
Outcome Name
Outcome Probability
Venue Information Data Points: City
Country
Country Code
Curves Left
Curves Right
Debut
Id
Laps
Length
Name
Official URL
Timezone
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/formulae/trial/v2/en/sport_events/sr:stage:361185/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.com") conn.request("GET", "/formulae/trial/v2/en/sport_events/sr:stage:361185/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/formulae/trial/v2/en/sport_events/sr:stage:361185/probabilities.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Stage Probabilities feed by replacing the parameters in the following URL: https://api.sportradar.com/formulae/`{access_level}`/`{version}`/`{language_code}`/sport_events/`{stage_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` | 2 letter code for supported languages

English is the only fully supported language for this API. Click here for a tabular list of available languages per competition. | | `stage_id` | Id of a given stage. | | `format` | xml or json. | | `your_api_key` | Your API key. | To retrieve the XML Schema Definition (.XSD) for the Stage Probabilities, use the following URL. https://schemas.sportradar.com/bsa/genericstage/v2/xml/endpoints/genericstage/probabilities.xsd Return to top ## Stage Schedule Provides the schedule for a given stage.
TTL / Cache: 300 seconds
Update Frequency: As Necessary
Content Type: Raw XML or JSON
Category & Sport Information Data Points: Category Id
Category Name
Sport Id Sport Name
Stage Information Data Points: Description
Pit Open
Scheduled
Scheduled End
Stage Id
Status
Type
Unique Stage Id
Venue Information Data Points: City
Country
Country Code
Curves Left
Curves Right
Debut
Id
Laps
Length
Name
Official URL
Timezone
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/formulae/trial/v2/en/sport_events/sr:stage:361171/schedule.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.com") conn.request("GET", "/formulae/trial/v2/en/sport_events/sr:stage:361171/schedule.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/formulae/trial/v2/en/sport_events/sr:stage:361171/schedule.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Stage Schedule feed by replacing the parameters in the following URL: https://api.sportradar.com/formulae/`{access_level}`/`{version}`/`{language_code}`/sport_events/`{stage_id}`/schedule.`{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 is the only fully supported language for this API. Click here for a tabular list of available languages per competition. | | `stage_id` | Id of a given stage. | | `format` | xml or json. | | `your_api_key` | Your API key. | To retrieve the XML Schema Definition (.XSD) for the Stage Schedule, use the following URL. https://schemas.sportradar.com/bsa/genericstage/v2/xml/endpoints/genericstage/schedule.xsd Return to top ## Stage Summary Provides schedules and results information based on the stage provided (sport, season, event, practice, qualifying, or race).
Note: Results returned in a Summary endpoint will vary depending on the type of stage provided (season, event, practice, qualifying, qualifying part, or race).
View our extended documentation for details or open the links in the right sidebar for samples.
TTL / Cache: 300 seconds
Update Frequency: As Necessary
Content Type: XML or JSON
Category & Sport Information Data Points: Category Id
Category Name
Sport Id Sport Name
Competitor Info Data Points: Country Code
Gender
Id
Name
Nationality
Team Info Data Points: Country Code
Gender
Id
Name
Nationality
Stage Info Data Points: Description
Id
Laps
Pit Open
Scheduled
Scheduled End
Status
Type
Unique Stage Id
Results Info Data Points: Car Number
Fanboost
Fastest Lap Time
Fastest Laps
Gap/Time
Grid
Laps
Podiums
Points
Pole Positions
Position
Races
Races with Points
Status
Victories
Venue Info Data Points: City
Country
Country Code
Curves Left
Curves Right
Debut
Id
Laps
Length
Name
Official Website
Timezone
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/formulae/trial/v2/en/sport_events/sr:stage:361171/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.com") conn.request("GET", "/formulae/trial/v2/en/sport_events/sr:stage:361171/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/formulae/trial/v2/en/sport_events/sr:stage:361171/summary.xml?api_key={your_api_key}" ``` > Click here for a Summary sample of a Sport. > Click here for a Summary sample of a Season. > Click here for a Summary sample of an Event. > Click here for a Summary sample of a Practice. > Click here for a Summary sample of a Qualifying stage. > Click here for a Summary sample of a Race. Access the Stage Summary feed by replacing the parameters in the following URL: https://api.sportradar.com/formulae/`{access_level}`/`{version}`/`{language_code}`/sport_events/`{stage_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` | 2 letter code for supported languages

English is the only fully supported language for this API. Click here for a tabular list of available languages per competition. | | `stage_id` | Id of a given stage. | | `format` | xml or json. | | `your_api_key` | Your API key. | To retrieve the XML Schema Definition (.XSD) for the Stage Summary, use the following URL. https://schemas.sportradar.com/bsa/genericstage/v2/xml/endpoints/genericstage/summary.xsd Return to top ## Team Profile Provides detailed team information.
TTL / Cache: 300 seconds
Update Frequency: As Necessary
Content Type: Raw XML or JSON
Team Information Data Points: Country Code
Gender
Name
Nationality
Team Id
```ruby require 'uri' require 'net/http' require 'openssl' url = URI("https://api.sportradar.com/formulae/trial/v2/en/teams/sr:competitor:417327/profile.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.com") conn.request("GET", "/formulae/trial/v2/en/teams/sr:competitor:417327/profile.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/formulae/trial/v2/en/teams/sr:competitor:417327/profile.xml?api_key={your_api_key}" ``` > The above command returns xml structured like this. Access the Team Profile feed by replacing the parameters in the following URL: https://api.sportradar.com/formulae/`{access_level}`/`{version}`/`{language_code}`/teams/`{team_id}`/profile.`{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 is the only fully supported language for this API. Click here for a tabular list of available languages per competition. | | `team_id` | Id of a given team. | | `format` | xml or json. | | `your_api_key` | Your API key. | To retrieve the XML Schema Definition (.XSD) for the Team Profile, use the following URL. https://schemas.sportradar.com/bsa/genericstage/v2/xml/endpoints/genericstage/competitor_profile.xsd Return to top ## Frequently Asked Questions

Q: How does the stage system work?

A: The Formula E API uses generic stage implementation. The core of the API is built around the concept of stages. For example, an event contains the following stage types: practice, qualifying, and race. Each of those stages, in turn, have stages. The IDs of each stage are usable in the URL path to request information about that particular stage.

The Formula E sport and seasons within it are stages as well. The sport stage consists of season stages for each annual season. Using the ID of a chosen season as a parameter in the Stage Summary endpoint you can "drill down" into each season. For example, using the 2022 season ID as a parameter in the Stage Summary endpoint, the sub-stages will be individual race events. From the race event, you can drill down into the practice, qualifying, and race stages using the same endpoint with different stage IDs.

The best way to 'start' the navigation with the Formula E API is using the Seasons endpoint. From there one can obtain the stage ID for the season required and use that as a parameter in the Stage Summary endpoint.

Stage Type Information Included Sub-stages
Sport Information about the seasons included. Which is limited to the current and previous season only. Note probabilities do not return valid data on this stage. Formula E seasons
Season Contains the season schedule, driver and team standings and statistics. Events on the Formula E calendar for that season
Event Information about a single event, the competitors, the teams, and the circuit. Sessions (eg: Practice, Qualifying, Race)
Practice Competitors and results of practice such as fastest time etc. None
Qualifying Information pertaining to the qualifying stage of the event including conditions, competitors, and overall qualifying results. None
Race Details of the race itself including the competitors, lap by lap, and overall results. None

Q: What are the stage types I can expect to see in the feeds?

A: Here are the Formula E stage:

  • sport
  • season
  • event
  • practice
  • qualifying
  • race

Q: How do I see the Championship points table?

A: Use the stage summary endpoint and a season stage ID as the parameter. The competitors node lists competitors, ranked with points, position, victories, races, races with points, and podiums.

Q: How do I know what "stage" I am currently looking at?

A: Each stage has a 'stage' element. The stage element has an attribute "type" displays stage type. The different valid stage types are listed above.

Q: How do I get the probabilities for the entire Championship? Or only one race?

A: You can use season, event, and race stage IDs as parameters for the probabilities endpoint. Probabilities are available for the individual driver to win the season, a single event, and race stage. Probabilities are not available on the Sport, Practice, Qualifying, or Lap stages.

Q: How do I retrieve information about an individual driver?

A: Use the Competitor Profile endpoint with the required driver's competitor ID. The best place to get the driver's competitor ID is the Stage Summary endpoint, using the season stage ID.

Q: What races are covered in the Formula E API?

A: The entire Formula E Championship. For a more detailed breakdown, reference our Coverage Matrix.

Q: What are the possible statuses of a race or stage?

A: Here are the possible stage statuses and their definitions:

  • Cancelled - The stage is cancelled and will not be taking place
  • Closed - The stage is over and we have validated the results
  • Completed - The stage is over, but we have not finished data collection and validation
  • Finished - The stage is over
  • Not Started - The stage has not begun
  • Preliminary - The stage is about to begin
  • Running - The stage is currently in progress

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: Where are the race probabilities for Formula E?

A: At this time, Sportradar only provides probabilities at the championship level for Formula E.

Q: What are the possible result statuses?

A: Here are the possible result statuses:

  • Finished
  • Out

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