The Google AI Overview scraper by cloro returns the AI Overview block as structured JSON: the answer text and markdown, every cited source with position, and the organic results alongside it for comparison.
- Get an API key at cloro.dev.
- POST a query to
https://api.cloro.dev/v1/monitor/google. - Read the parsed fields from the JSON response.
AI Overview is returned by the Google Search endpoint with include.aioverview, in the same response as the organic results, so you can compare what ranks against what gets cited in one request. The two diverge sharply: citations from top-10 organic pages fell from 76% to 38% over the period Ahrefs measured across 4 million URLs.
import requests
payload = {
'query': 'what is a serp api',
'country': 'US',
'include': {'aioverview': True},
}
response = requests.post(
'https://api.cloro.dev/v1/monitor/google',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json=payload,
)
print(response.json())curl -X POST https://api.cloro.dev/v1/monitor/google \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "what is a serp api", "country": "US", "include": {"aioverview": true}}'Node.js and async/webhook examples are in the endpoint documentation.
| Parameter | Description | Default |
|---|---|---|
query* |
The search query | – |
country |
Country code for localized results (US, GB, DE) |
US |
location |
Google canonical location name for geo-targeting. Mutually exclusive with uule |
– |
uule |
Pre-encoded Google UULE string. Mutually exclusive with location |
– |
device |
desktop or mobile |
desktop |
pages |
Number of result pages to return | 1 |
include.aioverview* |
Include the AI Overview block | false |
include.aioverview.markdown |
Return the Overview as Markdown | false |
include.paaAioverview |
Include AI Overviews inside People Also Ask | false |
include.html |
Return a URL to the full HTML (expires after 24h) | false |
* Required
{
"success": true,
"result": {
"aioverview": {
"text": "A SERP API returns search engine results as structured data...",
"markdown": "A **SERP API** returns search engine results...",
"sources": [
{ "position": 1, "url": "https://example.com/serp-api", "title": "What is a SERP API", "domain": "example.com" }
]
},
"organicResults": [
{ "position": 1, "title": "SERP API guide", "url": "https://example.com/guide", "domain": "example.com" }
]
}
}aioverview.textandaioverview.markdown— the Overview answer.aioverview.sources— every cited URL with position, title and domain. This is the field that matters for GEO work.organicResults— returned in the same response, so you can measure the gap between ranking and citation on the same query.
A missing Overview and an unparsed Overview look identical if you only check for an empty field, so capture ground truth by hand on a sample before trusting a trend line built from this endpoint.
Full field-level schemas are in the endpoint reference.
- Citation tracking — whether your domain is cited in the Overview, and at what position.
- Rank-versus-citation analysis — the same response carries both, so the gap is measurable directly.
- Trigger-rate research — how often an Overview fires for a query class, which varies enormously by intent.
- Competitive monitoring — which domains Google's Overview trusts on your category's questions.
Different content systems on the same SERP. Measured across 1.3 million AI Mode citations, the two cite the same URLs only 13.7% of the time. Use the AI Mode scraper for that surface.
No, and the rate varies sharply by intent rather than averaging out. Commercial and question-shaped queries trigger it far more often than navigational ones.
Yes, via include.paaAioverview.
Overviews are not deterministic, and a parser miss is indistinguishable from an absent Overview in the response alone. Sample by hand periodically to separate the two.
- Endpoint reference: cloro.dev/docs
- Product page: cloro.dev/ai-overview
AI Mode · ChatGPT · Copilot · Gemini · Google Search · Google News · Grok · Perplexity
Questions or support: r/cloroapi.
