Tickets
This page documents the ticketing data endpoints available through the AirStream API. These endpoints provide aggregated analytics derived from the Bureau of Transportation Statistics DB1B and DB1C datasets, enabling market analysis and carrier performance insights.
DB1B vs DB1C: DB1B is a 10% sample of airline tickets reported quarterly. DB1C, the successor to DB1B, is a 40% sample reported monthly. Both are accessed through the same endpoint patterns (tickets/markets/... and tickets/coupons/...). DB1B data spans from January, 2003 to June, 2025. DB1C data spans from July, 2025 to the most recently reported period. DB1C includes additional metrics and features not available in DB1B — these are noted throughout this page.
Understanding Tickets Data
These datasets capture U.S. airline ticketing data at two analytical levels.
Suppose a passenger buys a ticket to fly from MSP to LAX, connecting through ORD.
| Level | Description | Example |
|---|---|---|
| Market | Origin-destination intent within a ticket | One Market: MSP → LAX |
| Coupon | Individual flight segments actually flown | Two Coupons: MSP → ORD, ORD → LAX |
To understand true origin–destination demand — regardless of routing — use Market data. To understand how airlines actually operate flights, including hub-and-spoke patterns, connections, and segment-level traffic flows, use Coupon data.
Each level has two endpoint types:
| Endpoint | Purpose |
|---|---|
Route (/markets/route, /coupons/route) |
Aggregate metrics for a specific origin-destination pair |
Breakdown (/markets/breakdown, /coupons/breakdown) |
Analytics grouped by one or more dimensions (carrier, airport, etc.) |
Time Parameters
All endpoints support two time modes. DB1B uses quarterly periods. DB1C supports both monthly and quarterly periods.
Single Period
| Parameter | Type | Description |
|---|---|---|
year |
int | Year of the data |
quarter |
int | Quarter (1–4) |
month |
int | Month (1–12) — DB1C only |
For DB1B, provide year + quarter. For DB1C, provide year + month or year + quarter.
Multi-Period Range
Quarterly range (both DB1B and DB1C):
| Parameter | Type | Description |
|---|---|---|
start_year |
int | Start year (inclusive) |
start_quarter |
int | Start quarter (inclusive) |
end_year |
int | End year (inclusive) |
end_quarter |
int | End quarter (inclusive) |
Monthly range (DB1C only):
| Parameter | Type | Description |
|---|---|---|
start_year |
int | Start year (inclusive) |
start_month |
int | Start month (inclusive) |
end_year |
int | End year (inclusive) |
end_month |
int | End month (inclusive) |
Route endpoints allow up to 20 quarters (or 60 months for DB1C). Breakdown endpoints allow up to 20 quarters (or 60 months for DB1C).
Specific Periods (Across Years)
Specific quarters (DB1B and DB1C):
| Parameter | Type | Description |
|---|---|---|
start_year |
int | Start year (inclusive) |
end_year |
int | End year (inclusive) |
quarters |
string | Comma-separated quarters (e.g. 1,3) |
Specific months (DB1C only):
| Parameter | Type | Description |
|---|---|---|
start_year |
int | Start year (inclusive) |
end_year |
int | End year (inclusive) |
months |
string | Comma-separated months (e.g. 6,12) |
Markets
Route
Aggregate metrics for a specific origin-destination market.
GET /tickets/markets/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 | DB1B | DB1C |
|---|---|---|---|---|
metrics |
string | Comma-separated list of metrics available in this dataset | Yes | Yes |
tkcarrier |
string | Filter by ticketing carrierThe carrier responsible for ticketing in the market | Yes | — |
rpcarrier |
string | Filter by reporting carrierThe carrier responsible for reporting the market data | Yes | Yes |
opcarrier |
string | Filter by operating carrierThe carrier operating the flights in the market | Yes | Yes |
mktcarrier |
string | Filter by marketing carrierThe carrier marketing the flights in the market | — | Yes |
mkt_distance_group |
int | Filter by distance band
|
Yes | — |
tkcarrier_change |
bool | Ticketing carrier changedIndicates whether the ticketing carrier changed throughout the market | Yes | — |
opcarrier_change |
bool | Operating carrier changedIndicates whether the operating carrier changed throughout the market | Yes | Yes |
mktcarrier_change |
bool | Marketing carrier changedIndicates whether the marketing carrier changed throughout the market | — | Yes |
bulk_fare |
bool | Bulk fare flagFlag for bulk fares, typically discounted for group purchases | Yes | — |
dollar_cred |
bool | Dollar credibility flagIndicates the dollar credibility of a market, used for statistical adjustments | Yes | — |
roundtrip |
bool | Roundtrip flag | Yes | Yes |
online |
bool | Online flag | Yes | — |
nonstop |
bool | Nonstop flag | Yes | Yes |
itin_geo_type |
string | Itinerary geography type
|
Yes | — |
mkt_geo_type |
string | Market geography type
|
Yes | — |
tkcarrier_group |
string | Filter by ticketing carrier group | Yes | — |
opcarrier_group |
string | Filter by operating carrier group | Yes | — |
fare_class |
string | Filter by fare class (use alias or raw DOT code)
|
Yes | — |
coupon_type |
string | Filter by coupon type | Yes | — |
purwingrp |
string | Purchase window group
|
— | Yes |
normalize_to_db1b |
bool | Normalize counts to DB1B scaleNormalize counts to DB1B scale (divide by 4) for comparison purposes | — | Yes |
limit |
int | Max rows returned (default 50, max 100) | Yes | — |
limit_results |
bool | Limit to most recent data (DB1B: 4 quarters; DB1C: 12 months) | Yes | Yes |
Notes
- The fare class share metrics, which are percentages themselves, do not return a
sharefield — onlyvalue(the percentage itself).
Example
Average fare from LAX to SEA in Q3 2024:
GET /tickets/markets/route?year=2024&quarter=3&origin=LAX&destination=SEA&metrics=avg_fare
{
"meta": {
"year": 2024,
"quarter": 3,
"metrics": [
"avg_fare"
],
"origin": {
"iata_code": "LAX",
"airport_id": 12892,
"city_market_id": 32575,
"name": "Los Angeles International",
"city": "Los Angeles, CA",
"state": "CA",
"state_fips": "06",
"country": "US",
"world_area_code": 91,
"latitude": 33.94305556,
"longitude": -118.40888889
},
"destination": {
"iata_code": "SEA",
"airport_id": 14747,
"city_market_id": 30559,
"name": "Seattle/Tacoma International",
"city": "Seattle, WA",
"state": "WA",
"state_fips": "53",
"country": "US",
"world_area_code": 93,
"latitude": 47.45,
"longitude": -122.31166667
}
},
"result": {
"avg_fare": {
"value": 160.71
}
}
}
Breakdown
Market-level analytics grouped by one or more dimensions.
GET /tickets/markets/breakdown
Required Parameters
| Parameter | Type | Description |
|---|---|---|
by |
string | Comma-separated breakdown dimensions to group results by |
Plus time parameters.
Optional Parameters
| Parameter | Type | Description | DB1B | DB1C |
|---|---|---|---|---|
metrics |
string | Comma-separated markets metrics, default all base | Yes | Yes |
tkcarrier |
string | Filter by ticketing carrierThe carrier responsible for ticketing in the market | Yes | — |
rpcarrier |
string | Filter by reporting carrierThe carrier responsible for reporting the market data | Yes | Yes |
opcarrier |
string | Filter by operating carrierThe carrier operating the flights in the market | Yes | Yes |
mktcarrier |
string | Filter by marketing carrierThe carrier marketing the flights in the market | — | Yes |
origin |
string | Filter by origin airport | Yes | Yes |
destination |
string | Filter by destination airport | Yes | Yes |
mkt_distance_group |
int | Filter by distance band
|
Yes | — |
tkcarrier_change |
bool | Ticketing carrier changedIndicates whether the ticketing carrier changed throughout the market | Yes | — |
opcarrier_change |
bool | Operating carrier changedIndicates whether the operating carrier changed throughout the market | Yes | Yes |
mktcarrier_change |
bool | Marketing carrier changedIndicates whether the marketing carrier changed throughout the market | — | Yes |
bulk_fare |
bool | Bulk fare flagFlag for bulk fares, typically discounted for group purchases | Yes | — |
dollar_cred |
bool | Dollar credibility flagIndicates the dollar credibility of a market, used for statistical adjustments | Yes | — |
roundtrip |
bool | Roundtrip flag | Yes | Yes |
online |
bool | Online flag | Yes | — |
nonstop |
bool | Nonstop flag | Yes | Yes |
itin_geo_type |
string | Itinerary geography type
|
Yes | — |
mkt_geo_type |
string | Market geography type
|
Yes | — |
tkcarrier_group |
string | Filter by ticketing carrier group | Yes | — |
opcarrier_group |
string | Filter by operating carrier group | Yes | — |
fare_class |
string | Filter by fare class (use alias or raw DOT code)
|
Yes | — |
coupon_type |
string | Filter by coupon type | Yes | — |
purwingrp |
string | Purchase window group
|
— | Yes |
origin_hub |
string | Origin airport hub size
|
Yes | — |
destination_hub |
string | Destination airport hub size
|
Yes | — |
origin_role |
string | Origin airport FAA role
|
Yes | — |
destination_role |
string | Destination airport FAA role
|
Yes | — |
sort_by |
string | Sort column, default first metric (single-period only) | Yes | Yes |
sort_order |
string | asc or desc, default desc (single-period only) |
Yes | Yes |
limit |
int | Max rows (single-period: default 50, max 100; multi-period: per period, default 25, max 50) | Yes | Yes |
limit_results |
bool | Limit to most recent data (DB1B: 4 quarters; DB1C: 12 months) | Yes | Yes |
normalize_to_db1b |
bool | Normalize to DB1B scale, default false — DB1C only |
— | Yes |
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 | DB1B | DB1C |
|---|---|---|---|
tkcarrier |
Ticketing carrier | Yes | — |
rpcarrier |
Reporting carrier | Yes | Yes |
opcarrier |
Operating carrier | Yes | Yes |
mktcarrier |
Marketing carrier | — | Yes |
origin |
Origin airport | Yes | Yes |
destination |
Destination airport | Yes | Yes |
mkt_distance_group |
Market distance band | Yes | — |
tkcarrier_change |
Ticketing carrier changed | Yes | — |
opcarrier_change |
Operating carrier changed | Yes | Yes |
mktcarrier_change |
Marketing carrier changed | — | Yes |
bulk_fare |
Bulk fare flag | Yes | — |
dollar_cred |
Dollar credibility flag | Yes | — |
roundtrip |
Roundtrip flag | Yes | Yes |
online |
Online flag | Yes | — |
nonstop |
Nonstop flag | Yes | Yes |
itin_geo_type |
Itinerary geography type | Yes | — |
mkt_geo_type |
Market geography type | Yes | — |
tkcarrier_group |
Ticketing carrier group | Yes | — |
opcarrier_group |
Operating carrier group | Yes | — |
fare_class |
Fare class | Yes | — |
coupon_type |
Coupon type | Yes | — |
purwingrp |
Purchase window group | — | Yes |
Example
Revenue by destination for markets originating from LAX in Q3 2024:
GET /tickets/markets/breakdown?year=2024&quarter=3&by=destination&origin=LAX&metrics=revenue
{
"meta": {
"year": 2024,
"quarter": 3,
"breakdown_by": [
"destination"
],
"metrics": [
"revenue"
],
"count": 370,
"sort_by": "revenue",
"sort_order": "desc",
"origin": {
"iata_code": "LAX",
"airport_id": 12892,
"city_market_id": 32575,
"name": "Los Angeles International",
"city": "Los Angeles, CA",
"state": "CA",
"state_fips": "06",
"country": "US",
"world_area_code": 91,
"latitude": 33.94305556,
"longitude": -118.40888889
}
},
"results": [
{
"destination": {
"iata_code": "JFK",
"airport_id": 12478,
"city_market_id": 31703,
"name": "John F. Kennedy International",
"city": "New York, NY",
"state": "NY",
"state_fips": "36",
"country": "US",
"world_area_code": 22,
"latitude": 40.64,
"longitude": -73.77861111
},
"revenue": {
"value": 13398250.9,
"share": 10.45
}
},
. . .
]
}
Metrics
All base metrics (indicated in bold) will be returned by default.
| Metric | Description | DB1B | DB1C |
|---|---|---|---|
passengers |
Number of passengers | Yes | Yes |
revenue |
Total revenue (dollars) | Yes | Yes |
miles_flown |
Total miles flown | Yes | — |
total_distance |
Total market distance | Yes | Yes |
count |
Record count | Yes | — |
base_cost |
Revenue minus taxes | — | Yes |
tax_cost |
Tax amount | — | Yes |
connections |
Total connections | — | Yes |
avg_fare |
Average fare per passenger | Yes | Yes |
avg_distance |
Average distance per passenger | Yes | Yes |
avg_miles_flown |
Average miles flown per passenger | Yes | — |
avg_base_cost |
Average base cost per passenger | — | Yes |
avg_tax |
Average tax per passenger | — | Yes |
avg_connections |
Average connections per passenger | — | Yes |
circuity |
Ratio of actual to nonstop distance | Yes | Yes |
ground_share |
Ground transport passengers as % of total | Yes | — |
business_unrestricted_share |
Unrestricted business class passengers as % of total | Yes | — |
business_restricted_share |
Restricted business class passengers as % of total | Yes | — |
first_unrestricted_share |
Unrestricted first class passengers as % of total | Yes | — |
first_restricted_share |
Restricted first class passengers as % of total | Yes | — |
unknown_share |
Unknown fare class passengers as % of total | Yes | — |
coach_restricted_share |
Restricted coach passengers as % of total | Yes | — |
coach_unrestricted_share |
Unrestricted coach passengers as % of total | Yes | — |
Coupons
Route
GET /tickets/coupons/route
Aggregate coupon metrics for a specific origin-destination segment pair. Same structure as Markets Route, but at the coupon (flight segment) level.
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 | DB1B | DB1C |
|---|---|---|---|---|
metrics |
string | Comma-separated list of coupon metrics | Yes | Yes |
tkcarrier |
string | Filter by ticketing carrier | Yes | — |
rpcarrier |
string | Filter by reporting carrier | Yes | Yes |
opcarrier |
string | Filter by operating carrier | Yes | Yes |
mktcarrier |
string | Filter by marketing carrier | — | Yes |
fare_class |
string | Filter by fare class | Yes | — |
coupon_type |
string | Filter by coupon type | Yes | — |
roundtrip |
bool | Roundtrip flag | Yes | Yes |
online |
bool | Online flag | Yes | — |
bulk_fare |
bool | Bulk fare flag | Yes | — |
gateway |
bool | Gateway flag | Yes | — |
dollar_cred |
bool | Dollar credibility flag | Yes | — |
nonstop |
bool | Nonstop flag | Yes | Yes |
distance_group |
string | Distance group | Yes | — |
tkcarrier_change |
bool | Ticketing carrier changed | Yes | — |
opcarrier_change |
bool | Operating carrier changed | Yes | Yes |
mktcarrier_change |
bool | Marketing carrier changed | — | Yes |
itin_geo_type |
string | Itinerary geography type | Yes | — |
mkt_geo_type |
string | Market geography type | Yes | — |
coupon_geo_type |
string | Coupon geography type | Yes | — |
purwingrp |
string | Purchase window group | — | Yes |
normalize_to_db1b |
bool | Normalize to DB1B scale (÷4) | — | Yes |
limit |
int | Max rows returned (default 50, max 100) | Yes | — |
limit_results |
bool | Limit to most recent data (DB1B: 4 quarters; DB1C: 12 months) | Yes | Yes |
Example
Passengers on the JFK → LAX segment in Q1 2025:
GET /tickets/coupons/route?year=2025&quarter=1&origin=JFK&destination=LAX&metrics=passengers
{
"meta": {
"year": 2025,
"quarter": 1,
"metrics": [
"passengers"
],
"origin": {
"iata_code": "JFK",
"airport_id": 12478,
"city_market_id": 31703,
"name": "John F. Kennedy International",
"city": "New York, NY",
"state": "NY",
"state_fips": "36",
"country": "US",
"world_area_code": 22,
"latitude": 40.64,
"longitude": -73.77861111
},
"destination": {
"iata_code": "LAX",
"airport_id": 12892,
"city_market_id": 32575,
"name": "Los Angeles International",
"city": "Los Angeles, CA",
"state": "CA",
"state_fips": "06",
"country": "US",
"world_area_code": 91,
"latitude": 33.94305556,
"longitude": -118.40888889
}
},
"result": {
"passengers": {
"value": 27468
}
}
}
Breakdown
GET /tickets/coupons/breakdown
Coupon-level analytics grouped by one or more dimensions.
Required Parameters
| Parameter | Type | Description |
|---|---|---|
by |
string | Comma-separated breakdown dimensions to group results by |
Plus time parameters.
Optional Parameters
| Parameter | Type | Description | DB1B | DB1C |
|---|---|---|---|---|
metrics |
string | Comma-separated coupon metrics, default all base | Yes | Yes |
tkcarrier |
string | Filter by ticketing carrier | Yes | — |
rpcarrier |
string | Filter by reporting carrier | Yes | Yes |
opcarrier |
string | Filter by operating carrier | Yes | Yes |
mktcarrier |
string | Filter by marketing carrier | — | Yes |
origin |
string | Filter by origin airport | Yes | Yes |
destination |
string | Filter by destination airport | Yes | Yes |
fare_class |
string | Filter by fare class | Yes | — |
coupon_type |
string | Filter by coupon type | Yes | — |
roundtrip |
bool | Roundtrip flag | Yes | Yes |
online |
bool | Online flag | Yes | — |
bulk_fare |
bool | Bulk fare flag | Yes | — |
gateway |
bool | Gateway flag | Yes | — |
dollar_cred |
bool | Dollar credibility flag | Yes | — |
nonstop |
bool | Nonstop flag | Yes | Yes |
distance_group |
string | Distance group | Yes | — |
tkcarrier_change |
bool | Ticketing carrier changed | Yes | — |
opcarrier_change |
bool | Operating carrier changed | Yes | Yes |
mktcarrier_change |
bool | Marketing carrier changed | — | Yes |
itin_geo_type |
string | Itinerary geography type | Yes | — |
mkt_geo_type |
string | Market geography type | Yes | — |
coupon_geo_type |
string | Coupon geography type | Yes | — |
purwingrp |
string | Purchase window group | — | Yes |
origin_hub |
string | Origin airport hub size
|
Yes | — |
destination_hub |
string | Destination airport hub size
|
Yes | — |
origin_role |
string | Origin airport FAA role
|
Yes | — |
destination_role |
string | Destination airport FAA role
|
Yes | — |
sort_by |
string | Sort column, default first metric (single-period only) | Yes | Yes |
sort_order |
string | asc or desc, default desc (single-period only) |
Yes | Yes |
limit |
int | Max rows (single-period: default 50, max 100; multi-period: per period, default 25, max 50) | Yes | Yes |
limit_results |
bool | Limit to most recent data (DB1B: 4 quarters; DB1C: 12 months) | Yes | Yes |
normalize_to_db1b |
bool | Normalize to DB1B scale, default false — DB1C only |
— | Yes |
Breakdown Dimensions
Pass one or more of the following as by= (comma-separated). All dimensions support both single-period and multi-period queries. A dimension cannot be both a by dimension and a filter in the same query.
| Dimension | Description | DB1B | DB1C |
|---|---|---|---|
tkcarrier |
Ticketing carrier | Yes | — |
rpcarrier |
Reporting carrier | Yes | Yes |
opcarrier |
Operating carrier | Yes | Yes |
mktcarrier |
Marketing carrier | — | Yes |
origin |
Origin airport | Yes | Yes |
destination |
Destination airport | Yes | Yes |
fare_class |
Fare class | Yes | — |
coupon_type |
Coupon type | Yes | — |
roundtrip |
Roundtrip flag | Yes | Yes |
online |
Online flag | Yes | — |
bulk_fare |
Bulk fare flag | Yes | — |
gateway |
Gateway flag | Yes | — |
dollar_cred |
Dollar credibility flag | Yes | — |
nonstop |
Nonstop flag | Yes | Yes |
distance_group |
Distance band | Yes | — |
tkcarrier_change |
Ticketing carrier changed | Yes | — |
opcarrier_change |
Operating carrier changed | Yes | Yes |
mktcarrier_change |
Marketing carrier changed | — | Yes |
itin_geo_type |
Itinerary geography type | Yes | — |
mkt_geo_type |
Market geography type | Yes | — |
coupon_geo_type |
Coupon geography type | Yes | — |
purwingrp |
Purchase window group | — | Yes |
Example
Passenger count by origin for flights arriving at SEA in Q3 2024:
GET /tickets/coupons/breakdown?year=2024&quarter=3&by=origin&destination=SEA&metrics=passengers
{
"meta": {
"year": 2024,
"quarter": 3,
"breakdown_by": ["origin"],
"metrics": ["passengers"],
"count": 116,
"sort_by": "passengers",
"sort_order": "desc",
"destination": {
"iata_code": "SEA",
"name": "Seattle/Tacoma International",
"city": "Seattle, WA"
}
},
"results": [
{
"origin": {
"iata_code": "ANC",
"name": "Ted Stevens Anchorage International",
"city": "Anchorage, AK"
},
"passengers": {
"value": 31502,
"share": 5.16
}
},
{
"origin": {
"iata_code": "DEN",
"name": "Denver International",
"city": "Denver, CO"
},
"passengers": {
"value": 28012,
"share": 4.59
}
},
. . .
]
}
Metrics
All base metrics (indicated in bold) will be returned by default.
| Metric | Description | DB1B | DB1C |
|---|---|---|---|
passengers |
Number of passengers | Yes | Yes |
revenue |
Revenue (dollars) | Yes | Yes |
total_distance |
Total segment distance | Yes | Yes |
count |
Record count | Yes | — |
base_cost |
Revenue minus taxes | — | Yes |
tax_cost |
Tax amount | — | Yes |
avg_passengers_per_record |
Passengers per coupon record | Yes | — |
avg_fare |
Average fare per passenger | Yes | Yes |
avg_distance |
Average distance per passenger | Yes | Yes |
avg_base_cost |
Average base cost per passenger | — | Yes |
avg_tax |
Average tax per passenger | — | Yes |
yield |
Revenue per mile | Yes | — |
Constraints
- A dimension cannot be both a breakdown (
by) and a filter in the same query. - DB1B uses quarters only; DB1C supports months and quarters.
- Specific period mode uses
quartersormonthswithstart_year/end_yearand cannot be combined with single-period or range parameters. - Route and breakdown ranges are limited to 20 quarters (DB1B/DB1C) or 60 months (DB1C).
limitdefaults and caps: single-period default 50 (max 100), multi-period default 25 (max 50).limit_results=truerestricts to the most recent 4 quarters (DB1B) or 12 months (DB1C).- For DB1C route endpoints, only one of
opcarrier_change,mktcarrier_change,nonstop,roundtrip, orpurwingrpcan be provided per request. circuityrequires both origin and destination to be pinned (as filters or breakdown dimensions).