BTS Flight On-Time Performance — US Airline Delays
Pricing
from $3.00 / 1,000 results
BTS Flight On-Time Performance — US Airline Delays
Extract BTS monthly carrier on-time flight performance. 600K+ records/month with delays, cancellations, diversions, distances, and delay attribution. For travel analytics, route planning, delay-prediction ML, trip insurance pricing, and frequent-flyer apps.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Compute Edge
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
BTS Flight On-Time Performance Scraper
Overview
This Actor downloads and parses the Bureau of Transportation Statistics (BTS) On-Time Reporting Carrier flight performance dataset — the official US government source for airline delay, cancellation, and performance data. Access monthly flight data for all US domestic carriers with powerful filtering options.
Key Features:
- Free, no authentication required — Download directly from official BTS servers
- Monthly datasets — Full coverage from 1987 to present
- 600K+ flights per month — Complete US domestic flight records
- Rich filtering — By airline, airport, state, route, delay, cancellation status
- Computed fields — Delay categories, cancellation reasons, route keys for analysis
- Auto-updated — BTS publishes new data monthly
Data fields: Flight date, airline, flight number, tail number, origin/destination airports and cities, departure/arrival times and delays, cancellation/diversion status, distance, computed delay reasons (carrier, weather, NAS, security, late aircraft), and more.
Use Cases
- Airline Performance Analysis — Benchmark carriers by on-time performance, delay patterns, cancellation rates
- Route Planning & Optimization — Identify problematic routes, seasonal delay trends
- Travel Insurance Pricing — Historical delay data for risk modeling
- ML/AI Training Datasets — Clean, normalized flight data for delay prediction models
- Frequent Flyer Programs — Analyze airline reliability for loyalty decisions
- Airport Operations — Understand origin/destination impact on delays
- Research & Economics — Academic studies on transportation, supply chain disruption
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
year | Integer | 2024 | Year for data (2010–2025) |
month | Integer | 12 | Month (1–12) |
originAirport | String | (all) | 3-letter origin airport code (e.g., JFK, LAX, ORD) |
destAirport | String | (all) | 3-letter destination airport code (e.g., MIA, SFO) |
carrier | String | (all) | Airline code (e.g., AA, DL, UA, WN, B6, AS) |
cancelledOnly | Boolean | false | Only return cancelled flights |
divertedOnly | Boolean | false | Only return diverted flights |
delayedOnly | Boolean | false | Only return flights with ≥15 min departure delay |
originState | String | (all) | 2-letter state code for origin (e.g., CA, NY, TX) |
destState | String | (all) | 2-letter state code for destination (e.g., FL, HI) |
maxResults | Integer | 5000 | Max records to return (0 = unlimited; monthly datasets contain 600K+ rows) |
Output Fields
Each record includes:
Flight Identifiers:
flightDate,year,month,dayOfMonth,dayOfWeekcarrier(airline code),flightNumber,tailNumber
Route Information:
origin,originCity,originState,originStateNamedest,destCity,destState,destStateNamerouteKey(computed:origin-dest, e.g.,JFK-LAX)distance(miles)
Departure:
crsDepTime(scheduled),depTime(actual),depDelay(signed minutes)depDelayMinutes(absolute minutes late; null if on-time or early)depDel15(boolean: delayed ≥15 minutes)taxiOut,wheelsOff
Arrival:
crsArrTime(scheduled),arrTime(actual),arrDelay(signed minutes)arrDelayMinutes,arrDel15(boolean: delayed ≥15 minutes)wheelsOn,taxiIn
Elapsed Time:
crsElapsedTime,actualElapsedTime,airTime(in minutes)
Cancellation & Diversions:
cancelled(boolean)cancellationCode(A=Carrier, B=Weather, C=NAS, D=Security)cancellationReason(mapped: "Carrier", "Weather", "NAS", "Security")diverted(boolean)
Delay Breakdown (sum to total departure delay):
carrierDelay(minutes — airline operational issue)weatherDelay(minutes — weather at origin/destination)nasDelay(minutes — NAS congestion)securityDelay(minutes — security issue)lateAircraftDelay(minutes — previous flight delay)
Computed Fields:
delayCategory(one of:on-time,delayed-minor[15–60 min],delayed-major[>60 min],cancelled,diverted)
Tutorial: Analyze JFK→LAX Delays
- Open the Actor Input Form in Apify Console
- Configure inputs:
year: 2024month: 12originAirport: JFKdestAirport: LAXmaxResults: 500
- Click Run
- Wait for completion (30–90 seconds depending on filters; larger datasets take longer)
- View Results:
- Open the Dataset tab
- Analyze
depDelayMinutes,arrDelayMinutes,delayCategory - Sort by delay to identify worst-performing flights
- Filter by
carrierto compare airlines on this route
Example insights:
- "JFK→LAX has avg departure delay of 12 minutes in December"
- "Southwest (WN) had 3 cancellations, United (UA) had 0"
- "Afternoon flights (14:00–18:00) show 18% more delays than morning"
Tutorial: Find Airlines with Most Cancellations
- Inputs:
year: 2024month: 12cancelledOnly: truemaxResults: 0 (unlimited)
- Run → captures all cancellations for December 2024
- Export as CSV/JSON
- Analyze in spreadsheet or Python:
df = read_csv('dataset.csv')cancellations_by_carrier = df.groupby('carrier').size().sort_values(ascending=False)print(cancellations_by_carrier)
Data Schema & Completeness
Source: Official Bureau of Transportation Statistics (BTS), U.S. Department of Transportation
Coverage: All US-based carriers operating domestic flights
Data freshness: BTS publishes preliminary data within 1–2 days of month end; final data within 2–3 weeks. This Actor downloads the latest available dataset for the requested month/year.
Completeness: Fields are populated per BTS schema. Delays and cancellation reasons may be null if the flight was:
- Cancelled before departure (no delay values)
- Diverted (alternate dataset)
- Early arrival (negative
depDelay)
Note on large datasets: December and summer months (June–August) have 600K+ rows. Use filters (originAirport, carrier, delayedOnly, maxResults) to keep compute costs manageable.
Common Filters & Examples
| Use Case | Input Config |
|---|---|
| All Southwest flights in April 2025 | carrier: "WN", year: 2025, month: 4 |
| Cancelled flights in California | originState: "CA", cancelledOnly: true |
| JFK departures in Dec 2024, first 100 | originAirport: "JFK", maxResults: 100 |
| Morning flights (05:00–12:00) | No built-in filter; post-process crsDepTime |
| Major delays on top 10 routes | delayedOnly: true, maxResults: 50000 → group by routeKey |
Pricing
- Per-result: $0.003/record
- Compute units: 1 run ≈ 0.5–2 compute units depending on dataset size and filters
- Example: 5,000 records = ~$0.015 +
0.5 compute units ($0.025) = ~$0.04 total - Full monthly dataset (600K rows, no filters) ≈ $1.80 results + ~$1–2 compute = $4–5 total
Cost optimization:
- Use
maxResultsto limit output - Filter by
carrierororiginAirportto reduce processing - Export monthly, not weekly
Troubleshooting
Q: "Failed to download BTS data" error
- Check that
yearis 2010–2025 andmonthis 1–12 - Older data (pre-2010) is not available via this URL pattern
- BTS may delay monthly publishing by 1–2 weeks; try the prior month
Q: Got 0 results with filters applied
- Your filter combination may have no matches (e.g., carrier "FX" doesn't exist)
- Check airport codes are valid 3-letter IATA codes
- State codes must be 2-letter (e.g., "CA" not "California")
Q: Dataset very large, run timed out
- Monthly datasets (600K+ rows) can take 2–5 minutes to parse
- Use
maxResultsto cap output - Add
delayedOnly: trueor filter bycarrier/originAirport
Q: Data doesn't match BTS website directly
- This Actor downloads the raw "Reporting Carrier" dataset from BTS
- BTS website may show aggregated or summarized data; raw CSVs are authoritative
- Dates are in ISO format (YYYY-MM-DD); BTS website may display differently
Similar Actors
- US Airport Operations Tracker — Real-time airport delays and statistics (complement to historical BTS data)
- Flight Price Tracker — Current flight prices and availability
- Airline News Monitor — Track airline announcements and alerts
Legal & Attribution
Open Data: BTS flight data is public domain. No authentication or payment to BTS is required.
Proper Attribution: When publishing analysis:
- Cite "U.S. Department of Transportation, Bureau of Transportation Statistics"
- Include: "Data source: BTS On-Time Reporting Carrier dataset"
Disclaimer: This Actor provides data as-is. Apify and the creator are not liable for inaccuracies or delays in BTS data publishing. For regulatory/legal decisions, refer to official BTS sources directly.
Terms: Use this Actor only for lawful purposes. Reselling BTS data without attribution violates open data principles. Proper attribution is requested but not legally required (BTS is public domain).
Support
- Questions? Check this README or contact support via Apify
- Data quality issues? Report directly to BTS — this Actor mirrors their official datasets
- Actor bugs? File an issue or contact the developer
Last updated: May 2025
Version: 0.1