Exact Google Flight Search Results - How Deep Search Mirrors Your Browser

If you’re building a travel platform, comparison site, or analyzing flight trends, you can use Google Flights API from SerpApi. Google Flights data isn’t easily accessible, which makes it difficult to gather accurate, real-time flight information at scale. With SerpApi you can scrape structured Google Flights results without worrying about all the work in the background. This allows you to instantly pull details like flight times, prices, airlines, and layovers in a structured JSON format that exactly matches what you can see in your browser.

You can accomplish this using our Google Flights API. When using SerpApi's Google Flights API, often times the results will look the same as your browser without any additional adjustments. However, when searching for more complicated results such as multi city or less popular airports, initially it may not look exactly like what you see in your browser window, even when in incognito mode. This doesn't mean the results are wrong or that we can't match them. Let's take a look at what Google is doing behind the scenes.

Before we get started if you need an introduction to Google Flight API, I recommend starting here:

How to Scrape Google Flights
There are many flights and many services that allow you to search for flights. Google offers a free flight booking search service as part of the Google Travel platform. It allows users to search for flights from various airlines, compare prices, and book tickets. You can search for flights by

For Node.js get started here:

Introduction to scraping Google Flights using Node.js and SerpApi
Scraping Google Flights effortlessly with Node.js and SerpApi!

For a no code option using Make.com:

Making a Flight Price Tracker with Google Flights and Make.com
Searching for a decent flight can be a time-consuming process. The good news is you can make your own, and you don’t even have to know how to code to do it. In this tutorial, I’ll walk you through how to use Make.com (a.k.a. Make) and SerpApi’s Google Flights API to track flight prices for you.

Now that we've been introduced to what the Google Flights API can do, let's take a look further.

How Google Flights Loads Flights

When you run a search on Google Flights in a browser window, initially only a subset of information is loaded. There is work being done in the background as you continue to scroll and navigate the page.

Google Flights doesn't send all the information as soon as you start the search. It uses dynamic data fetching, this means the page initially loads a small, quickly rendered portion of the page. This allows Google flights to load and give you results quickly.

While in the background Google is making additional calls to pull in additional airlines, different fares, and cheaper options that weren't initially loaded. Sometimes all of the information may be loaded immediately, however sometimes it takes that extra processing time.

This is why for common airports with simple searches they will load the results immediately with no discrepancies. While for multi city searches or airport codes that aren't as popular, it may take a bit longer to load these results. Let's take a look at how to guarantee the results will fully load and match what you have in your browser.

Within Google flights there are many parameters available, including deep_search.

By default deep_search is set to false. When deep_search is set to false, you can think of it as quick response mode. You will receive regular flight results without additional processing. However, this may also mean you may not get all the fields you would see on regularly when searching within a browser.

Set deep_search to true to get fully loaded results. This option ensures each component and result has time to load completely so the output aligns with what Google Flights displays. Keep in mind, this will increase the time required for each query.

Review the documentation for deep_search here:

Google Flights API - SerpApi
Use SerpApi’s Google Flights API to scrape Google Flights information.

Comparison: deep_search true or false

Let's look at an example of results where deep_search is set to true compared to deep_search set to false. In this example we are going to be looking at a search including a flight from Phu Quoc International Airport in Vietnam (PQC) to Austin-Bergstrom International Airport in Texas (AUS). The date range is outbound on October 8, 2025, with the returning flight on October 22, 2025.

from serpapi import GoogleSearch
import json

params = {
    "api_key": YOUR_SECRET_API_KEY,
    "engine": "google_flights",
    "departure_id": "PQC",
    "arrival_id": "AUS",
    "outbound_date": "2025-10-08",
    "return_date": "2025-10-22"
}

results = GoogleSearch(params).get_dict()

Reminder by default deep_search is set to false, this means in this code example it's set to false. Looking at the results below, we can see we are seeing different prices as well as a different number of results. Compare deep_search set to true, deep_search set to false:

You can see the result where deep_search was set to false has a price of $10,012 vs the deep_search set to true at $2,238.

Comparing to the web browser in an incognito tab, you can see the top result matches our result from deep_search set to true.

Now that we've identified the benefit of the deep_search parameter, let's explore how to use it.

Enable Deep Search in Your Queries

Using the same example as above, we're going to enable the deep_search parameter within our query:

from serpapi import GoogleSearch

params = {
    "api_key": YOUR_SECRET_API_KEY,
    "engine": "google_flights",
    "departure_id": "PQC",
    "arrival_id": "AUS",
    "outbound_date": "2025-10-08",
    "return_date": "2025-10-22",
    "deep_search": "true"
}
results = GoogleSearch(params).get_dict()

You can set any of the parameters you require for your query. You'll notice within the parameters, the only difference of the example above and this example, is that deep_search is set to true. That is all you need to do in order to match your results to the browser Google Flights.

Here is what the output looks like for the first result:

{
"search_metadata":
{
  "id":
  "68cc57d3bca7e576aa8efe63",
  "status":
  "Success",
  "json_endpoint":
  "https://serpapi.com/searches/500da207f8524f6e/68cc57d3bca7e576aa8efe63.json",
  "created_at":
  "2025-09-18 19:04:51 UTC",
  "processed_at":
  "2025-09-18 19:04:51 UTC",
  "google_flights_url":
  "https://www.google.com/travel/flights?hl=en&gl=us&curr=USD&tfs=CBwQAhoeEgoyMDI1LTEwLTA4agcIARIDUFFDcgcIARIDQVVTGh4SCjIwMjUtMTAtMjJqBwgBEgNBVVNyBwgBEgNQUUNCAQFIAXABmAEB&tfu=EgIIAQ",
  "raw_html_file":
  "https://serpapi.com/searches/500da207f8524f6e/68cc57d3bca7e576aa8efe63.html",
  "prettify_html_file":
  "https://serpapi.com/searches/500da207f8524f6e/68cc57d3bca7e576aa8efe63.prettify",
"total_time_taken":
  1.74
},
"search_parameters":
{
  ......
},
"other_flights":[
{
  "flights":[
  {
    "departure_airport":
    {
    "name": "Phú Quốc International Airport",
    "id": "PQC",
    "time": "2025-10-08 21:00"
    },
    "arrival_airport":
    {
    "name": "Xi'an Xianyang International Airport",
    "id": "XIY",
    "time": "2025-10-09 01:55"
    },
    "duration": 235,
    "airplane": "Airbus A320",
    "airline": "China Eastern",
    "airline_logo": "https://www.gstatic.com/flights/airline_logos/70px/MU.png",
    "travel_class": "Economy",
    "flight_number": "MU 862",
    "legroom": "30 in",
    "extensions":
      [
      "Average legroom (30 in)",
      "Carbon emissions estimate: 269 kg"
      ]
  },
  {
  "departure_airport":
  {
      "name": "Xi'an Xianyang International Airport",
      "id": "XIY",
      "time": "2025-10-09 06:30"
  },
  "arrival_airport":
  {
    "name": "Shanghai Hongqiao International Airport",
    "id": "SHA",
    "time": "2025-10-09 08:55"
  },
  "duration": 145,
  "airplane": "Airbus A321",
  "airline": "China Eastern",
  "airline_logo": "https://www.gstatic.com/flights/airline_logos/70px/MU.png",
  "travel_class": "Economy",
  "flight_number": "MU 2239",
  "legroom": "31 in",
  "extensions":
    [
    "Average legroom (31 in)",
    "Carbon emissions estimate: 147 kg"
    ]
  },
  {
  "departure_airport":
    {
    "name": "Shanghai Pudong International Airport",
    "id": "PVG",
    "time": "2025-10-09 12:30"
    },
  "arrival_airport":
    {
    "name": "San Francisco International Airport",
    "id": "SFO",
    "time": "2025-10-09 09:05"
    },
  "duration":695,
  "airplane": "Boeing 777",
  "airline": "China Eastern",
  "airline_logo": "https://www.gstatic.com/flights/airline_logos/70px/MU.png",
  "travel_class": "Economy",
  "flight_number": "MU 589",
  "legroom": "32 in",
  "extensions":
    [
      "Above average legroom (32 in)",
      "Wi-Fi for a fee",
      "In-seat power & USB outlets",
      "On-demand video",
      "Carbon emissions estimate: 705 kg"
    ],
  "overnight": true,
  "often_delayed_by_over_30_min": true
  },
  {
  "departure_airport":
    {
      "name": "San Francisco International Airport",
      "id": "SFO",
      "time": "2025-10-09 19:01"
    },
  "arrival_airport":
    {
      "name": "Austin-Bergstrom International Airport",
      "id": "AUS",
      "time": "2025-10-10 00:45"
    },
  "duration": 224,
  "airplane":"Boeing 737MAX 9 Passenger",
  "airline": "Alaska",
  "airline_logo": "https://www.gstatic.com/flights/airline_logos/70px/AS.png",
  "travel_class": "Economy",
  "flight_number": "AS 534",
  "legroom": "31 in",
  "extensions":
    [
      "Average legroom (31 in)",
      "Wi-Fi for a fee",
      "In-seat power & USB outlets",
      "Stream media to your device",
      "Carbon emissions estimate: 187 kg"
    ]
  }
  ],
  "layovers": [
  {
    "duration": 275,
    "name": "Xi'an Xianyang International Airport",
    "id": "XIY",
    "overnight": true
    },
  {
    "duration": 215,
    "name": "Shanghai Pudong International Airport",
    "id": "SHA"
  },
  {
    "duration": 596,
    "name": "San Francisco International Airport",
    "id": "SFO"
  }
  ],
  "total_duration": 2385,
  "carbon_emissions":
  {
    "this_flight": 1310000,
    "typical_for_this_route": 1044000,
    "difference_percent": 25
  },
  "price": 2238,
  "type": "Round trip",
  "airline_logo": "https://www.gstatic.com/flights/airline_logos/70px/multi.png",
  "departure_token": "WyJDalJJZEZsZlRqWlJkbGhVVWxsQlJFTnBRMmRDUnkwdExTMHRMUzB0YjJ0aVptWXhNa0ZCUVVGQlIycE5WamxOVG5WT1RUQkJFaHBOVlRnMk1ueE5WVEl5TXpsOFRWVTFPRGw4UVZNMU16UWpNUm9MQ1BiVERSQUNHZ05WVTBRNEhIRDIwdzA9IixbWyJQUUMiLCIyMDI1LTEwLTA4IiwiWElZIixudWxsLCJNVSIsIjg2MiJdLFsiWElZIiwiMjAyNS0xMC0wOSIsIlNIQSIsbnVsbCwiTVUiLCIyMjM5Il0sWyJQVkciLCIyMDI1LTEwLTA5IiwiU0ZPIixudWxsLCJNVSIsIjU4OSJdLFsiU0ZPIiwiMjAyNS0xMC0wOSIsIkFVUyIsbnVsbCwiQVMiLCI1MzQiXV1d"
},

Depending on your priority, you can decide which option works better for you.

For fast response times and quick reference data you should leave deep_search to the default value of false.

For consistent, full results that match what you see in your browser on Google Flights, especially for more complex queries, you will want to set deep_search to true. This will take additional time, however that extra time will be used to wait for Google Flights to load all the details you would see on your browser. Now let's explore how to enable deep_search.

Another option is to use both! For simpler queries set deep_search set to false and receive your results quickly. If the search is more complex, make an additional query using the same parameters except this time set deep_search to true. This way many of your queries will be fast as well as complete, however when Google Flights needs additional time to load, you can make the additional query for the full results.

Conclusion

For many of your queries to the Google Flights API, you may not need to even worry about deep_search. However, when loading multi city searches or searches with less common airports, you may need to apply deep_search in order to see results matching the browser. This will take additional cost in order to fully pull the accurate results.

To apply deep_search to any query you are going to set the parameter to "true" and you will receive results matching the browser no matter what the search is.

From there whether you use this information to provide flight details for a flight searching app, track costs of flights over time is up to you! We provide you the tools to extract accurate and detailed information, just let us know if you have any questions along the way and we are happy to help via chat or at contact@serpapi.com.

Want to make a flight price tracker?

Review this blog post tell you how to do exactly that!

Making a Flight Price Tracker with Google Flights and Make.com
Searching for a decent flight can be a time-consuming process. The good news is you can make your own, and you don’t even have to know how to code to do it. In this tutorial, I’ll walk you through how to use Make.com (a.k.a. Make) and SerpApi’s Google Flights API to track flight prices for you.