Flight Price Scraper
Pricing
from $1.25 / 1,000 results
Flight Price Scraper
Search live flight prices by route and date across Google Flights, Kiwi and Ryanair, merged into one result per flight. Get per-source pricing, cheapest source, airlines, times, stops, duration and booking links. Round trips, flexible dates, cabin class. No login, export to JSON, CSV or Excel.
Pricing
from $1.25 / 1,000 results
Rating
0.0
(0)
Developer
SilentFlow
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
5 days ago
Last modified
Categories
Share
Compare real flight prices across Kiwi, Ryanair and Google Flights in one call. The same flight, priced by three sources side by side, with direct booking links. Most searches finish in under 2 seconds.
Stop running one scraper per site and stitching the results together yourself. This actor queries three flight data sources at once, merges the same physical flight into a single row, and shows you which source is cheapest, so you always see the real lowest price and where to book it.
How it works

โจ Why teams choose this over other flight scrapers
Running flight scrapers that fail half the time? Getting one price per flight when three sources disagree by 20%? Paying for a browser to render a page that has an API behind it?
- ๐ Three sources in one call, not one. Kiwi (a metasearch covering 700+ airlines including majors and low-cost carriers), Ryanair direct, and Google Flights. The same flight is priced by every source that has it, so you see the real spread. In testing, Dublin to London Stansted returned the FR290 flight at 16.99 on Ryanair, 18 on Kiwi and 17 on Google Flights, all in one row.
- ๐ฏ The cheapest source is picked for you. Every merged flight has a
bestPrice, acheapestSource, and apricesmap so you can see all three and book the lowest. No manual comparison. - โก No browser, so it is fast and it does not break. Pure API and server-rendered data. A three-source search typically returns in 1 to 2 seconds. Browser-based scrapers are slower and fail when a page layout shifts.
- ๐ซ Majors and low-cost carriers together. Kiwi surfaces low-cost and self-transfer combinations, Google Flights brings the major network carriers (British Airways, Iberia, Lufthansa, Air France and more). You get both in the same result set.
- ๐งญ Filters applied on the server, not after. Set
maxStops,maxPrice,nonstopOnlyorpreferredAirlinesand get back only what matches. No post-processing, no throwing away rows you paid to receive. - ๐
Flexible-date price calendar. Set
flexDaysto search a range around your date and get the cheapest fare per day, so you can move a trip a day to save. - ๐ Direct booking links per source. Every itinerary ships with the link to book it, on Kiwi, on Ryanair, or on Google Flights.
- ๐งณ Deep itinerary detail. Segments, layovers, self-transfer flags, cabin class, flight numbers and baggage, not just a price and a time.
- ๐ Any route, any currency. Airport or metro codes worldwide, prices in the ISO currency you ask for.
- ๐ No login, no API key, no setup. Type a route and run it.
๐ฏ What you can do with flight data
| Team | What they build |
|---|---|
| Fare-alert and deal apps | Track a route daily and push a notification when the best price drops below a threshold |
| OTA and travel startups | Power a metasearch results page without signing eight airline contracts |
| Corporate travel | Check the real lowest fare on a route before approving a booking, across three sources |
| Travel content and blogs | Build "cheapest month to fly" and "cheapest day" tables from the flexible-date calendar |
| Data and pricing analysts | Compare how Kiwi, Ryanair and Google price the same seat, and track the spread over time |
| Revenue and competitive teams | Monitor a competitor route's public fares and stops over weeks |
| Affiliate and cashback sites | Show live fares with booking links and earn on the click through |
๐ฅ Input parameters
Route and dates
| Field | Type | Description |
|---|---|---|
origin | string | Departure IATA code (e.g. LHR, JFK, LON). Required. |
destination | string | Arrival IATA code (e.g. BCN, CDG, NYC). Required. |
departDate | string | Outbound date, YYYY-MM-DD. Required. |
returnDate | string | Inbound date for round trips, YYYY-MM-DD. Optional. |
flexDays | integer | Search this many days before and after each date for a cheapest-per-day calendar. 0 to 7. Default 0. |
Passengers and cabin
| Field | Type | Description |
|---|---|---|
adults | integer | Adult passengers, 1 to 9. Default 1. |
children | integer | Child passengers, 0 to 9. Default 0. |
infants | integer | Infant passengers, 0 to 9. Default 0. |
cabinClass | string | ECONOMY, PREMIUM_ECONOMY, BUSINESS or FIRST. Default ECONOMY. |
currency | string | ISO currency code for prices. Default USD. |
Filters and output
| Field | Type | Description |
|---|---|---|
maxStops | integer | Maximum stops, 0 to 3. Leave empty for any. |
maxPrice | integer | Only return itineraries at or below this price, in the chosen currency. |
nonstopOnly | boolean | Return only direct flights. Default false. |
preferredAirlines | array | Keep only flights operated by these IATA carrier codes (e.g. FR, VY, BA). |
sources | array | Which sources to query: kiwi, ryanair, googleFlights. Default all three. |
maxItems | integer | Maximum number of itineraries to return. Default 50. |
๐ Output data
Every itinerary is one dataset item. A flight found by more than one source is merged into a single row with a prices map.
A flight priced by three sources
{"id": "kiwi-...","from": { "airport": "DUB", "name": "Dublin", "city": "Dublin", "country": "Ireland" },"to": { "airport": "STN", "name": "London Stansted", "city": "London", "country": "United Kingdom" },"departTime": "2026-08-15T18:00:00","arriveTime": "2026-08-15T19:20:00","durationMinutes": 80,"durationText": "1h 20m","stops": 0,"nonstop": true,"airlines": [{ "code": "FR", "name": "Ryanair" }],"primaryAirline": "FR","cabinClass": "ECONOMY","segments": [{"from": { "airport": "DUB" },"to": { "airport": "STN" },"departTime": "2026-08-15T18:00:00","arriveTime": "2026-08-15T19:20:00","carrier": { "code": "FR", "name": "Ryanair" },"flightNumber": "FR290","durationMinutes": 80}],"layovers": [],"baggage": { "personalItem": 0, "handBag": 0, "checkedBag": 0 },"isSelfTransfer": false,"price": 16.99,"currency": "EUR","prices": { "ryanair": 16.99, "kiwi": 18, "googleFlights": 17 },"bestPrice": 16.99,"cheapestSource": "ryanair","sources": ["googleFlights", "kiwi", "ryanair"],"bookingLinks": {"ryanair": "https://www.ryanair.com/gb/en/trip/flights/select?...","kiwi": "https://www.kiwi.com/en/booking/?...","googleFlights": "https://www.google.com/travel/flights/search?tfs=..."},"date": "2026-08-15","scrapedAt": "2026-07-05T09:00:00Z"}
A self-transfer combination from Kiwi
{"id": "kiwi-...","from": { "airport": "LHR", "name": "Heathrow" },"to": { "airport": "BCN", "name": "Barcelona" },"departTime": "2026-08-15T22:25:00","arriveTime": "2026-08-16T09:40:00","durationMinutes": 615,"durationText": "10h 15m","stops": 1,"nonstop": false,"airlines": [{ "code": "EI", "name": "Aer Lingus" }, { "code": "FR", "name": "Ryanair" }],"primaryAirline": "EI","segments": [ { "carrier": { "code": "EI" }, "flightNumber": "EI..." }, { "carrier": { "code": "FR" }, "flightNumber": "FR..." } ],"layovers": [ { "station": "DUB", "durationMinutes": 120, "selfTransfer": true } ],"isSelfTransfer": true,"price": 115,"currency": "EUR","prices": { "kiwi": 115 },"bestPrice": 115,"cheapestSource": "kiwi","sources": ["kiwi"],"bookingLinks": { "kiwi": "https://www.kiwi.com/en/booking/?..." },"scrapedAt": "2026-07-05T09:00:00Z"}
๐๏ธ Data fields
| Category | Fields |
|---|---|
| Route | from, to (each with airport, name, city, country) |
| Schedule | departTime, arriveTime, durationMinutes, durationText, date |
| Routing | stops, nonstop, isSelfTransfer, segments, layovers |
| Trip | tripType (oneWay or roundTrip) |
| Return leg (round trips) | returnDepartTime, returnArriveTime, returnDurationMinutes, returnStops, returnSegments, returnLayovers |
| Airlines | airlines, primaryAirline, cabinClass, per-segment carrier and flightNumber |
| Baggage | baggage (personalItem, handBag, checkedBag) |
| Pricing | price, currency, prices (per source), bestPrice, cheapestSource, sources |
| Booking | bookingLinks (per source) |
| Meta | id, scrapedAt |
๐ Examples
Find the cheapest way to fly London to Barcelona
{ "origin": "LHR", "destination": "BCN", "departDate": "2026-08-15", "currency": "EUR" }
Round trip in business class for two adults
{ "origin": "JFK", "destination": "CDG", "departDate": "2026-09-10", "returnDate": "2026-09-17", "adults": 2, "cabinClass": "BUSINESS" }
Direct flights only, under 120 EUR
{ "origin": "DUB", "destination": "STN", "departDate": "2026-08-15", "nonstopOnly": true, "maxPrice": 120, "currency": "EUR" }
Cheapest day to fly across a week (price calendar)
{ "origin": "BER", "destination": "LIS", "departDate": "2026-08-15", "flexDays": 7, "currency": "EUR" }
Only Ryanair fares on a route
{ "origin": "DUB", "destination": "STN", "departDate": "2026-08-15", "preferredAirlines": ["FR"], "sources": ["ryanair", "kiwi"] }
๐ค Copy to your AI assistant
I am using the Flight Price Scraper on Apify. It takes origin, destination and departDate(YYYY-MM-DD), plus optional returnDate, adults, cabinClass, currency, flexDays, maxStops,maxPrice, nonstopOnly, preferredAirlines and sources. It returns flight itineraries, eachwith a prices map per source (kiwi, ryanair, googleFlights), a bestPrice, a cheapestSource,segments, layovers, baggage and bookingLinks. Write me an input to find the cheapest nonstopflight from <ORIGIN> to <DESTINATION> on <DATE>, and explain how to read the prices map tofind the lowest fare and where to book it.
๐ป Integrations
Python
from apify_client import ApifyClientclient = ApifyClient("<APIFY_TOKEN>")run = client.actor("silentflow/flight-price-scraper").call(run_input={"origin": "LHR","destination": "BCN","departDate": "2026-08-15","currency": "EUR","nonstopOnly": True})for it in client.dataset(run["defaultDatasetId"]).iterate_items():print(it["bestPrice"], it["currency"], it["primaryAirline"], "via", it["cheapestSource"])
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<APIFY_TOKEN>' });const run = await client.actor('silentflow/flight-price-scraper').call({origin: 'JFK',destination: 'CDG',departDate: '2026-09-10',returnDate: '2026-09-17',cabinClass: 'BUSINESS',});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach(f => console.log(f.bestPrice, f.currency, f.cheapestSource, f.bookingLinks));
Daily fare monitor
Schedule the actor to run each morning on your routes, then compare the new bestPrice against yesterday's dataset. When the price drops, send yourself the row's bookingLinks so you can book in one click.
๐ Performance
| Metric | Value |
|---|---|
| Sources queried per run | Up to 3 (Kiwi, Ryanair, Google Flights) in parallel |
| Typical search time | 1 to 2 seconds |
| Results per search | Dozens of itineraries per route, merged across sources |
| Engine | Pure API and server-rendered data, no browser |
| Reliability | A slow or unavailable source is skipped, the run still returns results from the others |
๐พ Data export
Results are available as JSON, CSV, Excel, XML and RSS through the Apify dataset, via the API or the Console. Pull them into a sheet, a database or your app with one request.
๐ก Tips for best results
- Use airport codes for precision, metro codes for breadth.
LHRsearches Heathrow only;LONsearches all London airports.NYC,PAR,MILand other metro codes are supported too. - Read the
pricesmap, not justprice. ThebestPriceandcheapestSourcetell you the lowest fare and where to book it. The fullpricesmap shows every source that had the flight. - Set
flexDaysto find a cheaper day. Moving a trip by one or two days often cuts the fare. Thedatefield on each row tells you which day it is for. - Ryanair returns its cheapest direct fare on a route. On routes Ryanair does not serve from your origin, it returns nothing, and Kiwi and Google Flights still cover the route.
- Narrow with filters before you scale.
nonstopOnly,maxStopsandpreferredAirlinescut the result set to what you actually want, so every returned row is useful.
โ FAQ
Which sources does it use? Kiwi (a metasearch that resells 700+ airlines including low-cost and major carriers), Ryanair direct, and Google Flights.
Do I need a login or API key for the airlines? No. You only need your Apify token to run the actor. No airline account, no API key.
How can three sources appear in one row? When Kiwi, Ryanair and Google Flights all have the same physical flight (same carrier and the same departure and arrival times), the actor merges them into one itinerary and lists each source's price in the prices map.
What if a source is down or slow? The run still succeeds. Each source has its own timeout and runs independently, so a slow source is skipped and you get results from the others. Kiwi is the broadest source and usually carries the search on its own.
Does it support round trips? Yes. Add returnDate and each row becomes a round-trip itinerary with tripType set to roundTrip, the outbound leg in segments and the inbound leg in returnSegments, priced as one combined round-trip fare.
Can I search a whole month for the cheapest day? Use flexDays up to 7 to search a window around your date and get the cheapest fare per day.
Does it return connecting and self-transfer flights? Yes. Kiwi surfaces connecting and self-transfer combinations. Each row shows stops, layovers and an isSelfTransfer flag so you know when two separate tickets are involved.
Which currency will prices be in? The ISO currency you pass in currency. Default is USD.
Can I limit results to specific airlines? Yes. Pass IATA codes in preferredAirlines (for example ["FR", "VY"]) and only those carriers are returned.
How many results do I get? As many as the sources return for your route, up to maxItems (default 50), sorted from cheapest to most expensive.
โ๏ธ Legal
This actor collects publicly available flight pricing and schedule information. It does not require or collect any personal data. Use the data in line with the source sites' terms and with applicable regulations such as GDPR and CCPA. You are responsible for how you use the data you collect, particularly for any onward publication or commercial redistribution.
๐ Related scrapers
Building travel and price monitoring tools? Pair this with an accommodation or ground-transport scraper to cover a full trip. Browse the other actors on this account for hotels, vacation rentals and marketplace pricing.
๐ฌ Support
Run it, check the output against your route, and adjust the filters to fit your use case. If a route returns fewer results than expected, widen flexDays or remove nonstopOnly and run again.