Skip to main content
FastF1 can capture live timing and telemetry data during F1 sessions using the SignalRClient. This allows you to record data in real-time as races, qualifying, and practice sessions happen.
Live timing data cannot be used in real-time during a session. The data must be saved and then loaded after the session for analysis using Session.load().

Overview

During F1 sessions, timing data and telemetry are streamed live using the SignalR protocol. The SignalRClient connects to this stream and saves the raw data to a file for later processing. What you can capture:
  • Live timing data (lap times, sector times, gaps)
  • Position data (track position, speed)
  • Telemetry (throttle, brake, gear, RPM)
  • Race control messages
  • Tire strategy information
  • Weather data
  • Team radio metadata

Setting Up the Live Timing Client

Import and configure the client:

Configuration Parameters

  • filename: Path where the data will be saved. The file will contain raw SignalR messages.
  • filemode:
    • 'w': Overwrite existing file (default)
    • 'a': Append to existing file (useful if restarting during a session)
  • timeout: Number of seconds to wait without receiving data before automatically exiting. Set to 0 to disable timeout.
  • logger: Optional custom logging.Logger instance for error logging
  • no_auth: If True, attempts to connect without authentication. May only work for some sessions or return partial data.

Capturing Live Data

Basic Usage

Start the client to begin recording:
The client will:
  1. Connect to the F1 live timing stream
  2. Subscribe to all available data topics
  3. Write incoming messages to the file
  4. Continue until timeout or manual interruption (Ctrl+C)

During a Live Session

Run this during a practice, qualifying, or race session:

Handling Connection Issues

If the client disconnects during a session, restart it in append mode:

Data Topics Captured

The client automatically subscribes to these data streams:
  • Heartbeat: Connection health monitoring
  • AudioStreams: Audio stream metadata
  • DriverList: List of participating drivers
  • ExtrapolatedClock: Session timing information
  • RaceControlMessages: Race control decisions and flags
  • SessionInfo: Session metadata and configuration
  • SessionStatus: Session state (started, stopped, finished)
  • TeamRadio: Team radio transmission metadata
  • TimingAppData: Timing app data (gaps, intervals)
  • TimingStats: Statistical timing information
  • TimingData: Core lap and sector timing
  • TrackStatus: Track status and flag conditions
  • WeatherData: Weather conditions
  • Position.z: Compressed position data
  • CarData.z: Compressed car telemetry
  • ContentStreams: Content stream information
  • SessionData: Session-specific data
  • TopThree: Top three positions
  • RcmSeries: Race control messages series
  • LapCount: Current lap count

Loading Captured Data

After capturing live data, load it for analysis using FastF1’s standard API:

Processing Raw Live Data

For advanced use cases, process the raw SignalR messages:

Authentication

By default, the client authenticates with F1’s API to access complete live timing data:
To attempt connection without authentication:
Unauthenticated access may only work for certain sessions or return incomplete data. Use authenticated access for reliable data capture.

Custom Logging

Provide a custom logger for more control over logging:

Best Practices

File Organization

Organize captured files systematically:

Monitoring During Capture

Monitor the capture process:

Error Handling

Limitations

  1. No Real-Time Analysis: Data must be saved first, then loaded after the session
  2. Network Dependent: Requires stable internet connection during the session
  3. Authentication May Be Required: Some sessions may require authenticated access
  4. Raw Data Format: Captured data is in raw format and requires processing with FastF1

Troubleshooting

No Data Received

  • Verify the F1 session is currently active
  • Check your internet connection
  • Try with no_auth=True if authentication fails
  • Ensure no firewall is blocking WebSocket connections

Connection Timeouts

  • Increase timeout value: timeout=300 (5 minutes)
  • Use append mode (filemode='a') to resume after disconnection
  • Check F1’s official timing app to verify stream is active

Incomplete Data

  • Use authenticated access (no_auth=False)
  • Ensure capture started before session began
  • Check for network interruptions in logs

Next Steps