Airport & Airline Reference Dataset avatar

Airport & Airline Reference Dataset

Pricing

from $0.50 / 1,000 reference record collecteds

Go to Apify Store
Airport & Airline Reference Dataset

Airport & Airline Reference Dataset

Resolve any place name, IATA or ICAO code into clean airport, city and airline reference records: official names, codes, coordinates, time zones, currency, city-wide groupings and cross-platform place identifiers. Ambiguous names are flagged, never guessed. No account or login needed.

Pricing

from $0.50 / 1,000 reference record collecteds

Rating

0.0

(0)

Developer

Hamza

Hamza

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Turn the messy place names your users, spreadsheets and partners actually type — JFK, EGLL, NYC, London Heathrow, sao paulo, Zurch — into clean, trustworthy reference records: official name, IATA and ICAO codes, city, country, coordinates, time zone, local currency, the city-wide code that covers a whole metropolitan area, and the place identifiers that major flight-search platforms use. Leave the search list empty and you get the entire catalogue of the world's airports with scheduled service instead. Built for the one job every travel dataset needs first and nobody wants to build: knowing exactly which airport somebody meant, and refusing to guess when the answer is genuinely ambiguous.

What you can do with it

  • Validate place input before it costs you. Check every code in your booking flow, your feed or your partner file against a real list of airports with scheduled service — instead of discovering downstream that someone sent a closed airfield or a code that does not exist.
  • Resolve free text to codes. Map "London Heathrow", "sao paulo" or a typo like "Zurch" to the right airport, with a confidence grade on every match so you know what to trust and what to review.
  • Stop the London-Ontario class of error. "London" matches six London-area airports and a Canadian one. This actor returns all of them, ranked, and flags the name as ambiguous rather than silently picking one.
  • Join travel datasets that use different identifiers. Every record can carry the place identifiers used by the big flight-search platforms alongside IATA and ICAO, so your data lines up instead of nearly lining up.
  • Build a city-level view. Get the city-wide code (NYC, LON, PAR, TYO…) with the exact list of airports it covers, so "flights to London" means all six and not just Heathrow.
  • Seed a database or a dropdown. Download the whole catalogue — over four thousand airports plus city groupings — in one run, filtered to the countries you care about.
  • Convert local times correctly. Each airport carries its time zone and an honest note about how firmly that zone is established.

What you get

One record per airport, city grouping or airline. A real record, abridged:

{
"entityType": "airport",
"iata": "LGW",
"icao": "EGKK",
"name": "London Gatwick Airport",
"city": "London",
"metroCode": "LON",
"countryCode": "GB",
"countryName": "United Kingdom",
"currency": "GBP",
"lat": 51.1487,
"lon": -0.1857,
"timeZone": "Europe/London",
"timeZoneConfidence": "country",
"isSchengen": false,
"hasScheduledService": true,
"airportType": "large",
"carrierNetworks": ["FR", "W6"],
"isCarrierBase": false,
"placeId": "LGW",
"geoId": "95565051",
"altPlaceId": "Station:airport:LGW",
"coverageNote": null,
"query": "London Gatwick",
"matchedOn": "name",
"matchConfidence": "medium",
"resolvedFrom": "bundled+online",
"dataSnapshot": "2026-08-16",
"collectedAt": "2026-08-16T19:33:56.817Z"
}

A city grouping looks the same, with entityType: "metro", metroMembers: ["JFK", "EWR", "LGA", "SWF"], and no time zone or runway size of its own — because a city that spans four airports has neither.

Input reference

FieldTypeDefaultWhat it does
querieslist of text(empty)Airport codes, city codes or plain place names. Leave empty to download the whole catalogue. Up to 500 per run.
entityTypeslist["airport","metro"]Which record types to produce: airport, metro (city-wide groupings) and airline.
countryFilterlist of text(empty)Two-letter country codes such as GB, US, DE. Empty means every country. Up to 50.
marketselectUSThe market whose place naming and ranking you want when a name has to be looked up online.
onlineResolutionselectambiguousoff — answer everything locally, no extra charge. ambiguous — spend an online lookup only on names that stay unclear. always — spend one on every name, which attaches the cross-platform identifiers to every record and is charged for every name that comes back with an answer, including names the built-in catalogue had already settled.
includeMetroGroupingsbooleantrueReturn the city-wide code alongside the individual airports, with its member list.
includeTimezonesbooleantrueAdd each airport's time zone and how firmly it is established.
includeNonAirportsbooleantrueKeep scheduled heliports and water aerodromes — real ticketable places in Greenland, Norway, Alaska and the Caribbean.
refreshCarrierNetworksbooleanfalseCheck both carriers' current station lists before building records instead of using the built-in edition. Each airline record says which edition its own list came from.
maxMatchesPerQueryinteger5How many candidate places one ambiguous name may return (max 25).
maxOnlineLookupsinteger50Hard ceiling on online lookups in a run (max 500). This is the only thing that can add a charge beyond the records themselves.
maxRowsinteger5000Hard ceiling on records produced (max 50,000).
parallelLookupsinteger2How many names may be looked up online at once (max 8).

Output fields

FieldTypeDescription
entityTypetextairport, metro (a city-wide code) or airline.
iatatextThree-letter IATA code — the airport, the city code, or the two-character carrier code on airline records.
icaotext | nullFour-letter ICAO code. null where none is published and on city groupings.
nametextOfficial name of the airport, city grouping or carrier.
citytext | nullSettlement the airport serves.
metroCodetext | nullThe city-wide code this airport belongs to, if any.
metroMemberslistOn a city record, the airports it covers. Empty on airport records.
countryCode / countryNametextISO two-letter country code and its name.
currencytext | nullThe country's own official currency, as an ISO 4217 code. null for the few countries whose currency arrangement is in transition — never guessed, and never an airline's selling currency.
lat / lonnumber | nullCoordinates. On a city grouping, the centre point of its member airports.
timeZonetext | nullTime zone identifier, for example Europe/London. null on city groupings.
timeZoneConfidencetext | nullHow firmly the zone is established for that airport.
isSchengenboolean | nullWhether the country is in the Schengen area. The area is a closed list of member states, so this is answered for every country in the catalogue; null only on a place found by an online lookup whose country could not be established.
hasScheduledServiceboolean | nulltrue for everything in the built-in catalogue. null for a place found only by an online lookup.
airportTypetext | nulllarge, medium, small, heliport or seaplane.
carrierNetworkslistCodes of the reference carriers that serve this airport. Joins to the airline records.
isCarrierBaseboolean | nullWhether a reference carrier bases aircraft here, where that is published.
networkAirports / networkSizelist / numberOn an airline record, every airport that carrier serves and how many. On a city record, the size of the grouping.
networkSourcetext | nullOn an airline record, whether that carrier's own station list was refreshed this run or came from the built-in edition. null on airport and city records.
placeIdtext | nullThe place identifier the major flight-search platforms address this place by. Without an online lookup this is the built-in identifier, which for an airport is its IATA code and for a city grouping is the platform's own city identifier.
geoIdtext | nullNumeric geographic identifier. Present when an online lookup ran for that name.
altPlaceIdtext | nullA second widely used place identifier. Present when an online lookup ran for that name.
coverageNotetext | nullA plain warning when a code does not mean what it looks like — for example that BKK covers Suvarnabhumi only and not Don Mueang.
querytext | nullThe search that produced this record. null in catalogue mode.
matchedOntextHow the match was made: iata, icao, metro, city, name, tokens, fuzzy, online or catalog.
matchConfidencetextexact, high, medium or low. A near-miss is never sold as an exact match.
resolvedFromtextbundled, bundled+online or online.
dataSnapshottextThe edition of the built-in reference catalogue this record came from.
collectedAttextWhen the record was produced (ISO 8601, UTC).

Pricing

You pay per record produced, plus a small amount for each name that needed an online lookup.

What you pay forPrice
Reference record collected$0.50 per 1,000 records
Place resolved online$0.020 each

The second charge follows the onlineResolution setting, and it is worth reading before you pick one:

  • off — no online lookup ever happens, so this charge cannot occur. Records only.
  • ambiguous (default) — a lookup is spent only on a name that matched nothing, matched several places, or matched only one place partially. A name the built-in catalogue settled cleanly is never looked up and never charged.
  • always — a lookup is spent on every name, including names the built-in catalogue already settled, because that is what attaches the cross-platform identifiers to every record. Every one of those that comes back with an answer is charged. Ten clean airport codes in always mode cost ten charges; the same ten in ambiguous mode cost none.

In every mode you are charged only when the lookup comes back with an answer that reaches your results: a lookup that does not complete, or that finds nothing, is not charged. maxOnlineLookups is a hard ceiling on how many can happen in one run, whatever the mode.

Worked example. You look up 200 place names. 180 of them are codes or unambiguous names and are answered locally. 20 are ambiguous free text and need an online lookup. The run produces 340 records in total.

  • 340 records × $0.50 / 1,000 = $0.17
  • 20 online lookups × $0.020 = $0.40
  • Total: $0.57

Downloading the entire catalogue — every airport with scheduled service plus every city grouping, about 4,200 records — costs roughly $2.10 and spends nothing on online lookups. A catalogue run answers everything from the built-in reference data, so geoId and altPlaceId are null on those records and placeId is the IATA code itself; the cross-platform identifiers come from an online lookup, which only a search run performs.

Limits & what this actor cannot do

  • It is reference data, not availability data. It tells you an airport exists, where it is and how it is addressed. It does not tell you whether anyone flies there today, what a flight costs, or whether a seat is available.
  • Ambiguity is reported, not resolved. "London" matches several places on two continents. The actor returns the candidates ranked and marks the name ambiguous. It will not pick one for you, because picking one is how a booking ends up on the wrong continent.
  • Closed airfields and unscheduled strips are deliberately excluded. The catalogue covers airports with scheduled service. If you search a disused code, the honest answer is "no match", and that is what you get.
  • Currency and Schengen status are country facts, held here as country facts. The currency is the country's own official ISO 4217 currency, and a handful of countries whose arrangement is in transition are deliberately null rather than guessed. Schengen membership is the closed list of member states as of the reference edition, Bulgaria and Romania included since 1 January 2025. Neither field is ever taken from an airline, whose selling currency and border flags describe that airline's own business and not the country.
  • Airline records are narrow on purpose. They cover only carriers that publish their complete airport list — today Ryanair and Wizz Air. A carrier whose full network cannot be established is absent rather than half-present, because a partial network read as a complete one is worse than no record at all.
  • Carrier network membership goes out of date. Airlines open and close airports continuously. Treat it as a strong hint, not a guarantee, and switch on refreshCarrierNetworks when it matters: it re-reads both carriers' current station lists, and each airline record's networkSource says which edition that carrier's own list came from — refreshed if it was re-read this run, built-in if that check did not complete. A carrier whose list comes back suspiciously short is refused rather than published as a shrunken network, and its built-in edition is used instead.
  • A city name does not always reach every airport in that city. Some airports are officially listed under their own town rather than the metropolis. That is exactly why the city-wide record exists: it carries the full member list.
  • A lookup the source refuses is reported as a failed lookup, never as "no such place". The run summary counts names that matched nothing separately from names that could not be checked, and a run in which nothing could be checked ends as a failed run rather than a green run with an empty result.
  • Time zones carry a confidence grade, and you should read it. Most are firmly established; a few are inferred from the country. The field tells you which is which instead of pretending they are all equal.
  • Coordinates are for orientation, not navigation. They locate the airport well enough for maps and distance estimates. They are not survey-grade and must not be used for anything operational.
  • Speed depends on the size of the job. A local run is effectively instant; a run with many online lookups takes as long as the sources take to answer. No fixed throughput is promised.
  • Lawful use is yours to manage. The sources' terms govern automated collection. You are responsible for using the data lawfully and in line with those terms.

FAQ

Do I need an account on any travel site? No. Nothing is signed into and nothing is bought.

Does it need my login or password? No. There is nothing to configure beyond the settings on this page.

Can I run it without any online lookup at all? Yes. Set onlineResolution to off. Every code, every city code and every unambiguous name is still answered, instantly, from the built-in catalogue — and the only charge is the records themselves.

Can I schedule it? Yes. A weekly or monthly schedule is the usual pattern for keeping a reference table current. Nothing here changes by the minute.

How current is the data? Every record carries dataSnapshot, the edition of the built-in catalogue it came from, and collectedAt, the moment the record was produced. Airport reference data moves slowly; carrier networks move faster, which is what refreshCarrierNetworks is for.

Why did my search return several records? Because the name genuinely matches several places. Look at matchConfidence and matchedOn: the top record is the best match, and the rest are the alternatives you would otherwise never have seen. Narrow it with countryFilter or search the exact code.

Are the city codes safe to send to a flight search? The metro records are the codes that address a whole city. Where a code looks like a city but only reaches one airport, coverageNote says so in plain words — that warning exists because the mistake is invisible otherwise.