Microproduct data guideintermediate

BTS Airline On-Time Performance

Reporting-carrier flight on-time, delay, cancellation, and diversion records for building airport and airline reliability monitors.

At a glance

Difficulty
Intermediate — some data preparation helps
Size
Small · 0.01–0.2 GB
Formats
CSV, ZIP
Access
Download
API key
Not required
Provider
Bureau of Transportation Statistics
Updates
Monthly

From source to product signal

Test a product idea in four steps

BTS publishes monthly on-time performance for U.S. reporting carriers. Start with one month's pre-zipped file and a few origin airports. Delay minutes and cause codes are carrier-reported, and merger reporting codes change over time.

1

Check the setup

  • Python 3.10 or newer
  • A notebook environment such as Jupyter or Google Colab
  • An internet connection
2

Access the data

  1. 1.Open the Airline On-Time Statistics page and note the current reporting carriers and merger codes.
  2. 2.Download one monthly On-Time Performance ZIP from the TranStats PREZIP directory.
  3. 3.Load a bounded row sample and the delay columns you will compare.
Open official source
3

Run the Python example

Install the packages, then run the notebook cell.

python -m pip install pandas requests

from io import BytesIO
from zipfile import ZipFile
import pandas as pd
import requests

url = (
    "https://transtats.bts.gov/PREZIP/"
    "On_Time_Reporting_Carrier_On_Time_Performance_1987_present_2025_7.zip"
)
response = requests.get(url, timeout=30)
response.raise_for_status()
with ZipFile(BytesIO(response.content)) as archive:
    name = next(member for member in archive.namelist() if member.endswith(".csv"))
    on_time = pd.read_csv(
        archive.open(name),
        usecols=["Origin", "Dest", "Reporting_Airline", "ArrDelay", "Cancelled"],
        nrows=5000,
    )
on_time["retrieved_at_utc"] = pd.Timestamp.now(tz="UTC")
print(on_time.head(20))
4

Test a useful signal

Compare arrival delays for a handful of origin airports

Describe typical arrival delay and cancellation rates from a bounded monthly sample.

  1. 01Load the selected columns from one monthly ZIP and confirm origin, airline, delay, and cancellation fields parsed.
  2. 02Summarize median arrival delay and cancellation rate by origin airport.
  3. 03Explain that delay causes are carrier-reported and that merger codes can split the same brand across years.

Dataset details

Bureau of Transportation Statistics is a government source. Last verified 2026-08-14. Temporal coverage: January 1995-present.

Theme

Geospatial & Infrastructure

Domains

AviationTransportation

Data types

Event DataTabularTime Series

Tasks

Operational MonitoringBenchmarkingAnomaly Detection

Geography

United States

Formats

CSVZIP

Provider

Bureau of Transportation Statistics

Data terms

U.S. Government public data / federal copyright guidance