Kiwi.com Scraper
Spider read kiwi.com in 114 ms without a browser and returned 170 lines of clean markdown, including sections like "Where to next?", "Fly for less, Guaranteed" and "The new Kiwi.com guarantee".
Manage your trips, set up price alerts, use Kiwi.com Credit, and get personalized support.# Where to next?# Fly for less, Guaranteed!## The new Kiwi.com guarantee* Rise above all travel anxieties* Alternative flight options for missed connections* Instant Credit for canceled flights## Popular destinations from Washington, D.C.These alluring destinations from Washington, D.C. are picked just for you.## Get more out of Kiwi.com with our mobile appDownload the Kiwi.com mobile app for one-touch access to your next travel adventure. With the Kiwi.com mobile app you’ll get access to hidden features and special offers.Get exclusive offers and prices## Popular flightsCheck these popular routes on Kiwi.com.## Explore Kiwi.com flight offers### Flights to cities The same call, in code.
The capture above came back as markdown. These examples add a key, so you get browser rendering, proxies, and concurrency on kiwi.com.
import { SpiderBrowser } from "spider-browser";
const spider = new SpiderBrowser({
apiKey: process.env.SPIDER_API_KEY!,
});
await spider.connect();
const page = spider.page!;
await page.goto("https://www.kiwi.com/en/search/results/new-york-united-states/london-united-kingdom/2026-06-15");
// No selectors, no schema. Spider reads the page and names the fields.
const data = await page.scrape();
console.log(data);
await spider.close(); import { SpiderBrowser } from "spider-browser";
const spider = new SpiderBrowser({
apiKey: process.env.SPIDER_API_KEY!,
stealth: 2,
});
await spider.connect();
const page = spider.page!;
await page.goto("https://www.kiwi.com/en/search/results/new-york-united-states/london-united-kingdom/2026-06-15");
await page.content(12000);
const data = await page.evaluate(`(() => {
const flights = [];
document.querySelectorAll("[data-test='ResultCardWrapper']").forEach(el => {
const price = el.querySelector("[data-test='ResultCardPrice']")?.textContent?.trim();
const duration = el.querySelector("[data-test='ResultCardDuration']")?.textContent?.trim();
const departure = el.querySelector("[data-test='ResultCardDepartureTime']")?.textContent?.trim();
const arrival = el.querySelector("[data-test='ResultCardArrivalTime']")?.textContent?.trim();
const stops = el.querySelector("[data-test='ResultCardStops']")?.textContent?.trim();
if (price) flights.push({ price, duration, departure, arrival, stops });
});
return JSON.stringify({ total: flights.length, flights: flights.slice(0, 10) });
})()`);
console.log(JSON.parse(data));
await spider.close(); Ready for volume? Get an API key →
Fields you can pull.
Spider names these from the page. The capture above came back as markdown; the same
call with return_format: "json" returns them as keys.
What kiwi.com costs to scrape.
The capture above cost $0.003616 to fetch. Pricing is $1 per GB of pre-transformation bandwidth plus $0.001 per CPU minute, so a page like this one lands at a fraction of a cent. Failed requests are billed at $0.
- Free balance on signup
- No card required to test
- Balance never expires
Run it keyless, no account
More Travel scrapers.
Expedia Scraper
Extract travel deals, hotel listings, flight prices, and booking data from Expedia.
Airbnb Scraper
Extract Airbnb listings, pricing, host info, reviews, and availability from search results.
TripAdvisor Scraper
Extract hotel reviews, restaurant ratings, attraction data, and traveler photos from TripAdvisor.
Start scraping kiwi.com.
You already have the call. A key raises the rate limit and turns on browser rendering, proxies, and concurrency. Balance never expires, and top-ups go through secure checkout.