Apa kegunaan OpenF1 API dan bagaimana cara memaksimalkan manfaatnya?

Pembaharuan Terakhir: 13/10/2025
penulis: Isaac
  • OpenF1 menawarkan data historis F1 langsung dan gratis dengan OAuth2
  • Titik akhir lengkap: putaran, tugas, radio, kontrol, dan cuaca
  • Filter yang kuat, keluaran JSON/CSV dan Streaming MQTT/WebSockets

Data Formula 1 API OpenF1

API OpenF1 digunakan untuk menawarkan data Formula 1 waktu nyata dan historis Sumber terbuka, memudahkan pengembang dan analis untuk membangun dasbor, mengotomatiskan peringatan, mempelajari strategi, atau membuat perangkat terhubung yang merespons peristiwa di lintasan. Proposalnya berfungsi sebagai jembatan antara telemetri dan aplikasi: dapat dikueri melalui HTTP, difilter berdasarkan parameter, dan juga memungkinkan streaming data.

Jika Anda bertanya-tanya apa yang membedakannya dari solusi lain, kuncinya adalah pendekatannya yang terbuka dan praktis: data historis gratis tanpa otentikasi, akses pembayaran real-time (sesuai permintaan), dan berbagai metode konsumsi (REST, MQTT, dan WebSockets). Sumber data berasal dari livetiming.formula1.com, dan meskipun OpenF1 adalah proyek tidak resmi, ia menyatukan informasi yang sangat berharga seperti waktu putaran, data mobil, komunikasi radio, kendali balapan, meteorologi, tugas, posisi, dan masih banyak lagi.

Apa itu OpenF1 dan apa yang ditawarkannya kepada Anda?

OpenF1 adalah sebuah API gratis dan open source yang memaparkan data F1 sehingga siapa pun dapat menjelajahi kompetisi dari perspektif teknis dan dapat direproduksi. Tujuannya adalah untuk memfasilitasi pembuatan Dasbor interaktif, analisis karier yang mendalam atau bahkan gadget yang menyala ketika pengemudi favorit Anda menyalip atau mengaktifkan DRS. Ini adalah alternatif yang terinspirasi oleh ekosistem FastF1, dengan keuntungan menawarkan data langsung selama sesi (untuk akun yang memiliki akses) selain seri historis.

Dua nuansa operasional harus diperhitungkan: beberapa titik akhir mungkin jangan menyiarkan langsung selama sesi dan dipublikasikan segera setelahnya (misalnya, car_data, interval, atau lokasi), dan akses langsung memerlukan akun berbayar. Bagaimanapun, riwayatnya gratis dan dapat diakses di JSON atau CSV tanpa autentikasi, ideal untuk memulai pembuatan prototipe tanpa hambatan.

Titik akhir dan streaming OpenF1

Kasus penggunaan umum

Dengan OpenF1 Anda dapat membangun dari awal panel waktu yang ditampilkan putaran, sektor, celah dan interval, disempurnakan dengan radio tim dan acara kontrol balapan. Tambahkan grafik kecepatan tertinggi, RPM, atau gigi, dan Anda akan memiliki tampilan telemetri dasar untuk membandingkan stint dan pembalap.

Dalam lingkungan analitik, Anda akan melintasi waktu putaran, kompon, dan usia ban untuk menyelidiki undercut, downgrade, dan jendela shutdown. Anda juga dapat mengotomatiskan peringatan dengan bendera, VSC/SC atau perubahan posisi, serta merekam kondisi lintasan dan angin yang memengaruhi kecepatan.

Jika Anda menyukai perangkat yang terhubung, streaming melalui MQTT/WebSockets akan memungkinkan Anda untuk mengaktifkan LED, beri tahu di ponsel atau memicu efek ketika terjadi penyalipan atau bendera kuning muncul. Pendekatan "API-first" sama-sama cocok untuk layanan mikro seperti pada apps depan yang mengonsumsi data agregat.

Struktur REST API: Titik Akhir dan Apa yang Mereka Tawarkan

REST API diatur berdasarkan sumber daya topik. Setiap titik akhir mendukung filter berdasarkan parameter (termasuk operator seperti >, <, >=, <=) dan mengembalikan data dalam format JSON atau CSV (dengan menambahkan csv=true). Berikut adalah ikhtisar komprehensif tentang cakupan setiap jalur kunci.

Data mobil

Titik akhir car_data memaparkan variabel mobil pada ~3,7 Hz (kecepatan, RPM, gigi…). Mungkin tidak tersedia dalam sesi langsung dan diterbitkan segera setelahnya. URL Dasar: GET https://api.openf1.org/v1/car_data.

  • rem: pedal rem (100 ditekan, 0 tidak).
  • tanggal: UTC instan dalam ISO 8601.
  • nomor_pengemudi: nomor pilot unik.
  • drs: Status DRS (pemetaan yang diketahui: 0/1 mati, 8 terdeteksi memenuhi syarat, 10/12/14 aktif; nilai lainnya meragukan).
  • kunci_rapat: ID Rapat (Anda dapat menggunakan Terbaru).
  • n_gigi: gigi 1–8 (0 netral).
  • rpm: putaran per menit.
  • kunci sesi: ID Sesi (mendukung Terbaru).
  • kecepatan: km/jam.
  • mencekik: % gas.
  Cara Membersihkan Layar di Konsol Windows: Semua Cara Dijelaskan

Ada pemetaan status DRS yang berguna: 0/1 = mati, 8 = terdeteksi dan memenuhi syarat, 10/12/14 = aktifBeberapa nilai antara tampak tidak diketahui.

driver

Mengembalikan informasi pilot berdasarkan sesi dengan nama untuk TV, tim, dan kode. DAPATKAN /v1/driver.

  • nama_siaran: nama dalam grafik TV.
  • Kode negara: kode negara.
  • nomor_pengemudi: punggung tunggal.
  • nama depan, nama belakang, nama lengkap: nama pilot.
  • url_foto_kepala: foto wajah.
  • kunci_rapat, kunci_sesi: ID.
  • nama_akronim: akronim tiga huruf.
  • tim_warna: tim warna hex.
  • nama_tim: nama tim.

Interval

Interval antara mobil dan jarak ke pemimpin, diperbarui ~setiap 4 detik hanya di balapan (siaran langsung dapat dirilis setelah sesi). DAPATKAN /v1/interval.

  • tanggal: stempel waktu.
  • nomor_pengemudi: punggung.
  • celah_menjadi_pemimpin: detik menuju pemimpin, “+1 LAP” jika tertinggal atau null jika memimpin.
  • selang: waktu ke mobil di depan, “+1 LAP” jika berlaku atau null jika memimpin.
  • kunci_rapat, kunci_sesi: ID.

Lap

Informasi detail per putaran (sektor, kecepatan, lubang pembuangan, perangkap kecepatan). DAPATKAN /v1/laps.

  • tanggal_mulai: perkiraan awal pengembalian.
  • nomor_pengemudi: punggung.
  • durasi_sektor_1/2/3: kali berdasarkan sektor.
  • i1_kecepatan, i2_kecepatan: kecepatan dalam tingkat menengah.
  • adalah_pit_out_lap: benar jika itu adalah putaran keluar pit.
  • durasi_putaran: total waktu.
  • nomor_pangkuan: nomor putaran.
  • segmen_sektor_1/2/3: sektor mini (nilai 2048 = kuning, 2049 = hijau, 2051 = ungu, 2064 = pitlane; nilai lain mungkin).
  • st_kecepatan: kecepatan dalam perangkap.
  • kunci_rapat, kunci_sesi: ID.

Segmen tidak tersedia di balap dan mungkin ada ketidakcocokan warna pada TV karena alasan yang tidak diketahui.

Lokasi

Perkiraan koordinat mobil di lintasan pada ~3,7 Hz (tidak termasuk posisi lateral di lintasan, hanya kemajuan). Siaran langsung dapat diposting setelah sesi. DAPATKAN /v1/lokasi.

  • tanggal: Waktu UTC.
  • nomor_pengemudi: punggung.
  • kunci_rapat, kunci_sesi: ID.
  • x, y, z: Koordinat Cartesian.

Rapat

Kelompokkan akhir pekan (GP atau tes) dengan sesi-sesinya. DAPATKAN /v1/pertemuan.

  • kunci_sirkuit, nama_pendek_sirkuit: sirkuit.
  • kode_negara, kunci_negara, nama_negara: negara.
  • tanggal_mulai: awal.
  • gmt_offset: perbedaan waktu vs GMT.
  • tempat: kota/lokasi.
  • kunci_rapat: ID Rapat.
  • nama_rapat, nama_resmi_rapat: nama.
  • tahun: tahun.

Menyalip (beta)

Menyalip dan mengubah posisi (termasuk penalti di trek, pit, dan pasca balapan). Hanya di balapan dan mungkin tidak lengkap. DAPATKAN /v1/menyalip.

  • tanggal: instan.
  • kunci_rapat, kunci_sesi: ID.
  • nomor_pembalap_yang_disusul: dorsal terlampaui.
  • nomor_pembalap_yang_menyalip: punggung depan.
  • posisi: posisi setelah menyelesaikan penyalipan.

Lubang

Lintasan pit lane dengan total durasi dari masuk hingga keluar. DAPATKAN /v1/pit.

  • tanggal, nomor_pengemudi, nomor_pangkuan: konteks.
  • kunci_rapat, kunci_sesi: ID.
  • pit_duration: detik di pitlane.

Posisi

Posisi pengemudi sepanjang sesi, termasuk perubahan. DAPATKAN /v1/posisi.

  • tanggal, nomor_pengemudi.
  • kunci_rapat, kunci_sesi.
  • posisi: 1 dan seterusnya.

Kontrol balapan

Acara resmi: bendera, DRS, Mobil Keselamatan, VSC, pesan dan berbagai kategori. DAPATKAN /v1/race_control.

  • kategori: CarEvent, Drs, Bendera, SafetyCar, dll.
  • tanggal, nomor_pengemudi, nomor_pangkuan.
  • bendera: jenis (HIJAU, KUNING, KUNING GANDA, KOTAK-KOTAK…).
  • pesan: deskripsi acara.
  • cakupan: Trek, Pengemudi, Sektor…
  • sektor:sektor mini yang terlibat (jika berlaku).
  • kunci_rapat, kunci_sesi.

Sesi

Daftar dan detail sesi (Latihan, Kualifikasi, Sprint, Balapan…). DAPATKAN /v1/sesi.

  • kunci_sirkuit, nama_pendek_sirkuit.
  • kode_negara, kunci_negara, nama_negara.
  • tanggal_mulai, tanggal_akhir, gmt_offset, tempat.
  • kunci_rapat, kunci_sesi.
  • nama_sesi: Latihan 1, Kualifikasi, Balapan…
  • tipe_sesi: Latihan, Kualifikasi, Balapan…
  • tahun.

Hasil sesi (beta)

Klasifikasi setelah setiap sesi: putaran terbaik atau total waktu balapan. DAPATKAN /v1/hasil_sesi.

  • dnf, dns, dsq: tidak selesai, tidak mulai, didiskualifikasi.
  • nomor_pengemudi, kunci_rapat, kunci sesi.
  • lamanya: putaran terbaik (latihan bebas/kualifikasi) atau total waktu (balapan). Pada kualifikasi, susunan [Q1, Q2, Q3].
  • celah_menjadi_pemimpin: perbedaan vs pemimpin; dalam quali, array [Q1, Q2, Q3].
  • jumlah_putaran: putaran selesai.
  • posisi: posisi akhir.
  Cara Menonaktifkan Microsoft Store. 4 Metode Unik

Jaringan awal (beta)

Posisi awal untuk balapan berikutnya. DAPATKAN /v1/starting_grid.

  • nomor_pengemudi, kunci_rapat, kunci sesi.
  • durasi_putaran: waktu putaran kualifikasi.
  • posisi: taruh di atas panggangan.

Tugas

Periode mengemudi berkelanjutan berdasarkan senyawa ban dan usia. DAPATKAN /v1/stints.

  • senyawa: LEMBUT, SEDANG, KERAS…
  • nomor_pengemudi, kunci_rapat, kunci sesi.
  • putaran_mulai, putaran_akhir: jangkauan belokan.
  • nomor tugas: urutan tugas.
  • usia_ban_saat_mulai: usia ban saat start (dalam putaran).

Tim radio

Pemilihan pesan radio antara pengemudi dan tim (tidak 100% komunikasi). DAPATKAN /v1/team_radio.

  • tanggal, nomor_pengemudi.
  • kunci_rapat, kunci sesi.
  • url_rekaman: tautan ke audio.

Cuaca

Cuaca sirkuit dengan pembaruan setiap menit. DAPATKAN /v1/cuaca.

  • suhu udara (°C), lacak_suhu (°C).
  • kelembaban (%), tekanan (mbar), curah hujan.
  • arah_angin (0–359°), kecepatan angin (MS).
  • tanggal, kunci_rapat, kunci sesi.

Filter, waktu, dan format: dapatkan hasil maksimal dari kueri Anda

Salah satu kelebihan OpenF1 adalah penyaringan berdasarkan parameter di URL itu sendiri, termasuk operator relasional. Hal ini memungkinkan kueri ekspresif seperti pemfilteran berdasarkan durasi putaran, pemilihan rentang tanggal, atau pembatasan berdasarkan nomor dan sesi balapan.

Selain memfilter berdasarkan bidang, Anda dapat menggunakan rentang waktu dengan date_start dan date_end (mendukung beberapa format yang kompatibel dengan dateutil.parser, seperti “2021-09-10”, “2021-09-10T14:30:20+00:00”, “10 Sep 2021”, dll.).

Jika Anda lebih suka spreadsheet, tambahkan csv=benar untuk kueri dan unduh dalam CSV. Ini ideal untuk Excel atau untuk ETL Cepat sebelum memuat data ke gudang analitis.

Contoh (diparafrasekan dari materi sumber untuk referensi Anda): Pit-out Sainz setidaknya 120 detik dalam sesi tertentu: /v1/laps?session_key=9222&driver_number=55&is_pit_out_lap=true&lap_duration>=120Semua sesi September 2023: /v1/sessions?date_start>=2023-09-01&date_end<=2023-09-30Dan jika Anda menginginkannya dalam format CSV: /v1/sessions?year=2023&csv=true.

Akses waktu nyata: autentikasi OAuth2 dan header

Untuk data langsung, Anda memerlukan akun yang disetujui dan aliran OAuth2 sederhana: kirim nama pengguna dan kata sandi ke /token, Anda menerima a akses_token dengan kedaluwarsa 1 jam dan Anda memasukkannya sebagai Pembawa di header Otorisasi permintaan Anda.

Detail operasional yang harus Anda ketahui: API sering diperbarui dengan penundaan ~3 detik berkenaan dengan kehidupan (mungkin berbeda-beda mulai dingin), dan kueri REST memiliki batas waktu 10 detikJika suatu kueri memerlukan waktu lama, pecah menjadi beberapa bagian dan gabungkan hasilnya secara lokal.

Ingat bahwa token berakhir dalam 1 jam; aplikasi Anda harus memperbarui token secara transparan. Untuk dukungan dan umpan balik umum, saluran yang direkomendasikan adalah Diskusi Github; Bug dilaporkan dengan membuat masalah dalam repositori.

Streaming efisien dengan MQTT dan WebSockets

Untuk aplikasi yang sensitif terhadap waktu, rekomendasinya adalah memprioritaskan MQTT atau WebSockets (MQTT melalui WSS) karena mereka mengirim data segera setelah tersedia, menghindari polling berkelanjutan.

Koneksi umum: MQTT TLS aktif mqtt.openf1.org:8883 dan WebSockets yang aman di wss://mqtt.openf1.org:8084/mqttOtentikasi menggunakan token akses sebagai kata sandi; nama pengguna dapat berupa string apa pun yang tidak kosong (atau email Anda).

Los topik mencerminkan titik akhir REST (misalnya.: v1/sessions, v1/laps, v1/location…), dengan opsi karakter pengganti jika klien Anda mendukungnya. Muatannya berupa JSON dan menambahkan kolom yang berguna: _Indo (menambah bilangan bulat untuk mengurutkan berdasarkan waktu) dan _kunci (pengidentifikasi dokumen untuk versi-versi berikutnya dari objek yang sama, misalnya putaran yang diperbarui dengan irisan).

Contoh pesan lokasi (format ilustrasi): termasuk meeting_key, session_key dan driver_number, serta koordinat dan metafield 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
}

Keselamatan dan praktik yang baik

Prioritasnya adalah melindungi kredensial dan tokenPertukaran nama pengguna/kata sandi ke token harus ada di backend Anda: jangan pernah menanamkan kredensial langsung dalam kode klien yang dapat diperiksa.

  Hapus aplikasi bawaan (bloatware) di Windows 11: Panduan lengkap

Untuk aplikasi web, kirimkan token melalui HTTPS dan hindari mengeksposnya di penyimpanan lokal jika ada risiko XSS; evaluasi cookie HttpOnly + Aman bila berlaku. Dalam arsitektur dengan streaming dari browser, pertimbangkan apakah lebih aman untuk menyimpan Koneksi MQTT/WebSocket di backend dan meneruskan acara ke klien.

Di lingkungan backend, ia menyimpan token dengan aman dan menanganinya pembaharuan sebelumnya. Jangan mengunggah token ke repositori publik atau menempelkannya ke dalam contoh kode bersama.

Ekosistem, kontribusi dan peta jalan

OpenF1 bertujuan untuk demokratisasi data F1 membuatnya mudah diakses. Mereka mengundang Anda untuk mengajukan ide dalam Diskusi Github dan berkolaborasi melalui PR. Layanan ini gratis untuk digunakan (tanpa autentikasi atau batasan kecepatan untuk data historis), tetapi meminta penggunaan yang bertanggung jawab dan, jika Anda merasa bermanfaat, dukunglah keberlanjutannya dengan donasi.

Peta jalan tersebut menyebutkan penggabungan klasifikasi dan kalender, tambahkan musim 2018–2022, transkrip oleh IA untuk radio, waktu berhenti yang lebih akurat, serta metrik menyalip dan ban. Ada juga peringatan: mereka tidak menjamin ketersediaan atau akurasi berkelanjutan mutlak, dan tidak bertanggung jawab atas segala kerugian yang timbul akibat penggunaan.

Penghargaan untuk FastF1 dan penulisnya karena telah menginspirasi bagian-bagian sistem (termasuk perekam SignalR), dan pengingat hukum: OpenF1 tidak berafiliasi dengan perusahaan F1; merek dagang dan hak berasal dari Formula One Licensing BV

Perbandingan dan alternatif: Live Pulse dan layanan lainnya

Di dalam ekosistem terdapat layanan seperti “F1 Live Pulse” (melalui platform tipe RapidAPI) yang bertujuan untuk menawarkan Data waktu nyata, pesan resmi, uji coba ban, radio tim, cuaca, dan peringkat dengan prediksi. Mereka sering mengatur titik akhir untuk pengemudi, waktu, pit stop, radio, kontrol balapan, cuaca, dan klasemen, dengan fokus pada pemberdayaan aplikasi dan dasbor yang kaya.

API komersial seperti “api-formula-1.p.rapidapi.com” juga tersedia. Panduan praktis dalam bahasa Spanyol menunjukkan cara menggunakan peringkat dengan XMLHttpRequest dan kemudian migrasikan mereka ke mengambil karena masalah CORS, menambahkan header “x-rapidapi-key” dan “x-rapidapi-host”. Ini adalah pengingat yang baik bahwa ketika bekerja dengan API dari browser, CORS dan kunci memerlukan perawatan; backend yang menjadi proxy permintaan seringkali lebih disukai.

Jika Anda memilih OpenF1, Anda memiliki keuntungan dari sejarah terbuka, filter ekspresif, CSV asli dan mode langsung dengan OAuth2, serta streaming melalui MQTT/WebSockets. Tergantung kasus Anda, Anda dapat menggabungkannya dengan sumber lain, dengan tetap memperhatikan lisensi dan ketentuan dari setiap layanan.

Memulai secara lokal dengan Python dan MongoDB

Beberapa sumber merekomendasikan pengaturan lingkungan lokal untuk memproses dan menyimpan data. Pendekatan yang umum adalah dengan menginstal Server Komunitas MongoDB v7, pastikan Anda memiliki Ular sanca ≥ 3.10 y pip ≥ 23, dan instal paket Python OpenF1.

Setelah instalasi, konfigurasikan variabel lingkungan STRING_SAMBUNGAN_MONGO menunjuk ke instans lokal/jarak jauh Anda, dan mem-bootstrap proyek untuk menggunakan dan menyimpan data. Pola ini memfasilitasi analisis yang dapat direproduksi dan dasbor sendiri terhubung ke basis data Anda.