Performance
This page documents the on-time performance endpoints available through the AirStream API. These endpoints provide analytics derived from the Bureau of Transportation Statistics Airline On-Time Performance dataset, covering flight delays, cancellations, diversions, and related operational metrics for domestic U.S. carriers. All performance endpoints are prefixed with /performance.
Understanding Performance Data
The Airline On-Time Performance dataset reports monthly flight-level operational statistics for domestic flights operated by carriers that account for at least 1% of total domestic scheduled-service passenger revenues. Each record represents a specific route operated by a specific carrier in a given month.
| Metric Type | Description | Example |
|---|---|---|
| Volume | Flight counts by outcome | Flights operated, cancelled, diverted |
| Delays | Delay counts and total minutes | Departures delayed 15+ minutes, total delay minutes |
| Efficiency | Time-in-motion totals | Air time, taxi-out, taxi-in, elapsed time |
| Rates | Derived percentage metrics | On-time arrival rate, cancellation rate, diversion rate |
Each level has two endpoint types:
| Endpoint | Purpose |
|---|---|
Route (/route) |
Aggregate OTP metrics for a specific origin-destination pair |
Breakdown (/breakdown) |
OTP analytics grouped by one or more dimensions (carrier, airport, etc.) |
Time Parameters
All endpoints support three time modes.
Single Period
| Parameter | Type | Description |
|---|---|---|
year |
int | The year of the data |
month |
int | The month of the data |
Multi-Period Range
| Parameter | Type | Description |
|---|---|---|
start_year |
int | The first year of the data (inclusive) |
start_month |
int | The first month of the data (inclusive) |
end_year |
int | The last year of the data (inclusive) |
end_month |
int | The last month of the data (inclusive) |
Range queries are limited to 60 months maximum.
Specific Periods (Across Years)
| Parameter | Type | Description |
|---|---|---|
start_year |
int | Start year (inclusive) |
end_year |
int | End year (inclusive) |
months |
string | Comma-separated months (e.g. 6,12) |
Route
Aggregate OTP metrics for a specific origin-destination pair.
GET /performance/route
Required Parameters
| Parameter | Type | Description |
|---|---|---|
origin |
string | Origin airport (3-letter IATA code) |
destination |
string | Destination airport (3-letter IATA code) |
Plus time parameters.
Optional Parameters
| Parameter | Type | Description |
|---|---|---|
metrics |
string | Comma-separated list of metrics to return, default all base |
carrier |
string | Filter by 2-letter carrier code |
cancellationcode |
string | Filter by cancellation cause code
|
dayofweek |
int | Filter by day of week (1=Monday, 7=Sunday) |
distancegroup |
int | Filter by distance band
|
limit |
int | Max rows returned (default 50, max 100) |
limit_results |
bool | Limit to most recent 12 months of data |
Example
On-time performance and flight counts for ORD to LAX in June 2025:
GET /performance/route?year=2025&month=6&origin=ORD&destination=LAX&metrics=flights,on_time_pct,cancel_pct
{
"meta": {
"year": 2025,
"month": 6,
"metrics": [
"flights",
"on_time_pct",
"cancel_pct"
],
"origin": {
"airport_id": 13930,
"iata_code": "ORD",
"name": "Chicago O'Hare International",
"city": "Chicago, IL",
"state": "IL",
"state_fips": "17",
"country": "US",
"world_area_code": 41,
"latitude": 41.979,
"longitude": -87.904
},
"destination": {
"airport_id": 12892,
"iata_code": "LAX",
"name": "Los Angeles International",
"city": "Los Angeles, CA",
"state": "CA",
"state_fips": "06",
"country": "US",
"world_area_code": 91,
"latitude": 33.942,
"longitude": -118.408
}
},
"result": {
"flights": {
"value": 823
},
"on_time_pct": {
"value": 74.97
},
"cancel_pct": {
"value": 2.31
}
}
}
Breakdown
OTP analytics grouped by one or more dimensions.
GET /performance/breakdown
Required Parameters
| Parameter | Type | Description |
|---|---|---|
by |
string | Comma-separated breakdown dimensions to group results by |
Plus time parameters.
Optional Parameters
| Parameter | Type | Description |
|---|---|---|
metrics |
string | Comma-separated metrics |
origin |
string | Filter by origin airport |
destination |
string | Filter by destination airport |
carrier |
string | Filter by carrier code |
cancellationcode |
string | Filter by cancellation cause code
|
dayofweek |
int | Filter by day of week, 1=Monday–7=Sunday |
distancegroup |
int | Filter by distance band
|
sort_by |
string | Sort column, default first metric (single-period only) |
sort_order |
string | asc or desc, default desc (single-period only) |
limit |
int | Max rows (single-period: default 50, max 100; multi-period: per period, default 25, max 50) |
limit_results |
bool | Limit to most recent 12 months of data |
Breakdown Dimensions
All dimensions support both single-period and multi-period queries. A dimension cannot be both a breakdown dimension and a filter in the same query.
| Dimension | Description |
|---|---|
carrier |
Carrier |
origin |
Origin airport |
destination |
Destination airport |
cancellationcode |
Cancellation cause code |
dayofweek |
Day of week |
distancegroup |
Distance band |
Example
On-time performance by carrier for all flights arriving at ORD in June 2025:
GET /performance/breakdown?year=2025&month=6&by=carrier&destination=ORD&metrics=flights,on_time_pct
{
"meta": {
"year": 2025,
"month": 6,
"breakdown_by": [
"carrier"
],
"metrics": [
"flights",
"on_time_pct"
],
"count": 18,
"sort_by": "flights",
"sort_order": "desc",
"destination": {
"airport_id": 13930,
"iata_code": "ORD",
"name": "Chicago O'Hare International",
"city": "Chicago, IL",
"state": "IL",
"state_fips": "17",
"country": "US",
"world_area_code": 41,
"latitude": 41.979,
"longitude": -87.904
}
},
"results": [
{
"carrier": {
"carrier_code": "AA",
"carrier_name": "American Airlines Inc.",
"airline_id": 19805
},
"flights": {
"value": 4102,
"share": 26.84
},
"on_time_pct": {
"value": 71.38
}
},
{
"carrier": {
"carrier_code": "UA",
"carrier_name": "United Air Lines Inc.",
"airline_id": 19977
},
"flights": {
"value": 3847,
"share": 25.17
},
"on_time_pct": {
"value": 68.92
}
},
. . .
]
}
Metrics
All base metrics (indicated in bold) will be returned by default.
| Metric | Description |
|---|---|
flights |
Total flights |
cancelled |
Cancelled flights |
diverted |
Diverted flights |
dep_delayed |
Flights with a departure delay of 15 or more minutes |
arr_delayed |
Flights with an arrival delay of 15 or more minutes |
dep_delay_minutes |
Total departure delay minutes |
arr_delay_minutes |
Total arrival delay minutes |
total_distance |
Total distance flown (miles) |
air_time |
Total air time (minutes) |
taxi_out |
Total taxi-out time (minutes) |
taxi_in |
Total taxi-in time (minutes) |
elapsed_time |
Total actual elapsed time (minutes) |
on_time_pct |
On-time arrival rate — arrivals not delayed 15+ minutes as a percentage of total flights |
cancel_pct |
Cancellation rate — cancelled flights as a percentage of total flights |
divert_pct |
Diversion rate — diverted flights as a percentage of total flights |
avg_dep_delay |
Average departure delay per flight (minutes) |
avg_arr_delay |
Average arrival delay per flight (minutes) |
avg_air_time |
Average air time per flight (minutes) |
avg_taxi_out |
Average taxi-out time per flight (minutes) |
avg_taxi_in |
Average taxi-in time per flight (minutes) |
avg_elapsed_time |
Average actual elapsed time per flight (minutes) |
Constraints
- A dimension cannot be both a breakdown (
by) and a filter in the same query. - Range and specific-period queries are limited to 60 months maximum.
limitdefaults and caps: single-period default 50 (max 100); multi-period default 25 (max 50). In range mode,limitapplies per period.limit_results=truerestricts to the most recent 12 months.sort_byandsort_orderapply only in single-period mode. Range mode always ranks by the first requested metric descending.