Flight Price Aggregator API πŸ’° β€” 5 Sources, One Query avatar

Flight Price Aggregator API πŸ’° β€” 5 Sources, One Query

Pricing

from $2.50 / 1,000 flight offers

Go to Apify Store
Flight Price Aggregator API πŸ’° β€” 5 Sources, One Query

Flight Price Aggregator API πŸ’° β€” 5 Sources, One Query

Compare flight prices across Ryanair, Wizz Air, EasyJet, Google Flights & Skyscanner in one call. Fans out in parallel, merges by flight identity & cross-source price-matches β€” so you see who sells each flight cheapest. One-way & round-trip: fares, airlines, times, stops. Pure HTTP, JSON/CSV

Pricing

from $2.50 / 1,000 flight offers

Rating

5.0

(1)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

23

Total users

20

Monthly active users

8 hours ago

Last modified

Categories

Share

Flight Price Aggregator API β€” 6 Sources, One Query πŸ’°

⭐ Useful? Leave a review β€” it takes 10 seconds and is the single biggest thing that helps other travel developers find this aggregator.

Compare flight prices across Google Flights, Skyscanner, Kiwi, Ryanair, Wizz Air and EasyJet in a single call β€” or batch up to 50 routes in one run. One search fans out to all six sources in parallel, merges the results by flight identity, and cross-source price-matches β€” so for every flight you instantly see which source sells it cheapest.

How it works

Why this actor

Most flight scrapers give you one source's view. Low-cost carriers are almost always cheaper booked direct than through a metasearch aggregator β€” but you only know that if you can see both prices side by side. This actor does exactly that:

  • Direct LCC fares from Ryanair, Wizz Air and EasyJet β€” the real, bookable price, not a marked-up resale.
  • Broad coverage from Google Flights, Skyscanner and Kiwi β€” every airline on the route, including the legacy carriers the LCCs don't show.
  • One merged view β€” the same physical flight from multiple sources collapses into a single row with a per-source price map (prices), the list of sources that returned it (sourcesFound), and the cheapest seller tagged (cheapestSource).
  • Batch mode β€” pass a routes array and monitor a whole route portfolio in one run instead of scheduling N separate actors.
  • Result filters β€” directOnly, maxStops, maxDurationMinutes applied server-side, so your downstream code gets exactly the flights you care about.

The payoff is concrete: on a typical London→Paris search the same EasyJet flight comes back at £14.99 direct vs $41 via Google Flights — and the actor tags the direct fare as cheapest automatically.

Use cases

  • Fare-alert products β€” batch your subscribers' routes into one scheduled run, push a notification whenever the cheapest price drops below a threshold. Per-source price, cheapest seller and booking URL are already in the payload.
  • Price comparison / meta-search tools β€” power a "compare all sources" feature without integrating six APIs and managing six sets of blocks.
  • Deal hunting at scale β€” 50 routes per run Γ— nonstop-only filter = a clean daily feed of direct-flight deals.
  • Market & pricing research β€” see how direct LCC pricing compares to aggregator pricing at scale, with aligned timestamps across sources in one run.
  • AI agents β€” pair with the companion MCP server to give an assistant a search_flights tool.

Input

FieldRequiredDescription
originβœ…*Origin β€” city name (London) or airport IATA code (LGW)
destinationβœ…*Destination β€” city name or IATA code
departDateβœ…*Outbound date YYYY-MM-DD
returnDateReturn date YYYY-MM-DD (omit for one-way)
routesBatch mode: array of {origin, destination, departDate?, returnDate?} β€” up to 50 routes in one run. Per-route dates fall back to the top-level dates. When set, top-level origin/destination are ignored.
adults / childrenPassenger counts (defaults 1 / 0)
currencyPreferred display currency, ISO 4217 (default USD)
cabinClassECONOMY / PREMIUM_ECONOMY / BUSINESS / FIRST
directOnlytrue = only nonstop flights
maxStopsOnly flights with at most this many stops
maxDurationMinutesOnly flights up to this total duration (e.g. 300 = 5 h)
sourcesSubset of the six sources; omit to query all
maxPerSourceCap on offers per source before merging (default 10)

* Either set origin + destination + departDate at the top level, or provide them per route in routes.

Single route

{
"origin": "LGW",
"destination": "CDG",
"departDate": "2026-08-12",
"returnDate": "2026-08-19",
"maxPerSource": 8
}

Batch mode β€” one run, many routes

{
"routes": [
{ "origin": "London", "destination": "Barcelona" },
{ "origin": "London", "destination": "Madrid" },
{ "origin": "STN", "destination": "DUB", "departDate": "2026-09-01" }
],
"departDate": "2026-08-12",
"directOnly": true,
"currency": "EUR"
}

Output

One row per merged offer:

{
"source": "easyjet",
"direction": "outbound",
"origin": "LGW",
"destination": "CDG",
"date": "2026-08-12",
"price": 14.99,
"currency": "GBP",
"carrier": "easyJet",
"flightNumber": "U28405",
"departTime": "16:10",
"arriveTime": "18:25",
"stops": 0,
"prices": { "easyjet": 14.99, "googleflights": 41 },
"sourcesFound": ["easyjet", "googleflights"],
"cheapestSource": "easyjet",
"isCheapest": true
}
FieldMeaning
pricesEvery source's price for this exact flight, keyed by source
sourcesFoundWhich sources returned this flight
cheapestSourceThe source selling it cheapest
isCheapesttrue on the single cheapest offer per direction
stops / durationMinutesStop count and total duration (filterable via input)

Export as JSON, CSV, Excel or XML from the run page, or pull via the Apify API.

Code examples

curl

curl -X POST 'https://api.apify.com/v2/acts/memo23~flights-aggregator-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"routes": [
{ "origin": "LHR", "destination": "BCN" },
{ "origin": "LHR", "destination": "MAD" }
],
"departDate": "2026-08-12",
"directOnly": true,
"currency": "EUR"
}'

Python (apify-client)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("memo23/flights-aggregator-scraper").call(run_input={
"origin": "London",
"destination": "Barcelona",
"departDate": "2026-08-12",
"returnDate": "2026-08-19",
"maxStops": 1,
})
for offer in client.dataset(run["defaultDatasetId"]).iterate_items():
print(offer["flightNumber"], offer["price"], offer["cheapestSource"], offer["prices"])

Node.js (apify-client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('memo23/flights-aggregator-scraper').call({
routes: [{ origin: 'STN', destination: 'DUB' }, { origin: 'LTN', destination: 'KRK' }],
departDate: '2026-08-12',
directOnly: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.table(items.map((o) => ({ flight: o.flightNumber, price: o.price, cheapest: o.cheapestSource })));

How it compares

FeatureThis actorSingle-source scraper (Google Flights only)Other multi-source scraperBrowser-based scraper
Sources per run6 (Google Flights, Skyscanner, Kiwi, Ryanair, Wizz Air, EasyJet)15–71–2
Routes per runUp to 50 (batch mode)111
Per-source price map + cheapest sellerYesNoYesNo
Direct-only / max-stops / max-duration filtersYes, server-sideRareNo (post-process yourself)Rare
City-name input (auto-resolves to IATA)YesIATA onlyIATA onlyVaries
Children in passenger countYesVariesAdults onlyVaries
Scraping engineRaw HTTPRaw HTTPRaw HTTPHeadless browser
Companion MCP server for AI agentsYesRareVariesRare

The honest take: if you only need one source's view of one route, a single-source scraper is fine. If you monitor multiple routes, want the bookable direct LCC fare next to the metasearch price, or need filtered results without post-processing, this is the one to pick.

Notes & FAQ

  • Which routes do the LCCs cover? Ryanair, Wizz Air and EasyJet only return flights on their own (mostly European) routes. For a route they don't fly they simply return nothing β€” Google Flights, Skyscanner and Kiwi still cover it. A source with no data for a route never fails the run.
  • How do the filters treat price-only rows? Some sources (e.g. Skyscanner calendar prices) return a price without stop/duration data. Whenever directOnly, maxStops or maxDurationMinutes is set, those price-only rows are excluded β€” an "unknown stops" row surviving a nonstop filter would be misleading.
  • Currencies. Sources that accept a currency use yours; a couple price in the departure-country currency, so cross-currency comparison is best-effort. Each row carries its own currency.
  • Skyscanner rows. Skyscanner returns one combined round-trip price rather than a per-leg fare, so its rows are marked as price-only and kept out of the per-flight cross-source match (to avoid comparing a round-trip total against a one-way fare).
  • Past dates. A route with a past departDate is skipped with an explicit PAST_DATE row in the dataset (instead of silently returning nothing); the remaining routes still run.
  • Proxies. Residential proxy is recommended (and the default) for the broadest, most stable coverage.
  • How often should I run it for fare monitoring? Once or twice a day covers most routes; hourly for hot routes. More often than every 15 minutes rarely surfaces new prices.

⚠️ Disclaimer

This actor collects only publicly available flight pricing and schedule information. It does not access any private, authenticated, or personal data. You are responsible for ensuring your use complies with the applicable websites' terms and with all relevant laws (including data-protection regulations). Prices and availability are provided as-is and change constantly β€” always confirm the final price on the airline's or seller's own site before booking.

SEO Keywords

flight price comparison API, cheap flights scraper, multi-source flight scraper, Ryanair scraper, Wizz Air scraper, EasyJet scraper, Google Flights API, Skyscanner scraper, Kiwi flights API, flight fare aggregator, airfare comparison, low-cost carrier prices, flight deals API, metasearch flights, batch flight search, direct flights filter, one-way and round-trip fares, flight price monitoring, fare alert API, travel data API, MCP flight search