La ce servește API-ul OpenF1 și cum să profităm la maximum de el?

Ultima actualizare: 13/10/2025
Autorul: Isaac
  • OpenF1 oferă date istorice F1 gratuite, în timp real, cu OAuth2
  • Puncte finale complete: ture, ture scurte, radio, control și vreme
  • Filtre puternice, ieșire JSON/CSV și de streaming MQTT/WebSockets

Date OpenF1 API Formula 1

API-ul OpenF1 este utilizat pentru a oferi date de Formula 1 în timp real și istorice open source, facilitând dezvoltarea de tablouri de bord, automatizarea alertelor, studierea strategiilor sau crearea de dispozitive conectate care reacționează la evenimentele de pe pistă. Propunerea sa servește drept punte între telemetrie și aplicații: poate fi interogată prin HTTP, filtrată după parametri și permite, de asemenea, transmiterea în flux a datelor.

Dacă vă întrebați cum diferă de alte soluții, cheia este abordarea sa deschisă și practică: date istorice gratuite fără autentificare, acces la plăți în timp real (la cerere) și metode multiple de consum (REST, MQTT și WebSockets). Sursa de date provine de la livetiming.formula1.comși, deși OpenF1 este un proiect neoficial, acesta reunește informații foarte valoroase, cum ar fi timpii pe tur, date auto, comunicații radio, controlul cursei, meteorologie, ture de curse, poziții și multe altele.

Ce este OpenF1 și ce îți oferă?

OpenF1 este o API gratuit și open source care expune datele F1 astfel încât oricine să poată explora competiția dintr-o perspectivă tehnică și reproductibilă. Scopul este de a facilita crearea de Tablouri de bord interactive, analiză aprofundată a carierei sau chiar gadgeturi care se aprind atunci când șoferul tău preferat depășește sau activează DRS-ul. Este o alternativă inspirată de ecosistemul FastF1, cu avantajul de a oferi date live în timpul sesiunilor (pentru conturile cu acces) pe lângă seriile istorice.

Două nuanțe operaționale ar trebui luate în considerare: unele puncte finale pot nu transmiteți în direct în timpul sesiunii și publicate la scurt timp după aceea (de exemplu, car_data, intervale sau locație), iar accesul live necesită un cont plătit. În orice caz, istoricul este gratuit și accesibil la JSON sau CSV fără autentificare, ideal pentru începerea prototipării fără probleme.

Puncte finale OpenF1 și streaming

Cazuri comune de utilizare

Cu OpenF1 poți construi de la zero un panou de cronometrare care afișează ture, sectoare, goluri și intervale, îmbunătățit cu radioul echipei și evenimente de control al cursei. Adăugați grafice de viteză maximă, RPM sau trepte de viteză și veți avea o vizualizare telemetrică de bază pentru a compara ture și piloți.

În mediile de analiză, veți traversa timpi pe tur, compuși și vârsta anvelopelor pentru a investiga reducerile de performanță, retrogradările și ferestrele de închidere. De asemenea, puteți automatiza alertele prin steaguri, VSC/SC sau schimbări de poziție, precum și înregistrarea condițiilor de traseu și de vânt care afectează ritmul.

Dacă vă plac dispozitivele conectate, streamingul prin MQTT/WebSockets vă va permite să activați LED-uri, notificări pe telefoanele mobile sau declanșează efecte atunci când există o depășire sau apare un steag galben. Abordarea „API-first” se potrivește la fel de bine în microservicii ca și în Apps faţă care consumă date agregate.

Structura API-ului REST: Endpoint-uri și ce oferă acestea

API-ul REST este organizat pe resurse tematice. Fiecare punct final acceptă filtrează după parametri (inclusiv operatori precum >, <, >=, <=) și returnează date în format JSON sau CSV (prin adăugarea argumentului csv=true). Mai jos este o prezentare generală completă a ceea ce acoperă fiecare cale cheie.

Datele mașinii

Punctul final car_data expune variabilele mașinii la ~3,7 Hz (viteză, RPM, trepte de viteză…). Este posibil să nu fie disponibil în sesiunile live și publicat la scurt timp după aceea. Adresa URL de bază: GET https://api.openf1.org/v1/car_data.

  • frânăpedală de frână (100 apăsată, 0 neapăsată).
  • dataUTC instantaneu în ISO 8601.
  • numărul_șoferului: număr unic al pilotului.
  • drsStare DRS (mapări cunoscute: 0/1 dezactivat, 8 detectate eligibile, 10/12/14 activat; alte valori îndoielnice).
  • cheie_întâlnireID-ul întâlnirii (puteți folosi Ultimele).
  • n_gear: treapta 1–8 (0 punct mort).
  • rpm: rotații pe minut.
  • cheie_sesiuneID sesiune (acceptă Ultimele).
  • vitezăkm/h.
  • regulator: % accelerație.
  Schimbați mânerul IP pe iPhone sau iPad

Există o mapare utilă a stărilor DRS: 0/1 = oprit, 8 = detectat și eligibil, 10/12/14 = activatUnele valori intermediare apar ca necunoscute.

Drivere

Returnează informații despre piloți pe sesiune, cu nume pentru TV, echipă și coduri. GET /v1/drivere.

  • nume_difuziune: nume în grafica TV.
  • Codul tarii: prefixul țării.
  • numărul_șoferului: dorsală unică.
  • prenume, nume, nume_complet: nume de piloți.
  • url_portret: fotografie cu fața.
  • cheie_întâlnire, cheie_sesiune: ID-uri.
  • nume_acronim: acronim din trei litere.
  • culoarea_echipei: culoarea hexagonului echipei.
  • nume_echipă: numele echipei.

intervale

Intervalele dintre mașini și distanța față de lider, actualizate ~la fiecare 4 secunde doar în cursă (înregistrarea live poate fi lansată după sesiune). GET /v1/intervale.

  • data: marcaj temporal.
  • numărul_șoferuluidorsală.
  • decalaj_la_lider: secunde față de lider, „+1 LAP” dacă s-a turat sau nul dacă este lider.
  • interval: timp până la mașina precedentă, „+1 TUR” dacă este cazul sau nul dacă este în frunte.
  • cheie_întâlnire, cheie_sesiune: ID-uri.

Laps

Informații detaliate pe tură (sectoare, viteze, ieșire din groapă, capcană de viteză). GET /v1/ture.

  • dată_început: începutul aproximativ al returului.
  • numărul_șoferuluidorsală.
  • durată_sector_1/2/3: ori pe sector.
  • i1_viteză, i2_viteză: viteze în intermediare.
  • is_pit_out_lap: adevărat dacă este un tur de ieșire de la boxe.
  • durata_turei: timpul total.
  • numărul_turei: numărul turei.
  • segmente_sector_1/2/3mini-sectoare (valorile 2048 = galben, 2049 = verde, 2051 = violet, 2064 = pitlane; alte valori posibile).
  • st_speed: viteză în capcană.
  • cheie_întâlnire, cheie_sesiune: ID-uri.

Segmentele nu sunt disponibile în Carreras și pot exista neconcordanțe de culoare pe televizor din motive necunoscute.

Locație

Coordonatele aproximative ale mașinii pe pistă la ~3,7 Hz (nu include) poziție laterală pe pistă, doar progres). Postarea live poate fi făcută după sesiune. GET /v1/locație.

  • data: Ora UTC.
  • numărul_șoferuluidorsală.
  • cheie_întâlnire, cheie_sesiune: ID-uri.
  • x, y, zCoordonate carteziene.

Întâlniri

Grupează un weekend (GP sau test) cu sesiunile sale. GET /v1/întâlniri.

  • cheie_circuit, nume_scurt_circuit: circuit.
  • cod_țară, cheie_țară, nume_țară: țară.
  • dată_început: început.
  • gmt_offset: diferența de fus orar față de GMT.
  • locaţie: oraș/locație.
  • cheie_întâlnireID-ul întâlnirii.
  • nume_întâlnire, nume_oficial_întâlnire: nume.
  • an: an.

Depășiri (beta)

Depășiri și schimbări de poziție (include penalizări pe pistă, la boxe și după cursă). Numai în curse și poate fi incompletă. GET /v1/depășiri.

  • data: instantaneu.
  • cheie_întâlnire, cheie_sesiune: ID-uri.
  • numărul_șoferului_depășit: dorsală depășită.
  • numărul_șoferului_care_depășește: dorsală înainte.
  • poziţie: poziție după finalizarea depășirii.

Groapă

Treceri pe linia boxelor cu durata totală de la intrare până la ieșire. GET /v1/groapă.

  • data, numărul_șoferului, numărul_turei: context.
  • cheie_întâlnire, cheie_sesiune: ID-uri.
  • durata_piciorului: secunde în boxe.

Funcția

Pozițiile piloților pe parcursul sesiunii, inclusiv schimbările. GET /v1/poziție.

  • data, numărul_șoferului.
  • cheie_întâlnire, cheie_sesiune.
  • poziţieDe la 1 încolo.

Controlul cursei

Evenimente oficiale: steaguri, DRS, mașină de siguranță, VSC, mesaje și diverse categorii. GET /v1/control_cursei.

  • categorieCarEvent, Drs, Flag, SafetyCar etc.
  • data, numărul_șoferului, numărul_turei.
  • pavilion: tipuri (VERDE, GALBEN, DUBLU GALBEN, CARODRI…).
  • mesaj: descrierea evenimentului.
  • domeniuPistă, Pilot, Sector…
  • sectormini-sectorul implicat (dacă este cazul).
  • cheie_întâlnire, cheie_sesiune.

Sesiuni

Lista și detaliile sesiunilor (Antrenamente, Calificări, Sprint, Cursă…). GET /v1/sessions.

  • cheie_circuit, nume_scurt_circuit.
  • cod_țară, cheie_țară, nume_țară.
  • dată_început, dată_sfârșit, gmt_offset, locaţie.
  • cheie_întâlnire, cheie_sesiune.
  • nume_sesiuneAntrenament 1, Calificări, Cursă…
  • tip_sesiuneAntrenamente, Calificări, Cursă…
  • an.

Rezultatul sesiunii (beta)

Clasificare după fiecare sesiune: cele mai bune tururi sau timpul total al cursei. GET /v1/rezultat_sesiune.

  • dnf, dns, dsq: nu termină, nu începe, descalificat.
  • numărul_șoferului, cheie_întâlnire, cheie_sesiune.
  • durată: cel mai bun tur (antrenamente libere/calificări) sau timpul total (cursă). În calificări, matricea [Q1, Q2, Q3].
  • decalaj_la_lider: diferență vs. lider; în quali, matrice [Q1, Q2, Q3].
  • număr_de_ture: ture parcurse.
  • poziţie: poziție finală.
  Ce este Chrome Hardware Acceleration (CHA)? Este ușor de înțeles

Grila de start (beta)

Grila de start pentru următoarea cursă. GET /v1/grilă_de_începere.

  • numărul_șoferului, cheie_întâlnire, cheie_sesiune.
  • durata_turei: timpul pe turul de calificare.
  • poziţie: pune pe grătar.

Perioade de stagiu

Perioade de conducere continuă în funcție de compoziția anvelopei și de vechime. GET /v1/stints.

  • compusMOALE, MEDIE, DURE…
  • numărul_șoferului, cheie_întâlnire, cheie_sesiune.
  • început_tur, sfârșit_tur: gamă de viraje.
  • număr_stârg: ordinal al stintului.
  • vârsta_anvelopei_la_pornire: vârsta anvelopei la început (în ture).

Radioul echipei

Selectarea mesajelor radio între șoferi și echipe (nu 100% din comunicări). GET /v1/team_radio.

  • data, numărul_șoferului.
  • cheie_întâlnire, cheie_sesiune.
  • url_înregistrare: legătură către fișierul audio.

Vreme

Vremea pe circuit cu actualizare fiecare minut. GET /v1/vreme.

  • temperatura aerului (°C), urmărire_temperatură (°C).
  • umiditate (%), presiune (mbar), precipitaţii.
  • direcția_vântului (0–359°), viteza vântului (Domnișoară).
  • data, cheie_întâlnire, cheie_sesiune.

Filtre, timp și formate: profitați la maximum de interogările dvs.

Unul dintre avantajele OpenF1 este filtrare după parametri în URL-ul în sine, inclusiv operatorii relaționali. Acest lucru permite interogări expresive, cum ar fi filtrarea după durata turei, alegerea unui interval de date sau limitarea după numărul cursei și sesiune.

Pe lângă filtrarea după câmpuri, puteți utiliza intervale de timp cu date_start și date_end (acceptă mai multe formate compatibile cu dateutil.parser, cum ar fi „2021-09-10”, „2021-09-10T14:30:20+00:00”, „10 sept. 2021” etc.).

Dacă preferați foi de calcul, adăugați csv=adevărat la interogare și descărcare în format CSV. Este ideal pentru Excel sau pentru ETL rapid înainte de încărcarea datelor într-un depozit analitic.

Exemple (parafrazate din materialul sursă pentru referință): Ieșirea la boxe a lui Sainz de cel puțin 120 de secunde într-o sesiune specifică: /v1/laps?session_key=9222&driver_number=55&is_pit_out_lap=true&lap_duration>=120Toate sesiunile de Septembrie 2023: /v1/sessions?date_start>=2023-09-01&date_end<=2023-09-30Și dacă îl doriți în format CSV: /v1/sessions?year=2023&csv=true.

Acces în timp real: autentificare OAuth2 și anteturi

Pentru date live aveți nevoie de un cont aprobat și de un flux de OAuth2 simplu: trimiteți numele de utilizator și parola către /token, primești un jeton de acces cu o expirare de 1 oră și îl includeți ca Purtător în antetul Autorizare al solicitărilor dumneavoastră.

Detalii operaționale pe care ar trebui să le cunoașteți: API-ul este adesea actualizat cu un întârziere de ~3 secunde în ceea ce privește viața reală (poate varia în funcție de porniri la rece), iar interogările REST au un Expirare 10 secundeDacă o interogare durează mult timp, împărțiți-o în bucăți și combinați rezultatele local.

Rețineți că tokenul expiră în 1 oră; aplicația dvs. trebuie să reînnoiască tokenul în mod transparent. Pentru asistență generală și feedback, canalul recomandat este Discuții GithubErorile sunt raportate prin crearea de probleme în repozitoriu.

Streaming eficient cu MQTT și WebSockets

Pentru aplicațiile urgente, recomandarea este de a acorda prioritate MQTT sau WebSockets (MQTT peste WSS) deoarece trimit date imediat ce acestea sunt disponibile, evitând interogarea continuă.

Conexiuni tipice: MQTT TLS activat mqtt.openf1.org:8883 și WebSocket-uri securizate în wss://mqtt.openf1.org:8084/mqttAutentificarea utilizează token de acces ca parolă; numele de utilizator poate fi orice șir de caractere nevid (sau adresa dvs. de e-mail).

L subiectele reflectă punctele finale REST (de exemplu: v1/sessions, v1/laps, v1/location...), cu opțiunea de wildcard-uri dacă clientul dvs. le acceptă. Sarcina utilă este JSON și adaugă câmpuri utile: _id (număr întreg crescător pentru sortare după timp) și _cheie (identificator de document pentru versiuni succesive ale aceluiași obiect, de exemplu runde care sunt actualizate cu felii).

Exemplu de mesaj de locație (format ilustrativ): include meeting_key, session_key și driver_number, precum și coordonate și metacâmpuri de streaming.

{
  "meeting_key": 1257,
  "session_key": 10007,
  "driver_number": 31,
  "date": "2025-04-11T11:21:16.603025+00:00",
  "x": 0,
  "y": 0,
  "z": 0,
  "_key": "1744370476603_31",
  "_id": 1747235800206
}

Siguranță și bune practici

Prioritatea este de a proteja credențiale și token-uriSchimbul de nume de utilizator/parolă-token ar trebui să se afle în backend-ul dvs.: nu încorporați niciodată credențiale directe în codul clientului inspectabil.

  Cum să compari ușor două documente unul lângă altul în Word

Pentru aplicațiile web, transmiteți token-ul prin HTTPS și evitați expunerea acestuia în LocalStorage dacă există riscul de XSS; evaluați cookie-urile Numai Http + Securizat atunci când este cazul. În arhitecturile cu streaming din browser, luați în considerare dacă este mai sigur să păstrați Conexiune MQTT/WebSocket în backend-ul dvs. și transmiteți evenimente către clienți.

În mediile backend, stochează în siguranță token-ul și îl gestionează reînnoire în avans. Nu postați token-uri în depozite publice și nu le lipiți în exemple de cod partajate.

Ecosistem, contribuții și foaie de parcurs

OpenF1 își propune să democratizarea datelor F1 făcându-le accesibile. Vă invită să propuneți idei în Discuții Github și să colaborați prin intermediul PR-urilor. Serviciul este gratuit (fără limite de autentificare sau de rată pentru datele istorice), dar solicitările utilizare responsabilă și, dacă vi se pare util, susțineți sustenabilitatea acestuia prin donații.

Foaia de parcurs menționează încorporarea clasificări și calendare, adăugați sezoanele 2018–2022, transcrieri de către IA pentru radio, timpi de oprire mai exacți și valori ale depășirilor și ale anvelopelor. Există, de asemenea, o avertizare: nu garantează disponibilitate sau precizie continuă absolută și nu sunt responsabili pentru nicio pierdere rezultată din utilizare.

Credit către FastF1 și autorului său pentru părțile inspiraționale ale sistemului (inclusiv înregistratorul SignalR) și reamintire legală: OpenF1 nu este afiliat cu companiile F1; mărci comerciale și drepturi sunt de la Formula One Licensing BV

Comparație și alternative: Live Pulse și alte servicii

În ecosistem există servicii precum „F1 Live Pulse” (prin platforme de tip RapidAPI) care vizează oferirea de Date în timp real, mesaje oficiale, rularea anvelopelor, radioul echipei, vremea și clasamente cu predicții. Adesea organizează puncte finale pentru piloți, timpi, opriri la boxe, radio, controlul cursei, vremea și clasamentul, cu accent pe dezvoltarea aplicațiilor și a tablourilor de bord îmbogățite.

Sunt disponibile și API-uri comerciale precum „api-formula-1.p.rapidapi.com”. Un ghid practic în spaniolă a arătat cum se pot consuma clasamente cu XMLHttpRequest și apoi migrați-le către aduc din cauza unei probleme CORS, adăugarea antetelor „x-rapidapi-key” și „x-rapidapi-host”. Aceasta este o reamintire bună că atunci când lucrați cu API-uri din browser, CORS și chei necesită atenție; un backend care transmite cererea prin proxy este adesea preferabil.

Dacă optați pentru OpenF1, aveți avantajul istoricului deschis, al filtrelor expresive, CSV nativ și un mod live cu OAuth2, precum și streaming prin MQTT/WebSockets. În funcție de caz, îl puteți combina cu alte surse, respectând întotdeauna licențe și termeni al fiecărui serviciu.

Noțiuni introductive despre Python și MongoDB la nivel local

Unele resurse recomandă configurarea unui mediu local pentru procesarea și salvarea datelor. O abordare tipică este instalarea Server comunitar MongoDB v7, asigură-te că ai Piton ≥ 3.10 y pip ≥ 23și instalați pachetul OpenF1 Python.

După instalare, configurați variabila de mediu MONGO_CONNECTION_STRING indicând către instanța locală/la distanță și pornind proiectul pentru a consuma și stoca date. Acest model facilitează analiza reproductibilă și propriile tablouri de bord conectat la baza dvs. de date.