VOOZH about

URL: https://apify.com/richard.biros/f1-data-extractor

⇱ F1 Data Extractor Β· Apify


Pricing

from $0.60 / 1,000 results

Go to Apify Store

Extract comprehensive F1 data: race results, qualifying, practice, pit stops. Smart season/round filtering. Sorted, analysis-ready output from f1.com.

Pricing

from $0.60 / 1,000 results

Rating

4.0

(1)

Developer

πŸ‘ Richard BiroΕ‘

Richard BiroΕ‘

Maintained by Community

Actor stats

3

Bookmarked

44

Total users

0

Monthly active users

a month ago

Last modified

Categories

Share

Formula 1 Data Scraper & Extractor

Extract comprehensive Formula 1 race data from the official F1 website. Get race results, qualifying times, practice sessions, pit stops, fastest laps, and complete historical F1 statistics from 1950 to present. Perfect for data analysis, machine learning, fantasy F1, and motorsport analytics.

Keywords: F1 scraper, Formula 1 data, race results API, motorsport analytics, F1 statistics, historical F1 data, qualifying times, pit stop data, F1 dataset, racing data extraction

🏁 Why Use This F1 Data Extractor?

  • πŸš€ 70+ Years of F1 History - Access every race from 1950 to the current season
  • ⚑ Smart Season Parsing - Use ranges like "2020-2026" or "1950-x" for all history
  • πŸ“Š Perfectly Sorted Data - Results ordered by season, round, session, and position
  • πŸ’° Cost-Effective - No expensive API subscriptions, pay only for what you scrape
  • πŸ”„ Always Up-to-Date - Scrapes directly from official Formula1.com
  • 🎯 Flexible Selection - Choose specific sessions, drivers, and seasons
  • πŸ“ˆ Analysis-Ready - Clean, flat JSON/CSV format for immediate use
  • βš™οΈ Production-Ready - Built with Apify SDK and Crawlee for reliability

✨ Key Features

Data Coverage

  • βœ… Complete Race Weekend Data - Practice, qualifying, sprint, race, pit stops, fastest laps
  • βœ… Historical Archives - Every F1 season from 1950 to present (70+ years)
  • βœ… All Driver Positions - Full race classification, not just podium finishers
  • βœ… Sprint Weekend Support - Automatic detection and handling of sprint formats

Extraction Capabilities

  • βœ… Multi-Season Ranges - Smart parsing: "2020-2024" or "2022, 2024"
  • βœ… Selective Sessions - Choose only the data you need (saves time & cost)
  • βœ… Batch Processing - Scrape multiple seasons/races in a single run
  • βœ… Sorted Output - Results organized by season β†’ round β†’ session β†’ position

Technical Excellence

  • βœ… Fast & Efficient - CheerioCrawler for 10x faster HTML parsing vs browsers
  • βœ… Robust Error Handling - Gracefully handles missing sessions and 404s
  • βœ… Clean JSON Output - Flat structure ready for SQL, pandas, Excel, or BI tools
  • βœ… No API Limits - Direct web scraping, no rate limits or API keys needed

πŸ“Š Available Session Types

Practice Sessions

  • practice-1 - First practice session (all weekends)
  • practice-2 - Second practice session (normal weekends only)
  • practice-3 - Third practice session (normal weekends only)

Qualifying

  • qualifying - Main qualifying session (all weekends)
  • sprint-qualifying - Sprint shootout (sprint weekends only)

Race Sessions

  • race-result - Main race results (all weekends)
  • sprint - Sprint race results (sprint weekends only)

Grids

  • starting-grid - Starting positions for main race
  • sprint-grid - Starting positions for sprint (sprint weekends only)

Additional Data

  • pit-stop-summary - All pit stops during the race
  • fastest-laps - Fastest lap times across the race

πŸ“₯ Input Configuration

{
"seasons":"2023-2024",
"rounds":"1-5",
"sessionsToScrape":["qualifying","race-result"],
"includeAllDrivers":true,
"proxyConfiguration":{
"useApifyProxy":false
}
}

Input Parameters

ParameterTypeRequiredDefaultDescription
seasonsstringYescurrent yearF1 season years to extract. Supports single year ("2026"), ranges ("2022-2026"), comma-separated ("2020, 2023, 2026"), or x as a current-year placeholder ("1950-x" for all history)
roundsstringNoall roundsFilter specific race rounds. Supports single ("5"), ranges ("1-5"), or comma-separated ("1, 5, 10"). Leave empty to scrape all rounds
sessionsToScrapearrayNo["race-result"]Which sessions to extract
includeAllDriversbooleanNotrueExtract all positions vs winner only
proxyConfigurationobjectNo{ useApifyProxy: false }Proxy settings (use Apify Proxy for anti-bot protection)

πŸ“€ Output Structure

Flat Data Format

Each row represents one driver's result in one session at one race:

{
"season":2024,
"round":5,
"grandPrix":"China",
"date":"21 Apr",
"sessionType":"race-result",
"position":1,
"driverNumber":1,
"driver":"Max Verstappen",
"driverCode":"VER",
"team":"Red Bull Racing Honda RBPT",
"laps":56,
"timeOrRetired":"1:40:52.554",
"points":25,
"detailsUrl":"https://www.formula1.com/en/results/2024/races/1233/china/race-result"
}

Session-Specific Fields

Practice Sessions:

  • position, driverNumber, driver, driverCode, team, laps, timeOrRetired

Qualifying:

  • position, driverNumber, driver, driverCode, team, q1Time, q2Time, q3Time, laps

Race/Sprint:

  • position, driverNumber, driver, driverCode, team, laps, timeOrRetired, points

Starting Grid:

  • position, driverNumber, driver, driverCode, team, timeOrRetired

Pit Stops:

  • stop, driverNumber, driver, driverCode, lapNumber, timeOfDay, stopDuration, totalDuration

Fastest Laps:

  • position, driverNumber, driver, driverCode, team, lapNumber, timeOfDay, timeOrRetired, avgSpeed

πŸš€ Usage Examples

Example 1: Get All Race Results for a Single Season

{
"seasons":"2024",
"sessionsToScrape":["race-result"],
"includeAllDrivers":true
}

Output: ~480 rows (24 races Γ— 20 drivers)

Example 2: Multi-Season Historical Analysis ⭐ NEW!

{
"seasons":"2022-2024",
"sessionsToScrape":["qualifying","race-result"],
"includeAllDrivers":true
}

Output: ~2,880 rows (3 seasons Γ— 24 races Γ— 2 sessions Γ— 20 drivers) Use case: Compare driver/team performance across multiple seasons

Example 3: Complete Race Weekend Data

{
"seasons":"2024",
"sessionsToScrape":[
"practice-1","practice-2","practice-3",
"qualifying","race-result"
],
"includeAllDrivers":true
}

Output: ~2,400 rows (24 races Γ— 5 sessions Γ— 20 drivers)

Example 4: Just Winners (Faster Extraction)

{
"seasons":"2024",
"sessionsToScrape":["qualifying","race-result"],
"includeAllDrivers":false
}

Output: 48 rows (24 races Γ— 2 sessions Γ— 1 winner)

Example 5: Pit Stop Analysis

{
"seasons":"2024",
"sessionsToScrape":["pit-stop-summary","race-result"],
"includeAllDrivers":true
}

Example 6: Sprint Weekend Analysis

{
"seasons":"2024",
"sessionsToScrape":[
"practice-1",
"sprint-qualifying",
"sprint",
"qualifying",
"race-result"
],
"includeAllDrivers":true
}

Example 7: Year-over-Year Comparison

{
"seasons":"2023-2024",
"sessionsToScrape":["qualifying"],
"includeAllDrivers":true
}

Use case: Compare qualifying performance trends between seasons

Example 8: Specific Races Only (First 5 Rounds) ⭐ NEW!

{
"seasons":"2024",
"rounds":"1-5",
"sessionsToScrape":["qualifying","race-result"],
"includeAllDrivers":true
}

Output: ~200 rows (5 races Γ— 2 sessions Γ— 20 drivers)
Use case: Analyze opening races or test on subset before full season scrape

Example 9: Selected Circuit Analysis ⭐ NEW!

{
"seasons":"2024",
"rounds":"6, 9, 16",
"sessionsToScrape":["race-result"],
"includeAllDrivers":true
}

Use case: Analyze specific iconic circuits (Monaco, Silverstone, Monza)

🏎️ Sprint vs Normal Weekends

The actor automatically handles different weekend formats:

Normal Weekend:

  • 3 practice sessions (P1, P2, P3)
  • 1 qualifying session
  • 1 race

Sprint Weekend:

  • 1 practice session (P1 only)
  • Sprint qualifying
  • Sprint race
  • Main qualifying
  • Main race

If a session doesn't exist (e.g., P2 on a sprint weekend), the actor logs a warning and continues gracefully.

πŸ’‘ Use Cases & Applications

Sports Analytics & Research

  • Performance Analysis - Track driver and team statistics across seasons
  • Qualifying vs Race Pace - Compare practice/qualifying to actual race performance
  • Pit Stop Strategy - Analyze pit stop timing and duration patterns
  • Historical Comparisons - Compare modern F1 to different eras (turbo, V8, hybrid)

Machine Learning & AI

  • Race Prediction Models - Train ML models on historical race data
  • Driver Performance Clustering - Group drivers by performance characteristics
  • Weather Impact Analysis - Correlate race conditions with outcomes
  • Strategy Optimization - Predict optimal pit stop windows

Fantasy F1 & Gaming

  • Fantasy League Stats - Historical data for fantasy F1 predictions
  • Driver Form Analysis - Recent performance trends for league picks
  • Head-to-Head Comparisons - Compare teammate performances

Business Intelligence & Journalism

  • Interactive Dashboards - Build Tableau/PowerBI F1 dashboards
  • Sports Journalism - Data-driven articles with historical context
  • Sponsorship Analysis - Team and driver visibility metrics
  • Broadcasting Stats - Real-time graphics and commentary support

πŸ“Š Data Analysis Examples

SQL Analysis

1. Driver Championship Standings

SELECT
driver,
team,
SUM(points)as total_points,
COUNT(*)as races,
AVG(position)as avg_finish
FROM f1_results
WHERE sessionType ='race-result'AND season =2024
GROUPBY driver, team
ORDERBY total_points DESC;

2. Team Performance by Track Type

SELECT
team,
grandPrix,
AVG(position)as avg_position,
SUM(points)as points
FROM f1_results
WHERE sessionType ='race-result'AND season =2024
GROUPBY team, grandPrix
ORDERBY team, avg_position;

3. Qualifying to Race Position Change

WITH quali AS(
SELECT round, driver, position as quali_pos
FROM f1_results
WHERE sessionType ='qualifying'AND season =2024
),
race AS(
SELECT round, driver, position as race_pos
FROM f1_results
WHERE sessionType ='race-result'AND season =2024
)
SELECT
q.driver,
AVG(q.quali_pos - r.race_pos)as avg_position_change
FROM quali q
JOIN race r ON q.round = r.round AND q.driver = r.driver
GROUPBY q.driver
ORDERBY avg_position_change DESC;

πŸ†˜ Troubleshooting & FAQs

Common Issues

Q: Why are some sessions missing data?
A: Sprint weekends have different formats (only 1 practice session instead of 3). The Actor handles this gracefully and logs warnings for missing sessions.

Q: How do I get data for a specific race only?
A: Use the rounds parameter! For example, "rounds": "5" scrapes only Round 5. You can also use ranges "1-5" or comma-separated "1, 5, 10" for multiple specific races.

Q: Can I scrape live/ongoing races?
A: The Actor scrapes completed sessions only. For live timing, use the official F1 live timing app.

Q: Is this data suitable for commercial use?
A: The data is scraped from the public Formula1.com website. Review F1's terms of service and consider your specific use case.

Data Quality

  • βœ… Sorted Output - All results ordered by season, round, session type, and position
  • βœ… Complete Records - All available fields extracted (times, laps, points, etc.)
  • βœ… Validated Structure - Consistent schema across all sessions
  • βœ… Error Logging - Missing or failed sessions are logged, not hidden

🎯 Best Practices

  1. Start Small - Test with a single season and few rounds before scraping large ranges
  2. Use Smart Ranges - "2020-2024" and "1-5" are easier than listing individual values
  3. Filter Strategically - Use rounds to target specific circuits
  4. Select Sessions - Only scrape the sessions you need to minimize requests
  5. Test First - Run with rounds: "1" to verify your configuration works
  6. Export Regularly - Download your datasets for offline analysis
  7. Schedule Runs - Use Apify schedules for automatic weekly/monthly updates

πŸ“š Additional Resources

🀝 Support & Contributions

Found a bug or have a feature request? Please contact the Actor developer through the Apify Console.

πŸ“„ License & Disclaimer

This Actor scrapes publicly available data from Formula1.com. Users are responsible for ensuring their use complies with applicable terms of service and laws. The Actor developer is not affiliated with Formula 1 or Formula1.com.


Ready to start analyzing F1 data? Run the Actor now and get race results in seconds! 🏁

You might also like

IMDB Advanced Scraper

epctex/imdb-advanced-scraper

Uncover comprehensive data on millions of movies, artists, and more with our advanced scraping tool. Extract TV episode details, descriptions, casting, artists, ratings, and more. Customize your search with filters and mappings for precise results.

IMDB Movie Scraper

getdataforme/imdb-movie-scraper

IMDB Scraper extracts all the details of the movie for which the detailed information are required for example, the rating of the movie, actors and all the details associated with the movie are fetched and presented in json or tabular format.

41

IMDb

canadesk/imdb

List Search Results and Get Titles or Celebrities data from IMDb! It's fast and costs little.

πŸ‘ User avatar

Canadesk Support

52

IMDb Scraper

dtrungtin/imdb-scraper

Free IMDb API to extract and download data on movies, TV shows, video games, and other listings from IMDb. Delivers custom machine-readable IMDb datasets containing all information on your selected listings.

IMDb Scraper

automation-lab/imdb-scraper

Scrape IMDb movie and TV show data β€” titles, ratings, vote counts, genres, runtime, and release year. Filter by type, genre, year, rating, and popularity. No API key needed. Export to JSON, CSV, or Excel.

πŸ‘ User avatar

Stas Persiianenko

15

AliExpress Reviews Scraper

shahidirfan/AliExpress-Reviews-Scraper

Effortlessly extract detailed customer reviews, star ratings, and feedback images from AliExpress product pages. This actor is perfect for sentiment analysis, dropshipping product research, and monitoring competitor performance. Gather the insights you need to build better e-commerce strategies.

73

5.0

IMDB 🎞️ Extractor

jupri/imdb

πŸ’« Scrape IMDb.com

Google Translate β€” Free Unlimited Text Translation

maged120/google-translate-scraper

Translate text between any of 100+ languages using Google Translate. Batch translate multiple texts in one run without an API key, Google Cloud account, or billing.

IMDB Reviews Scraper 🎬

easyapi/imdb-reviews-scraper

🎬 Powerful IMDB review scraper that extracts detailed user reviews, ratings, and engagement metrics from any IMDB title. Perfect for sentiment analysis, market research, and content strategy. Includes author details, helpfulness votes, and full review text.

IMDb Reviews Scraper

coder_zoro/imdb-reviews-scraper

Scrape IMDb user reviews for a specific movie or series. Specify the IMDb title ID and maximum number of reviews to fetch. Get structured review data including author, rating, title, and content, ready for analytics or app integration.