Structured AI Output
Every call returns neatly parsed answer blocks plus the citation list Google shows the user, ready for direct use.
Extract Google AI Mode content easily using our API. Get data points like link, title, snippet, and source etc.
"text_blocks": [
{
"type": "paragraph",
"snippet": "Scrapingdog is a web scraping API that handles proxies, headless browsers, and CAPTCHAs, returning structured JSON from complex sites."
},
{
"type": "list",
"items": [
{
"type": "list_item",
"snippet": "Real Browser Rendering for JavaScript-heavy pages.",
"links": []
}
]
}
]"references": [
{
"title": "Scrapingdog: Scalable Web Scraping API for Data Extraction.",
"link": "https://www.scrapingdog.com/",
"snippet": "Real Browser Rendering. We use headless Chrome, so every JavaScript-heavy or lazy-loaded page opens just like it does ...",
"source": "Scrapingdog",
"thumbnail": "https://serpapi.com/...",
"favicon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAA...",
"index": 0
}
]"inline_images": [
{
"title": "Scrapingdog dashboard preview",
"link": "https://www.scrapingdog.com/",
"thumbnail": "https://encrypted-tbn0.gstatic.com/images?q=...",
"source": "Scrapingdog"
}
]import requests
api_key = "5eaa61a6e562fc52fe763tr516e4653"
url = "https://api.scrapingdog.com/google/ai_mode"
params = {
"api_key": api_key,
"query": "scrapingdog",
"country": "us",
"html": "true"
}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
print(data)
else:
print(f"Request failed with status code: {response.status_code}")import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try {
// Set the API key and request parameters
String apiKey = "5eaa61a6e562fc52fe763tr516e4653";
String query = "scrapingdog";
String country = "us";
String html = "true";
// Construct the API endpoint URL
String apiUrl = "https://api.scrapingdog.com/google/ai_mode?api_key=" + apiKey
+ "&query=" + query
+ "&country=" + country
+ "&html=" + html;
URL url = new URL(apiUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
int responseCode = connection.getResponseCode();
if (responseCode == 200) {
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = reader.readLine()) != null) {
response.append(inputLine);
}
reader.close();
System.out.println(response.toString());
} else {
System.out.println("HTTP request failed with response code: " + responseCode);
}
connection.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}<?php
// Set the API key and request parameters
$api_key = '5eaa61a6e562fc52fe763tr516e4653';
$query = 'scrapingdog';
$country = 'us';
$html = 'true';
// Set the API endpoint
$url = 'https://api.scrapingdog.com/google/ai_mode?api_key=' . $api_key . '&query=' . $query . '&country=' . $country . '&html=' . $html;
// Initialize cURL session
$ch = curl_init($url);
// Set cURL options
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Execute the cURL request
$response = curl_exec($ch);
// Check if the request was successful
if ($response === false) {
echo 'cURL error: ' . curl_error($ch);
} else {
echo $response;
}
// Close the cURL session
curl_close($ch);require 'net/http'
require 'uri'
# Set the API key and request parameters
api_key = '5eaa61a6e562fc52fe763tr516e4653'
query = 'scrapingdog'
country = 'us'
html = 'true'
# Construct the API endpoint URL
url = URI.parse("https://api.scrapingdog.com/google/ai_mode?api_key=#{api_key}&query=#{query}&country=#{country}&html=#{html}")
# Create an HTTP GET request
request = Net::HTTP::Get.new(url)
# Create an HTTP client
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true # Enable SSL (https)
# Send the request and get the response
response = http.request(request)
# Check if the request was successful
if response.is_a?(Net::HTTPSuccess)
puts response.body
else
puts "HTTP request failed with code: #{response.code}, message: #{response.message}"
endconst axios = require('axios');
const api_key = '5eaa61a6e562fc52fe763tr516e4653';
const url = 'https://api.scrapingdog.com/google/ai_mode';
const params = {
api_key: api_key,
query: 'scrapingdog',
country: 'us',
html: 'true',
};
axios
.get(url, { params: params })
.then(function (response) {
if (response.status === 200) {
const data = response.data;
console.log(data);
} else {
console.log('Request failed with status code: ' + response.status);
}
})
.catch(function (error) {
console.error('Error making the request: ' + error.message);
});text_blockstypeparagraphsnippetitemsreferencestitlelinksnippetsourceindexlistlist_itemsnippetlinkssourcethumbnailfaviconinline_imagestitlelinkthumbnailsourcequerycountryhtmlapi_keyAI Mode renders client-side from a streamed generative response, so the same query returns different prose and citations every load.
AI Mode synthesizes a fresh answer per request, so there is no stable DOM and your selectors break constantly.
The answer hydrates progressively after page load, so a plain fetch returns an empty shell with no answer text.
Separating answer paragraphs from reference cards and matching each cited link to its source is brittle hand-parsing.
AI Mode is gated by region and account, so without geo-emulation you cannot reproduce what another country sees.
With Scrapingdog, one API call handles proxies, CAPTCHA, parsing, and scaling, so you focus on the AI answers.
Emulate a specific country or city to see exactly how AI overviews appear to local users for global campaign relevance.
Every call returns neatly parsed answer blocks plus the citation list Google shows the user, ready for direct use.
Set html to true to receive the full HTML of the AI results page alongside the parsed JSON.
AI mode bundles the summary and sources into one response, reducing pages fetched and cutting time and credit expenses.
Every call returns neatly parsed answer blocks plus the citation list Google shows the user, ready for direct use.
Tell the API which country or city to emulate and see exactly how the AI overview looks to local users.
Track how your brand is mentioned and cited inside AI answers across queries to manage reputation.
Spot the key facts, angles, and sources Google's AI highlights to jump-start blog outlines and FAQ sections.
Rotating proxies, headless rendering, and anti-bot bypass are managed for you, so answers return without IP bans.
An AI-mode response bundles the summary and the sources in one go, cutting the pages you fetch.
Spot the keywords firing AI-Mode pages and see which links Google credits as sources in its answers.
Publish content, re-scrape AI-Mode, and check whether your site makes the citation list over time.
Parse the Q-and-A from AI responses and auto-generate FAQ blocks and schema directly in your CMS.
Insert full AI answers and their sources into your vector stores for richer chatbot and retrieval context.
Compare the answer text and citations Google surfaces between you and your competitors.
Schedule geo-specific calls for sensitive terms and trigger alerts when answers signal policy violations.
Sign up and get free credits to start testing the AI Mode API.
Access your unique API key from the dashboard and use it to scrape the data.
GET /google/ai_mode with a query, a country code, and html=true.
Get back parsed text_blocks, a references array of cited sources, and any inline_images.
Start your web scraping journey with 200 free credits. Test our service and upgrade to one of the plans below. Cancel anytime.

I got the free trial and in less than a minute I already integrated with their API to scrape Google, matter of fact they had all the plug-and-play codes ready for me, It was seamless. I am about to upgrade as I have used up my trial credits.
United States
I love how you can use it to scrape data from Google.
Oslo, Norway
Scrapingdog is an awesome service. I use it with my Local Leads Sniper system and thanks to it I have been able to land a few clients since it gave me all the info that my client's Google Business Profile was missing. Great service!
Mexico
Reliable, and simple to use! It is also inexpensive and has packaged solutions for every need (Google, LinkedIn). Highly recommend.
France
Yes, the API has a rate limit depending on your chosen subscription plan. For detailed information on request limits and how to manage them efficiently, please refer to documentation or message us on live chat.
Yes, other than the data from AI mode, we have dedicated APIs for Google Search, Google AI Overviews, Google Lens etc. We do have a Bing Search API, if you want to scrape this search engine.
Our development team continuously monitors changes in Google AI Mode layout and updates accordingly to ensure consistent and reliable data extraction.
Each API request consumes a certain number of credits based on the dedicated API you are using. For example, the Google Search API costs 5 credits per request. So, if you make one request to the Google Search API, it will deduct 5 credits from the available credits in your account.
Get 200 free credits to spin the API. No credit card required!