Kiwi Cheapest Destinations Explorer avatar

Kiwi Cheapest Destinations Explorer

Pricing

from $2.50 / 1,000 destination founds

Go to Apify Store
Kiwi Cheapest Destinations Explorer

Kiwi Cheapest Destinations Explorer

Pick a departure airport and a stretch of dates and get the destination cities Kiwi.com offers from there, each with its cheapest fare and the exact best day to fly. Typically 70-90 places per departure, one-way or return, filtered by price, region or country. 37 currencies.

Pricing

from $2.50 / 1,000 destination founds

Rating

0.0

(0)

Developer

Hamza

Hamza

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Turn "I'm free in October and I've got £150" into a ranked list of places you can actually go. Give it a departure airport or city and a stretch of dates, and it comes back with the destination cities Kiwi.com offers from there — each one with its cheapest fare, the exact best day to fly, and for return trips the best day to come home too. One departure place typically yields 70–90 destinations, sorted cheapest first; that is the selection Kiwi.com puts forward, not a complete index of everywhere it sells. Point it at several departure places, filter to a region, a set of countries or a price ceiling, and you have the raw material for a deals newsletter, a "where can I go" widget, a route-demand study or a weekly price watch.

What you can do with it

  • Answer "where can I go for £150?" Set a fare ceiling and get back only the destinations that fit, each with the date that makes it possible.
  • Build a deals feed or newsletter. Run it on a schedule from your readers' home airports and every run is a fresh, ranked list of the cheapest escapes.
  • Compare departure airports. Scan several places at once and see which one gets you further for less — every row records the airport the trip actually leaves from.
  • Plan a weekend break properly. Return trips take a trip length in nights and pick both dates for you, so the answer is a real trip and not just a fare.
  • Focus on one part of the world. Keep only Europe, only Asia, only a list of countries, or draw your own area on the map.
  • Feed a map or a dashboard. Every destination carries its coordinates, its country and, if you want it, the ranking the source gives it — ready to plot.

What you get

One row per destination city. Real example, abridged:

{
"source": "kiwi",
"market": "US",
"currency": "USD",
"requestedCurrency": "USD",
"currencyMismatch": false,
"currencyMissing": false,
"collectedAt": "2026-08-16T12:00:00.000Z",
"scanId": "LON-2026-10-05-2026-10-19",
"tripType": "oneway",
"rank": 1,
"originInput": "LON",
"originSearched": "LON",
"originCode": "LTN",
"originName": "Luton",
"originCity": "London",
"originIsRequested": true,
"destinationCode": "TIA",
"destinationName": "Tirana International Airport Nënë Tereza",
"destinationCity": "Tirana",
"destinationCountry": "Albania",
"destinationCountryCode": "AL",
"lat": 41.415,
"lng": 19.7208333,
"price": 25,
"priceFormatted": "$25",
"priceEur": 21.609474,
"bestDepartureDate": "2026-10-19",
"bestDepartureTimeLocal": "2026-10-19T21:50:00",
"bestReturnDate": null,
"tripNights": null,
"tripNightsInRequestedRange": null,
"departureWindowStart": "2026-10-12",
"departureWindowEnd": "2026-10-19",
"requestedWindowStart": "2026-10-05",
"requestedWindowEnd": "2026-10-19",
"cabinClass": "ECONOMY",
"adults": 1,
"region": null,
"popularityRank": null,
"destinationsFound": 87,
"isEstimated": false
}

Input reference

FieldTypeDefaultWhat it does
originsarrayWhere the trip starts. Airport codes (LHR), city-wide codes (LON), or names (Madrid). Up to 20, each scanned separately.
tripTypestringonewayoneway for the cheapest way out, return for a full trip with both dates chosen for you.
departureWindowStartstring30 days aheadFirst day you could leave, as YYYY-MM-DD. Leave empty and it starts 30 days from the day the run happens.
departureWindowEndstringstart + window lengthLast day you could leave. The wider the window, the cheaper the best date it can find.
windowLengthDaysinteger14Window length used when you have not set a last day. Up to 180.
nightsMin / nightsMaxinteger3 and 7Return trips only: the shortest and longest stay you would accept. The best return date is chosen inside that range.
regionstringanywhereKeep only destinations in one part of the world: Europe, North America, Central America & Caribbean, South America, Africa, Middle East, Asia, Oceania.
geoBoxobjectYour own area instead of a named region, as {"south": 34, "west": -25, "north": 72, "east": 45}. It replaces the region choice, and rows from that run are labelled Custom area rather than with a region name they were not filtered to.
countriesarrayTwo-letter country codes to keep, for example ES, PT, IT.
maxPriceintegerThe "where can I go for 200" control: only destinations at or below this fare, in your chosen currency.
maxStopsinteger0 for direct trips only, 1 for at most one connection. Empty allows any.
excludeSelfTransferFaresbooleanfalseLeave out cheap trips stitched together from separate tickets, where nobody is responsible if the first leg runs late.
maxDestinationsPerOrigininteger100How many destinations to keep per departure place, cheapest first. Up to 500.
includePopularityRankbooleanfalseAlso collect the ranking the source gives each destination city. Needs a region or your own area.
allowNearbyOriginsbooleanfalseKeep trips that actually leave from a different airport than the one you asked for. Off by default; see the limits below.
currencystringUSDOne of 37 currencies. Every row also records the currency it was served in.
marketstringUSThe market the search is prepared for; recorded on every row. It was measured not to change the fares — see the limits below.
localestringenLanguage for city, airport and country names.
cabinClassstringECONOMYECONOMY, PREMIUM_ECONOMY, BUSINESS or FIRST_CLASS.
adults / children / infantsinteger1 / 0 / 0Who the fares are priced for. Up to 9 seated travellers; infants cannot outnumber adults.

Output fields

FieldWhat it is
rank1 is the cheapest destination from that departure place in that run.
price, priceFormatted, currencyThe cheapest fare found for the whole party, the fare exactly as the source printed it, and the currency it was actually served in. currency is empty when the source named none.
requestedCurrency, currencyMismatchWhat you asked for, and whether the fare came back in something else: true it did, false it did not, empty when the fare arrived with no currency named — in that case the number's unit is unknown and it must not be read as the currency you asked for.
currencyMissingtrue on exactly those rows: the fare is the source's own number, but no currency came with it. The run summary counts them.
priceEurThe same fare in euros, always — a stable column to join or compare on.
priceMagnitudeCheckedtrue when the fare agrees with the price the source prints beside it.
bestDepartureDate, bestDepartureTimeLocalThe exact cheapest day inside your window, and the departure time on it.
bestReturnDate, bestReturnTimeLocalThe matching return leg for a return trip.
tripNightsWhole days between leaving and coming back. A trip that leaves late at night lands the next day, so this can read one higher than the nights you actually spend there.
tripNightsInRequestedRangefalse when the trip spans a different number of days than the trip length you asked for. Those rows are kept, not hidden, so you can decide.
destinationCity, destinationName, destinationCodeThe destination city, its airport and the airport's three-letter code.
destinationCountry, destinationCountryCodeWhere it is.
lat, lngCoordinates of the destination airport, ready to plot.
originSearched, originInputThe departure place you asked for, as a code and as you typed it.
originCode, originName, originCity, originIsRequestedThe airport the trip really leaves from, and whether it is the one you asked for.
tripType, cabinClass, adults, children, infantsWhat was priced.
departureWindowStart, departureWindowEndThe narrower window the source settled on for this destination.
requestedWindowStart, requestedWindowEnd, nightsMin, nightsMaxWhat you asked for, so a flexible search stays traceable.
regionThe area the run was actually limited to: the region name, Custom area when you drew your own area (which replaces the region choice), or empty when you searched everywhere. The exact corners of a custom area are in the run summary.
popularityRankThe ranking the source gives that destination city; empty unless you turned ranking on.
destinationsFoundHow many destinations matched everything you asked for, so you know what your per-origin limit cut off.
destinationCityIdA stable identifier for the destination city, handy for joining runs together.
scanId, market, source, collectedAtWhich scan produced the row, which market it was for, where it came from and when.
isEstimatedAlways false: every value on the row was published by the source; nothing is modelled or filled in.

Pricing

You pay per destination, plus a small charge for each departure place that produces results:

What you pay forPrice
Destination found — one destination city written to your dataset, with its cheapest fare and best date$2.50 per 1,000
Departure place scanned — one departure place swept for the destinations the source offers from it$0.025 each

Worked example: three departure places, keeping the 100 cheapest destinations from each. That is 300 destinations at $2.50 per 1,000 — $0.75 — plus three scans at $0.025 — $0.075 — for $0.83 in total.

A departure place that produces no destinations is not charged at all: the scan charge only applies once a destination from that place has actually been written. A departure place that could not be swept is reported as failed in the run summary and likewise costs nothing.

Limits & what this actor cannot do

  • Fares are a snapshot. Airline pricing moves continuously; a fare collected now can be gone minutes later.
  • It reports what Kiwi.com publishes to the public. It does not book, hold or reserve anything, and cannot guarantee a fare is still available when you act on it.
  • The fare is the cheapest one for the search you asked for. Taxes, carrier fees and baggage rules vary by airline and fare type, and extras are not included in this figure.
  • One row per destination city, not a list of flights. Each row is the single cheapest way to reach that city inside your window. It is a discovery tool, not a timetable.
  • Sometimes the source offers a trip that leaves from a different airport than the one you asked for — occasionally from another country — with nothing in the answer marking it. Those trips are left out by default and counted in the run summary, and every row tells you the airport it really leaves from. Turn on nearby departure airports if you would rather keep them.
  • A departure place with nothing to show is not always a real answer. When a run asks an unrestricted question and gets a blank back, the scan is reported as inconclusive rather than as "there is nowhere to go from here", because those two look identical from the outside. Add a fare ceiling, a connection limit or a single-ticket rule and a blank answer becomes a real one: nothing matched.
  • A scan the source refuses is reported as a failed scan, never as "no destinations found." If nothing at all could be swept, the run ends as failed rather than handing you an empty table that looks like a result.
  • The destinations you get are the source's own selection, not every city it sells. How many come back is its decision: measured between 70 and 90 for a big-city departure, and six sweeps of the same departure place on the same dates came back with 81, 83, 85, 86, 87 and 88 of them. A city that is missing from a run was not put forward in that answer — it does not mean the city cannot be reached, and nothing on the row can tell those two apart. A small airport gives fewer. Your per-origin limit is applied on top, cheapest first.
  • Some city-wide codes cannot be searched. Where a city code has no searchable entry, the actor refuses it up front and names the airports to use instead, rather than returning an empty list that looks like "nowhere to go".
  • A trip length in nights is a preference, not a promise. A few trips come back a day longer or shorter than the range you set, usually because a late-night departure lands the next morning. Those rows are kept and flagged rather than quietly dropped, and the run summary counts them.
  • One-way and return trips only. Multi-stop and open-jaw trips are not offered, because they are not reliably available here.
  • The currency changes the fare; the market does not. Choosing a different currency gives you a different number, as you would expect. The market does not: the same search prepared for five different markets came back with identical fares in the same currency every time. The market is recorded on every row so runs stay traceable, but sweeping the same departure place in several markets is not a way to find different prices, and paying for it twice buys you the same fares with a different label. Whether a market ever changes which trips are on offer was not established either way.
  • Destination ranking is the source's own ordering, published for a map area. It is not a measure of quality, and it is only collected when you ask for it and give the run an area to work in.
  • Routes are seasonal. A place with nothing on offer in your window simply will not appear. Read that as "not offered here", not as "you cannot get there".
  • Speed depends on the size of the job and on how quickly the source answers; no fixed throughput is promised.
  • Kiwi.com's terms govern automated access. You are responsible for using the data lawfully and in line with those terms.

FAQ

Do I need an account on Kiwi.com? No. No account, no login, nothing to sign up for.

Does it need my password or any personal detail? No. You give it departure places and dates, and nothing else.

Can I schedule it? Yes. A daily or weekly run is the natural rhythm for a deals feed, and each run appends a fresh snapshot so you build your own history. Very short intervals are not worth paying for — these fares do not move minute to minute.

Are these fares bookable? They were on sale when they were collected. Nothing is held or reserved for you, and airlines can change or withdraw a fare at any time, so treat every row as a lead rather than a guarantee.

Why does a row leave from a different airport than the one I searched? It shouldn't — by default those trips are removed and counted separately, because the source will occasionally answer a small airport with departures from a big one hundreds of kilometres away. If you switched on nearby departure airports, they are kept and originIsRequested is false on each of them.

How wide should my date window be? Wider is cheaper. A two-week window is a good default; up to 180 days is allowed, and the extra flexibility is exactly what lets it find the one cheap day.

What is the difference between an empty scan and a failed one? An empty scan means the source ran your search and genuinely had nothing that matched your restrictions. A failed scan means it could not be swept at all. The run summary counts them separately, and a run where nothing could be swept ends as a failure rather than a green run with an empty table.

Can I get fares in my own currency? Yes, choose from 37 currencies. Each row also carries the currency it was actually served in and a euro reference price, so you can always tell what a number means.