· 12 min read
Kiwi.com Scraper: Up to 1,000 Free Results a Month (2026)
Scrape flight itineraries, popular destinations, and station location details for $5.00 per 1,000 results on the free plan. It queries Kiwi.com's public GraphQL API without requiring cookies, passwords, or proxies. It suits teams building flight price trackers, destination widgets, and metasearch prototypes, but is not for anyone needing multi-city or true one-way search shapes, which the records do not include.
Try it: open Kiwi.com Scraper on Apify, sign in on the free plan and run the prefilled example.
Can you try Kiwi.com Scraper before paying?
Yes. Apify's free plan includes $5.00 of prepaid usage every month and asks for no credit card. At $0.005 per result, that covers up to 1,000 results of Kiwi.com Scraper a month, before run-start charges and platform usage.
The example request further down caps maxItems at 10, so a first run returns at most 10 results and costs at most $0.05 in result charges. That is enough to see the real shape of the data before deciding anything.
Kiwi.com Scraper was last updated on 2026-08-14. It is one of 1,725 Actors CrawlerBros publishes on Apify, which together have 680,173 lifetime public runs and an average rating of 4.63 out of 5 across 416 reviews.
What does it cost to run Kiwi.com Scraper?
Each result costs $0.005 on Apify's free plan, which is $5.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.
| Apify plan | Per result | Per 1,000 results |
|---|---|---|
| FREE | $0.005 | $5.00 |
| BRONZE | $0.00433 | $4.33 |
| SILVER | $0.00367 | $3.67 |
| GOLD | $0.003 | $3.00 |
| PLATINUM | $0.003 | $3.00 |
| DIAMOND | $0.003 | $3.00 |
The maxItems parameter has the largest effect on your bill because result charges apply to every item written to the dataset. Keep maxItems low during initial setup to test parameters cheaply before running larger queries.
How do you run Kiwi.com Scraper from the API?
The schema marks 1 of its 15 controls as required: mode. Nothing in the payload below is illustrative. Those are the schema's prefilled defaults for Kiwi.com Scraper, so the request works once your token is in place.
Call the synchronous endpoint to start a run and receive dataset items in one request:
curl -X POST "https://api.apify.com/v2/acts/crawlerbros~kiwicom-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode":"search","maxItems":10}'
The same run from Python, using the official client:
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"mode": "search",
"maxItems": 10
}
run = client.actor("crawlerbros~kiwicom-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)
And from Node.js:
import { ApifyClient } from 'apify-client'
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
const input = {
"mode": "search",
"maxItems": 10
}
const run = await client.actor('crawlerbros~kiwicom-scraper').call(input)
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)
Because the call is synchronous, your client waits for the whole run. Keep it for exploration. For scheduled work, start the run without waiting and collect the dataset afterwards, so network trouble costs you a retry rather than the results.
Which Kiwi.com Scraper inputs matter, and which can you skip?
The mode control selects the target endpoint, choosing between flight searches, popular routes, or station lookups. For flight searches, origin and destination define the route using airport codes, city names, or Kiwi place IDs. Leave optional parameters like maxPrice and containsKeyword empty on your first run until you verify basic outputs.
mode(string): What to fetch. Default:"search".maxItems(integer): Hard cap on emitted records. Default:20.origin(string): Airport code, city name, or Kiwi place ID (mode=search, popularRoutes). Examples:LTN,london,City:london_gb. Default:"london".destination(string): Airport code, city name, or Kiwi place ID (mode=search). Useanywhereto search all destinations. Default:"paris".stationQuery(string): Free-text term to search airports, cities, countries and points of interest (mode=stationLookup).travelDate(string): Departure date (mode=search). FormatYYYY-MM-DD. When omitted, the actor uses today + 30 days.returnDate(string): Optional return date (mode=search). FormatYYYY-MM-DD. When omitted, Kiwi returns flights with any return date.currency(string): Currency for all prices (ISO 4217). Default:"usd".stops(string): Filter itineraries by the number of stops on the outbound journey. Default:"any".passengers(integer): Number of adult passengers (1-9). Default:1.cabinClass(string): Cabin class for the search (mode=search, popularRoutes). Default:"economy".sortBy(string): How Kiwi.com sorts the returned itineraries. Default:"QUALITY".
The other 3 controls, with their defaults, are listed in the input schema on Kiwi.com Scraper on Apify.
Fixed-choice controls: mode accepts search (Search flights (origin → destination → date)), popularRoutes (Popular routes from a city), stationLookup (Look up airports, cities and stations); currency accepts 32 values (default usd), including usd (US Dollar (USD)), eur (Euro (EUR)), gbp (British Pound (GBP)), jpy (Japanese Yen (JPY)); stops accepts any (Any number of stops), nonstop (Nonstop only), 1plus (At least 1 stop), 2plus (At least 2 stops); cabinClass accepts economy, premium, business, first; sortBy accepts QUALITY (Kiwi default), PRICE (Cheapest first), DURATION (Fastest first), TAKEOFF_ASC (Earliest take-off), LANDING_ASC (Earliest landing).
What does Kiwi.com Scraper return?
Returned records provide flight schedules, carrier codes, live price quotes, and virtual-interlining flags. They do not contain multi-city journey legs, true one-way search formats, or historical fare trends. These outputs fit price monitoring pipelines, route discovery widgets, and metasearch prototypes.
Output per flight (mode = search)
originCity,originAirport(IATA code),originAirportNamedestinationCity,destinationAirport,destinationAirportNamedepartureTime,arrivalTime(local times) plusdepartureTimeUtc,arrivalTimeUtcdurationMinutes,outboundDurationMinutes,stopslayoverMinutes[]- one entry per connection on the outbound journeyprice,priceBeforeDiscount,currencyairlines[],airlineNames[],flightNumbers[]includedHandBags,includedCheckedBags,hasNoCheckedBaggage,hasNoBaggageSupportedisVirtualInterlining,isTrueHiddenCity,isThrowawayTicket- Return legs (when present):
isReturn,returnDepartureTime,returnArrivalTime,returnAirlines[],inboundDurationMinutes,nightsInDestination provider(e.g.Kiwi.com),seatsLeftsourceUrl- the exact Kiwi.com results page for this searchrecordType: "flight",scrapedAt
Output per popular route (mode = popularRoutes)
originCity,originAirport,destinationCity,destinationAirport,destinationCountryprice,priceBeforeDiscount,currencysourceUrl- Kiwi.com results page for the routerecordType: "popularRoute",scrapedAt
Output per station (mode = stationLookup)
name,kind(City / Airport & station / Country / …),code(IATA for airports, metro code for cities)cityName,countryCode,countryName,airportsCountlatitude,longitudeid- the Kiwi place id (City:london_gb,Station:airport:LGW) you can paste straight back intoorigin/destinationsourceUrl,recordType: "station",scrapedAt
These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.
How do you build the workflow end to end?
Open Kiwi.com Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.
- Select mode as search, popularRoutes, or stationLookup based on your data requirements.
- Provide origin using an airport code like LTN, a city name like london, or a place ID like City:london_gb.
- Set destination to an airport, city, or the literal string anywhere to query all routes from origin.
- Format travelDate as YYYY-MM-DD for search runs, ensuring the date is within the next 11 months.
- Select stops as any, nonstop, 1plus, or 2plus to filter outbound connections.
- Set currency to one of 32 supported ISO codes, such as usd, eur, or gbp, to standardize price values.
- Set maxItems to 10 for an initial test run, inspect price and flightNumbers in the output dataset, and verify schema compliance before expanding.
How do you apply it? Three worked playbooks
These are Kiwi.com Scraper's own documented use cases, each worked through as an operating pattern rather than a description.
Use case 1: Travel price intelligence
Outcome: Track how fares on a route evolve and detect virtual-interlining deals
Configure: Set mode to search, origin to london, destination to paris, travelDate to 2026-09-15, and maxItems to 25.
Working method: Execute an initial search for your origin and destination pair. Check the output dataset for items where isVirtualInterlining is true, and evaluate those prices against standard direct airline fares.
Deliverable: A dataset of flight records with live prices, airline names, and virtual-interlining indicators.
Stop condition: The returned dataset contains zero items or missing price fields.
Use case 2: Route planning tools
Outcome: Power "popular destinations from my city" widgets
Configure: Set mode to popularRoutes, origin to dubai, currency to aed, and maxItems to 10.
Working method: Fetch popular destinations using a major hub city as origin. Verify that each returned item contains valid destinationCity and price fields before ingesting the feed into your display widget.
Deliverable: A collection of popular destination routes with starting prices in the selected currency.
Stop condition: Output records lack destinationAirport or price values.
Use case 3: Travel search engines
Outcome: Feed real itineraries into metasearch prototypes
Configure: Set mode to search, origin to LHR, destination to City:tokyo_jp, travelDate to 2026-10-02, stops to any, maxPrice to 900, currency to usd, and maxItems to 15.
Working method: Execute a structured search targeting specific route filters and price caps. Inspect departureTimeUtc, arrivalTimeUtc, and flightNumbers to confirm schedule alignment across connecting segments.
Deliverable: A normalized set of flight itineraries complete with carrier names, flight numbers, and booking URLs.
Stop condition: No fares are returned or timestamp fields arrive malformed.
What breaks, and how do you design around it?
Kiwi's API returns a single page capped at 25 to 100 itineraries per search request. To gather fares across broad date ranges, break your queries into separate runs that each target a single travelDate.
When should you not use Kiwi.com Scraper?
Do not use this Actor if you require multi-city flight schedules or true one-way search setups without return options, as it mirrors Kiwi's standard search format. If you need multi-modal route connections combining trains, buses, and ferries alongside flights, use Rome2Rio Multi-Modal Route Scraper instead. For European train and intercity bus routes specifically, consider Trainline Scraper or FlixBus Scraper.
What should you check before trusting the output?
- Verify that every record in mode=search includes price, currency, and provider fields.
- Check that layoverMinutes is present and populated for records where stops is set to 1plus or 2plus.
- Confirm that sourceUrl contains a valid web link pointing directly to Kiwi.com.
- Verify that isVirtualInterlining returns a boolean value on all search results.
- Halt automated runs if consecutive scheduled runs return zero items for a valid future travelDate.
None of this proves a record is correct. It gives a scheduled Kiwi.com Scraper run defined points where it should stop instead of quietly passing bad data downstream.
Frequently asked questions
How much does running Kiwi.com Scraper cost?
It costs $0.005 per result, which is $5.00 per 1,000 results on the free plan. Apify's free plan includes $5.00 of monthly usage with no credit card, covering up to 1,000 results. Apify also bills platform usage for each run on top of these result charges.
Do I need an API key or proxy to scrape Kiwi.com?
No. The Actor uses Kiwi.com's public GraphQL API, which requires no authentication. By default, it operates without proxies and only uses Apify proxy lazily if the API issues rate-limiting or blocking responses.
Why are some output fields missing from my records?
Empty fields are omitted from returned JSON objects rather than populated with null values. For example, return flight attributes only appear when a return leg exists, and layover arrays appear only for connecting itineraries.
Can I search flight prices for an entire month in one run?
No. Each search targets a single departure date specified in travelDate. To collect prices across a whole month, execute individual runs for each date and merge the resulting datasets.
What does the maxItems setting do?
The maxItems setting puts a hard cap on the number of items written to your dataset during a run. Setting maxItems controls your dataset size and limits result charges.
Where to go next
When you are ready to run it, open Kiwi.com Scraper on Apify; the free plan covers up to 1,000 results a month.
Start with the Kiwi.com Scraper Actor page for the current input schema, pricing tier, and run history.
Other Actors we maintain for related data:
- Trainline Scraper: Scrape Trainline - the UK & Europe rail/bus metasearch.
- Rome2Rio Multi-Modal Route Scraper: Scrape Rome2Rio trip-planning results - compare flight, train, bus, car, ferry, and rideshare options between any two cities or airports, with durations, price ranges, and operators.
- Kayak Flights, Hotels & Deals Scraper: Scrape flight deals, hotel prices, and explore cheap destinations from Kayak.
- FlightAware Flight Tracking Scraper: Track live and scheduled flights on FlightAware by flight number or tail number, pull recent flight history for a route, fetch an airport's live arrivals/departures/en-route/scheduled board, or pull a flight's waypoint-by-waypoint track log.
- Kiwi Directory Scraper - New Zealand Business Directory: Scrape kiwidirectory.co.nz, a New Zealand business directory.
- FlixBus Scraper: Scrape FlixBus - Europe and North America's largest intercity bus network.
- Ryanair Scraper: Search Ryanair's price calendar for the cheapest one-way and round-trip fares on any route.
Related guides:
- Trainline Scraper: Up to 1,000 Free Results a Month (2026)
- Virail Train & Bus Trip Scraper: 14 Data Fields per Record (2026)
- CruiseMapper Cruises Scraper: 3 Practical Use Cases
Resources
Actor documentation, input schema, and pricing: verified against the published Actor on 2026-09-27.
Actor last updated by its maintainers on 2026-08-14.
Run outcome figures cover the 30 day public window ending 2026-09-27.
Featured actors
Kiwi.com Scraper
Scrape Kiwi.com - flight metasearch with virtual interlining. Search flights between any origin and destination, fetch popular routes from a city with live prices, and look up airports, cities and stations. Uses the public Kiwi.com GraphQL API. No auth, no proxy.
Run on Apify ↗