Feedback
If you have any comments, suggestions or feature requests please add them here. Problems and errata can be reported on Bug Reports page.
If you have any comments, suggestions or feature requests please add them here. Problems and errata can be reported on Bug Reports page.
Hi Vivec,
Apologies – now published.
Thanks for the reminder.
Chris
Hi Chris,
Want to thank you again for this amazing resource!
I’ve recently put racing-statistics.com live. It’s mostly geared towards comparison of drivers, constructors and careers. More to come in the next few weeks and months.
Could not have done this without your data!
cheers!
Marien
The Netherlands
Hello, as always love the work you do for this site. just one question, do you know when you will be updating 2018 drivers. I only ask as my site relies on your data
Hi James,
I’ve added all the prospective drivers I’m aware of to the database. A list of drivers and constructors for the year is only available after the first race, due to the design of the database. The logic here is that you never really know who’s going to turn up at the first race (remembering the US F1 hype)
Chris
wow thanks. forgot about that. great work as always….
Hi,
Thanks for great work You do. I’m using this data for challenge with colleagues about race standings. But we using for the challenge and Practice results.
Do You have plans add Practice results?
Hi Chris
I was wondering whether the issue with the import of the lap times is still likely to be an issue this season? When would you typically expect a full update to be completed after a race? And also the likely lag to the disc image? I understand this will vary and is on a best endeavors basis but just wanting to get an idea of how quickly after races we might be able to publish some analysis.
Many thanks
Toby
Hi Rolandas,
Unfortunately that would be a lot of extra work because of the number of sessions, so I haven’t attempted it.
Chris
Hi Toby,
Hopefully I can keep to the original target of 3 – 6 hrs after the race. However, the first race of the season often throws up some surprises so I can’t guarantee this initially.
Chris
For the schedule – is it race only, or is it possible to retrieve times of practice/qualifying sessions?
Also, is there somewhere you source this data from automatically, or do you enter it manually once a year?
Thanks
Hi Chris
Just a heads up in case you weren’t aware. It looks like the race data is updated for access via the API but the db image was last updated 18/3 so doesn’t yet include data for the Australian GP.
Cheers
Toby
Hi Toby, Thanks for the reminder – now updated. I was pre-occupied fixing problems with the data import on race day.
Chris
Hi Jon,
The schedule is currently race only. There are various sources but they’re not usually in a convenient format!
Chris
I downloaded the db image & opened in MySQL. Lap times from Australian GP aren’t in there, unless I’m doing something wrong.
Hi Dakota, Apologies. Check the lastest image – they should be there.
Chris
Perfect! Thanks so much. This website is awesome.
Hi Chris
Just looking at the pitstops table for the Chinese GP for 2017 (raceId==970). There seems to be 82 records? For example Massa and Perez have 6 pitstops recorded for China 2017. Something looks amiss.
I am planning to write some validation code do a range of checks on the database sometime soon which should help to turn up anything that looks odd like this. Will let you know once when I make some progress.
Cheers
Toby
Hi Toby, I think it was an unusual race with lots of changes between wet, intermediate and slick tyres. You can check here: https://www.fia.com/events/fia-formula-one-world-championship/season-2017/eventtiming-information-27
Validation tests would be good though!
Chris
Thanks Chris, I did do a spot check on lap times to try to make sense of the stops but clearly didn’t look closely enough! Will let you know when I make some progress on validation
Cheers
Toby
This is a great resource, thank you!
Are there plans to add tire data in the future?
Cheers,
Felipe
Hi Felipe,
Unfortunately, I haven’t been able to find a consistent and reliable source of tyre data. It would be great to include it
Chris
Hello
Do you have any documentation detailing the names of the column headers in the CSVs that can be downloaded from this website?
I’m trying to make sense of them but can’t.
driver_standings.csv for example has a column A with values ranging from 1 to 68688.
Many thanks for your help
Tom
Hi Tom,
The database tables are described in the schema: http://ergast.com/schemas/f1db_schema.txt
For example the Driver Standings table has seven fields in each row:
driverStandingsId
raceId
driverId
points
position
positionText
wins
The CSV file doesn’t include these column labels so your software it has probably used A, B, etc. The A column probably corresponds to the driverStandingsId which is simply a unique value to identify each entry in the table.
Note the other Id fields reference entries in other tables e.g. the driverId above references the driverId field in the Driver table.
Hope that helps,
Chris
Hi Chris,
I know you discussed many times about the practice results. Can you lead me to any source/sources that have FP data? I may try some time to retrieve them.
Hi Stergios,
You can get the practice results in PDF documents from the FIA e.g. for Canada: https://www.fia.com/events/fia-formula-one-world-championship/season-2018/eventtiming-information-5
Chris
Hi Chris,
great API, thanks for your work!
I was wondering if you have any plans to include which laps were driven with a virtual or on-track safety-car.
Best regards,
Andreas.
Hi Andy,
I’m not sure where I could the data for that. I guess you could infer it from the atypical laptimes.
Chris
On which api i can find world champion lists from 2005 to 2015 name with Grand Prix?
Currently i am referring (http://ergast.com/api/f1/driverStandings/1.json?callback=JSON_CALLBACK&limit=11&offset=55) this API but on that response i can’t able to find Grand Prix name.
Hi Umang,
A World Champion is associated with a season, rather than a single Grand Prix. What races are you trying to identify.
Chris
HI Chris, Thanks for your quick response. On first page i want to display World champion list and on second page i want to shows the list of the winners for every race for the selected year with highlight the row when the winner has been the world champion on grand prix of same season.
Currently i am referring below webservices
http://ergast.com/api/f1/driverStandings/1.json?callback=JSON_CALLBACK&limit=11&offset=55
http://ergast.com/api/f1/2008/results/1.json?callback=JSON_CALLBACK
Please let me know your view on same.
Hi Umang,
Yes, you will have to use these two queries. Unfortunately, it is not possible to use both results and standings parameters in a single Ergast API query.
Chris
Hi Chris,
thanks for your quick reply.
The only source for Safety-Car laps, I know of, is the FIA’s Lap Chart ( e.g., https://www.fia.com/events/fia-formula-one-world-championship/season-2018/lap-chart-27 ).
But that does not have a “converter-friendly” format 😉
Best regards
Hi Chris,
Is it possible to get upcoming GP info?
Hi Alim,
You can use this URL:
http://ergast.com/api/f1/current/next.json
Chris
Hi Chris,
First of all: thank you for providing this great API!
Two questions:
– Will the disqualification of Grosjean in Italy be updatet in the data?
– And will the ‘new’ team Racing Point Force India be included in the data?
Kind regards,
Bas
Hi Bas,
Thanks for the warning – I’ve been away so I wasn’t aware. Grosjean has been updated. For Force India, I don’t propose to change the team name but I’ve reset the points to zero in the constructor standings.
Chris
Hi!
I have the same question as Jon (commented on: 26 March 2018 at 23:20)
Are there any updates?
Maybe is there a way to get the schedule of practice and qualifying?
Hi Alexander,
I’ll look into this at the end of the season, for next year. However, I’ll need to find a reliable source of the data and work out how to represent it in the API.
Chris
Thanks for the API, it’s been really useful!
Thanks for giving dumps of the database. Very helpful!
I just downloaded all the data, but i cannot find the relation for drivers and the team they belong to in every year ??
Hi Arjan,
The relationship between drivers and constructors is established through entries in the results table. This is necessary, since historically, drivers may change teams mid-season.
Chris
Any way to get the team mates of specific driver?
Hi Juan,
There’s no specific API method for this but you could use the driver list for the year:
or if you know the constructorId:
Chris
Hi, why are you using nationalities (demonyms) instead of country codes in driver and constructor information? It’s pretty hard to generate emoji flags upon demonyms with existing js libraries (quite a pain to write my own one 🙂 ). Otherwise – super cool API!
Hi Mark,
I guess the nationalities were intended for presentation purposes. If you can send me a table of nationalities to country codes I could add a column to the driver and constructor tables.
Cheers,
Chris
Hi Chris,
Not sure what you meant by table here, but here’s a JSON with required data: https://github.com/meeDamian/country-emoji/pull/10/commits/502b9cbbd9ab864edfac041dbc0a4fe494494098. Let me know if it’s ok, otherwise I’ll find something else!
Mark
Thanks Mark – can’t promise when I’ll get around to it, but this mapping will be useful.
Cheers,
Chris
Hi,
The results for the latest GP are changed and still not reflected in the API.
Gasly is now tenth…
Hi Chris,
I noticed that the resuts from 1996 to 2003 do not contain the fastest lap information. However, I have been playing a bit with a copy of the database and came up with two update statements that take this info from the LapTimes table and updates the relevant fields in the Results table.
First update statement (it updates fastestLap and fastestLapTime and takes just some milliseconds to run):
update results
set (fastestLap,fastestLapTime) = (select lap, time from (select l.lap, l.time, min(l.milliseconds) from laptimes l where l.raceId=results.raceId and l.driverId=results.driverId))
where raceId in (select raceId from races where year between 1996 and 2003);
Second update statement (this one updates ‘rank’ and takes 8 seconds to run on my laptop):
update results
set rank=(select count(*)+1 from results r where r.raceId = results.raceId and r.fastestLapTime 0 and raceId in (select raceId from races where year between 1996 and 2003);
Do you want to give it a try?
Thanks, and keep up the great work.
Miguel