ParseForge Scrapers

OurAirports Global Airport Database Scraper

parseforge/ourairports-scraper

OtherTravelAutomation

Scrapes the OurAirports public data files for airport records with ICAO and IATA codes, GPS coordinates, elevation, and classification. Filter by country, type, scheduled service, or geographic bounding box.

Run this scraper See the API call
Total users
1
Monthly active
0
Total runs
124
Bookmarked
0
Rating
Not rated yet
Last modified
9 days ago

Overview

ParseForge

OurAirports Global Airport Database Scraper

Scrape the complete global airport database from OurAirports, up to a million records per run. Every airport comes with its ICAO and IATA codes, GPS coordinates, elevation, runway info, and scheduled service status. Export to CSV, JSON, Excel, or XML.

The OurAirports community dataset is the most complete free airport database on the web, but downloading and parsing the raw CSV files means manual work every time it updates. This Actor reads the live data directly, lets you filter by country, type, scheduled service, or a geographic bounding box, and returns each airport as a clean, flat row ready for your database or analysis.

Who uses it What they scrape OurAirports for
Aviation data analysts Build a current, filterable master list of airports for a specific region or worldwide.
Travel app developers Populate an airport picker or route planner with official codes and coordinates.
Logistics and cargo planners Identify all airports with scheduled service in a target country for network expansion.
Flight simulation enthusiasts Gather real-world airport data to enhance scenery or navigation databases.

What it does

This Actor collects airport records from the OurAirports public data files and returns each one as a flat row with identifiers, location, elevation, and classification fields.

  • 🌍 Country filter: restrict results to a single ISO country code like US, GB, or JP.
  • 📏 Airport type: collect only large airports, small airports, heliports, seaplane bases, balloonports, or closed airfields.
  • 🛫 Scheduled service: toggle to return only airports with known commercial airline flights.
  • 🗺️ Bounding box: define a rectangular area by min and max latitude and longitude to scrape airports in a specific region.
  • 🔢 Item cap: set a hard limit from 1 to 1,000,000 airports per run to control dataset size.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

What you can do with OurAirports data

🌐 Build a regional airport database.

An aviation data analyst runs the Actor with a country code and scheduled service enabled to get a clean list of commercial airports for a market report.

📱 Seed a travel app with airport codes.

A developer scrapes all medium and large airports worldwide to populate an autocomplete field with IATA codes and city names.

🗺️ Map airports in a specific area.

A GIS specialist sets a bounding box over Southeast Asia and collects all heliports and small airports for a humanitarian logistics planning map.

🛩️ Find seaplane bases for a niche directory.

A content creator filters by seaplane_base type and a country code to compile a directory of water landing sites for a general aviation website.

Why choose this scraper

What you get
Always up to date Reads the live OurAirports data on each run, not a stale snapshot.
One flat schema Every airport arrives with the same fields, ready for import into any tool.
No parsing work You get structured JSON, CSV, Excel, or XML instead of raw CSV files to clean.
Geographic precision Filter by bounding box to grab only the airports that matter for your map or analysis.

How it compares

No other Store actor targets OurAirports the same way, so the honest comparison is with the alternatives teams actually weigh.

OurAirports Global Airport Database Scraper Build it in-house By hand
Setup Run it now, zero config Days of engineering None, but hours per pull
When OurAirports changes Maintained for you You fix it You re-learn the page
Proxies, retries, anti-bot Built in Your problem Browser only
Output Fixed JSON schema, CSV/Excel export Whatever you build Copy-paste
Cost Pay per result Engineering time Analyst hours

Configure the run

Drive the Actor with an optional country code, airport type, scheduled service flag, and geographic bounding box, and filters run as each record is read so only matches reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

{
  "maxItems": 10,
  "country": "US"
}

A larger pull:

{
  "maxItems": 200,
  "country": "US"
}

Pricing

Pay-per-result: $0.00999 per result collected. You pay only for the results written to your dataset.

Results collected Approximate cost
100 results $1.00
1,000 results $9.99
10,000 results $99.90

New Apify accounts start with $5 in free credit.

Free users

Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the OurAirports Global Airport Database Scraper.
  3. Set your inputs and any filters, then click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent live access to OurAirports through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/ourairports-scraper"

Then prompt it in plain language to run the scraper and read back the results.

Troubleshooting

Why am I getting no results?

Check that your country code is a valid ISO 3166-1 alpha-2 code. Also, if you set a bounding box, ensure the min and max latitude and longitude values define a valid area and that the box overlaps with land.

The run finished but my dataset is empty.

Your combination of filters may be too restrictive. Try removing the scheduled service flag or broadening the airport type to 'All Types' and run again.

I got fewer results than my maxItems setting.

This is normal. maxItems is an upper cap. The Actor returns every airport that matches your filters, and the total number of matching airports may be less than your cap.

The latitude and longitude values look wrong for my area.

The bounding box uses decimal degrees with negative values for south and west. For example, minLat=-34, maxLat=-30, minLon=18, maxLon=23 covers the Cape Town region.

Can I get the data in my local language?

The OurAirports dataset primarily uses English for airport names. Some records may include a local name field, but the data is not localized by this Actor.

FAQ

Question Answer
Where does the data come from? The Actor reads the public data files maintained by the OurAirports community project at ourairports.com. It does not scrape the website's HTML pages.
How often is the OurAirports data updated? The OurAirports project publishes updates regularly as contributors add or correct airport information. Run this Actor whenever you need a fresh copy.
Can I get only airports with IATA codes? The Actor returns all matching airports. Many small airfields and heliports do not have IATA codes. You can filter the output afterward for rows where the IATA field is not empty.
What does the scheduled service filter do? It restricts results to airports that OurAirports marks as having scheduled commercial airline service. This excludes general aviation fields, private strips, and closed airports.
How do I filter for airports in one country? Set the Country Code input to the two-letter ISO 3166-1 alpha-2 code for that country, such as DE for Germany or BR for Brazil.
Can I scrape airports within a specific latitude and longitude box? Yes. Fill in the minLat, maxLat, minLon, and maxLon fields to define a bounding box. The Actor will return only airports whose coordinates fall inside that rectangle.
What export formats are available? You can export your dataset as JSON, CSV, Excel, or XML directly from the Apify platform after the run finishes.
Is there a limit on how many airports I can collect? You can set the maxItems field up to 1,000,000. The full OurAirports dataset contains around 60,000 airports, so the default limit is more than enough for a complete pull.
Does this Actor include runways or frequencies? The core airport record includes runway count and surface type summary fields. Detailed runway and frequency data are in separate OurAirports files and are not included in this Actor's output.
Can I get closed airports? Yes. Select 'Closed' from the Airport Type dropdown to collect only airports that are no longer operational.

Related actors

Browse the full ParseForge collection for more scrapers.

🆘 Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by OurAirports. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

Input

FieldTypeWhat it doesDefault
maxItems integer Maximum number of airports to collect per run. 10
country string ISO 3166-1 alpha-2 country code (e.g. US, GB, JP). Leave empty for worldwide. US
type string (8 options) Filter by airport classification. not set
hasScheduledService boolean Restrict to airports with scheduled commercial flights. false
minLat string Optional south edge of a bounding box filter. not set
maxLat string Optional north edge. not set
minLon string Optional west edge. not set
maxLon string Optional east edge. not set

Pricing

from $7.49 per 1,000 results

Charged forWhat it isPrice each
Result Item Charged once per result collected. $0.00749 to $0.00999

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

API

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST · run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~ourairports-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "helloWorld": 123
  }'

Examples

Input that runs as-is.

input.json
{
  "helloWorld": 123
}

Reviews

No reviews yet. Be the first.

Issues

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

Related scrapers

Run OurAirports Global Airport Database Scraper on Apify All scrapers