Transport · Public data

Airports

Every airport, heliport and seaplane base, with codes and coordinates.

OurAirports · Public domain · commons_pubdata.transport.airports

Read Markdown
5,280 medium and large airports; orange: large.
5,280 medium and large airports; orange: large.

Query it with DuckDB.

Bash
lhbox duckdb --catalog commons/pubdata
SQL · Large airports with scheduled service per country
SELECT country_code, count(*) AS large_airports
FROM commons_pubdata.transport.airports
WHERE type = 'large_airport' AND scheduled_service
GROUP BY 1 ORDER BY 2 DESC LIMIT 20;

Read it where you work.

Public, read-only data. With an account, lhbox duckdb attaches the catalog as commons_pubdata; an agent with the LakehouseBox connector opens it with open_public_catalog("commons/pubdata"). Without one, DuckDB reads the public files directly.

Example queries

  • Large airports with scheduled service per country
    SELECT country_code, count(*) AS large_airports
    FROM commons_pubdata.transport.airports
    WHERE type = 'large_airport' AND scheduled_service
    GROUP BY 1 ORDER BY 2 DESC LIMIT 20;
  • The nearest airport to each of your locations (flat-earth approximation, fine under ~200 km)
    SELECT l.location_id, a.iata_code, a.name,
           6371 * acos(cos(radians(l.lat)) * cos(radians(a.latitude)) * cos(radians(a.longitude) - radians(l.lon))
                       + sin(radians(l.lat)) * sin(radians(a.latitude))) AS km
    FROM my.locations AS l, commons_pubdata.transport.airports AS a
    WHERE a.type IN ('medium_airport', 'large_airport')
    QUALIFY row_number() OVER (PARTITION BY l.location_id ORDER BY km) = 1;

Know your columns.

ColumnTypeMeaning
airport_idintOurAirports' stable numeric id
identstringthe identifier OurAirports uses (ICAO where one exists)
typestringsmall_airport, medium_airport, large_airport, heliport, seaplane_base, balloonport, closed
namestringthe airport's name
latitudedoubleWGS84 degrees
longitudedoubleWGS84 degrees
View all 17 columns
elevation_ftintelevation in feet where known
continentstringAF, AN, AS, EU, NA, OC, SA
country_codestringISO 3166-1 alpha-2 (joins reference.countries)
region_codestringISO 3166-2 region, e.g. US-PA
municipalitystringthe city the airport serves
scheduled_servicebooleantrue when airlines fly scheduled service
icao_codestringICAO code where assigned
iata_codestringIATA code where assigned
gps_codestringGPS code
local_codestringlocal (national) code
wikipedia_urlstringWikipedia article

Join keys: country_code, iata_code, icao_code.

Before you query.

  1. iata_code is null for most small fields; join on it only for commercial airports.
  2. type = 'closed' rows are kept on purpose (historic references); filter them out for "where can I fly".
  3. Coordinates are the reference point, not the terminal.

Source & licence.

Source
OurAirports
Licence
Public domain (released without restrictions)
Attribution
Data from OurAirports (ourairports.com), David Megginson and contributors, public domain.
Coverage
worldwide, ~80,000 fields; current state (no history)
Refresh
weekly, the whole table replaced; source version Sat, 10 Oct 2026 01:53:58 GMT
Table
commons/pubdata · transport.airports · Iceberg v2 · browse the catalog
Recipe
pubdata/recipes/airports.py, registry entry pubdata/registry/airports.yaml

Source: OurAirports · Public domain · Snapshot shown: 10 Oct 2026HTML for people. Markdown for agents.