FastF1 — Formula 1 Data
Quick Start
Prefer the CLI — it avoids Python import path issues:
sports-skills f1 get_race_schedule --year=2025
sports-skills f1 get_race_results --year=2025 --event=Monza
Python SDK (alternative):
from sports_skills import f1
schedule = f1.get_race_schedule(year=2025)
results = f1.get_race_results(year=2025, event="Monza")
Choosing the Year
Derive the current year from the system prompt's date (e.g., currentDate: 2026-02-16 → current year is 2026).
- If the user specifies a year, use it as-is.
- If the user says "latest", "recent", "last season", or doesn't specify a year: The F1 season runs roughly March-December. If the current month is January or February (i.e., before the new season starts), use
year = current_year - 1 since that's the most recent completed season. From March onward, use the current year — races will have started or be imminent.
- Never hardcode a year. Always derive it from the system date.
Workflows
Workflow: Race Weekend Analysis
get_race_schedule --year=<year> — find the event name and date
get_race_results --year=<year> --event=<name> — final classification (positions, times, points)
get_lap_data --year=<year> --event=<name> --session_type=R — lap-by-lap pace analysis
get_tire_analysis --year=<year> --event=<name> — strategy breakdown (compounds, stint lengths, degradation)
Workflow: Driver/Team Comparison
get_championship_standings --year=<year> — championship context (points, wins, podiums)
get_team_comparison --year=<year> --team1=<t1> --team2=<t2> OR get_teammate_comparison --year=<year> --team=<team> — head-to-head qualifying and race pace
get_season_stats --year=<year> — aggregate performance (fastest laps, top speeds)
Workflow: Season Overview
get_race_schedule --year=<year> — full calendar with dates and circuits
get_championship_standings --year=<year> — driver and constructor standings
get_season_stats --year=<year> — season-wide fastest laps, top speeds, points leaders
get_driver_info --year=<year> — current grid (driver numbers, teams, nationalities)
Available Commands
get_race_schedule, get_race_results, get_session_data, get_driver_info, get_team_info, get_lap_data, get_pit_stops, get_speed_data, get_championship_standings, get_season_stats, get_team_comparison, get_teammate_comparison, get_tire_analysis.
For return schemas, parameter details, and valid command lists, read the files in the references/ directory.
Examples
User: "Show me the F1 calendar"
- Call
get_race_schedule(year={year})
- Present schedule with event names, dates, and circuits
User: "How did Verstappen do at Monza?"
- Derive the year (if unspecified, use the latest completed season per the rules above)
- Call
get_race_results(year={year}, event="Monza") for final classification
- Call
get_lap_data(year={year}, event="Monza", session_type="R", driver="VER") for lap times
- Present finishing position, gap to leader, fastest lap, and tire strategy
User: "What were the latest F1 results?" (asked in February 2026)
- Current month is February → season hasn't started → use
year = 2025
- Call
get_race_schedule(year=2025) to find the last event of that season
- Call
get_race_results(year=2025, event=<last_event>) for the final race results
- Present the results
Error Handling & Fallbacks
- If event name not found → call
get_race_schedule first to find the exact event name. Retry with the correct name.
- If session data is empty → the session hasn't happened yet. FastF1 only returns data for completed sessions.
- If a command returns an error → check the valid commands list in
references/commands.md. Do NOT invent command names.
- If
get_race_results returns no fastest_lap_time → use get_lap_data and find the minimum lap_time across all drivers instead.
- In Jan/Feb, use
year = current_year - 1 for the most recent completed season. Do NOT query the current year before March.
- Never fabricate lap times, race results, or championship points. If data is unavailable, state so clearly.
1---2name: fastf13description: Formula 1 data — race schedules, results, lap timing, driver and team info. Powered by the FastF1 library. Covers F1 sessions, qualifying, practice, race results, sector times, tire strategy. Use when: user asks about F1 race results, qualifying, lap times, driver stats, team info, the F1 calendar, or Formula 1 data. Don't use when: user asks about other motorsports (MotoGP, NASCAR, IndyCar, WEC, Formula E). Don't use for F1 betting odds or predictions — use kalshi or polymarket instead. Don't use for F1 news articles — use sports-news instead.4license: MIT5---6
7# FastF1 — Formula 1 Data
8
9## Quick Start
10
11Prefer the CLI — it avoids Python import path issues:
12```bash
13sports-skills f1 get_race_schedule --year=2025
14sports-skills f1 get_race_results --year=2025 --event=Monza
15```
16
17Python SDK (alternative):
18```python
19from sports_skills import f1
20
21schedule = f1.get_race_schedule(year=2025)
22results = f1.get_race_results(year=2025, event="Monza")
23```
24
25## Choosing the Year
26
27Derive the current year from the system prompt's date (e.g., `currentDate: 2026-02-16` → current year is 2026).
28
29- **If the user specifies a year**, use it as-is.
30- **If the user says "latest", "recent", "last season", or doesn't specify a year**: The F1 season runs roughly March-December. If the current month is January or February (i.e., before the new season starts), use `year = current_year - 1` since that's the most recent completed season. From March onward, use the current year — races will have started or be imminent.
31- **Never hardcode a year.** Always derive it from the system date.
32
33## Workflows
34
35### Workflow: Race Weekend Analysis
36
371. `get_race_schedule --year=<year>` — find the event name and date
382. `get_race_results --year=<year> --event=<name>` — final classification (positions, times, points)
393. `get_lap_data --year=<year> --event=<name> --session_type=R` — lap-by-lap pace analysis
404. `get_tire_analysis --year=<year> --event=<name>` — strategy breakdown (compounds, stint lengths, degradation)
41
42### Workflow: Driver/Team Comparison
43
441. `get_championship_standings --year=<year>` — championship context (points, wins, podiums)
452. `get_team_comparison --year=<year> --team1=<t1> --team2=<t2>` OR `get_teammate_comparison --year=<year> --team=<team>` — head-to-head qualifying and race pace
463. `get_season_stats --year=<year>` — aggregate performance (fastest laps, top speeds)
47
48### Workflow: Season Overview
49
501. `get_race_schedule --year=<year>` — full calendar with dates and circuits
512. `get_championship_standings --year=<year>` — driver and constructor standings
523. `get_season_stats --year=<year>` — season-wide fastest laps, top speeds, points leaders
534. `get_driver_info --year=<year>` — current grid (driver numbers, teams, nationalities)
54
55### Available Commands
56
57`get_race_schedule`, `get_race_results`, `get_session_data`, `get_driver_info`, `get_team_info`, `get_lap_data`, `get_pit_stops`, `get_speed_data`, `get_championship_standings`, `get_season_stats`, `get_team_comparison`, `get_teammate_comparison`, `get_tire_analysis`.
58
59For return schemas, parameter details, and valid command lists, read the files in the `references/` directory.
60
61## Examples
62
63User: "Show me the F1 calendar"
641. Call `get_race_schedule(year={year})`
652. Present schedule with event names, dates, and circuits
66
67User: "How did Verstappen do at Monza?"
681. Derive the year (if unspecified, use the latest completed season per the rules above)
692. Call `get_race_results(year={year}, event="Monza")` for final classification
703. Call `get_lap_data(year={year}, event="Monza", session_type="R", driver="VER")` for lap times
714. Present finishing position, gap to leader, fastest lap, and tire strategy
72
73User: "What were the latest F1 results?" (asked in February 2026)
741. Current month is February → season hasn't started → use `year = 2025`
752. Call `get_race_schedule(year=2025)` to find the last event of that season
763. Call `get_race_results(year=2025, event=<last_event>)` for the final race results
774. Present the results
78
79## Error Handling & Fallbacks
80
81- If event name not found → call `get_race_schedule` first to find the exact event name. Retry with the correct name.
82- If session data is empty → the session hasn't happened yet. FastF1 only returns data for completed sessions.
83- If a command returns an error → check the valid commands list in `references/commands.md`. Do NOT invent command names.
84- If `get_race_results` returns no `fastest_lap_time` → use `get_lap_data` and find the minimum `lap_time` across all drivers instead.
85- In Jan/Feb, use `year = current_year - 1` for the most recent completed season. Do NOT query the current year before March.
86- **Never fabricate lap times, race results, or championship points.** If data is unavailable, state so clearly.