API OpenF1 dùng để làm gì và làm thế nào để tận dụng tối đa nó?

Cập nhật lần cuối: 13/10/2025
tác giả: Isaac
  • OpenF1 cung cấp dữ liệu lịch sử F1 trực tiếp miễn phí với OAuth2
  • Điểm cuối hoàn chỉnh: vòng đua, thời gian biểu, radio, điều khiển và thời tiết
  • Bộ lọc mạnh mẽ, đầu ra JSON/CSV và trực tuyến MQTT/WebSockets

Dữ liệu Công thức 1 của API OpenF1

API OpenF1 được sử dụng để cung cấp dữ liệu Công thức 1 theo thời gian thực và lịch sử Mã nguồn mở, giúp các nhà phát triển và nhà phân tích dễ dàng xây dựng bảng điều khiển, tự động hóa cảnh báo, nghiên cứu chiến lược hoặc tạo ra các thiết bị kết nối phản ứng với các sự kiện trên đường đua. Đề xuất này đóng vai trò là cầu nối giữa dữ liệu đo từ xa và các ứng dụng: nó có thể được truy vấn qua HTTP, được lọc theo tham số và cũng cho phép truyền phát dữ liệu.

Nếu bạn đang thắc mắc giải pháp này khác với các giải pháp khác như thế nào thì điểm mấu chốt chính là cách tiếp cận cởi mở và thực tế của nó: dữ liệu lịch sử miễn phí không cần xác thực, truy cập thanh toán theo thời gian thực (theo yêu cầu) và nhiều phương thức sử dụng (REST, MQTT và WebSockets). Nguồn dữ liệu đến từ livetiming.formula1.comvà mặc dù OpenF1 là một dự án không chính thức, nhưng nó tập hợp những thông tin rất có giá trị như thời gian vòng đua, dữ liệu xe hơi, thông tin liên lạc vô tuyến, kiểm soát cuộc đua, khí tượng, nhiệm vụ, vị trí và nhiều hơn nữa.

OpenF1 là gì và nó mang lại cho bạn những gì?

OpenF1 là một API nguồn mở và miễn phí công bố dữ liệu F1 để bất kỳ ai cũng có thể khám phá cuộc thi từ góc độ kỹ thuật và có thể tái tạo. Mục đích là tạo điều kiện thuận lợi cho việc tạo ra Bảng thông tin tương tác, phân tích nghề nghiệp chuyên sâu hoặc thậm chí là các thiết bị phát sáng khi tài xế yêu thích của bạn vượt xe hoặc kích hoạt DRS. Đây là một giải pháp thay thế lấy cảm hứng từ hệ sinh thái FastF1, với lợi thế là cung cấp dữ liệu trực tiếp trong các phiên (dành cho tài khoản có quyền truy cập) ngoài các loạt phim lịch sử.

Hai sắc thái hoạt động cần được lưu ý: một số điểm cuối có thể không phát sóng trực tiếp trong phiên họp và được xuất bản ngay sau đó (ví dụ: car_data, intervals hoặc location), và quyền truy cập trực tiếp yêu cầu tài khoản trả phí. Trong mọi trường hợp, lịch sử là miễn phí và có thể truy cập tại JSON hoặc CSV không cần xác thực, lý tưởng để bắt đầu tạo mẫu không gặp trở ngại.

Điểm cuối OpenF1 và phát trực tuyến

Các trường hợp sử dụng phổ biến

Với OpenF1, bạn có thể xây dựng từ đầu một bảng điều khiển thời gian hiển thị vòng, khu vực, khoảng cách và khoảng cách, được cải tiến với các sự kiện điều khiển cuộc đua và radio của đội. Thêm biểu đồ tốc độ tối đa, vòng tua máy hoặc bánh răng, và bạn sẽ có chế độ xem dữ liệu từ xa cơ bản để so sánh các chặng đua và tay đua.

Trong môi trường phân tích, bạn sẽ vượt qua thời gian chạy một vòng, hợp chất và tuổi lốp để điều tra các khoản cắt giảm, hạ cấp và cửa sổ tắt máy. Bạn cũng có thể tự động hóa các cảnh báo bằng cách cờ, VSC/SC hoặc thay đổi vị trí, cũng như ghi lại đường đi và điều kiện gió ảnh hưởng đến tốc độ.

Nếu bạn thích các thiết bị được kết nối, phát trực tuyến qua MQTT/WebSockets sẽ cho phép bạn bật Đèn LED, thông báo trên điện thoại di động hoặc kích hoạt hiệu ứng khi có sự vượt xe hoặc cờ vàng xuất hiện. Phương pháp "API-first" phù hợp với cả vi dịch vụ lẫn ứng dụng trước mặt sử dụng dữ liệu tổng hợp.

Cấu trúc REST API: Điểm cuối và những gì chúng cung cấp

REST API được tổ chức theo tài nguyên chủ đề. Mỗi điểm cuối hỗ trợ bộ lọc theo tham số (bao gồm các toán tử như >, <, >=, <=) và trả về dữ liệu ở định dạng JSON hoặc CSV (bằng cách thêm csv=true). Dưới đây là tổng quan toàn diện về nội dung của từng đường dẫn chính.

Dữ liệu xe hơi

Điểm cuối car_data hiển thị các biến car ở tần số ~3,7 Hz (tốc độ, vòng/phút, số…). Có thể không có sẵn trong các phiên trực tiếp và được xuất bản ngay sau đó. URL cơ sở: GET https://api.openf1.org/v1/car_data.

  • phanh: bàn đạp phanh (100 nhấn, 0 không).
  • ngày: UTC tức thời theo ISO 8601.
  • số_tài_lái_xe: số hiệu phi công duy nhất.
  • Drs: Trạng thái DRS (các ánh xạ đã biết: 0/1 tắt, 8 phát hiện đủ điều kiện, 10/12/14 bật; các giá trị khác đáng ngờ).
  • khóa_họp: ID cuộc họp (bạn có thể sử dụng mới nhất).
  • n_gear: số 1–8 (0 số trung tính).
  • rpm: vòng quay mỗi phút.
  • phiên_key: ID phiên (hỗ trợ mới nhất).
  • tốc độ: km/giờ.
  • ga: % bướm ga.
  Cách sắp xếp danh bạ và ngày sinh nhật trong Excel mà không bị thất lạc

Có một sơ đồ hữu ích về trạng thái DRS: 0/1 = tắt, 8 = được phát hiện và đủ điều kiện, 10/12/14 = vàoMột số giá trị trung gian xuất hiện dưới dạng không xác định.

Trình điều khiển

Trả về thông tin phi công theo phiên với tên TV, nhóm và mã. NHẬN /v1/trình điều khiển.

  • tên_phát_phát: tên trên đồ họa TV.
  • mã quốc gia: mã quốc gia.
  • số_tài_lái_xe: vây lưng đơn.
  • tên, họ, tên đầy đủ: tên phi công.
  • ảnh chân dung: ảnh khuôn mặt.
  • khóa_họp, khóa_phiên: ID.
  • tên_viết_viết_tắt: từ viết tắt ba chữ cái.
  • màu sắc của đội: màu lục giác của đội.
  • tên_đội: tên đội.

Khoảng thời gian

Khoảng cách giữa các xe và khoảng cách với người dẫn đầu, được cập nhật ~4 giây một lần chỉ trong cuộc đua (có thể phát trực tiếp sau buổi học). NHẬN /v1/khoảng thời gian.

  • ngày: dấu thời gian.
  • số_tài_lái_xe: lưng.
  • khoảng cách đến người lãnh đạo: giây so với người dẫn đầu, “+1 VÒNG” nếu hoàn thành vòng hoặc không nếu người dẫn đầu.
  • khoảng thời gian: thời gian đến xe phía trước, “+1 VÒNG” nếu có hoặc không nếu dẫn đầu.
  • khóa_họp, khóa_phiên: ID.

Vòng

Thông tin chi tiết theo từng vòng (khu vực, tốc độ, hố ra, bẫy tốc độ). NHẬN /v1/laps.

  • ngày_bắt_đầu: thời điểm bắt đầu quay trở lại gần đúng.
  • số_tài_lái_xe: lưng.
  • thời lượng_khu vực_1/2/3: lần theo từng ngành.
  • tốc độ i1, tốc độ i2: tốc độ ở mức trung gian.
  • is_pit_out_lap: đúng nếu đó là vòng thoát pit.
  • thời lượng vòng chạy: tổng thời gian.
  • số vòng: số vòng đua.
  • phân khúc_khu vực_1/2/3: mini-sector (giá trị 2048 = vàng, 2049 = xanh lá cây, 2051 = tím, 2064 = pitlane; có thể có các giá trị khác).
  • tốc độ: tốc độ trong bẫy.
  • khóa_họp, khóa_phiên: ID.

Các phân đoạn không có sẵn trong đua và có thể có hiện tượng màu sắc không khớp trên TV mà không rõ lý do.

Địa điểm

Tọa độ gần đúng của xe trên đường đua ở tần số ~3,7 Hz (không bao gồm vị trí bên trên đường đua(chỉ tiến trình). Có thể đăng trực tiếp sau phiên họp. NHẬN /v1/vị trí.

  • ngày: Giờ UTC.
  • số_tài_lái_xe: lưng.
  • khóa_họp, khóa_phiên: ID.
  • XYZ: Tọa độ Descartes.

Các cuộc họp

Nhóm một tuần cuối tuần (GP hoặc bài kiểm tra) với các buổi học của tuần đó. NHẬN /v1/meetings.

  • khóa_mạch, tên_ngắn_mạch: mạch điện.
  • mã_quốc_gia, khóa_quốc_gia, tên_quốc_gia: quốc gia.
  • ngày_bắt_đầu: bắt đầu.
  • gmt_offset: chênh lệch múi giờ so với GMT.
  • địa điểm thư viện nào: thành phố/vị trí.
  • khóa_họp: Mã cuộc họp.
  • tên_họp, tên_chính_thức_cuộc_họp: tên.
  • năm: năm.

Vượt qua (beta)

Vượt xe và thay đổi vị trí (bao gồm các hình phạt trên đường đua, tại pit và sau cuộc đua). Chỉ trong các cuộc đua và có thể không đầy đủ. NHẬN /v1/overtakes.

  • ngày: lập tức.
  • khóa_họp, khóa_phiên: ID.
  • số_người_lái_bị_vượt: lưng vượt quá.
  • số_người_vượt_qua: phía trước lưng.
  • vị trí: vị trí sau khi hoàn tất việc vượt xe.

Pit

Đường pit đi qua với tổng thời gian từ khi vào đến khi ra. NHẬN /v1/pit.

  • ngày, số_tài_lái_xe, số vòng: bối cảnh.
  • khóa_họp, khóa_phiên: ID.
  • thời lượng hố: giây ở pitlane.

Chức vụ

Vị trí của người lái trong suốt phiên, bao gồm cả những thay đổi. NHẬN /v1/vị trí.

  • ngày, số_tài_lái_xe.
  • khóa_họp, khóa_phiên.
  • vị trí: 1 trở đi.

Kiểm soát cuộc đua

Sự kiện chính thức: cờ, DRS, Xe an toàn, VSC, tin nhắn và nhiều danh mục khác nhau. NHẬN /v1/race_control.

  • thể loại: CarEvent, Drs, Flag, SafetyCar, v.v.
  • ngày, số_tài_lái_xe, số vòng.
  • cờ: các loại (XANH LÁ, VÀNG, VÀNG KÉP, KIỂU CHỌN…).
  • tin nhắn: mô tả sự kiện.
  • phạm vi: Đường đua, Người lái, Khu vực…
  • ngành: lĩnh vực nhỏ liên quan (nếu có).
  • khóa_họp, khóa_phiên.

Sessions

Danh sách và chi tiết các buổi tập (Luyện tập, Vòng loại, Chạy nước rút, Đua…). NHẬN /v1/sessions.

  • khóa_mạch, tên_ngắn_mạch.
  • mã_quốc_gia, khóa_quốc_gia, tên_quốc_gia.
  • ngày_bắt_đầu, ngày_kết_thúc, gmt_offset, địa điểm thư viện nào.
  • khóa_họp, khóa_phiên.
  • tên phiên: Thực hành 1, Vòng loại, Cuộc đua…
  • loại_phiên: Thực hành, Vòng loại, Cuộc đua…
  • năm.

Kết quả phiên bản beta

Phân loại sau mỗi phiên: vòng đua tốt nhất hoặc tổng thời gian đua. NHẬN /v1/session_result.

  • dnf, dns, dsq: không hoàn thành, không bắt đầu, bị loại.
  • số_tài_lái_xe, khóa_họp, phiên_key.
  • thời gian: vòng đua tốt nhất (luyện tập tự do/vòng loại) hoặc tổng thời gian (cuộc đua). Trong vòng loại, mảng [Q1, Q2, Q3].
  • khoảng cách đến người lãnh đạo: sự khác biệt so với người dẫn đầu; trong quali, mảng [Q1, Q2, Q3].
  • số_vòng_lượt: số vòng đã hoàn thành.
  • vị trí: vị trí cuối cùng.
  Microsoft Rewards là gì: Hướng dẫn đầy đủ về cách kiếm và đổi điểm

Lưới bắt đầu (beta)

Lưới xuất phát cho cuộc đua tiếp theo. NHẬN /v1/starting_grid.

  • số_tài_lái_xe, khóa_họp, phiên_key.
  • thời lượng vòng chạy: thời gian vòng đua phân hạng.
  • vị trí: đặt lên vỉ nướng.

Nhiệm vụ

Thời gian lái xe liên tục theo hợp chất và độ tuổi của lốp. NHẬN /v1/stints.

  • hợp chất: MỀM, TRUNG BÌNH, CỨNG…
  • số_tài_lái_xe, khóa_họp, phiên_key.
  • vòng_bắt_đầu, vòng_kết_thúc: phạm vi vòng quay.
  • số_thời_gian: thứ tự của nhiệm kỳ.
  • tuổi_lốp_khi_khởi_đầu: tuổi của lốp xe khi bắt đầu (tính theo vòng).

Đài phát thanh của đội

Lựa chọn tin nhắn vô tuyến giữa tài xế và nhóm (không phải 100% thông tin liên lạc). NHẬN /v1/team_radio.

  • ngày, số_tài_lái_xe.
  • khóa_họp, phiên_key.
  • url_ghi_hình: liên kết đến âm thanh.

Thời tiết

Thời tiết đường đua với bản cập nhật mỗi phút. NHẬN /v1/thời tiết.

  • nhiệt độ không khí (°C), track_temperature (°C).
  • độ ẩm (%), áp lực (mbar), lượng mưa.
  • hướng gió (0–359°), tốc độ gió (bệnh đa xơ cứng).
  • ngày, khóa_họp, phiên_key.

Bộ lọc, thời gian và định dạng: tận dụng tối đa các truy vấn của bạn

Một trong những lợi thế của OpenF1 là lọc theo tham số trong chính URL, bao gồm các toán tử quan hệ. Điều này cho phép thực hiện các truy vấn biểu cảm như lọc theo thời lượng vòng đua, chọn phạm vi ngày hoặc giới hạn theo số vòng đua và phiên đua.

Ngoài việc lọc theo trường, bạn có thể sử dụng phạm vi thời gian với date_start và date_end (hỗ trợ nhiều định dạng tương thích với dateutil.parser, chẳng hạn như “2021-09-10”, “2021-09-10T14:30:20+00:00”, “10 tháng 9, 2021”, v.v.).

Nếu bạn thích bảng tính, hãy thêm csv=đúng vào truy vấn và tải xuống dưới dạng CSV. Lý tưởng cho Excel hoặc ETL nhanh trước khi tải dữ liệu vào kho phân tích.

Ví dụ (trích từ tài liệu gốc để bạn tham khảo): Sainz pit-out ít nhất 120 giây trong một phiên họp cụ thể: /v1/laps?session_key=9222&driver_number=55&is_pit_out_lap=true&lap_duration>=120. Tất cả các phiên họp của Tháng 2023 năm XNUMX: /v1/sessions?date_start>=2023-09-01&date_end<=2023-09-30. Và nếu bạn muốn nó ở dạng CSV: /v1/sessions?year=2023&csv=true.

Truy cập thời gian thực: Xác thực OAuth2 và tiêu đề

Đối với dữ liệu trực tiếp, bạn cần một tài khoản được chấp thuận và một luồng OAuth2 đơn giản: gửi tên người dùng và mật khẩu đến /token, bạn nhận được một truy cập thẻ với thời hạn là 1 giờ và bạn bao gồm nó như Người mang trong tiêu đề Ủy quyền của yêu cầu của bạn.

Chi tiết hoạt động bạn nên biết: API thường được cập nhật với độ trễ ~3 giây liên quan đến trực tiếp (có thể thay đổi tùy theo bắt đầu lạnh), và các truy vấn REST có Thời gian chờ 10 giâyNếu một truy vấn mất nhiều thời gian, hãy chia nhỏ truy vấn và kết hợp các kết quả cục bộ.

Hãy nhớ rằng mã thông báo hết hạn sau 1 giờ; ứng dụng của bạn phải gia hạn mã thông báo một cách minh bạch. Để được hỗ trợ và phản hồi chung, kênh được đề xuất là Thảo luận trên Github; Lỗi được báo cáo bằng cách tạo ra các vấn đề trong kho lưu trữ.

Truyền phát hiệu quả với MQTT và WebSockets

Đối với các ứng dụng nhạy cảm về thời gian, khuyến nghị là ưu tiên MQTT hoặc WebSockets (MQTT qua WSS) vì chúng gửi dữ liệu ngay khi có sẵn, tránh việc thăm dò liên tục.

Kết nối điển hình: MQTT TLS trên mqtt.openf1.org:8883 và WebSockets an toàn trong wss://mqtt.openf1.org:8084/mqtt. Xác thực sử dụng mã thông báo truy cập làm mật khẩu; tên người dùng có thể là bất kỳ chuỗi ký tự nào không rỗng (hoặc email của bạn).

Các chủ đề phản ánh các điểm cuối REST (ví dụ.: v1/sessions, v1/laps, v1/location…), với tùy chọn ký tự đại diện nếu máy khách của bạn hỗ trợ. Tải trọng là JSON và thêm các trường hữu ích: _Tôi (tăng số nguyên để sắp xếp theo thời gian) và _chìa khóa (mã định danh tài liệu cho các phiên bản kế tiếp của cùng một đối tượng, ví dụ như các vòng được cập nhật bằng các lát cắt).

Ví dụ về thông báo vị trí (định dạng minh họa): bao gồm meeting_key, session_key và driver_numbercũng như tọa độ và trường siêu dữ liệu phát trực tuyến.

{
  "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
}

An toàn và thực hành tốt

Ưu tiên là bảo vệ thông tin xác thực và mã thông báoViệc trao đổi tên người dùng/mật khẩu thành mã thông báo phải nằm ở phần phụ trợ của bạn: không bao giờ nhúng thông tin xác thực trực tiếp vào mã máy khách có thể kiểm tra được.

  Cách nhập cơ sở dữ liệu vào Excel từng bước

Đối với các ứng dụng web, truyền mã thông báo bằng HTTPS và tránh để lộ nó trong lưu trữ cục bộ nếu có nguy cơ XSS; hãy đánh giá cookie HttpOnly + Bảo mật khi áp dụng. Trong các kiến ​​trúc có phát trực tuyến từ trình duyệt, hãy cân nhắc xem có an toàn hơn khi giữ Kết nối MQTT/WebSocket trong các sự kiện backend và forward tới khách hàng.

Trong môi trường phụ trợ, nó lưu trữ mã thông báo một cách an toàn và xử lý mã thông báo đó gia hạn trước. Không đăng mã thông báo lên kho lưu trữ công khai hoặc dán chúng vào các mẫu mã được chia sẻ.

Hệ sinh thái, đóng góp và lộ trình

OpenF1 hướng tới dân chủ hóa dữ liệu F1 giúp chúng dễ tiếp cận hơn. Họ mời bạn đề xuất ý tưởng trong các cuộc thảo luận trên Github và cộng tác thông qua các PR. Dịch vụ này miễn phí sử dụng (không giới hạn xác thực hoặc tốc độ cho dữ liệu lịch sử), nhưng yêu cầu sử dụng có trách nhiệm và nếu bạn thấy hữu ích, hãy ủng hộ tính bền vững của nó bằng cách quyên góp.

Lộ trình đề cập đến việc kết hợp phân loại và lịch, thêm mùa giải 2018–2022, bản ghi chép của IA cho radio, thời gian dừng chính xác hơn, và số liệu vượt xe và lốp xe. Ngoài ra còn có một tuyên bố miễn trừ trách nhiệm: họ không đảm bảo tính khả dụng hoặc độ chính xác liên tục tuyệt đối và không chịu trách nhiệm cho bất kỳ tổn thất nào phát sinh từ việc sử dụng.

Tín dụng cho FastF1 và tác giả của nó đã truyền cảm hứng cho các bộ phận của hệ thống (bao gồm cả máy ghi âm SignalR) và lời nhắc nhở về mặt pháp lý: OpenF1 không liên kết với các công ty F1; nhãn hiệu và quyền đến từ Formula One Licensing BV

So sánh và các lựa chọn thay thế: Live Pulse và các dịch vụ khác

Trong hệ sinh thái có các dịch vụ như “F1 Live Pulse” (thông qua các nền tảng loại RapidAPI) nhằm mục đích cung cấp Dữ liệu thời gian thực, tin nhắn chính thức, chạy thử lốp, radio của đội, thời tiết và bảng xếp hạng kèm theo dự đoán. Họ thường tổ chức các điểm cuối cho tài xế, thời gian, điểm dừng, radio, điều khiển cuộc đua, thời tiết và bảng xếp hạng, tập trung vào việc cung cấp năng lượng cho các ứng dụng và bảng điều khiển phong phú.

Các API thương mại như “api-formula-1.p.rapidapi.com” cũng có sẵn. Một hướng dẫn thực tế bằng tiếng Tây Ban Nha đã chỉ ra cách sử dụng bảng xếp hạng với XMLHttpRequest và sau đó di chuyển chúng đến lấy Do sự cố CORS, việc thêm tiêu đề “x-rapidapi-key” và “x-rapidapi-host” là một lời nhắc nhở hữu ích rằng khi làm việc với API từ trình duyệt, CORS và các phím yêu cầu sự cẩn thận; một chương trình phụ trợ ủy quyền cho yêu cầu thường được ưa chuộng hơn.

Nếu bạn chọn OpenF1, bạn sẽ có lợi thế về lịch sử mở, bộ lọc biểu cảm, CSV gốc và chế độ trực tiếp với OAuth2, cũng như phát trực tuyến qua MQTT/WebSockets. Tùy thuộc vào trường hợp của bạn, bạn có thể kết hợp nó với các nguồn khác, luôn tôn trọng giấy phép và điều khoản của từng dịch vụ.

Bắt đầu sử dụng Python và MongoDB tại địa phương

Một số tài nguyên khuyến nghị thiết lập môi trường cục bộ để xử lý và lưu dữ liệu. Một cách tiếp cận điển hình là cài đặt Máy chủ cộng đồng MongoDB v7, hãy chắc chắn rằng bạn có Python ≥ 3.10 y điểm ≥ 23và cài đặt gói OpenF1 Python.

Sau khi cài đặt, cấu hình biến môi trường CHUỖI_KẾT_NỐI_MONGO trỏ đến phiên bản cục bộ/từ xa của bạn và khởi động dự án để sử dụng và lưu trữ dữ liệu. Mẫu này tạo điều kiện cho việc phân tích và tái tạo dữ liệu. bảng điều khiển riêng được kết nối với cơ sở dữ liệu của bạn.