Flight
Generates a flight between two real airports: an operating airline, a flight number, the departure and arrival in each airport's local time, a duration, the great-circle route and a seat.
Use it for itineraries, bookings, boarding passes, schedules, or any table where a row is a journey
rather than a place. For a single airport, use Airport, which uses the same airports.
Sub-fields: at least one must be mapped. See Sub-fields.
Every JSON block on this page is a single field object, one entry in a table's fields array.
See Building a Request for the full request structure.
Sub-fields
| Sub-field | Produces |
|---|---|
airlineCallsign |
The airline's radio callsign, e.g. SPEEDBIRD. Null where it is unknown. |
airlineCode |
The airline's IATA code, e.g. BA. |
airlineCountry |
The ISO 3166-1 alpha-2 code of the country the airline is registered in. Null where it is unknown. |
airlineIcao |
The airline's ICAO code, e.g. BAW. |
airlineName |
The airline's name, e.g. British Airways. |
arrivalAirport |
The arrival airport's IATA code, e.g. JFK. |
arrivalAirportIcao |
The arrival airport's ICAO code, e.g. KJFK. Null where the airport has none. |
arrivalAirportName |
The arrival airport's name, e.g. John F. Kennedy International Airport. |
arrivalCity |
The city the arrival airport serves, e.g. New York. |
arrivalContinent |
The arrival airport's continent code, e.g. NA. See Continents. |
arrivalCountry |
The arrival airport's ISO 3166-1 alpha-2 country code. |
arrivalCountryName |
The arrival airport's full country name. |
arrivalLocation |
The arrival airport's position as WKT, rounded to precision, e.g. POINT(-73.779317 40.639447). Map it to a Geometry column. |
arrivalRegion |
The arrival airport's ISO 3166-2 subdivision code, e.g. US-NY. |
arrivalTime |
The local time at the arrival airport, with no offset. See Times and time zones. |
arrivalTimestamp |
The arrival time with the arrival airport's UTC offset. |
arrivalTimeZone |
The arrival airport's time zone, e.g. America/New_York. |
departureAirport |
The departure airport's IATA code, e.g. LHR. |
departureAirportIcao |
The departure airport's ICAO code, e.g. EGLL. Null where the airport has none. |
departureAirportName |
The departure airport's name, e.g. London Heathrow Airport. |
departureCity |
The city the departure airport serves, e.g. London. |
departureContinent |
The departure airport's continent code, e.g. EU. See Continents. |
departureCountry |
The departure airport's ISO 3166-1 alpha-2 country code. |
departureCountryName |
The departure airport's full country name. |
departureLocation |
The departure airport's position as WKT, rounded to precision, e.g. POINT(-0.459909 51.470748). Map it to a Geometry column. |
departureRegion |
The departure airport's ISO 3166-2 subdivision code, e.g. GB-ENG. |
departureTime |
The local time at the departure airport, with no offset. See Times and time zones. |
departureTimestamp |
The departure time with the departure airport's UTC offset. |
departureTimeZone |
The departure airport's time zone, e.g. Europe/London. |
distanceKilometers |
The great-circle distance between the two airports in kilometers, rounded to one decimal place, e.g. 6826.5. |
distanceMiles |
The great-circle distance between the two airports in miles, rounded to one decimal place, e.g. 4241.8. |
duration |
The flight time as an interval, e.g. 08:30:00. Map it to an Interval column. See Duration. |
durationHours |
The flight time in hours, rounded to two decimal places, e.g. 8.5. |
durationMinutes |
The flight time in whole minutes, e.g. 510. |
flightNumber |
The airline's IATA code followed by a number of one to four digits, e.g. BA117. |
route |
The great-circle path between the two airports, as a WKT LINESTRING or MULTILINESTRING of routeVertices points, rounded to precision. Map it to a Geometry column. See Route. |
seatClass |
The cabin: Economy, PremiumEconomy, Business or First. See Cabins and seats. |
seatNumber |
A row number and seat letter in the cabin, e.g. 36E. |
duration, durationHours and durationMinutes are the same value in three forms, and
distanceKilometers and distanceMiles are the same distance in two units.
departureTime and arrivalTime are local times with no offset. departureTimestamp and
arrivalTimestamp are the same two times with each airport's UTC offset. Map the Timestamp
sub-fields where the destination needs the actual time between departure and arrival.
departureLocation, arrivalLocation and route round their coordinates to precision.
Flight numbers have one digit on about 10% of rows, two digits on 30%, three digits on 40% and four digits on 20%.
Properties
| Property | Type | Default | Description |
|---|---|---|---|
airlineCountries |
CountryWeight[]? |
none | Limits the field to airlines registered in these countries, each with a weight. Cannot be combined with airlines. See Weighting. |
airlines |
AirlineWeight[]? |
none | Limits the field to these airlines, each with a weight. Cannot be combined with airlineCountries. See Weighting. |
arrival |
FlightEndpoint? |
none | Limits the arrival airport. |
averageSpeedKilometersPerHour |
number? |
820 |
The average ground speed used to calculate the duration from the distance. Must be greater than 0. See Duration. |
departure |
FlightEndpoint? |
none | Limits the departure airport. |
departureTime |
object? |
see Times and time zones | The departure time, with the same properties as a DateTime field. |
groundMinutes |
number? |
30 |
Minutes added to every flight for taxi, climb and descent. Must not be negative. |
includeCeasedAirlines |
boolean |
false |
Whether airlines that have ceased operating are included. |
map |
object |
required | Maps sub-fields to destination columns. See Building a Request. |
maxDistanceKilometers |
number? |
none | The longest great-circle distance between the two airports, in kilometers. Must not be negative or less than minDistanceKilometers. See Distance limits. |
minDistanceKilometers |
number? |
none | The shortest great-circle distance between the two airports, in kilometers. Must not be negative. |
nullPercentageMax |
number |
0 |
Upper bound (0-100) of the percentage of rows that should be null. See nullPercentageMin. |
nullPercentageMin |
number |
0 |
Lower bound (0-100) of the percentage of rows that should be null. The rate is fixed once for the whole field from this range, not recalculated per row. Set equal to nullPercentageMax for an exact rate. |
precision |
integer |
6 |
How many decimal places the coordinates in route, departureLocation and arrivalLocation are rounded to, from 0 to 15, where 0 uses the default. |
routeVertices |
integer? |
33 |
How many points route is drawn with, counting both airports, from 3 to 500. More points draw a smoother curve and make the value longer. The number of points is reflected in the price. See Route. |
scope |
FlightScope |
"Any" |
Whether the two airports must be in the same country, in different countries, or either. |
seatClasses |
object[]? |
see Cabins and seats | The relative weight of each cabin. |
seed |
integer |
random | Per-field seed, overriding the request's own seed for this field only. |
unique |
boolean |
false |
Whether every generated row must differ from the others in its mapped sub-fields. There is no fixed limit, so a request that runs out of distinct flights is rejected during generation. |
Flights only use airports with scheduled airline service and an IATA code, whatever the departure
and arrival filters include. They only use airlines that are still operating, unless
includeCeasedAirlines is set.
FlightEndpoint
departure and arrival are set separately, so one end can be fixed while the other varies.
| Property | Type | Default | Description |
|---|---|---|---|
airports |
AirportWeight[]? |
none | Limits this end to these airports, each with a weight. Cannot be combined with countries or regions. |
continents |
string[]? |
none | Limits this end to airports on these continents. See Continents. |
countries |
CountryWeight[]? |
none | Limits this end to airports in these countries, each with a weight. Cannot be combined with regions or airports. |
regions |
AirportRegionWeight[]? |
none | Limits this end to airports in these subdivisions, each with a weight. Cannot be combined with countries or airports. |
types |
AirportType[]? |
LargeAirport and MediumAirport |
Limits this end to these kinds of airport. |
An airport must match every filter set on its end. With both countries and continents, an airport
must be in one of the countries and on one of the continents.
Only one of countries, regions and airports can be set on each end. Each entry must match at least
one airport under the other filters on its end, and an entry that matches none is rejected. See
Weighting.
AirlineWeight
| Property | Type | Default | Description |
|---|---|---|---|
airline |
string |
required | The IATA or ICAO code of the airline, matched without regard to case, such as BA or BAW. See GET /v1/aviation/airlines. |
weight |
number |
1 |
The airline's relative weight in the distribution, against the other entries. Must be greater than 0. |
CountryWeight
| Property | Type | Default | Description |
|---|---|---|---|
country |
string |
required | The ISO 3166-1 alpha-2 code of the country, matched without regard to case. A code that is not two characters is rejected. See GET /v1/aviation/countries. |
weight |
number |
1 |
The country's relative weight in the distribution, against the other entries. Must be greater than 0. |
FlightScope
| Scope | Effect |
|---|---|
Any |
No constraint. Each end matches its own filters. |
Domestic |
Both airports are in the same country. |
International |
The two airports are in different countries. |
Times and time zones
Each end has a local time and a time with a UTC offset. See Sub-fields.
The arrival time is the departure time plus the duration, in the arrival airport's time zone. When the two airports are in different time zones, the difference between the two local times is not the duration. A westbound transatlantic flight arrives only a few hours after it departs by the local clocks:
{
"type": "Flight",
"departure": { "countries": [{ "country": "gb" }], "types": ["LargeAirport"] },
"arrival": { "countries": [{ "country": "us" }], "types": ["LargeAirport"] },
"departureTime": {
"mode": "Random",
"min": "2026-06-01T00:00:00",
"max": "2026-06-30T23:59:59",
"timeMin": "08:00:00",
"timeMax": "18:00:00"
},
"map": {
"departureAirport": { "column": "from", "dataType": "Char" },
"departureTimeZone": { "column": "from_zone", "dataType": "VarChar" },
"departureTime": { "column": "departs_local", "dataType": "DateTime" },
"departureTimestamp": { "column": "departs_offset", "dataType": "Timestamp" },
"arrivalAirport": { "column": "to", "dataType": "Char" },
"arrivalTimeZone": { "column": "to_zone", "dataType": "VarChar" },
"arrivalTime": { "column": "arrives_local", "dataType": "DateTime" },
"arrivalTimestamp": { "column": "arrives_offset", "dataType": "Timestamp" },
"duration": { "column": "duration", "dataType": "Interval" }
}
}
| from | from_zone | departs_local | departs_offset | to | to_zone | arrives_local | arrives_offset | duration |
|---|---|---|---|---|---|---|---|---|
| PIK | Europe/London | 2026-06-01 16:07:39 | 2026-06-01 16:07:39 +01:00 | BUR | America/Los_Angeles | 2026-06-01 18:42:39 | 2026-06-01 18:42:39 -07:00 | 10:35:00 |
| EMA | Europe/London | 2026-06-01 13:50:07 | 2026-06-01 13:50:07 +01:00 | JAX | America/New_York | 2026-06-01 17:35:07 | 2026-06-01 17:35:07 -04:00 | 08:45:00 |
| CWL | Europe/London | 2026-06-09 08:23:36 | 2026-06-09 08:23:36 +01:00 | PSP | America/Los_Angeles | 2026-06-09 11:18:36 | 2026-06-09 11:18:36 -07:00 | 10:55:00 |
| LHR | Europe/London | 2026-06-17 16:18:27 | 2026-06-17 16:18:27 +01:00 | DJT | America/New_York | 2026-06-17 20:23:27 | 2026-06-17 20:23:27 -04:00 | 09:05:00 |
| LTN | Europe/London | 2026-06-23 08:50:57 | 2026-06-23 08:50:57 +01:00 | OGG | Pacific/Honolulu | 2026-06-23 12:30:57 | 2026-06-23 12:30:57 -10:00 | 14:40:00 |
| LHR | Europe/London | 2026-06-07 08:36:15 | 2026-06-07 08:36:15 +01:00 | GRR | America/Detroit | 2026-06-07 11:36:15 | 2026-06-07 11:36:15 -04:00 | 08:00:00 |
The last row departs London Heathrow at 08:36 and arrives in Grand Rapids at 11:36 local time, three
hours later by the local clocks, after a flight of eight hours. The two Timestamp columns show the
same two times with their offsets, so the duration can be calculated from them.
The offset of each airport is the one in effect in its time zone on that date, so a flight in January
and a flight in June can have different offsets at the same airport where the country observes daylight
saving time. A departure time in the hour skipped when clocks move forward is moved forward past it,
in the same way as on a Timestamp field. An airport with no
known time zone is never used for a flight.
departureTime accepts every DateTime property, including mode, min, max,
weekDays, and the timeMin and timeMax used above to keep departures within working hours.
Without departureTime, or with a departureTime that sets none of min, max, start and
lookupValues, departures are from 2020-01-01T00:00:00 to 2030-12-31T23:59:59. The range is
fixed, so a request with a seed returns the same flights every time.
Duration
The duration is the great-circle distance at averageSpeedKilometersPerHour, plus groundMinutes,
rounded to the nearest five minutes, with a minimum of five minutes. It is an estimate, not a
published schedule.
duration is an interval, and durationHours and durationMinutes are the same value as numbers.
Scope and the operating airline
A route is usually operated by an airline from one of the two countries it connects. On a flight between two countries, the airline is registered in one of them on about 70% of rows, and is any airline on the rest. On a flight within one country, the airline is registered in that country on about 99% of rows. Where no airline is registered in either country, any airline is used.
{
"type": "Flight",
"departure": { "countries": [{ "country": "au" }], "types": ["LargeAirport"] },
"arrival": { "countries": [{ "country": "au" }], "types": ["LargeAirport"] },
"scope": "Domestic",
"departureTime": {
"mode": "Random",
"min": "2026-09-01T00:00:00",
"max": "2026-09-30T23:59:59"
},
"map": {
"flightNumber": { "column": "flight", "dataType": "VarChar" },
"airlineName": { "column": "airline", "dataType": "VarChar" },
"departureAirport": { "column": "from", "dataType": "Char" },
"departureCity": { "column": "from_city", "dataType": "VarChar" },
"arrivalAirport": { "column": "to", "dataType": "Char" },
"arrivalCity": { "column": "to_city", "dataType": "VarChar" },
"distanceKilometers": { "column": "km", "dataType": "Double" },
"seatClass": { "column": "cabin", "dataType": "VarChar" },
"seatNumber": { "column": "seat", "dataType": "VarChar" }
}
}
| flight | airline | from | from_city | to | to_city | km | cabin | seat |
|---|---|---|---|---|---|---|---|---|
| VA92 | Virgin Australia | HBA | Hobart (Cambridge) | OOL | Gold Coast | 1718 | Business | 10F |
| TL3425 | Airnorth | WTB | Toowoomba | HBA | Hobart (Cambridge) | 1742.2 | Economy | 43A |
| QF788 | Qantas Airways | WTB | Toowoomba | OOL | Gold Coast | 181.5 | Economy | 25A |
| JQ5491 | Jetstar Airways | MEL | Melbourne | HBA | Hobart (Cambridge) | 617.6 | Economy | 43C |
| HJ5123 | Tasman Cargo Airlines | MEL | Melbourne | PHE | Port Hedland | 3172.7 | PremiumEconomy | 16D |
| VA6876 | Virgin Australia | BME | Broome | NTL | Williamtown | 3384.2 | Economy | 40F |
To set the airline, use airlines, which takes IATA or ICAO codes, or airlineCountries, which limits
the airline to the countries it is registered in. Only one of them can be set:
{
"type": "Flight",
"airlines": [{ "airline": "BA" }, { "airline": "VS" }],
"departure": { "countries": [{ "country": "gb" }] },
"map": {
"flightNumber": { "column": "flight", "dataType": "VarChar" },
"airlineName": { "column": "airline", "dataType": "VarChar" }
}
}
| flight | airline |
|---|---|
| BA6920 | British Airways |
| BA374 | British Airways |
| VS875 | Virgin Atlantic |
| VS1640 | Virgin Atlantic |
| VS945 | Virgin Atlantic |
| BA662 | British Airways |
Cabins and seats
seatClass is selected using the weights in seatClasses. Without seatClasses, the weights are
Economy 80, PremiumEconomy 10, Business 8 and First 2. seatNumber is a row number and a letter, and the
row is always in the cabin selected for that row.
| Cabin | Rows | Letters |
|---|---|---|
First |
1 to 4 | A, C, D, F |
Business |
5 to 12 | A, C, D, F |
PremiumEconomy |
13 to 20 | A to F |
Economy |
21 to 45 | A to F |
Each entry in seatClasses has these properties:
| Property | Type | Default | Description |
|---|---|---|---|
seatClass |
"Economy" / "PremiumEconomy" / "Business" / "First" |
required | The cabin. |
weight |
number |
1 |
The cabin's weight relative to the other entries in the list. Weights are relative, not percentages, so 8 and 2 give the same distribution as 80 and 20. Must be greater than 0. |
{
"type": "Flight",
"seatClasses": [
{ "seatClass": "Economy", "weight": 75 },
{ "seatClass": "PremiumEconomy", "weight": 12 },
{ "seatClass": "Business", "weight": 10 },
{ "seatClass": "First", "weight": 3 }
],
"map": {
"seatClass": { "column": "cabin", "dataType": "VarChar" },
"seatNumber": { "column": "seat", "dataType": "VarChar" }
}
}
| cabin | seat |
|---|---|
| Business | 7C |
| Economy | 40C |
| PremiumEconomy | 17E |
| Economy | 32F |
| Economy | 25E |
| Economy | 33E |
A cabin not listed in seatClasses is never produced, so a list with only Economy never produces a
business seat.
Weighting
countries, regions and airports on each end, airlines and airlineCountries are weighted lists.
Each entry's weight is relative to the other entries in the same list. It is not a percentage and the
weights need not add up to any total, so weights of 3 and 1 give the first entry three rows for every
one the second gets. An entry with no weight counts as 1, so a list with no weights set shares the
rows evenly among its entries.
| List | How rows are shared |
|---|---|
countries, regions |
Among the entries, by weight. Within an entry, every matching airport has the same chance. |
airports |
Among the airports, by weight. |
airlines |
Among the airlines, by weight. |
airlineCountries |
Among the countries, by weight. Within a country, every matching airline has the same chance. |
A pair of airports that fails the scope or the distance limits is replaced by a new pair, so those
settings can move the shares away from the weights. A domestic flight with departure weights of 3 for
the United States and 1 for Canada, and the same arrival weights, departs from the United States on
about nine rows in ten rather than three in four, because a Canadian departure is more often paired
with an airport in the other country and replaced.
The airline is still usually from one of the two countries the flight connects. See Scope and the operating airline. On those rows, the airline is chosen from the listed airlines registered in either country, by weight.
Weighted airports
{
"type": "Flight",
"departure": {
"airports": [
{ "airport": "LHR", "weight": 3 },
{ "airport": "MAN" }
]
},
"arrival": {
"countries": [
{ "country": "us", "weight": 2 },
{ "country": "ca" }
],
"types": ["LargeAirport"]
},
"map": {
"departureAirport": { "column": "from", "dataType": "Char" },
"arrivalAirport": { "column": "to", "dataType": "Char" },
"arrivalCountry": { "column": "to_country", "dataType": "Char" },
"airlineName": { "column": "airline", "dataType": "VarChar" }
}
}
| from | to | to_country | airline |
|---|---|---|---|
| LHR | PVD | US | One Air |
| LHR | HOU | US | Cayman Airways |
| LHR | BNA | US | SkyWest Airlines |
| LHR | YUL | CA | Virgin Atlantic |
| LHR | MDW | US | Loganair |
| LHR | YXE | CA | WestJet Encore |
| MAN | YVR | CA | One Air |
| LHR | CHS | US | United Airlines |
About three flights in four depart from Heathrow, and about two in three arrive in the United States.
Weighted airlines
{
"type": "Flight",
"airlines": [
{ "airline": "BA", "weight": 3 },
{ "airline": "VS" }
],
"departure": { "airports": [{ "airport": "LHR" }] },
"arrival": { "types": ["LargeAirport"] },
"map": {
"flightNumber": { "column": "flight", "dataType": "VarChar" },
"airlineName": { "column": "airline", "dataType": "VarChar" },
"arrivalAirport": { "column": "to", "dataType": "Char" }
}
}
| flight | airline | to |
|---|---|---|
| BA8033 | British Airways | IBZ |
| BA602 | British Airways | LRM |
| VS4453 | Virgin Atlantic | KUF |
| BA155 | British Airways | VSA |
| BA33 | British Airways | GDN |
| BA160 | British Airways | LPQ |
| BA1693 | British Airways | HKG |
| VS38 | Virgin Atlantic | VLN |
Both airlines are registered in the United Kingdom, so British Airways operates about three flights in four on every route.
With airlineCountries, a country's weight is shared equally among its airlines, so the airlines of
a country with a weight of 3 together operate three flights for every one operated by the airlines of a
country with a weight of 1.
Route
route is the path between the two airports along the great circle, as a series of points. It follows
the shortest path across the earth's surface, which is curved on a flat map.
The points are evenly spaced along the path, from the departure airport to the arrival airport.
routeVertices sets how many there are, counting both airports, from 3 to 500. Without it, there are 33.
It is a LINESTRING for most flights. Where the path crosses the antimeridian, it is split there into a
MULTILINESTRING, so that no single line runs from longitude 180 to longitude -180 across the whole map.
The first line ends at the point where the path meets the antimeridian, at longitude 180 or -180, and the
second line starts at the same latitude on the other side. A split route therefore has two more points
than routeVertices.
{
"type": "Flight",
"departure": { "countries": [{ "country": "nz" }], "types": ["LargeAirport"] },
"arrival": { "countries": [{ "country": "us" }], "types": ["LargeAirport"] },
"minDistanceKilometers": 8000,
"precision": 3,
"map": {
"departureAirport": { "column": "from", "dataType": "Char" },
"arrivalAirport": { "column": "to", "dataType": "Char" },
"distanceKilometers": { "column": "km", "dataType": "Double" },
"route": { "column": "route", "dataType": "Geometry" }
}
}
| from | to | km | route |
|---|---|---|---|
| ZQN | MSY | 13127 | MULTILINESTRING((168.746 -45.019, 173.683 -43.922, 178.426 -42.621, 180 -42.133), (-180 -42.133, -177.04 -41.133, ... -90.265 29.993)) |
| AKL | MSP | 12941.7 | MULTILINESTRING((174.786 -37.012, 178.285 -34.733, 180 -33.528), (-180 -33.528, -178.408 -32.359, ... -93.222 44.88)) |
| WLG | BUR | 10818.1 | MULTILINESTRING((174.807 -41.327, 177.82 -39.335, 180 -37.768), (-180 -37.768, -179.337 -37.269, ... -118.358 34.203)) |
| CHC | STL | 13348.4 | MULTILINESTRING((172.532 -43.489, 177.027 -41.719, 180 -40.391), (-180 -40.391, -178.73 -39.783, ... -90.37 38.749)) |
| ZQN | PHX | 11813.6 | MULTILINESTRING((168.746 -45.019, 172.638 -43.224, 176.3 -41.305, 179.746 -39.276, 180 -39.118), (-180 -39.118, -177.006 -37.152, ... -112.006 33.435)) |
| WLG | ABQ | 11666.4 | MULTILINESTRING((174.807 -41.327, 178.334 -39.446, 180 -38.482), (-180 -38.482, -178.33 -37.465, ... -106.609 35.04)) |
The coordinates are shortened above with .... The full value contains every point. Every coordinate is
within the valid range of longitude and latitude. Each route's first line ends at longitude 180, and its
second line starts at -180 at the same latitude.
precision sets the decimal places on these coordinates and on departureLocation and
arrivalLocation. A lower precision makes the value shorter. route is the longest value this field
produces.
Fewer points
A small routeVertices makes a short value that still follows the great circle, for a map that only
needs the general shape of the route.
{
"type": "Flight",
"departure": { "airports": [{ "airport": "LHR" }] },
"arrival": {
"airports": [
{ "airport": "JFK" },
{ "airport": "SIN" },
{ "airport": "NRT" }
]
},
"routeVertices": 5,
"precision": 2,
"map": {
"departureAirport": { "column": "from", "dataType": "Char" },
"arrivalAirport": { "column": "to", "dataType": "Char" },
"route": { "column": "route", "dataType": "Geometry" }
}
}
| from | to | route |
|---|---|---|
| LHR | JFK | LINESTRING(-0.46 51.47, -20.71 53.64, -41.31 52.22, -59.32 47.58, -73.78 40.64) |
| LHR | SIN | LINESTRING(-0.46 51.47, 38.63 50.06, 68.45 37.84, 88.37 20.48, 103.99 1.35) |
| LHR | JFK | LINESTRING(-0.46 51.47, -20.71 53.64, -41.31 52.22, -59.32 47.58, -73.78 40.64) |
| LHR | JFK | LINESTRING(-0.46 51.47, -20.71 53.64, -41.31 52.22, -59.32 47.58, -73.78 40.64) |
| LHR | NRT | LINESTRING(-0.46 51.47, 29.11 67.52, 90.24 69.45, 125.81 54.85, 140.39 35.77) |
| LHR | SIN | LINESTRING(-0.46 51.47, 38.63 50.06, 68.45 37.84, 88.37 20.48, 103.99 1.35) |
Each route has five points: the two airports and three between them. The route to Tokyo rises to almost 70 degrees north, because the great circle from London to Tokyo passes over the Arctic.
Distance limits
minDistanceKilometers and maxDistanceKilometers apply to the distance between the two airports.
For each row, a new pair of airports is selected until the pair is within the limits.
When no pair matches the filters, the scope and the distance limits, the request is rejected during generation, and the error identifies the limits to widen. A domestic flight over 20,000 kilometers, or a departure and an arrival whose filters only include the same airport, are both rejected.
Examples
Each example below is a single field object, one entry in a table's fields array within a full
request. See Building a Request for how it fits into a full DatasetRequest.
A boarding pass
One airline from one airport, with departures in a single week between 06:00 and 22:00, and a cabin and seat on every row.
{
"type": "Flight",
"airlines": [{ "airline": "BA" }],
"departure": { "airports": [{ "airport": "LHR" }] },
"arrival": { "types": ["LargeAirport"] },
"departureTime": {
"mode": "Random",
"min": "2026-11-02T00:00:00",
"max": "2026-11-08T23:59:59",
"timeMin": "06:00:00",
"timeMax": "22:00:00"
},
"map": {
"airlineName": { "column": "airline", "dataType": "VarChar" },
"flightNumber": { "column": "flight", "dataType": "VarChar" },
"departureAirport": { "column": "from", "dataType": "Char" },
"arrivalAirport": { "column": "to", "dataType": "Char" },
"departureTime": { "column": "departs", "dataType": "DateTime" },
"seatClass": { "column": "cabin", "dataType": "VarChar" },
"seatNumber": { "column": "seat", "dataType": "VarChar" }
}
}
| airline | flight | from | to | departs | cabin | seat |
|---|---|---|---|---|---|---|
| British Airways | BA200 | LHR | PCL | 2026-11-05 06:29:01 | Economy | 41B |
| British Airways | BA643 | LHR | KIJ | 2026-11-08 12:02:53 | Economy | 38C |
| British Airways | BA67 | LHR | IDR | 2026-11-06 14:00:06 | Economy | 24B |
| British Airways | BA66 | LHR | KBL | 2026-11-07 16:32:20 | Economy | 36F |
| British Airways | BA6121 | LHR | SUF | 2026-11-06 08:18:24 | Economy | 44D |
| British Airways | BA30 | LHR | CRA | 2026-11-05 20:26:34 | Economy | 29C |
A flight between two continents
{
"type": "Flight",
"departure": { "countries": [{ "country": "us" }], "types": ["LargeAirport"] },
"arrival": { "continents": ["EU"], "types": ["LargeAirport"] },
"scope": "International",
"minDistanceKilometers": 5000,
"maxDistanceKilometers": 9000,
"departureTime": {
"mode": "Random",
"min": "2026-03-01T00:00:00",
"max": "2026-03-31T23:59:59"
},
"map": {
"flightNumber": { "column": "flight", "dataType": "VarChar" },
"airlineName": { "column": "airline", "dataType": "VarChar" },
"departureAirport": { "column": "from", "dataType": "Char" },
"arrivalAirport": { "column": "to", "dataType": "Char" },
"departureTime": { "column": "departs", "dataType": "DateTime" },
"arrivalTime": { "column": "arrives", "dataType": "DateTime" },
"durationMinutes": { "column": "minutes", "dataType": "Long" },
"distanceKilometers": { "column": "km", "dataType": "Double" }
}
}
| flight | airline | from | to | departs | arrives | minutes | km |
|---|---|---|---|---|---|---|---|
| 8E6 | Bering Air | IND | BVA | 2026-03-20 09:41:25 | 2026-03-20 23:21:25 | 520 | 6675.6 |
| E42 | Enter Air | MCI | LUZ | 2026-03-01 11:18:43 | 2026-03-02 04:53:43 | 635 | 8260.7 |
| N485 | Nordwind Airlines | OKC | GLA | 2026-03-31 09:46:17 | 2026-04-01 00:46:17 | 540 | 7003.9 |
| DI5590 | Marabu Airlines | RDU | SZG | 2026-03-07 21:03:23 | 2026-03-08 12:23:23 | 560 | 7266.4 |
| 5Y9 | Atlas Air | CLT | AMS | 2026-03-26 14:32:21 | 2026-03-27 04:12:21 | 520 | 6718 |
| YV91 | Mesa Airlines | GEG | BCM | 2026-03-26 08:36:25 | 2026-03-27 05:06:25 | 690 | 8992.2 |
departs and arrives are each in the local time of their airport. See
Times and time zones.
Both airports by name
The airport, city and country for each end, from one country to one continent.
{
"type": "Flight",
"departure": { "countries": [{ "country": "jp" }], "types": ["LargeAirport"] },
"arrival": { "continents": ["OC"], "types": ["LargeAirport"] },
"map": {
"departureAirportName": { "column": "from_airport", "dataType": "VarChar" },
"departureCity": { "column": "from_city", "dataType": "VarChar" },
"departureCountryName": { "column": "from_country", "dataType": "VarChar" },
"arrivalAirportName": { "column": "to_airport", "dataType": "VarChar" },
"arrivalCity": { "column": "to_city", "dataType": "VarChar" },
"arrivalCountryName": { "column": "to_country", "dataType": "VarChar" }
}
}
| from_airport | from_city | from_country | to_airport | to_city | to_country |
|---|---|---|---|---|---|
| Kitakyushu Airport | Kitakyushu | Japan | Bauerfield International Airport | Port Vila | Vanuatu |
| Kansai International Airport | Osaka | Japan | Honiara International Airport | Honiara | Solomon Islands |
| Kansai International Airport | Osaka | Japan | Bonriki International Airport | South Tarawa | Kiribati |
| Takamatsu Airport | Takamatsu | Japan | Perth International Airport | Perth | Australia |
| Sendai Airport | Natori | Japan | Chuuk International Airport | Weno Island | Micronesia |
| Aomori Airport | Aomori | Japan | Melbourne Airport | Melbourne | Australia |
Hawaii has the continent code OC, so a filter for OC can also return airports in the United States.
Short regional flights
Departures from California to California or a neighboring state, from 150 to 800 kilometers, on two airlines.
{
"type": "Flight",
"airlines": [{ "airline": "AS" }, { "airline": "WN" }],
"departure": { "regions": [{ "region": "US-CA" }] },
"arrival": {
"regions": [
{ "region": "US-CA" },
{ "region": "US-NV" },
{ "region": "US-AZ" },
{ "region": "US-OR" }
]
},
"minDistanceKilometers": 150,
"maxDistanceKilometers": 800,
"map": {
"airlineName": { "column": "airline", "dataType": "VarChar" },
"flightNumber": { "column": "flight", "dataType": "VarChar" },
"departureAirport": { "column": "from", "dataType": "Char" },
"arrivalAirport": { "column": "to", "dataType": "Char" },
"distanceMiles": { "column": "miles", "dataType": "Double" },
"durationMinutes": { "column": "minutes", "dataType": "Long" }
}
}
| airline | flight | from | to | miles | minutes |
|---|---|---|---|---|---|
| Southwest Airlines | WN125 | SCK | MMH | 132.1 | 45 |
| Southwest Airlines | WN929 | SQL | SMX | 206.5 | 55 |
| Southwest Airlines | WN732 | BIH | SMF | 197.9 | 55 |
| Southwest Airlines | WN94 | SBA | PHX | 454.2 | 85 |
| Alaska Airlines | AS7300 | BIH | FLG | 403.5 | 80 |
| Southwest Airlines | WN3 | MMH | BLD | 249.1 | 60 |
The distance limits are in kilometers, whichever distance sub-field is mapped.
Airline details
Every airline sub-field, for airlines registered in Germany or France.
{
"type": "Flight",
"airlineCountries": [{ "country": "de" }, { "country": "fr" }],
"departure": { "continents": ["EU"], "types": ["LargeAirport"] },
"map": {
"airlineCode": { "column": "iata", "dataType": "Char" },
"airlineIcao": { "column": "icao", "dataType": "Char" },
"airlineName": { "column": "airline", "dataType": "VarChar" },
"airlineCallsign": { "column": "callsign", "dataType": "VarChar" },
"airlineCountry": { "column": "country", "dataType": "Char" },
"flightNumber": { "column": "flight", "dataType": "VarChar" }
}
}
| iata | icao | airline | callsign | country | flight |
|---|---|---|---|---|---|
| TY | TPC | Air Calédonie | AIRCAL | FR | TY7448 |
| 2C | CMA | CMA CGM Air Cargo | FRENCH CARGO | FR | 2C971 |
| HR | HHN | Hahn Air | ROOSTER | DE | HR333 |
| PJ | SPM | Air Saint-Pierre | SAINT-PIERRE | FR | PJ53 |
| VT | VTA | Air Tahiti | AIR TAHITI | FR | VT4074 |
| EW | EWG | Eurowings | EUROWINGS | DE | EW77 |
Weekday morning departures across time zones
Domestic flights of at least 2,000 kilometers, departing between 06:00 and 09:00 local time on weekdays, with both times including their airport's UTC offset.
{
"type": "Flight",
"scope": "Domestic",
"departure": { "countries": [{ "country": "us" }], "types": ["LargeAirport"] },
"arrival": { "countries": [{ "country": "us" }], "types": ["LargeAirport"] },
"minDistanceKilometers": 2000,
"departureTime": {
"mode": "Random",
"min": "2026-01-05T00:00:00",
"max": "2026-01-30T23:59:59",
"weekDays": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"timeMin": "06:00:00",
"timeMax": "09:00:00"
},
"map": {
"departureAirport": { "column": "from", "dataType": "Char" },
"departureTimeZone": { "column": "from_zone", "dataType": "VarChar" },
"departureTimestamp": { "column": "departs", "dataType": "Timestamp" },
"arrivalAirport": { "column": "to", "dataType": "Char" },
"arrivalTimeZone": { "column": "to_zone", "dataType": "VarChar" },
"arrivalTimestamp": { "column": "arrives", "dataType": "Timestamp" }
}
}
| from | from_zone | departs | to | to_zone | arrives |
|---|---|---|---|---|---|
| LAS | America/Los_Angeles | 2026-01-28 06:04:56 -08:00 | DTW | America/Detroit | 2026-01-28 12:59:56 -05:00 |
| LAX | America/Los_Angeles | 2026-01-26 07:55:17 -08:00 | FLL | America/New_York | 2026-01-26 16:00:17 -05:00 |
| SLC | America/Denver | 2026-01-23 08:44:30 -07:00 | MDW | America/Chicago | 2026-01-23 12:44:30 -06:00 |
| PDX | America/Los_Angeles | 2026-01-23 07:12:08 -08:00 | SAT | America/Chicago | 2026-01-23 13:02:08 -06:00 |
| FAT | America/Los_Angeles | 2026-01-12 08:27:48 -08:00 | SAV | America/New_York | 2026-01-12 16:17:48 -05:00 |
| COS | America/Denver | 2026-01-29 07:58:40 -07:00 | RSW | America/New_York | 2026-01-29 13:33:40 -05:00 |
The first row departs Las Vegas at 06:04 and arrives in Detroit at 12:59 local time. From the offsets, the flight takes 3 hours 55 minutes.
Airport positions
The point of each airport, rounded to four decimal places.
{
"type": "Flight",
"departure": { "countries": [{ "country": "ca" }], "types": ["LargeAirport"] },
"arrival": { "countries": [{ "country": "mx" }], "types": ["LargeAirport"] },
"precision": 4,
"map": {
"departureAirport": { "column": "from", "dataType": "Char" },
"departureLocation": { "column": "from_point", "dataType": "Geometry" },
"arrivalAirport": { "column": "to", "dataType": "Char" },
"arrivalLocation": { "column": "to_point", "dataType": "Geometry" }
}
}
| from | from_point | to | to_point |
|---|---|---|---|
| YEG | POINT(-113.58 53.3097) |
CUN | POINT(-86.8735 21.0408) |
| YHM | POINT(-79.9294 43.1713) |
QRO | POINT(-100.1864 20.6188) |
| YUL | POINT(-73.7423 45.4678) |
VSA | POINT(-92.8182 17.9943) |
| YYT | POINT(-52.7519 47.6186) |
CUU | POINT(-105.9638 28.7026) |
| YHM | POINT(-79.9294 43.1713) |
HUX | POINT(-96.2605 15.7754) |
| YYT | POINT(-52.7519 47.6186) |
SJD | POINT(-109.7207 23.1519) |
Trailing zeros are not written, so a longitude of -113.5800 is written as -113.58. For the path between
the two airports, map route. See Route.
A slower aircraft
Short domestic flights with a lower average speed and less time on the ground, as for a turboprop.
{
"type": "Flight",
"departure": { "countries": [{ "country": "no" }] },
"arrival": { "countries": [{ "country": "no" }] },
"maxDistanceKilometers": 400,
"averageSpeedKilometersPerHour": 450,
"groundMinutes": 20,
"map": {
"departureAirport": { "column": "from", "dataType": "Char" },
"arrivalAirport": { "column": "to", "dataType": "Char" },
"distanceKilometers": { "column": "km", "dataType": "Double" },
"duration": { "column": "duration", "dataType": "Interval" },
"durationHours": { "column": "hours", "dataType": "Double" }
}
}
| from | to | km | duration | hours |
|---|---|---|---|---|
| HFT | HVG | 92.1 | 00:30:00 | 0.5 |
| HOV | OLA | 245.7 | 00:55:00 | 0.92 |
| FRO | TRD | 367.3 | 01:10:00 | 1.17 |
| TRD | RVK | 153.9 | 00:40:00 | 0.67 |
| SSJ | MJF | 39 | 00:25:00 | 0.42 |
| AES | MOL | 62.3 | 00:30:00 | 0.5 |
The third row is 367.3 kilometers at 450 kilometers per hour, which is 49 minutes, plus 20 minutes on the ground, rounded to 1 hour 10 minutes. See Duration.
Null rows
{
"type": "Flight",
"nullPercentageMin": 10,
"nullPercentageMax": 10,
"departure": { "countries": [{ "country": "us" }], "types": ["LargeAirport"] },
"arrival": { "countries": [{ "country": "us" }], "types": ["LargeAirport"] },
"map": {
"flightNumber": { "column": "flight", "dataType": "VarChar" },
"departureAirport": { "column": "from", "dataType": "Char" },
"arrivalAirport": { "column": "to", "dataType": "Char" }
}
}
| flight | from | to |
|---|---|---|
| M5627 | ATL | LAX |
| LF888 | LGB | LAX |
| 9K616 | BDL | LGB |
| G468 | ONT | RDU |
| MQ2 | OKC | BUF |
Every mapped column is empty on a null row, so a row never has a flight number without its airports.