Google AI Mode API
Our Google AI Mode API allows you to scrape results from the Google AI Mode page. The API is accessed through the following endpoint: /search?engine=google_ai_mode
. A user may query the following: https://serpapi.com/search?engine=google_ai_mode
utilizing a GET
request. Head to the playground for a live and interactive demo.
Note on Query Language Support
Google AI Mode supports multiple languages, including English.
Some languages are not yet supported and may not return valid or expected results.
API Parameters
Geographic Location
location
Optional
Parameter defines from where you want the search to originate. If several locations match the location requested, we'll pick the most popular one. Head to the /locations.json API if you need more precise control. The location and uule parameters can't be used together. It is recommended to specify location at the city level in order to simulate a real user’s search. If location is omitted, the search may take on the location of the proxy.
Serpapi Parameters
device
Optional
Parameter defines the device to use to get the results. It can be set to desktop
(default) to use a regular browser, tablet
to use a tablet browser (currently using iPads), or mobile
to use a mobile browser.
no_cache
Optional
Parameter will force SerpApi to fetch the Google Ai Mode results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to false
(default) to allow results from the cache, or true
to disallow results from the cache. no_cache and async parameters should not be used together.
async
Optional
Parameter defines the way you want to submit your search to SerpApi. It can be set to false
(default) to open an HTTP connection and keep it open until you got your search results, or true
to just submit your search to SerpApi and retrieve them later. In this case, you'll need to use our Searches Archive API to retrieve your results. async and no_cache parameters should not be used together. async should not be used on accounts with Ludicrous Speed enabled.
zero_trace
Optional
Enterprise only. Parameter enables ZeroTrace mode. It can be set to false
(default) or true
. Enable this mode to skip storing search parameters, search files, and search metadata on our servers. This may make debugging more difficult.
output
Optional
Parameter defines the final output you want. It can be set to json (default) to get a structured JSON
of the results, or html
to get the raw html retrieved.
json_restrictor
Optional
Parameter defines the fields you want to restrict in the response. For example, setting it to organic_results[].{title,snippet}
will only return the title and snippet of the organic results. See JSON Restrictor for more details.
API Results
JSON Results
JSON output includes structured data for text_blocks
, references
, inline_images
, inline_products
, and more.
A search status is accessible through search_metadata.status
. It flows this way: Processing
-> Success
|| Error
. If a search has failed, error
will contain an error message. search_metadata.id
is the search ID inside SerpApi.
HTML Results
HTML output is useful to debug JSON results or support features not supported yet by SerpApi. HTML output gives you the raw HTML results from Google AI Mode.
API Examples
Example with shopping_results
and quick_results

{
...
"quick_results": [
{
"title": "Levi's® Labor Day Sale | 30% off Sitewide",
"link": "https://www.levi.com/US/en_US/",
"snippet": "The Levi's® Labor Day Sale for 30% off sitewide, shop and save on your favorite men's and women's styles.",
"source": "Levi's",
"displayed_link": "https://www.levi.com",
"favicon": "https://serpapi.com/searches/68af016fdbbb466318f53099/images/12f2763e0224368fa4dd78d6c4ebfd36771e1c0dca1ebb40.png"
},
{
"title": "Thrift and Vintage Levi's Jeans",
"link": "https://www.secondhand.levi.com/shop/jeans",
"snippet": "Shop second hand and vintage Levis Jeans and Trucker Jackets at your favorite online thrift store, including used 501, 505, and 550s.",
"source": "Levi's SecondHand",
"displayed_link": "https://www.secondhand.levi.com",
"favicon": "https://serpapi.com/searches/68af016fdbbb466318f53099/images/12f2763e0224368fcd2ea097cd333bdabcdb3d2e09713da5.png"
}
],
"shopping_results": [
{
"title": "Levi's 501 Original Fit Men's Jeans",
"product_link": "https://www.google.com/search?prds=pvt:hg,pvo:29,mid:576462833771069843,imageDocid:927366645294926544,gpcid:790074975598790836,headlineOfferDocid:13000906125912082379,catalogid:18296818796508524238,productDocid:12390253486726265040&ibp=oshop&q=product&sa=X&ved=2ahUKEwi34OCBhquPAxVOkokEHXbcPLMQ8ccPegQIABAb",
"thumbnail": "https://encrypted-tbn0.gstatic.com/shopping?q=tbn:ANd9GcS1jwaThn3miDmxfqwWR7rwdAAE1G62Jzg-7HvmvGsNtr-hA9yOoiReT4Vaxg&usqp=CAE",
"price": "$55.65",
"extracted_price": 55.65,
"old_price": "$79.50",
"extracted_old_price": 79.5,
"index": 0
},
{
"title": "Levi's Men's 511 Slim Fit Jeans",
"product_link": "https://www.google.com/search?prds=pvt:hg,pvo:29,mid:576462840585744507,imageDocid:7988756026854172948,gpcid:10868389383399353513,headlineOfferDocid:12666354779790272731,catalogid:15999505846080662005,productDocid:17276868584970186354,rds:PC_15454182066623491704%7CPROD_PC_15454182066623491704&ibp=oshop&q=product&sa=X&ved=2ahUKEwi34OCBhquPAxVOkokEHXbcPLMQ8ccPegQIABAg",
"thumbnail": "https://encrypted-tbn0.gstatic.com/shopping?q=tbn:ANd9GcSCvRpUgQDj4jDyqaSHiY-XiIkF7tbHwDvEVBZi-5dJ-cqvmvqQyQa_iRWjoJ8&usqp=CAE",
"price": "$39.99",
"extracted_price": 39.99,
"old_price": "$69.50",
"extracted_old_price": 69.5,
"rating": 4.3,
"reviews": 7000,
"index": 1
},
{
"title": "Levi's Men's 512 Slim Taper Eco Performance Jeans",
"product_link": "https://www.google.com/search?prds=pvt:hg,pvo:29,mid:576462816344651886,imageDocid:8296424061904123755,gpcid:7235414136344651487,headlineOfferDocid:2837926054404031388,catalogid:16492823197473936458,productDocid:12544303799310466688,rds:PC_7235414136344651487%7CPROD_PC_7235414136344651487&ibp=oshop&q=product&sa=X&ved=2ahUKEwi34OCBhquPAxVOkokEHXbcPLMQ8ccPegQIABAm",
"thumbnail": "https://encrypted-tbn3.gstatic.com/shopping?q=tbn:ANd9GcSRRsmD-CLglGnMfLeKo34uxXlSJl-O0wIcYG_L1TfXh08MZYARD4DKk68HqQ&usqp=CAE",
"price": "$48.65",
"extracted_price": 48.65,
"old_price": "$69.50",
"extracted_old_price": 69.5,
"rating": 3.9,
"reviews": 74,
"index": 2
},
...
],
"text_blocks": [
{
"type": "paragraph",
"snippet": "Levi's is an iconic American denim brand known for its classic jeans, jackets, and casual wear. The company, Levi Strauss & Co., was founded in 1853 in San Francisco and received a patent for copper-riveted pants in 1873, creating the world's first modern denim jeans. The flagship product, the 501® Original, remains a timeless staple.",
"reference_indexes": [
4,
0,
1,
2
]
},
...
{
"type": "paragraph",
"snippet": "Men's",
"snippet_highlighted_words": [
"Men's"
]
},
{
"type": "list",
"list": [
{
"snippet": "501® Original: The classic straight-leg, button-fly jean that is the blueprint for all modern jeans.",
"snippet_links": [
{
"text": "501® Original",
"link": "https://www.google.com/search?prds=pvt:hg,pvo:29,mid:576462833771069843,imageDocid:927366645294926544,gpcid:790074975598790836,headlineOfferDocid:13000906125912082379,catalogid:18296818796508524238,productDocid:12390253486726265040&ibp=oshop&q=product&sa=X&ved=2ahUKEwi34OCBhquPAxVOkokEHXbcPLMQxa4PegQIABAS",
"shopping_results_reference_index": 0
}
]
},
{
"snippet": "511™ Slim: A slim fit through the hip and thigh with a tapered leg opening.",
"snippet_links": [
{
"text": "511™ Slim",
"link": "https://www.google.com/search?prds=pvt:hg,pvo:29,mid:576462840585744507,imageDocid:7988756026854172948,gpcid:10868389383399353513,headlineOfferDocid:12666354779790272731,catalogid:15999505846080662005,productDocid:17276868584970186354,rds:PC_15454182066623491704%7CPROD_PC_15454182066623491704&ibp=oshop&q=product&sa=X&ved=2ahUKEwi34OCBhquPAxVOkokEHXbcPLMQxa4PegQIABAU",
"shopping_results_reference_index": 1
}
]
},
{
"snippet": "512™ Slim Taper: Similar to the 511, but with a more pronounced taper to the ankle.",
"snippet_links": [
{
"text": "512™ Slim Taper",
"link": "https://www.google.com/search?prds=pvt:hg,pvo:29,mid:576462816344651886,imageDocid:8296424061904123755,gpcid:7235414136344651487,headlineOfferDocid:2837926054404031388,catalogid:16492823197473936458,productDocid:12544303799310466688,rds:PC_7235414136344651487%7CPROD_PC_7235414136344651487&ibp=oshop&q=product&sa=X&ved=2ahUKEwi34OCBhquPAxVOkokEHXbcPLMQxa4PegQIABAW",
"shopping_results_reference_index": 2
}
]
},
...
],
"reference_indexes": [
1,
6
]
},
...
],
"references": [
{
"title": "Levi’s Outlet Store",
"link": "https://www.google.com/viewer/place?mid=/g/1vr1wxdw",
"snippet": "Denim pioneer dating back to 1873 with a selection of jeans, casualwear, jackets & accessories.",
"source": "Google",
"index": 0
},
{
"title": "501® Original Fit Men's Jeans - Dark Wash | Levi's® US",
"link": "https://www.levi.com/US/en_US/clothing/men/jeans/straight/501-original-fit-mens-jeans/p/005013408",
"snippet": "Close your eyes. Think “jeans.” Now open. They were 501® Originals, right? With a classic straight leg and iconic styling, they're literally the blueprint for e...",
"source": "Levi's",
"index": 1
},
{
"title": "Levi Strauss & Co. - Wikipedia",
"link": "https://en.wikipedia.org/wiki/Levi_Strauss_%26_Co.",
"snippet": "History * Origin and formation (1853–1890s) The original Levi Strauss logo, 1892. German-Jewish immigrant Levi Strauss was born on February 26, 1829. He grew up...",
"source": "Wikipedia",
"index": 2
},
...
],
...
}
Example with local_results

{
...
"local_results": [
{
"title": "Dean's Italian Steakhouse",
"link": "https://www.google.com/viewer/place?mid=%2Fg%2F11pyc12_7j",
"thumbnail": "https://lh3.googleusercontent.com/gps-cs-s/AC9h4nq9PWzVebqMzKiX7XS8hAoII99fsxpT7CoGpqQLdNiaCEk__xxe63Mem4A8yMZaalSWDxnESP5ATx_fDLZxNLJNdQ4uSwXdQz-NcmekpR93GJLj9Iebp-vl1460jhwiS3uJFhehjg=w300-h400-n-k-no",
"rating": 4.9,
"reviews": 2500,
"hours": "Closed",
"type": "Steak",
"address": "110 E 2nd St",
"index": 0
},
{
"title": "J-Prime Steakhouse",
"link": "https://www.google.com/viewer/place?mid=%2Fg%2F11rv6jvz8n",
"thumbnail": "https://lh3.googleusercontent.com/gps-cs-s/AC9h4noBVrXsboKmW_55uRu7vKwMNgLTDO1T3X33arXOPVzu2DjiUE0cnFstv9ii-R_OjQ-4rCpdMe-4pu75nURDicWQo1MNyiq_jukZW3X6vXMQ1nD4LUZDus7-dn5rhSSNRvSo1X6HKA=w300-h400-n-k-no",
"rating": 4.8,
"reviews": 948,
"price": "$100+",
"hours": "Closed",
"type": "Restaurant",
"address": "Corner of, 301 Brazos St ste 150, San Jacinto Blvd and 3rd",
"index": 1
},
{
"title": "Jeffrey's",
"link": "https://www.google.com/viewer/place?mid=%2Fm%2F020y__p",
"thumbnail": "https://lh3.googleusercontent.com/gps-cs-s/AC9h4nozMCmu6BPGouHcvvwbZ1N0lsiqnsR4yFUwydh_PgXKS0SSx6yVyURMc3i6cisoDWpbN9EoSod7iawLHHUQP5QIWe7W2kpvY1KsbOZo7Fx2UK8PFk6TPq-jQWZq6yzbIOcmwgh6yg=w300-h225-n-k-no",
"rating": 4.7,
"reviews": 1100,
"price": "$100+",
"hours": "Closed",
"type": "Steak",
"address": "1204 W Lynn St",
"index": 2
},
...
],
"text_blocks": [
{
"type": "paragraph",
"snippet": "In Austin, Texas, steakhouses range from classic fine-dining experiences to more modern interpretations with unique flavors. Several locations, like Steiner Ranch and Dean's Italian Steakhouse, are consistently praised for their quality steaks, excellent service, and atmosphere.",
"snippet_links": [
{
"text": "Dean's Italian Steakhouse",
"link": "https://www.google.com/viewer/place?mid=/g/11pyc12_7j&sa=X&ved=2ahUKEwiYlP2KgrqPAxWZmYkEHUsVPBUQqdYPegQIAxAB",
"local_results_reference_index": 0
}
],
"reference_indexes": [
1,
0,
2
]
},
{
"type": "heading",
"snippet": "Top-rated luxury steakhouses"
},
{
"type": "list",
"list": [
{
"snippet": "J-Prime Steakhouse: An upscale and contemporary downtown restaurant known for its phenomenal filet mignon, melt-in-your-mouth steaks, and attentive, 5-star service.",
"snippet_links": [
{
"text": "J-Prime Steakhouse",
"link": "https://www.google.com/viewer/place?mid=/g/11rv6jvz8n&sa=X&ved=2ahUKEwiYlP2KgrqPAxWZmYkEHUsVPBUQqdYPegQIBRAB",
"local_results_reference_index": 1
}
]
},
{
"snippet": "Dean's Italian Steakhouse: This urbane downtown spot offers a sophisticated vibe with Wagyu beef and homemade pasta. Reviewers praise the impeccable service and perfectly cooked steaks. It also features a cocktail terrace.",
"snippet_links": [
{
"text": "Dean's Italian Steakhouse",
"link": "https://www.google.com/viewer/place?mid=/g/11pyc12_7j&sa=X&ved=2ahUKEwiYlP2KgrqPAxWZmYkEHUsVPBUQqdYPegQIBRAD",
"local_results_reference_index": 0
}
]
},
{
"snippet": "Jeffrey's: A posh, fine-dining institution in Clarksville, Jeffrey's is known for its upscale New American cuisine, superior steaks, and romantic atmosphere.",
"snippet_links": [
{
"text": "Jeffrey's",
"link": "https://www.google.com/viewer/place?mid=/m/020y__p&sa=X&ved=2ahUKEwiYlP2KgrqPAxWZmYkEHUsVPBUQqdYPegQIBRAF",
"local_results_reference_index": 2
}
]
},
...
],
"reference_indexes": [
0
]
},
...
],
"references": [
{
"title": "TOP 10 BEST Old School Steak near Austin, TX 78701 - Yelp",
"link": "https://m.yelp.com/search?find_desc=Old+School+Steak&find_loc=Austin%2C+TX+78701",
"snippet": "* 1. Seven Grand. 4.5 (135 reviews) 0.3 mi. 405 E 7th St, Austin, TX 78701. (512) 520-4582. $$ Unfortunately, we were in the middle of a winter freeze when we w...",
"source": "Yelp",
"index": 0
},
{
"title": "J-Prime Steakhouse",
"link": "https://www.google.com/viewer/place?mid=/g/11rv6jvz8n",
"snippet": "Upscale restaurant with a contemporary vibe serving filet mignon, lobster bisque, and other fine dishes.",
"source": "Google",
"index": 1
},
{
"title": "Steiner Ranch Steakhouse",
"link": "https://www.google.com/viewer/place?mid=/g/1tx8tmmd",
"snippet": "Sophisticated steakhouse serving prime steaks & wines, with views over Lake Travis.",
"source": "Google",
"index": 2
},
...
],
...
}
Example with table

{
...
"inline_images": [
"http://t2.gstatic.com/images?q=tbn:ANd9GcSOKtbwN4lBTmTrz-Z65I9dnhrv4yHfyL-AaIhWMRPnNnr9Sbynx9Wl8MP7PuXpKsujQuPR0zw4",
"http://t0.gstatic.com/images?q=tbn:ANd9GcSSWpCF0doyW0ZJBCFGqH9u42NZ0wRJBc0mK_5-mR-CK-gFIV8grergyzSgt21xQMb0bHs-l427",
"http://t2.gstatic.com/images?q=tbn:ANd9GcTrJaKU6vHQfnndjVcGtg-Trfo8UBA_Dfz40VYJhuVOJ8bzWuedQ0wEvhEFS4dI1OpsuTfcH-ZF",
...
],
"text_blocks": [
{
"type": "heading",
"snippet": "LeBron James overview"
},
{
"type": "paragraph",
"snippet": "LeBron James, born December 30, 1984, is an American professional basketball player currently playing for the Los Angeles Lakers. He is 40 years old. He was drafted first overall in the 2003 NBA draft by the Cleveland Cavaliers. He has also played for the Miami Heat.",
"reference_indexes": [
1,
3,
7,
5
]
},
{
"type": "table",
"table": [
[
"Team",
"Seasons Played"
],
[
"Cleveland Cavaliers",
"2003–2010, 2014–2018"
],
[
"Miami Heat",
"2010–2014"
],
[
"Los Angeles Lakers",
"2018–present"
]
],
"formatted": [
{
"team": "Cleveland Cavaliers",
"seasons_played": "2003–2010, 2014–2018"
},
{
"team": "Miami Heat",
"seasons_played": "2010–2014"
},
{
"team": "Los Angeles Lakers",
"seasons_played": "2018–present"
}
],
"reference_indexes": [
5,
1,
3
]
},
...
],
"references": [
{
"title": "LeBron James - Wikipedia",
"link": "https://en.wikipedia.org/wiki/LeBron_James#:~:text=LeBron%20Raymone%20James%20Sr.%20(/,basketball%20players%20of%20all%20time.",
"snippet": "Table_title: LeBron James Table_content: row: | James with the Los Angeles Lakers in 2023 | | row: | No. 23 – Los Angeles Lakers | | row: | Position | Small for...",
"source": "Wikipedia",
"index": 0
},
{
"title": "LeBron James - Wikipedia",
"link": "https://en.wikipedia.org/wiki/LeBron_James",
"snippet": "Akron, Ohio, U.S.. Listed height, 6 ft 9 in (2.06 m). Listed weight, 250 lb (113 kg). Career information.",
"source": "Wikipedia",
"index": 1
},
{
"title": "Los Angeles Lakers | LeBron James - NBA",
"link": "https://www.nba.com/lakers/team/player-pages/lebron-james-2544#:~:text=The%20accolades%20for%20one%20of,1.5%20steals%20in%201%2C514%20games.",
"snippet": "LeBron James. The accolades for one of the game's greatest players of all time are too numerous to list, but they start with four NBA championships and four NBA...",
"source": "NBA",
"index": 2
},
...
],
...
}
Example with inline_videos

{
...
"inline_videos": [
{
"title": "How many wars has Donald Trump really stopped? | BBC ...",
"link": "https://www.youtube.com/watch?v=l1gtEKOot1U",
"thumbnail": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTGbZm1KvO-85BOT5qLld1VCONq-JzUjm_SuiWJ2Z-nk_-2bhcQ",
"channel": "BBC News",
"duration": "32:48",
"platform": "YouTube"
},
{
"title": "US Breaking News LIVE: Trump Issues Urgent Call For ...",
"link": "https://www.youtube.com/watch?v=FRsOjtFxA14",
"thumbnail": "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcTq9iGpMumFKPghhYOpBXpyIWof20_rC9TSggh2ySGxCofqZt-u",
"channel": "ET NOW",
"duration": "00:00",
"platform": "YouTube"
},
{
"title": "Donald Trump: 'A lot of people are saying maybe we'd like a ...",
"link": "https://www.youtube.com/watch?v=koruWF1cfyc",
"thumbnail": "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcSp7eu7Y275OKci4LGKOuZgw2nEkDjJ2SnzYqpDk7z9NuC7BlIz",
"channel": "FOX 9 Minneapolis-St. Paul",
"duration": "01:54",
"platform": "YouTube"
},
...
],
...
}
Example with code_block

{
...
"text_blocks": [
{
"type": "paragraph",
"snippet": "In Ruby, the \"for each loop\" is typically implemented using the each method, which is the preferred and most common way to iterate over collections like arrays, hashes, and ranges. The each method handles the iteration for you, allowing you to focus on the code block that executes for every item.",
"snippet_inline_code": [
"each",
"each"
],
"reference_indexes": [
3,
11,
0
]
},
{
"type": "heading",
"snippet": "Syntax and examples"
},
{
"type": "list",
"list": [
{
"text_blocks": [
{
"type": "heading",
"snippet": "Iterating over an array"
},
{
"type": "paragraph",
"snippet": "The each method is called on the array, and a block of code is defined to handle each element. The temporary variable within the pipes |element| represents the current item in each iteration.",
"snippet_inline_code": [
"each",
"|element|"
],
"reference_indexes": [
8,
0,
9
]
},
{
"type": "code_block",
"language": "ruby",
"code": "fruits = [\"apple\", \"banana\", \"orange\"]\n\nfruits.each do |fruit|\n puts \"A tasty #{fruit}!\"\nend\n\n# Output:\n# A tasty apple!\n# A tasty banana!\n# A tasty orange!\n"
},
{
"type": "list",
"list": [
{
"snippet": "You can also use a single-line block with curly braces {} for concise code.",
"code_block": {
"language": "ruby",
"code": "fruits.each { |fruit| puts \"A tasty #{fruit}!\" }"
}
}
],
"reference_indexes": [
3
]
}
]
},
{
"text_blocks": [
{
"type": "heading",
"snippet": "Iterating over a hash"
},
{
"type": "paragraph",
"snippet": "When using each on a hash, the block passes both the key and the value to temporary variables. You must declare two variables inside the pipes to access each pair.",
"snippet_inline_code": [
"each"
],
"reference_indexes": [
13,
9,
12
]
},
{
"type": "code_block",
"language": "ruby",
"code": "menu = { \"soup\" => 4.50, \"salad\" => 7.25, \"sandwich\" => 9.00 }\n\nmenu.each do |item, price|\n puts \"#{item.capitalize} costs $#{price}\"\nend\n\n# Output:\n# Soup costs $4.5\n# Salad costs $7.25\n# Sandwich costs $9.0\n"
},
{
"type": "list",
"list": [
{
"snippet": "Alternatively, you can use the more specific each_pair, each_key, or each_value methods, which are often aliases for each and make your intent clearer."
}
],
"reference_indexes": [
7,
12
]
}
]
}
]
},
...
],
"references": [
{
"title": "How to Use the Ruby Each Method (With Examples) - Carmatec",
"link": "https://www.carmatec.com/blog/how-to-use-the-ruby-each-method-with-examples/#:~:text=The%20each%20method%20is%20a,and%20returns%20the%20original%20collection.",
"snippet": "Aug 27, 2025 — How to Use the Ruby Each Method (With Examples) ... Ruby is renowned for its elegant syntax and developer-friendly features, making it a favorite among programm...",
"source": "Carmatec",
"index": 0
},
{
"title": "Ruby Iterations with each, map, and select | by Florian Stagliano",
"link": "https://medium.com/@contact.f.stagliano/ruby-iterations-with-each-map-and-select-1542d9a9b38d",
"snippet": "Oct 17, 2019 — Let's have a look first how this method works. * each iterates over a list of items (an array) to execute a code block for each iteration step. Hence the name. ...",
"source": "Medium",
"index": 1
},
{
"title": "Ruby Iterations with each, map, and select | by Florian Stagliano",
"link": "https://medium.com/@contact.f.stagliano/ruby-iterations-with-each-map-and-select-1542d9a9b38d#:~:text=Why%20not%20using%20a%20for,array%20after%20it's%20run.",
"snippet": "Oct 17, 2019 — Let's have a look first how this method works. * each iterates over a list of items (an array) to execute a code block for each iteration step. Hence the name. ...",
"source": "Medium",
"index": 2
},
...
],
...
}
JSON structure overview
{
...
"inline_images": "Array of strings - List of inline image URLs",
"quick_results": [
{
"title": "String - Title of the quick result",
"link": "String - URL to the quick result",
"snippet": "String - Snippet of the quick result",
"source": "String - Source of the quick result",
"displayed_link": "String - Displayed link for the quick result",
"favicon": "String - URL to the favicon of the source"
},
...
],
"text_blocks": [
{
"type": "String - Type of the text block. Can be 'heading', 'paragraph', 'list', 'expandable', 'comparison', 'code_block'",
"snippet": "String - Snippet of the text block",
"snippet_highlighted_words": "Array of strings - Highlighted words in the snippet",
"snippet_inline_code": "Array of strings - Inline code within the snippet",
"snippet_links": "Array of objects - Links within the snippet",
"reference_indexes": "Array of integers - Indexes of the references in the root 'references' field",
// Only for 'list' type
"list": [
{
"title": "String - Title of the list item",
"snippet": "String - Snippet of the list item",
"reference_indexes": "Array of integers - Indexes of the references in the root 'references' field",
"thumbnail": "String - URL to the thumbnail image",
// Nested lists
"list": [
{
"snippet": "String - Snippet of the nested list item",
"code_block": {
"language": "String - Programming language of the code block",
"code": "String - Actual code content"
},
"reference_indexes": "Array of integers - Indexes of the references in the root 'references' field",
},
...
]
// Nested text blocks
"text_blocks": [
// The same structure as the parent 'text_blocks' field
]
},
...
],
// Only for `table` type
"table": [
[
"String - Table cell",
...
],
...
],
"formatted": "Array or Object, depending on the structure of the table - Formatted table data",
// Only for `code_block` type
"language": "String - Programming language of the code block",
"code": "String - Actual code content"
},
...
],
"references": [
{
"title": "String - Title of the reference",
"link": "String - URL to the reference",
"snippet": "String - Snippet of the reference",
"source": "String - Source of the reference",
"index": "Integer - Index of the reference"
},
...
],
"shopping_results": [
{
"title": "String - Title of the product",
"product_link": "String - URL to the product",
"thumbnail": "String - URL to the thumbnail image",
"price": "String - Price of the product",
"extracted_price": "Numeric - Product price as a float or integer",
"old_price": "String - Product's price before discount (if applicable)",
"extracted_old_price": "Numeric - Product old price as a float or integer",
"rating": "Numeric - Product rating",
"reviews": "Integer - Product review count"
},
...
],
"local_results": [
{
"title": "String - Title of the place",
"link": "String - URL to the place",
"thumbnail": "String - URL to the thumbnail image",
"rating": "Numeric - Place rating",
"reviews": "Integer - Place review count",
"price": "String - Price range of the place",
"hours": "String - Opening hours of the place",
"type": "String - Type of the place (e.g., restaurant, park, museum)",
"address": "String - Address of the place"
},
...
],
"inline_videos": [
{
"title": "String - Title of the video",
"link": "String - URL to the video",
"thumbnail": "String - URL to the thumbnail image",
"duration": "String - Duration of the video",
"channel": "String - Channel name",
"platform": "String - Platform (e.g., YouTube, Vimeo)"
},
...
],
"error": "String - Error message if the AI Mode results are not available",
...
}