laptimes.py script fetches detailed lap-by-lap timing data for each driver in a race.
Script Overview
Location:~/workspace/source/laptimes.py
The script:
- Fetches lap times using pagination (API returns max 100 records per request)
- Combines all paginated data into a single file
- Respects rate limits during pagination
- Saves complete lap timing data
Lap time data is available from 1996 onwards. Earlier races do not have lap-by-lap timing information.
API Endpoint with Pagination
Key Configuration
Fetch Function with Pagination
Save Function
Main Function
Output Structure
Stored at:{year}/{race-name}/laptimes.json
Data Structure
Each lap contains:
Each timing entry contains:
Usage Example
Single Race
Multiple Races
Pagination Example
For a typical modern F1 race:- 20 drivers × 60 laps = 1,200 lap time records
- At 100 records per request = 12 API requests
- At 4 requests/second = ~3 seconds per race
Performance Tips
The script automatically sleeps between requests to respect rate limits. Fetching lap times for an entire season may take several minutes.
Optimizing for Multiple Races
Data Availability
Logging
Related Scripts
Pitstops
Collect pit stop data next (2011+)
Race Results
Compare with race finishing positions