If you have any comments, suggestions or feature requests please add them here. Problems and errata can be reported on Bug Reports page.
Feedback
Comments
485 responses to “Feedback”
-
Hi Christian,
You’re right, podiums are a bit of a weak spot in the API – and it may take some thought to find a good solution. I try to avoid any modifications to the API whilst a season is running, so this will have to go on the ToDo list until next winter.
Cheers,
Chris -
Hi Chris, thanks for your reply!
One more question. I’m looking at options for what I want to develop. The original approach I was thinking about was implementing server-side caching and some extra logic I need over your API results.
However, I saw you have the API runtime available at https://github.com/jcnewell/ergast-f1-api. That would give me an interesting option to fork your code, add the logic I need (would contribute it back, of course), host it myself and not worry about rate limits.
I haven’t found the latest additions in that repo, such as the sprint result endpoints. Is there a newer version available? Thanks!
-
Hi Christian,
Good point – I’ll commit the recent changes.
Chris -
Hello,
Not sure where this goes but on the formula1 api, the quali table for May 29 2022 Monaco appears to have Alonso’s driver set for P7 and P16. P16 should be Alex Albon
-
Hi Ryan,
Oops, that’s embarrassing. Now corrected.
Problems like this usually go on the Bug Reports page.
Cheers,
Chris -
Hi Chris!
First up thanks a lot for the API! The amount of information available is amazing.
I would like to add pitstop and tyre information to my website. I am currently thinking of a grid with all the drivers (I think Formula 1 does something similar). I did see the pitstop information being available, but I couldn’t find tyre information. Is that information available and if not is it possible?
-
Hi Wesley,
Unfortunately, I haven’t been able to find a reliable source of tyre data over the years.
Chris -
Hello!
I’m having a play with building a small project using this (brilliant) api and F1 resource – so much detail!
Something I’ve came across and wanted to check in case I was just missing something. For Pit Stops, is there any information on the Constructor within the response?
Playing with it I can get the driver but as the end goal is to display the fastest race pit stop. Would be nice to have the constructor too. I could manually work my way round this, but again, just wanted to check I wasn’t maybe missing something.
Thanks,
Douglas -
Hi Douglas,
Unfortunately, you’ll have to cross-reference the driverIds with entries in the equivalent race results query.
Cheers,
Chris -
Hi Chris!
Is there an option to view which of the drivers got the fastest lap or do I need to loop through the laptimes?
Thanks in advance!
Wesley -
Hi Wesley,
You can get the fastest lap of the race using for example:
https://ergast.com/api/f1/2010/1/fastest/1/results
However, you can’t get the fastest lap for a specific lap without looping through the data from a laps query e.g. for lap 7:
https://ergast.com/api/f1/2010/1/laps/7
Cheers,
Chris -
I just want to say that I’m new to Formula 1 but love playing with data visualization and this API is incredible. Kudos to you. ?
-
Thanks Atthar – let me know if you build something interesting!
Chris -
Thanks for the reaction Chris and I totally agree with Atthar Mirza! Love the API!
-
Hi, Chris!
Thank you for this API! It is amazing! -
Hello Christian,
thank you for the API. I am looking for a job in data analisys and decided to build a project for my portfolio. And your development gave me the opportunity to make telegram bot for people like me – for F1 fans!
My bot can show schedule, weather and prediction. If you intrested, you can check here: https://t.me/f1_who_will_win_bot or here https://github.com/Komsomolochka/formula1-prediction. Thank you! -
Hello, Chris!
I was comparing statistics between your API and formula1 official standings reports and I noticed that their fastest laps data stretches further than this API currently does. Is there any plan to fill up the data older than 2004?Take care!
Filip
-
Hi Daria,
That’s neat. Would you like me to add it to the Application Gallery?
Good luck with the job hunt!
Cheers,
Chris -
Yes, that would be great! Thank you, Chris!
-
Do you have an OpenApi2/3 document around this api? If so, have you thought of generating clients from that?
-
Hi Lucas,
There’s a partial OpenAPI schema for the Ergast API developed by Adam Paxton:
https://github.com/adampax/ergast-f1-openapi-doc
You can find other projects on the Ergast topic page on GitHub:
https://github.com/topics/ergast-api
Cheers,
Chris -
Hi, first of all thank you for the great job you’ve done with this api.
I would like to say that I’m still learning so if my questions are a bit dumb, please be gentle 🙂I’m having some problems with the response speeds of the api, sometimes it takes up to 5-8s to receive simple latest results. Is it a problem on my end?
Also I often get this error on Android and I don’t know what might be causing the issue
HTTP FAILED: java.io.IOException: unexpected end of stream on https://ergast.com/… -
Hi Anon,
Unfortunately. there was a rogue app and a hostile endpoint spamming the API this weekend. They’ve been dealt with so the server is back to normal now.
Cheers,
Chris -
Works like a charm, thank you so much!
-
Hello!
It would be really cool if there was an endpoint about safety car and red flags and such! Such as which lap it was dispatched and when it came in! If it was VSC or normal! Then you could also have some sort of flag maybe for driver pit stops if they pitted under SC or not? Also that brings up the question, how are pit stops made under red flags currently being counted as it currently stands?Thank you mate!
-
Hi Filip,
This would be great if there was a reliable and consistent source of the data. Have you seen one?
Pitstops under red flags are currently recorded the same way as normal ones, as shown in the FIA docs.
Cheers,
Chris -
Hello, is this endpoint intentionally not showing current season statistics? http://ergast.com/api/f1/drivers/alonso/driverStandings
Would be cool if it did include information even if the season is not finished yet.
Regards -
Hi Anon,
That endpoint shows final standings – so it would inconsistent to include mid-season standings. You wouldn’t display them in the same list would you?
Chris -
Hi!
First of all, thank you very much for this magnificent work and for the large amount of data that is concentrated here.
I have a question (I don’t know if it has already been answered before, I haven’t found anything). The pit stop data is in the API only from 2012, however, on the official page of Formula 1, for example, they go much further (example in https://www.formula1.com/en/results.html/2005/races/772/malaysia/pit-stop-summary.html). Is there any reason for this?
-
Hi Enrique,
I added the Pit Stop endpoint at the beginning of the 2012 season and load the data after each race. I wasn’t aware of a source of earlier data at that point and I haven’t used data from formula1.com.
Chris -
Hi! Thanks for your reply. It would be nice to have this pit stop data from older years. By the moment I will try to scrape the page and add the results to the ones that you have already provided (I can share the results if necessary)
-
Hi Chris!
Like Enrique, I’d be happy to help. I’m currently working on a new project based on your DB. (f1dashboard.com)
I’m especially interested in enhancing history information. (after all we just have to find out the facts once, then its done)
Are you on irc? #f1 on libera chat. What do you think about working together (maybe via github) on the contents of the data base?
eXtr3m0
-
Hi eXtr3m0,
Thanks for the offer. I’d be very happy to accept missing historical data and have done so in the past. Any machine-readable format will do (but ideally a sequence of SQL INSERT statements)
Cheers,
Chris -
As a suggestion that I think can be useful both for users of this API and for developers and admins, I would move both the feedback forum and the bug forum to Github. This way it would be easier for us to find incidents and not publish repeated doubts/suggestions/bugs, and for the admins, who would not have to read so many (since there would be no repetitions). Also, each bug goes with its separate thread, not like here, where it becomes difficult to follow who responds to what.
I would definitely give git one more push (advertising it more on this page or whatever) and shut down these forums.
-
Hi! I wonder to ask what are the sources of your data. I am especially interested in lap times. I haven’t been able to find any sources with which to compare their data (only the FIA documents, which don’t go as far back in time as you).
Thanks a lot.
-
Hi Enrique,
Interesting idea – I’ll consider it.
Cheers,
Chris -
Hi Lozano.
The FIA data is the primary source.
Cheers,
Chris -
Hi Admin!
Is there any chance that you can publish what are the SQL queries (at least the most important ones) that you run against the DB in order to get the data for the API?
I’m trying to build an app that only uses the DB dump to load the database into my server to get the data without using the API and although I have already figured out some queries, I’m not really that expert in SQL and I think some may contain errors or inaccurate data.
It would be really time-saving if I could actually use the real queries that the API uses in the backend. Also Publishing those SQL queries may motivate more people to use the DB dump instead of the API for certain use cases so I think it’s a good idea in general.
-
Hi StakHPR,
All the SQL queries are available from the Ergast runtime in GitHub: https://github.com/jcnewell/ergast-f1-api/tree/master/webroot/php/api
Good luck with your project.
Cheers,
Chris -
Hello, my name is Zainab Mahyar. I am a senior in Cordova high school and this year in my IB math class we are required to do an IA which is an internal assessment/big project/exploration about a math concept relative or applied to something we’re passionate about.
I am a huge F1 fan and right away I knew I wanted to do something related to it. So my idea is to do something with tyre degradation throughout laps. I wanted to gather data but I realized it would be really hard to do from a video, so I decided to look online and check if there was any data regarding tyre degradation relative to different laps. When I found none, I tried looking for websites or people I could content that might be able to help and provide me with some. That’s when I came upon your website, it was listed in may different places by many different people as a reliable and useful resource for data collection.
I checked out your website and looked through the data you have on there and it is great, you have data on many different things that made me question whether I should change my topic as a whole. But I’m really interested in tyre degradation of F1 cars in general, so when I saw no data for it, I was a little upset. I’m reaching out to you to ask if you have any data on average tyre degradation during different laps, because if you do, it would be beyond amazing. If you don’t, I would like to know if there is any other method or source you can recommend to me for my data collection. I’m really looking forward to working on this project if I have reliable and accurate data I can work with. I do have other ideas in case I can’t collect the data necessary but I’m not as passionate about those, so it would be very helpful and appreciated if you can provide me with some data or another source/method for getting the data necessary for my project.Thank you for your time and sorry for the inconvenience. If you have any questions please email me, I really care about and want to put time and effort into this project, so that it is the best it could possibly be.
Sincerely
Zainab Mahyar -
Hi Zainab,
Unfortunately I have not been able to find a good source of tyre data, so it is not supported by the API.
Good luck with your project.
Cheers,
Chris -
Hello,
I would like to know in what period do you add data about the new season? And if it is possible, could you please add information about drivers in Constructor object?
Thanks -
Hi thersmx,
I’ve now add the schedule for 2023. I’ll add provisional drivers and teams in the next few days.
Cheers,
Chris -
Hi,
Appreciate all the work you’ve done for this API, but I often get an “Error establishing a database connection” when accessing your API, is there any reason why?
Cheers,
Jouvy -
Hi Jouvy,
Unfortunately, a technical has appeared in last few weeks causing the server to run out of memory every few hours. I’ll try to fix it over the xmas break but the source of the problem is not obvious :-/
Cheers,
Chris -
Hi Chris,
Great, thanks for the info, hope you can find the root cause and fix it.
Merry Christmas!Cheers,
Jouvy -
Hi, after reading the terms and conditions I didn’t understand if this API can be used for a small example within the thesis work for the university? it would be very useful to me
-
Hi Davide,
That would be fine.
Good luck with your thesis.
Cheers,
Chris -
I have been working on my research project and parsing the data required from your API ( Ergast) for my algorithms. However lately I have been experiencing a timeout error constantly when I try to fetch data from the server which is odd because I never encountered this issue before.
I am attaching the code I have been working on.
Hope you can provide me with an appropriate solution.
Thank you
Error: ConnectionError: (‘Connection aborted.’, ConnectionResetError(54, ‘Connection reset by peer’))
Code:
driver_standings = {‘season’: [],
’round’:[],
‘driver’: [],
‘driver_points’: [],
‘driver_wins’: [],
‘driver_standings_pos’: []}# query API
for n in list(range(len(rounds))):
for i in rounds[n][1]: # iterate through rounds of each yearurl = ‘https://ergast.com/api/f1/{}/{}/driverStandings.json’
r = requests.get(url.format(rounds[n][0], i))
json = r.json()for item in json[‘MRData’][‘StandingsTable’][‘StandingsLists’][0][‘DriverStandings’]:
try:
driver_standings[‘season’].append(int(json[‘MRData’][‘StandingsTable’][‘StandingsLists’][0][‘season’]))
except:
driver_standings[‘season’].append(None)try:
driver_standings[’round’].append(int(json[‘MRData’][‘StandingsTable’][‘StandingsLists’][0][’round’]))
except:
driver_standings[’round’].append(None)try:
driver_standings[‘driver’].append(item[‘Driver’][‘driverId’])
except:
driver_standings[‘driver’].append(None)try:
driver_standings[‘driver_points’].append(int(item[‘points’]))
except:
driver_standings[‘driver_points’].append(None)try:
driver_standings[‘driver_wins’].append(int(item[‘wins’]))
except:
driver_standings[‘driver_wins’].append(None)try:
driver_standings[‘driver_standings_pos’].append(int(item[‘position’]))
except:
driver_standings[‘driver_standings_pos’].append(None)driver_standings = pd.DataFrame(driver_standings)
# define lookup function to shift points and number of wins from previous rounds
def lookup (df, team, points):
df[‘lookup1′] = df.season.astype(str) + df[team] + df[’round’].astype(str)
df[‘lookup2′] = df.season.astype(str) + df[team] + (df[’round’]-1).astype(str)
new_df = df.merge(df[[‘lookup1’, points]], how = ‘left’, left_on=’lookup2′,right_on=’lookup1′)
new_df.drop([‘lookup1_x’, ‘lookup2’, ‘lookup1_y’], axis = 1, inplace = True)
new_df.rename(columns = {points+’_x’: points+’_after_race’, points+’_y’: points}, inplace = True)
new_df[points].fillna(0, inplace = True)
return new_dfdriver_standings = lookup(driver_standings, ‘driver’, ‘driver_points’)
driver_standings = lookup(driver_standings, ‘driver’, ‘driver_wins’)
driver_standings = lookup(driver_standings, ‘driver’, ‘driver_standings_pos’)driver_standings.drop([‘driver_points_after_race’, ‘driver_wins_after_race’, ‘driver_standings_pos_after_race’],
axis = 1, inplace = True)driver_standings.tail(20)
-
Hi Sanket,
Have you read the Terms and Conditions? It looks like you’re trying to load the Standings data for every race in the database, which will probably get you blocked as you’ll exceed the rate limits. The block will clear automatically after 24 hours. If you want bulk data please download a database dump here: https://ergast.com/mrd/db/ e.g. the CSV files.
The API is intended for Web Apps where you only request the data you need to present to a user.
Cheers,
Chris
Leave a Reply