Airport Route Network Scraper avatar

Airport Route Network Scraper

Pricing

from $1.50 / 1,000 route founds

Go to Apify Store
Airport Route Network Scraper

Airport Route Network Scraper

Map the full non-stop network of any airport: every destination, the airlines on each route, flights per week, operating days, flight time, distance and the months it runs. Up to 30 airports per run, one clean row per route. No account and no login needed.

Pricing

from $1.50 / 1,000 route founds

Rating

0.0

(0)

Developer

Hamza

Hamza

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Name an airport and get its whole non-stop network as a clean table — every destination it serves, which airlines fly there, how many flights a week, which days of the week they operate, how long the flight takes, how far it is, and which months of the year the route actually runs. One row per route, up to 30 airports in a single run. Built for airport marketing and route-development teams, aviation consultancies, tourism boards, travel publishers and anyone who has ever tried to answer "where can you fly non-stop from here?" and found there is no table to buy.

What you can do with it

  • Map an airport's full network — every non-stop destination, with the airlines on each route and how often they fly it, in one table you can hand to a client the same afternoon.
  • Find the gaps in your catchment — pull your airport and three competitors, line the destination lists up side by side, and see exactly which cities they serve that you do not.
  • Track seasonal capacity — filter to routes that do not run all year and get the months each one operates, so summer and winter schedules stop being guesswork.
  • Build a country-by-country connectivity picture — filter destinations to the markets you sell into and count routes, airlines and weekly frequency per country.
  • Spot newly launched routes — every row says whether the route is flagged as newly opened and carries the first-flight date the source publishes for it. That date is sometimes in the future, because the source also publishes start dates for service that has not begun; those rows are marked firstFlightIsUpcoming: true so a "what launched recently" sort never counts capacity that is not flying yet.
  • Feed a route-development pitch or a tourism dashboard with real frequency and airline data instead of a screenshot of a route map.
  • Enrich an internal airport database with destination coordinates, flight times and distances in both miles and kilometres.

What you get

One row per non-stop route out of the airport you named. A real row, abridged:

{
"originIata": "JFK",
"originAirport": "John F. Kennedy International Airport",
"originCity": "New York",
"originCountryCode": "US",
"originTimeZone": "America/New_York",
"destinationIata": "LAX",
"destinationCity": "Los Angeles",
"destinationCountry": "United States",
"destinationCountryCode": "US",
"destinationLat": 33.942501,
"destinationLng": -118.407997,
"airlines": "American Airlines, JetBlue, Delta",
"airlineCodes": ["AA", "B6", "DL"],
"airlineCount": 3,
"alliances": ["oneworld", "SkyTeam"],
"hasLowCostCarrier": true,
"carriers": [
{ "iata": "AA", "name": "American Airlines", "alliance": "oneworld", "isLowCost": false, "airlineIsCargoOperator": false, "durationMin": 379, "isNew": false },
{ "iata": "B6", "name": "JetBlue", "alliance": null, "isLowCost": true, "airlineIsCargoOperator": false, "durationMin": 376, "isNew": false }
],
"flightsPerWeek": 193,
"flightsPerDay": "23-30 flights",
"daysOfWeek": ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
"daysOfWeekUpcoming": [],
"operatesDaily": true,
"frequencySource": "published",
"durationMin": 358,
"distanceMi": 2468,
"distanceKm": 3971.9,
"isSeasonal": false,
"isYearRound": true,
"seasonalMonthNames": ["January", "February", "…", "December"],
"cabinClassCount": 4,
"isNewRoute": false,
"firstFlight": "2018-04-25",
"firstFlightIsUpcoming": false,
"collectedAt": "2026-08-16T12:00:00.000Z",
"notes": []
}

A seasonal route from the same airport comes back the same way, and says so plainly: JFK → LGW, flown by Norse Atlantic UK, 8 flights a week, 420 minutes, 3,458 miles, isSeasonal: true, seasonalMonthNames: ["August", "September", "October"].

Input reference

FieldTypeDefaultWhat it does
airportsarray["BCN"]The airports whose networks you want, as three-letter codes — BCN, JFK, LHR. Up to 30 in one run. City-wide codes such as LON or NYC are not accepted, because networks are published per airport; if you enter one, the run tells you which airports to use instead.
includeCarrierDetailbooleantrueAdds the airlines on each route, their alliance and low-cost status, flights per week, the days of the week the route runs, and whether it is newly launched. Switch it off for a faster run that still returns every destination, flight time, distance and season.
includeSeasonalOnlybooleanfalseReturn only the routes that do not operate all year.
minWeeklyFrequencyinteger0Keep only routes flown at least this many times a week. 0 means no minimum. Setting it switches airline detail back on, because the weekly count is part of that detail.
countryarrayemptyKeep only routes to these destination countries. Write names (Germany) or two-letter codes (DE). Leave empty for every destination.
maxRoutesPerAirportinteger500Upper limit on how many routes each airport contributes, busiest first. A large hub publishes roughly 200 to 250 destinations.
maxRoutesinteger5000Hard ceiling on the rows the whole run produces. Use it to keep a big job predictable.

Output fields

FieldTypeWhat it is
originIata, originAirport, originCity, originCountryCodestringThe airport the route departs from.
originTimeZonestringThe origin airport's time zone.
destinationIata, destinationCity, destinationCountry, destinationCountryCodestringWhere the route goes.
destinationLat, destinationLngnumberThe destination airport's coordinates, ready to map.
airlinesstringThe airlines on the route, as a readable list.
airlineCodesarrayThe same airlines as two-letter codes.
airlineCountnumberHow many airlines fly the route.
alliancesarrayWhich global alliances are present on the route.
hasLowCostCarrierbooleanWhether at least one low-cost airline flies it.
carriersarrayPer-airline detail: code, name, alliance, low-cost flag, that airline's typical flight time, whether it is new on the route, and airlineIsCargoOperator — a flag on the airline, meaning it also runs freight operations somewhere. It says nothing about this route: several large passenger airlines carry it on every route they fly.
flightsPerWeeknumberDepartures a week across all airlines. Empty — never zero — when the source published no count, with a note on the row saying so.
flightsPerDaystringThe published daily range, for example 23-30 flights.
daysOfWeekarrayThe days the route is published as operating, Mon to Sun.
daysOfWeekUpcomingarrayDays the source publishes as upcoming rather than as currently operating — service is listed for that day but is not part of the current operating pattern. Usually empty; on a seasonal or just-announced route it can hold one or two days, or the whole week. Kept separate so a route flying six days is never reported as flying none.
operatesDailybooleanWhether it currently runs all seven days.
frequencySourcestringpublished when the route was matched to the airline-and-frequency data, empty when that data was not collected or could not be read. It says which source answered, not that every frequency column is filled in: a matched route can still publish no weekly count, and when that happens the row carries a note. A blank is never a zero.
durationMinnumberScheduled flight time in minutes.
distanceMi, distanceKmnumberRoute distance in statute miles, and the same distance in kilometres.
isSeasonal, isYearRoundbooleanWhether the route runs only part of the year.
seasonalMonths, seasonalMonthNamesarrayThe months the route operates, as numbers and as names.
cabinClassCountnumberHow many cabin classes are sold on the route.
isNewRoutebooleanWhether the route is flagged as newly launched.
firstFlightstringThe first-flight date published for this route, where there is one. It is a start date, not a history: it can be in the future for service that has not begun, and on a route that has just gained an airline it is that airline's start date rather than the day the route opened.
firstFlightIsUpcomingbooleantrue when firstFlight is later than collectedAt — the flight has not happened yet. Sort or filter on this before treating firstFlight as a launch date.
collectedAtstringWhen the row was collected.
notesarrayPlain-English notes about anything the source did not publish for this route. Empty on most rows.

The run also writes a summary you can read alongside the table: how many airports were mapped, how many genuinely publish no routes, how many are not carried at all, how many could not be read, and how many routes were filtered out and why.

Pricing

You pay per route delivered, plus a small charge for each airport mapped.

What you pay forPrice
Each route delivered$0.0015 — that is $1.50 per 1,000 routes
Each airport mapped$0.025

Worked example. Mapping New York JFK returns 196 non-stop routes: 196 × $0.0015 = $0.29, plus $0.025 for the airport, so about $0.32 for the whole network of a major hub. A ten-airport study averaging 150 routes each is 1,500 routes = $2.25 plus $0.25 for the ten airports, $2.50 in total.

The per-airport charge exists because mapping an airport is one piece of work whether it comes back with 250 routes or with eight, and because a narrow filter — one country, or seasonal routes only — still needs the whole network collected before it can be filtered. An airport that answers that it currently publishes no scheduled routes has been mapped and is charged the $0.025; it produces no rows, so it adds nothing to the per-route total. An airport that could not be read at all is never charged.

Limits & what this actor cannot do

  • It does not return fares. There are no ticket prices in the output and none are estimated. This is a schedule and network product, not a pricing one.
  • It cannot book, hold or reserve anything, and it does not check seat availability on a given date.
  • Routes are reported outbound from the airport you name, one row per destination.
  • Schedules are a snapshot at the moment of collection. Airlines add, cut and re-time routes continuously, and a route published today may not be flying next season. Re-run on a schedule if you need to track change.
  • Seasonality is reported by month, not by date. You get the months a route operates, not the exact first and last flying day.
  • Some dates and days describe the future, and are labelled. firstFlight is a published start date that is sometimes still ahead — firstFlightIsUpcoming marks those rows. Days the source lists as upcoming rather than as currently operating are reported in daysOfWeekUpcoming rather than mixed into daysOfWeek; on a seasonal airport that can be a third or more of the rows, and on a few of them the whole week is upcoming, which means the route is scheduled but is not in the current operating pattern.
  • Airline and frequency detail is a second layer, and for a small number of airports it is not available. When that happens the run still returns every destination, flight time, distance and season, the airline and weekly-frequency columns come back empty rather than zero, and both the row and the run summary say so. Switching that layer off yourself is reported differently from it being unavailable — the rows say which of the two happened, so a deliberately narrow run never looks like a broken one.
  • Occasionally a destination is listed with no airline detail attached. It is still delivered, with a note on the row, rather than quietly dropped.
  • The number of cabin classes sold on a route is published; which ones they are is not, so only the count is reported.
  • City-wide codes are not accepted. Networks are published per airport, so LON and NYC are rejected with a list of the airport codes to use instead.
  • An airport the source refuses to answer for is reported as a failed read, never as an airport with no routes. A run where nothing could be read ends as a failed run with an empty table — it never looks like a successful run that found nothing.
  • Very large jobs take longer. Run time depends on how many airports you ask for and how quickly the source answers; no fixed speed is promised.
  • The source's terms govern automated access. You are responsible for using the results lawfully and in line with those terms.

FAQ

Do I need an account on the source site? No. Nothing is signed into and nothing is registered.

Does it need my login or password? No. There is nothing to configure beyond the airports you want.

Can I schedule it? Yes. Run it daily, weekly or monthly and compare the tables to see routes appear and disappear. isNewRoute and firstFlight make new launches easy to pick out — filter out firstFlightIsUpcoming: true first if you want routes that are already flying rather than ones announced to start later.

Are these flights bookable? The rows describe published scheduled service — who flies the route and how often — not seats on a particular date. Nothing here is a booking, a price or an availability guarantee.

Why is flightsPerWeek empty on some rows instead of zero? Because empty means "not published" and zero would mean "nobody flies it", and those are completely different answers. Every row that is missing the weekly count carries a note saying so — including the rows where the rest of the frequency data did arrive — and the run summary counts them.

Why does a row have daysOfWeekUpcoming filled in? Because the source marks each day of the week in one of three ways: operating, not operating, or upcoming. An upcoming day is one it lists service on without putting it in the current operating pattern — typically a seasonal route, or a day about to be added. Those days are reported in their own column instead of being merged into daysOfWeek or thrown away with it.

Why did my city code get rejected? Route networks are published per airport, not per city, so NYC has no single network. Enter the airports themselves — the run lists them for you when it rejects the city code.

How many airports can I do at once? Up to 30 in one run, and up to 20,000 routes in total.