Google Travel Scraper: Flights, Hotels & Vacation Rentals
Tauqeer Abbas · @nextgensda
Scrape Google Flights, Google Hotels and vacation rentals in one run: every itinerary with price, stops, layovers, CO2 and return flights; hotels and rentals with nightly price, rating, class, bedrooms and every booking site's offer. Price insights included. Fast HTTP scraper, no browser.
About
Google Travel Scraper: Flights, Hotels & Vacation Rentals
Scrape Google Flights, Google Hotels and Google's vacation rentals in one run. Flights come with every itinerary on the route, return flights and Google's price insights; hotels and rentals with the nightly price for your dates, rating, class, and (optionally) every booking site's offer.
What it does
- Flights: one way or round trip, from airport or city codes. Every itinerary (~90-150 on busy routes, not just Google's first page) with price, airline, times, door-to-door duration, stops and layovers, each flight segment (flight number, aircraft, legroom), CO2 against the route's typical, and a Google Flights link.
- Return flights: for the cheapest outbounds of a round trip, their return flights, each priced as the round-trip total for that pair.
- Price insights: the route's lowest price, Google's typical range, the price level (low / typical / high) and the daily price history.
- Filters: passengers (adults, children, infants), cabin (economy to first), max stops, airlines to include or leave out.
- Hotels and vacation rentals: by city or area for your check-in and check-out dates. Nightly price, rating and review breakdown, hotel class, coordinates, photos; rentals with bedrooms, bathrooms and how many they sleep.
- Hotel booking options (optional): each property's page, with every booking site's offer (the official site, Booking.com, Expedia, Hotels.com, Agoda, ...), address, phone, nearby places and category ratings.
- As many hotels as you need: page after page (up to 1,000 per search).
- Flight booking options (optional): for the cheapest itineraries, where to book them: the airline's own fares (Basic, Main, Flex, ...) and the travel agencies Google lists (Expedia, Trip.com, CheapOair, ...), each with its price and booking link.
- Many searches per run, mixed freely: plan a trip in one go.
- HTTP: fast and light (256 MB). Flight booking options start a Chrome once per run (1 GB of memory).
Input examples
A round trip, with return flights for the 2 cheapest outbounds:
{
"flights": [
{ "origin": "JFK", "destination": "LAX", "departureDate": "2026-12-20", "returnDate": "2026-12-27" }
],
"returnFlightsFor": 2
}
Business class, nonstop, two adults:
{
"flights": [{ "origin": "SFO", "destination": "LHR", "departureDate": "2026-11-05" }],
"cabin": "business",
"maxStops": 0,
"adults": 2
}
Where to book the 3 cheapest itineraries (1 GB):
{
"flights": [{ "origin": "SFO", "destination": "ORD", "departureDate": "2026-12-05", "returnDate": "2026-12-12" }],
"bookingOptionsFor": 3
}
A whole trip: flights, hotels and rentals with every booking option:
{
"flights": [{ "origin": "NYC", "destination": "PAR", "departureDate": "2026-12-09", "returnDate": "2026-12-13" }],
"hotels": [{ "place": "Paris", "checkin": "2026-12-10", "checkout": "2026-12-13" }],
"rentals": [{ "place": "Paris", "checkin": "2026-12-10", "checkout": "2026-12-13" }],
"hotelDetails": true,
"currency": "EUR"
}
Output
One dataset; the type column tells the rows apart (flight, hotel,
rental, price-insights, booking-options), and a view per
kind shows its columns.
Flight (type: flight; kind: outbound, one-way or return):
| Field | Example |
|---|---|
price, currency | 489, USD (the total for all travellers) |
airline, airlines | JetBlue |
origin, destination | JFK, LAX |
departure_date, departure_time, arrival_date, arrival_time | 2026-12-20 17:20, 2026-12-21 01:59 |
duration_minutes, stops, layovers | 699, 1, [{"airport": "BOS", "city": "Boston", "minutes": 226}] |
segments | flight number, aircraft, legroom, times for each flight |
co2_grams, co2_typical_grams, co2_vs_typical_percent | 495000, 343000, 44 |
best | in Google's top flights |
outbound_id | on return flights: the outbound they pair with |
google_flights_url | the flight on Google Flights |
Hotel / rental (type: hotel or rental):
| Field | Example |
|---|---|
name, hotel_class | Novotel Suites Paris Stade de France, 4 |
price_per_night, currency, checkin, checkout, nights | 99, USD, 2026-12-10, 2026-12-12, 2 |
rating, review_count, rating_histogram | 4.3, 1438, {"5": 817, …} |
latitude, longitude, photos, description | |
bedrooms, bathrooms, sleeps, features | rentals: 3, 2, 8, ["Entire apartment", …] |
booking_options | with details: [{"provider": "Booking.com", "price_per_night": 122.17, "url": …, "official_site": false}, …] |
address, phone, nearby_places, rating_categories | with details |
url | the property on Google Hotels, for your dates |
Price insights (type: price-insights, one per flight search, free):
lowest_price, typical_low, typical_high, price_level, price_history.
Flight booking options (type: booking-options, one per itinerary):
itinerary_id, flights, airlines, lowest_price, option_count and
booking_options: [{"provider": "Frontier", "is_airline": true, "fare":
"Basic Fare", "price": 104, "site": "www.flyfrontier.com", "booking_url": …},
{"provider": "Expedia", "is_airline": false, "price": 104, …}, …]. Round
trips pair each outbound with its cheapest return on the same airline (one
ticket); otherwise the cheapest, booked as separate tickets (tickets).
Plus search and searchIndex: the search a row came from.
Pricing
One monthly rental, no per-row fees: flights, hotels, rentals and booking options, as many as you need. Runs use Bytewells compute and proxy traffic from your credit.
Measured on Bytewells (US residential proxy):
| Run | Rows | Time | Usage |
|---|---|---|---|
| A round trip, return flights for the cheapest outbound (256 MB) | 70 flights | 9 s | $0.004 (~$0.05 / 1,000) |
| 10 Paris hotels with every booking site's offer (256 MB) | 10 hotels | 23 s | $0.023 |
| Booking options for 3 itineraries, Chrome started (1 GB) | 20 flights + 3 booking options | 42 s | $0.025 |
Proxy
The platform's US residential proxy is the default. Prices follow the
currency input; a few hotel prices can follow the exit's country.
Limits
- Flight booking options need 1 GB of memory (set it in the run options); with less they're skipped with a warning.
- Hotel lists are Google's order, page by page; prices change live, so a few hotels can move between pages (each is delivered once).
Input
Preview of the input form. Rent the Actor to fill it in and start runs from the console.
flightsOne search per entry: {"origin": "JFK", "destination": "LAX", "departureDate": "2026-12-20", "returnDate": "2026-12-27"}. Airport or city codes (JFK, LON, NYC); leave returnDate out for one way. Each entry can override the options below: adults, children, infantsOnLap, infantsInSeat, cabin, maxStops, airlines, excludeAirlines.
returnFlightsForRound trips: Google lists outbound flights first, priced as round-trip totals. For the N cheapest outbounds, also fetch their return flights (each priced as the round-trip total for that pair). 0 = outbounds only.
fullFlightListThe whole list (~90-150 on busy routes) rather than Google's first ~35 (top flights + others).
bookingOptionsForFor the N cheapest itineraries of each flight search (round trips: each outbound with its cheapest return), where to book them: the airlines and travel agencies Google lists (Expedia, Trip.com, CheapOair, ...), each with its price, fare and booking link. Starts a Chrome once per run: needs at least 1 GB of memory (set it in the run options). 0 = off.
priceGraphDaysGoogle's price graph: the cheapest price for each departure date over this many days around the search's date (round trips: same trip length). Up to 330 days. Starts a Chrome once per run, like booking options: needs at least 1 GB of memory. 0 = off.
adultsPrices are totals for all travellers.
childrenAged 2-11.
infantsOnLapUnder 2, one per adult.
infantsInSeatUnder 2, with their own seat.
cabinSeat class.
maxStops0 = nonstop only. Empty = any.
airlinesIATA codes, e.g. B6, DL.
excludeAirlinesIATA codes to leave out.
maxFlightsPerSearchPer list (outbounds, and each set of return flights).
hotelsOne search per entry: {"place": "Paris", "checkin": "2026-12-10", "checkout": "2026-12-12"}. A city, area or address.
rentalsSame as hotel searches: {"place": "Barcelona", "checkin": "2026-12-10", "checkout": "2026-12-12"}.
hotelDetailsOpen each hotel's or rental's page: every booking site's offer (official site, Booking.com, Expedia, ...), address, phone, nearby places and category ratings. One more request per property, charged as hotel-details instead of hotel / rental.
maxHotelsPerSearchHotels or rentals per search, page after page (18 a page). Popular cities have thousands.
currencyISO code, e.g. USD, EUR, GBP.
languagee.g. en, de, fr.
countryThe market Google prices for (ISO code).
maxItemsFlights, hotels and rentals (price-insight rows don't count).
proxyConfigurationApify's US residential proxy is the default. Hotel prices follow the currency above; a few can follow the exit's country.
API
Bytewells speaks the Apify API. Existing integrations keep working: point apify-client at https://bytewells.com/api and use your Bytewells API token (Console → Settings → API access). The Actor ID is nextgensda/google-travel (or nextgensda~google-travel in URLs).
JavaScript · apify-client
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({
token: process.env.BYTEWELLS_TOKEN,
baseUrl: 'https://bytewells.com/api',
});
const input = {
"flights": [
{
"origin": "NYC",
"destination": "LAX",
"departureDate": "2026-12-20",
"returnDate": "2026-12-27"
}
],
"returnFlightsFor": 1,
"hotels": [
{
"place": "Paris",
"checkin": "2026-12-20",
"checkout": "2026-12-22"
}
],
"maxHotelsPerSearch": 20,
"maxItems": 200
};
const run = await client.actor('nextgensda/google-travel').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Python · apify-client
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["BYTEWELLS_TOKEN"], api_url="https://bytewells.com/api")
run_input = {
"flights": [
{
"origin": "NYC",
"destination": "LAX",
"departureDate": "2026-12-20",
"returnDate": "2026-12-27"
}
],
"returnFlightsFor": 1,
"hotels": [
{
"place": "Paris",
"checkin": "2026-12-20",
"checkout": "2026-12-22"
}
],
"maxHotelsPerSearch": 20,
"maxItems": 200
}
run = client.actor("nextgensda/google-travel").call(run_input=run_input)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)HTTP · curl
curl -X POST "https://bytewells.com/api/v2/acts/nextgensda~google-travel/runs" \
-H "Authorization: Bearer $BYTEWELLS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"flights":[{"origin":"NYC","destination":"LAX","departureDate":"2026-12-20","returnDate":"2026-12-27"}],"returnFlightsFor":1,"hotels":[{"place":"Paris","checkin":"2026-12-20","checkout":"2026-12-22"}],"maxHotelsPerSearch":20,"maxItems":200}'Runs are billed as compute from your credit balance. Paid Actors need an active rental or trial; otherwise the API answers 402 rental-required.
Related
More Actors from the same publisher.

Google Maps Full Suite — Places, Reviews & Grid Search
Tauqeer Abbas · @nextgensda
Google Maps places, full details, reviews, People Also Search For and directions in one Actor.
AutomationLead generationMarketing$19/mo7-day free trial
Google Shopping Scraper: Prices, Stores, Price History & GTIN
Tauqeer Abbas · @nextgensda
Search Google Shopping in any country: products with prices, merchants and ratings; details and specs, every store's offer, per-store price history and reviews; look products up by GTIN/UPC/EAN. Filters for price, rating, brand, store and sale. Pay per result.
E-commerceLead generationAI$49/mo3-day free trial
Reddit Scraper: Posts, Comments, Users, Search & Explore
Tauqeer Abbas · @nextgensda
Scrape Reddit posts, full comment threads, users, communities and comment search by keyword, plus the Explore tab's recommended communities. API-grade JSON with no login or browser, unaffected by Reddit's 2026 .json shutdown. Monitor brands and keywords with only-new runs.
Social mediaLead generationAI$29/mo3-day free trial
TikTok Scraper: Videos, Profiles, Comments, Sounds & Places
Tauqeer Abbas · @nextgensda
Scrape TikTok videos, profiles, hashtag feeds, keyword searches, sounds, places, followers, Shop products and comments. Full metadata: description, author, plays, likes, comments, shares, saves, music, video URLs, covers. No browser and no login; 256 MB.
Social mediaLead generationAI$29/mo3-day free trial