Google Flights API
with fares, layovers, and price trends
Search Google Flights by route and dates. One request returns fares, full itineraries, layovers, carbon estimates, and price trends as clean JSON. No sessions, no rendering to run.
of requests succeed
median response
95% finish faster
per 1k flight searches at volume
Fares change by the minute. Your code shouldn't care.
- Session tokens that expire
- Itineraries buried in nested JSON
- Prices in a dozen formats
- Headless browsers to keep warm
- Fix the parsers again next week
One GET Request. That's the whole integration.
Start with just a query. Add more parameters when your use case needs them.
curl -G 'https://api.hasdata.com/scrape/google/flights' \
--data-urlencode 'departureId=LHR' \
--data-urlencode 'arrivalId=JFK' \
--data-urlencode 'outboundDate=2026-08-15' \
--data-urlencode 'returnDate=2026-08-20' \
--header 'x-api-key: <YOUR_API_KEY>' \
--header 'Content-Type: application/json'departureId * Departure airport code / location kgmidarrivalId * Arrival airport code / location kgmidoutboundDate * Outbound DatereturnDate Return Datetype Flight TypemultiCityJson Multi-city JSONgl Countryhl Languagecurrency CurrencytravelClass Travel ClassshowHidden Show Hidden Faresadults Adultschildren ChildreninfantsInSeat Infants in SeatinfantsOnLap Infants on LapsortBy Sort Bystops StopsexcludeAirlines Exclude AirlinesincludeAirlines Include Airlinesbags Number of BagsmaxPrice Maximum PriceoutboundTimes Outbound TimesreturnTimes Return TimeslessEmissions Fewer EmissionslayoverDuration Maximum Layover DurationincludeConnections Include ConnectionsexcludeConnections Exclude ConnectionsmaxDuration Maximum Flight DurationdeepSearch Deep SearchdepartureToken Departure TokenbookingToken Booking TokenEvery route, one predictable schema
The same keys come back on every request. Map the fields once and forget about it.
[
{
"price": 758,
"type": "Round trip",
"totalDuration": 490,
"flights": [
{
"departureAirport": {
"id": "LHR",
"name": "Heathrow Airport",
"time": "2026-08-15 8:20"
},
"arrivalAirport": {
"id": "JFK",
"name": "John F. Kennedy International Airport",
"time": "2026-08-15 11:30"
},
"airline": "Virgin Atlantic",
"airplane": "Airbus A350",
"flightNumber": "VS 3",
"travelClass": "Economy",
"legroom": "31 in",
"duration": 490
}
],
"carbonEmissions": {
"thisFlight": 243000,
"typicalForThisRoute": 326000,
"differencePercent": -25
},
"departureToken": "W1t7ImRlcGFydHVyZUlkIjoiTEhSI…"
}
]price numberTotal price for the itinerary
type stringRound trip | One way
totalDuration numberTotal travel time in minutes
flights[] object[]Each leg of the itinerary
flights[].departureAirport / arrivalAirport objectid, name, and local time
flights[].airline / airplane stringCarrier and aircraft
flights[].travelClass / legroom stringCabin and seat pitch
carbonEmissions objectThis flight vs typical, with % difference
departureToken stringToken to fetch return/onward options
[
{
"price": 744,
"type": "Round trip",
"totalDuration": 945,
"layovers": [
{
"id": "CLT",
"name": "Charlotte Douglas International Airport",
"duration": 284
}
]
}
]price numberTotal price for the itinerary
totalDuration numberTotal travel time in minutes
layovers[] object[]Connection stops on this itinerary
layovers[].id / name stringLayover airport code and name
layovers[].duration numberLayover length in minutes
{
"lowestPrice": 744,
"typicalPriceRange": [
510,
880
],
"priceLevel": "typical",
"priceHistory": [
[
1779577200,
916
],
[
1779663600,
916
]
]
}lowestPrice numberCheapest fare found
typicalPriceRange number[]Usual low-high band for this route
priceLevel stringlow | typical | high right now
priceHistory array[]Timestamped price points over time
[
{
"departures": [
{
"id": "LHR",
"name": "Heathrow Airport",
"city": "London",
"country": "United Kingdom",
"countryCode": "GB"
}
],
"arrivals": [
{
"id": "JFK",
"name": "John F. Kennedy International Airport",
"city": "New York",
"country": "United States",
"countryCode": "US"
}
]
}
]departures / arrivals object[]Airports matched for each end of the route
id stringIATA code
name stringAirport name
city / country / countryCode stringLocation
An all-in-one scraping service
Every feature you need to collect data from thousands to millions of requests.
Discover similar
scrapers and APIs
to expand your projects.
Google Hotels API
Travel Data • $0.75 / 1k Request
Booking.com Scraper
Travel Data • $0.75 / 1k Rows
Fits right into your stack.
Works with the tools you already use.
View Documentation ->Teams that deleted their scraper
Now it's the part of the pipeline they don't think about
Their ability to handle dynamic content, including time-sensitive flight pricing, was particularly impressive.
HasData delivers exactly what we need: speed and comprehensive search features. It's the fastest API we've used in this space. Plus, their customer support is fantastic.
We rely on HasData for search performance data and broader scraping needs. Their APIs deliver highly structured data that integrates directly into our platforms.
Great web scraping API which is incredibly easy to use. It requires minimal effort to get up and running, and the documentation is very clear and helpful.
I needed to scrape some information they didn't already support, and they wrote the code for me right away, which was super nice of them.
Plans that get cheaper at scale
Fixed price, fixed volume, no surprises at the end of the month. Upgrade when you need more.
Free
Startup
Business
RecommendedEnterprise
Monthly flight search volume
Start with 66 free flight searches. No credit card required.
HasData accesses publicly available data only. Google Flights' terms may restrict automated access; you are responsible for compliance. Where data includes personal information, ensure a lawful basis under GDPR/CCPA.
Questions, answered
Per successful request. One search returns the best flights, the other options, and price insights together. A failed request costs nothing.
Yes, a one-time trial of 66 flight searches with every field included. No credit card required. When you're done testing, pick a plan that fits your volume.
Paid plans start at $49 per month for about 13,000 flight searches and scale to 6 million a month. The unit price drops with volume, from $3.68 down to $1.12 per 1,000 searches.
Best and other itineraries with per-leg detail, layovers, cabin and legroom, carbon estimates, matched airports, and price insights for the route.
Yes. priceInsights returns the lowest fare, the typical price range for the route, whether prices are low or high right now, and a price history over time.
Both. Set departureId, arrivalId, and outboundDate for one-way, and add returnDate for a round trip.
Nothing on your side. We track the changes and keep the response schema stable. Fields keep their names and types, and existing keys don't disappear.
No. Requests run on HasData's infrastructure, so there's nothing to provision or maintain. You're responsible for using the results in line with each target site's terms and applicable law.
Yes, you can cancel your subscription at any time from your dashboard in a few seconds. Once cancelled, there are no recurring payments.
Your first Google Flights response
is minutes away
66 flight searches free · no credit card