# BTS Airline On-Time Performance Scraper (`crawlerbros/bts-airline-on-time-scraper`) Actor

Scrape US DOT Bureau of Transportation Statistics On-Time Performance data. Get airline on-time rates, delay-cause breakdowns, cancellation and diversion rates by carrier, route, year, and month.

- **URL**: https://apify.com/crawlerbros/bts-airline-on-time-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Automation, Agents, Travel
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## BTS Airline On-Time Performance Scraper

Get official US airline on-time performance statistics straight from the US Department of Transportation's Bureau of Transportation Statistics (BTS) — the same data every US airline is legally required to report to the federal government every month. This actor turns the raw monthly BTS flight-level file into ready-to-use summaries: on-time rate, average delay, cancellation and diversion rates, and a full delay-cause breakdown — by airline, by route, or by airport.

### What this actor does

- Computes **carrier month summaries** — one airline's entire on-time performance for one month, network-wide
- Computes **route month summaries** — one airline on one specific origin → destination pair, for one month
- Ranks an airline's **top routes** by flight volume for a month, each with full on-time stats
- Ranks the **top carriers at an airport** by flight volume for a month, each with full on-time stats
- No login, API key, cookies, or proxy required — reads BTS's public monthly data file directly
- Empty fields are omitted (e.g. a group with zero cancelled flights omits the cancellation-cause fields entirely, rather than showing fake zeros)

### Output per summary record

- `carrierCode` / `carrierName` — reporting airline
- `originAirport` / `originCityName` / `originStateName` — departure airport (route / top-carriers-at-airport modes)
- `destAirport` / `destCityName` / `destStateName` — arrival airport (route / top-routes modes)
- `year` / `month` / `monthName`
- `rank` — flight-volume rank (top-routes / top-carriers modes only)
- `totalFlights` — scheduled flights in the group
- `cancelledFlights` / `cancellationRate`
- `cancelledByCarrierCount` / `cancelledByWeatherCount` / `cancelledByNASCount` / `cancelledBySecurityCount` — cancelled flights by BTS's reported cancellation reason (only present when BTS recorded a cause code; BTS didn't start collecting this code until June 2003)
- `cancelledByCarrierShare` / `cancelledByWeatherShare` / `cancelledByNASShare` / `cancelledBySecurityShare` — each reason's share (%) of cancelled flights
- `divertedFlights` / `diversionRate`
- `onTimeFlights` / `delayedFlights` / `onTimeRate` — a flight is on-time if it arrived within 15 minutes of schedule, per DOT convention (cancelled/diverted flights excluded)
- `avgDepDelayMinutes` / `avgArrDelayMinutes`
- `avgTaxiOutMinutes` / `avgTaxiInMinutes` / `avgAirTimeMinutes` / `avgDistanceMiles`
- `totalCarrierDelayMinutes` / `totalWeatherDelayMinutes` / `totalNASDelayMinutes` / `totalSecurityDelayMinutes` / `totalLateAircraftDelayMinutes` — total delay minutes attributed to each cause (only present when at least one flight reported delay-cause minutes)
- `carrierDelayShare` / `weatherDelayShare` / `nasDelayShare` / `securityDelayShare` / `lateAircraftDelayShare` — each cause's share (%) of total attributed delay minutes
- `sourceUrl` — the official BTS On-Time Performance portal
- `sourceDataUrl` — the exact monthly government data file this record was computed from
- `recordType` — `carrierMonthSummary` / `routeMonthSummary` / `topRouteByCarrier` / `topCarrierByAirport`
- `scrapedAt` — when this actor computed the record

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `carrierMonthSummary` | `carrierMonthSummary` / `routeMonthSummary` / `topRoutesByCarrier` / `topCarriersByAirport` |
| `carrier` | string | `WN` | Reporting carrier code (mode=carrierMonthSummary/routeMonthSummary/topRoutesByCarrier). Dropdown of ~34 current + historical US airlines |
| `carrierCodeOverride` | string | – | Raw BTS carrier code, used instead of `carrier` if set (for codes not in the dropdown) |
| `originAirport` | string | – | Origin airport code (mode=routeMonthSummary/topCarriersByAirport). Dropdown of ~115 major US airports |
| `originAirportOverride` | string | – | Raw 3-letter airport code, used instead of `originAirport` if set |
| `destAirport` | string | – | Destination airport code (mode=routeMonthSummary) |
| `destAirportOverride` | string | – | Raw 3-letter airport code, used instead of `destAirport` if set |
| `year` | string | `2025` | Reporting year, 2000–present |
| `month` | string | `12` | Reporting month, 1–12 |
| `maxItems` | integer | `20` | Cap on ranked records returned (mode=topRoutesByCarrier/topCarriersByAirport), 1–200 |

#### Example: Southwest Airlines network-wide summary

```json
{
  "mode": "carrierMonthSummary",
  "carrier": "WN",
  "year": "2025",
  "month": "6"
}
````

#### Example: on-time performance for a specific route

```json
{
  "mode": "routeMonthSummary",
  "carrier": "DL",
  "originAirport": "ATL",
  "destAirport": "JFK",
  "year": "2025",
  "month": "6"
}
```

#### Example: an airline's busiest routes that month

```json
{
  "mode": "topRoutesByCarrier",
  "carrier": "AA",
  "year": "2025",
  "month": "6",
  "maxItems": 25
}
```

#### Example: which carriers dominate an airport

```json
{
  "mode": "topCarriersByAirport",
  "originAirport": "ORD",
  "year": "2025",
  "month": "6",
  "maxItems": 15
}
```

### Use cases

- **Travel research** — compare airlines' on-time reliability before booking
- **Route planning** — check historical delay stats for a specific origin-destination pair
- **Aviation journalism** — source official DOT statistics for on-time performance stories
- **Competitive analysis** — benchmark one airline's operational performance against its historical trend
- **Airport operations research** — see which carriers drive the most volume and delays at a given airport
- **Academic / policy research** — build datasets of delay-cause attribution (weather vs. carrier vs. air-traffic system)

### FAQ

**Do I need an API key or to log in to BTS?**
No. This is fully public US government data — no account, cookies, or API key needed.

**Is this actor affiliated with the US DOT or BTS?**
No. This is an independent, third-party actor that reads BTS's public monthly data files. It is not affiliated with, endorsed by, or operated by the Department of Transportation.

**What does "on-time" mean here?**
A flight counts as on-time if it landed within 15 minutes of its scheduled arrival time — the US DOT's standard definition. Cancelled and diverted flights are reported separately (`cancellationRate` / `diversionRate`) rather than folded into the on-time rate.

**Why don't I see delay-cause fields on every record?**
BTS only records carrier/weather/NAS/security/late-aircraft delay-minute breakdowns for flights delayed 15+ minutes. A group of entirely on-time flights has no delay minutes to attribute, so those fields are omitted rather than shown as zero.

**Why don't I see cancellation-reason fields on every record?**
BTS only assigns a cancellation reason code to flights that were actually cancelled, and only started collecting that code in June 2003. A group with nothing to attribute simply omits the `cancelledBy*` fields rather than showing fake zeros.

**Can I get data for a specific flight number or specific day?**
No — this actor works at the monthly aggregate level (whole carrier, whole route, or top-N rankings), matching what BTS publishes as its downloadable summary-friendly data.

**How far back does the data go?**
BTS calls this series "1987-present", but the actual downloadable monthly files only go back to **2000** — that's the earliest year selectable in this actor.

**How fresh is the data?**
BTS publishes each month's file roughly 2 months after the month ends — for example, January data usually appears in March. If you request a month BTS hasn't released yet, the run finishes with 0 records and a status message explaining why; try an earlier month.

**What happens if a route or carrier had no flights that month?**
The run finishes successfully with 0 records rather than erroring — only routes/carriers that actually operated in the requested month have data.

**Does this cover international flights?**
No — this dataset covers US-certificated air carriers operating domestic (and some US-to-territory) flights only; it does not include foreign carriers or international-only routes.

# Actor input Schema

## `mode` (type: `string`):

What to compute from the monthly BTS on-time performance file.

## `carrier` (type: `string`):

Reporting carrier code. Curated list of current + well-known historical US carriers. Use carrierCodeOverride for any other BTS carrier code (e.g. very old regional codes).

## `carrierCodeOverride` (type: `string`):

Raw BTS Reporting\_Airline code, used instead of carrier if set. For historical codes not in the curated dropdown.

## `originAirport` (type: `string`):

Origin airport code. Curated list of ~115 major US airports. Use originAirportOverride for any other US airport code.

## `originAirportOverride` (type: `string`):

Raw 3-letter BTS Origin airport code, used instead of originAirport if set.

## `destAirport` (type: `string`):

Destination airport code. Curated list of ~115 major US airports. Use destAirportOverride for any other US airport code.

## `destAirportOverride` (type: `string`):

Raw 3-letter BTS Dest airport code, used instead of destAirport if set.

## `year` (type: `string`):

Reporting year. This actor's data source (BTS PREZIP monthly archive) serves 2000-present (typically ~2 months behind the current date).

## `month` (type: `string`):

Reporting month.

## `maxItems` (type: `integer`):

Cap on ranked records returned. Ignored by the single-record summary modes.

## Actor input object example

```json
{
  "mode": "carrierMonthSummary",
  "carrier": "WN",
  "year": "2025",
  "month": "12",
  "maxItems": 20
}
```

# Actor output Schema

## `onTimePerformance` (type: `string`):

Dataset containing all scraped BTS on-time performance records.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "carrierMonthSummary",
    "carrier": "WN",
    "year": "2025",
    "month": "12",
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/bts-airline-on-time-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "carrierMonthSummary",
    "carrier": "WN",
    "year": "2025",
    "month": "12",
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/bts-airline-on-time-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "carrierMonthSummary",
  "carrier": "WN",
  "year": "2025",
  "month": "12",
  "maxItems": 20
}' |
apify call crawlerbros/bts-airline-on-time-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=crawlerbros/bts-airline-on-time-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "BTS Airline On-Time Performance Scraper",
        "description": "Scrape US DOT Bureau of Transportation Statistics On-Time Performance data. Get airline on-time rates, delay-cause breakdowns, cancellation and diversion rates by carrier, route, year, and month.",
        "version": "1.0",
        "x-build-id": "FXEUUbp6I9emsaYv0"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~bts-airline-on-time-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-bts-airline-on-time-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/crawlerbros~bts-airline-on-time-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-bts-airline-on-time-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/crawlerbros~bts-airline-on-time-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-bts-airline-on-time-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode",
                    "year",
                    "month"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "carrierMonthSummary",
                            "routeMonthSummary",
                            "topRoutesByCarrier",
                            "topCarriersByAirport"
                        ],
                        "type": "string",
                        "description": "What to compute from the monthly BTS on-time performance file.",
                        "default": "carrierMonthSummary"
                    },
                    "carrier": {
                        "title": "Carrier (mode=carrierMonthSummary/routeMonthSummary/topRoutesByCarrier)",
                        "enum": [
                            "AA",
                            "DL",
                            "UA",
                            "WN",
                            "AS",
                            "B6",
                            "NK",
                            "F9",
                            "G4",
                            "HA",
                            "MQ",
                            "OO",
                            "OH",
                            "YX",
                            "9E",
                            "YV",
                            "9K",
                            "ZW",
                            "C5",
                            "OQ",
                            "US",
                            "CO",
                            "NW",
                            "TW",
                            "EA",
                            "PA",
                            "PI",
                            "EV",
                            "XE",
                            "FL",
                            "TZ",
                            "DH",
                            "J7",
                            "HP"
                        ],
                        "type": "string",
                        "description": "Reporting carrier code. Curated list of current + well-known historical US carriers. Use carrierCodeOverride for any other BTS carrier code (e.g. very old regional codes).",
                        "default": "WN"
                    },
                    "carrierCodeOverride": {
                        "title": "Carrier code override (free text)",
                        "type": "string",
                        "description": "Raw BTS Reporting_Airline code, used instead of carrier if set. For historical codes not in the curated dropdown."
                    },
                    "originAirport": {
                        "title": "Origin airport (mode=routeMonthSummary/topCarriersByAirport)",
                        "enum": [
                            "ATL",
                            "DFW",
                            "DEN",
                            "ORD",
                            "CLT",
                            "PHX",
                            "LAX",
                            "LAS",
                            "MCO",
                            "LGA",
                            "SEA",
                            "DCA",
                            "MIA",
                            "EWR",
                            "BOS",
                            "SFO",
                            "DTW",
                            "JFK",
                            "SLC",
                            "MSP",
                            "IAH",
                            "FLL",
                            "BNA",
                            "BWI",
                            "SAN",
                            "PHL",
                            "TPA",
                            "AUS",
                            "DAL",
                            "MDW",
                            "HNL",
                            "STL",
                            "HOU",
                            "RDU",
                            "PDX",
                            "SMF",
                            "MSY",
                            "IAD",
                            "RSW",
                            "SJC",
                            "MCI",
                            "SNA",
                            "IND",
                            "OAK",
                            "SAT",
                            "PIT",
                            "CMH",
                            "CVG",
                            "CLE",
                            "SJU",
                            "PBI",
                            "BUR",
                            "JAX",
                            "OGG",
                            "MKE",
                            "OMA",
                            "ONT",
                            "ABQ",
                            "SDF",
                            "CHS",
                            "OKC",
                            "BDL",
                            "GEG",
                            "ANC",
                            "RIC",
                            "TUS",
                            "BUF",
                            "BOI",
                            "SAV",
                            "GRR",
                            "PVD",
                            "MEM",
                            "ORF",
                            "TUL",
                            "SYR",
                            "ROC",
                            "ELP",
                            "ALB",
                            "LIT",
                            "XNA",
                            "GSP",
                            "PSP",
                            "MYR",
                            "DSM",
                            "ICT",
                            "COS",
                            "BHM",
                            "GRB",
                            "MSN",
                            "CAK",
                            "PWM",
                            "CHA",
                            "TYS",
                            "FAT",
                            "FAR",
                            "BZN",
                            "JAC",
                            "ASE",
                            "EGE",
                            "SGF",
                            "GPT",
                            "MOB",
                            "TLH",
                            "PNS",
                            "VPS",
                            "ECP",
                            "DAY",
                            "FWA",
                            "AVL",
                            "FSD",
                            "GJT",
                            "PIA",
                            "MFR",
                            "EUG",
                            "BIL",
                            "MHT",
                            "LGB"
                        ],
                        "type": "string",
                        "description": "Origin airport code. Curated list of ~115 major US airports. Use originAirportOverride for any other US airport code."
                    },
                    "originAirportOverride": {
                        "title": "Origin airport override (free text)",
                        "type": "string",
                        "description": "Raw 3-letter BTS Origin airport code, used instead of originAirport if set."
                    },
                    "destAirport": {
                        "title": "Destination airport (mode=routeMonthSummary)",
                        "enum": [
                            "ATL",
                            "DFW",
                            "DEN",
                            "ORD",
                            "CLT",
                            "PHX",
                            "LAX",
                            "LAS",
                            "MCO",
                            "LGA",
                            "SEA",
                            "DCA",
                            "MIA",
                            "EWR",
                            "BOS",
                            "SFO",
                            "DTW",
                            "JFK",
                            "SLC",
                            "MSP",
                            "IAH",
                            "FLL",
                            "BNA",
                            "BWI",
                            "SAN",
                            "PHL",
                            "TPA",
                            "AUS",
                            "DAL",
                            "MDW",
                            "HNL",
                            "STL",
                            "HOU",
                            "RDU",
                            "PDX",
                            "SMF",
                            "MSY",
                            "IAD",
                            "RSW",
                            "SJC",
                            "MCI",
                            "SNA",
                            "IND",
                            "OAK",
                            "SAT",
                            "PIT",
                            "CMH",
                            "CVG",
                            "CLE",
                            "SJU",
                            "PBI",
                            "BUR",
                            "JAX",
                            "OGG",
                            "MKE",
                            "OMA",
                            "ONT",
                            "ABQ",
                            "SDF",
                            "CHS",
                            "OKC",
                            "BDL",
                            "GEG",
                            "ANC",
                            "RIC",
                            "TUS",
                            "BUF",
                            "BOI",
                            "SAV",
                            "GRR",
                            "PVD",
                            "MEM",
                            "ORF",
                            "TUL",
                            "SYR",
                            "ROC",
                            "ELP",
                            "ALB",
                            "LIT",
                            "XNA",
                            "GSP",
                            "PSP",
                            "MYR",
                            "DSM",
                            "ICT",
                            "COS",
                            "BHM",
                            "GRB",
                            "MSN",
                            "CAK",
                            "PWM",
                            "CHA",
                            "TYS",
                            "FAT",
                            "FAR",
                            "BZN",
                            "JAC",
                            "ASE",
                            "EGE",
                            "SGF",
                            "GPT",
                            "MOB",
                            "TLH",
                            "PNS",
                            "VPS",
                            "ECP",
                            "DAY",
                            "FWA",
                            "AVL",
                            "FSD",
                            "GJT",
                            "PIA",
                            "MFR",
                            "EUG",
                            "BIL",
                            "MHT",
                            "LGB"
                        ],
                        "type": "string",
                        "description": "Destination airport code. Curated list of ~115 major US airports. Use destAirportOverride for any other US airport code."
                    },
                    "destAirportOverride": {
                        "title": "Destination airport override (free text)",
                        "type": "string",
                        "description": "Raw 3-letter BTS Dest airport code, used instead of destAirport if set."
                    },
                    "year": {
                        "title": "Year",
                        "enum": [
                            "2000",
                            "2001",
                            "2002",
                            "2003",
                            "2004",
                            "2005",
                            "2006",
                            "2007",
                            "2008",
                            "2009",
                            "2010",
                            "2011",
                            "2012",
                            "2013",
                            "2014",
                            "2015",
                            "2016",
                            "2017",
                            "2018",
                            "2019",
                            "2020",
                            "2021",
                            "2022",
                            "2023",
                            "2024",
                            "2025",
                            "2026"
                        ],
                        "type": "string",
                        "description": "Reporting year. This actor's data source (BTS PREZIP monthly archive) serves 2000-present (typically ~2 months behind the current date).",
                        "default": "2025"
                    },
                    "month": {
                        "title": "Month",
                        "enum": [
                            "1",
                            "2",
                            "3",
                            "4",
                            "5",
                            "6",
                            "7",
                            "8",
                            "9",
                            "10",
                            "11",
                            "12"
                        ],
                        "type": "string",
                        "description": "Reporting month.",
                        "default": "12"
                    },
                    "maxItems": {
                        "title": "Max items (mode=topRoutesByCarrier/topCarriersByAirport)",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Cap on ranked records returned. Ignored by the single-record summary modes.",
                        "default": 20
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
