API Reference
Read Google's AI Overview
GET /google-ai-overview — bearer auth, JSON responses, billed per successful request.
GET/google-ai-overview
Read Google's AI Overview
Searches Google for a query and returns the AI Overview panel: the generated answer text and the source pages it cites. The overview is expanded before reading; the consent dialog on first visit is automatically dismissed.
When to use it: Use this when you need the synthesized answer Google shows above organic results, not the results themselves. Pair domain with country to get region-specific overviews in the correct language and market context.
- Always charged for missing overviews: A query with no AI Overview returns
ai_overview: nullandstatus: donebut still costs 30 credits. - Premium proxy default:
premiumdefaults totruebecause standard proxies are frequently blocked by Google; explicitly setfalseto opt out. - Asynchronous fallback: A
202response means the crawl is queued; collect results from/crawl/{job}where fields are nested underdata.ai_overviewanddata.ai_overview_sources.
| Parameter | In | Type | Description |
|---|---|---|---|
| query * | query | string | The search, as you would type it into Google. Up to 500 characters. |
| domain | query | string | The extension of the Google to ask: `com`, `de`, `es`, `co.uk`, `com.br` and so on. The overview is written in that Google's language, so this is usually what decides it. Pair it with `country` to search from inside that market too. |
| premium | query | string | Search through the premium proxy pool rather than the standard one. **On by default**, because the standard pool is the one Google turns away; send `false` to use the standard pool. Free either way, unlike on `/crawl` -- the price is flat. Accepts `true`, `false`, `1`, `0`, `yes`, `no`, `on`, `off`, in any case. Anything else is refused. |
| country | query | string | The country to appear to be searching from, as a two-letter ISO 3166-1 alpha-2 code. Free. Required to use `city`. |
| city | query | string | The city inside that country, as the pool spells it. **Requires `country`.** Free here. Letters, digits, hyphens and underscores only; a multi-word city is written `new_york`. |
| key | query | string | The API key, as an alternative to the `Authorization` header. Ignored when a header is present. |
request.sh
curl -X GET "https://app.irmu.com/api/google-ai-overview?query=&domain=&premium=&country=&city=&key=" \
-H "Authorization: Bearer $IRMU_API_KEY"200.json
{
"query": "cómo se monta en tren",
"domain": "es",
"url": "https://www.google.es/search?q=c%C3%B3mo+se+monta+en+tren",
"ai_overview": "Montar en tren como pasajero es un proceso sencillo que se divide en varios pasos…",
"sources": [
{
"title": "Remitly",
"url": "https://www.remitly.com/blog/es/viajar/viajar-en-tren/"
}
],
"credits_charged": 30,
"credits_remaining": 970,
"job_id": "0198a9b6-1f4c-7c3e-9a2b-5d8e6f0a1b23_0198a9b6-2a71-7f0d-8c44-9e1b3c5d7f02",
"status": "done",
"position": null,
"debug": null,
"error": null
}request.js
const res = await fetch("https://app.irmu.com/api/google-ai-overview", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.IRMU_API_KEY}`,
"Content-Type": "application/json",
}
});
const data = await res.json();request.py
import os, requests
res = requests.get(
"https://app.irmu.com/api/google-ai-overview",
headers={"Authorization": f"Bearer {os.environ['IRMU_API_KEY']}"}
)
print(res.json())| Status | Meaning |
|---|---|
| 200 | Google's results page was read. `ai_overview` is null when it showed no overview for the query. |
| 202 | Paid for and still going. Collect it from `/crawl/{job}`, where the answer arrives under `data.ai_overview` and `data.ai_overview_sources` rather than lifted out the way it is here. |
| 401 | No key, an unknown key, or a caller that is not an organization. |
| 402 | Not enough credits, or the daily limit is reached. Nothing is charged and no attempt is recorded. |
| 422 | A malformed request -- no query, a query over the limit, a domain that is not a Google domain's extension, a city with no country, or a flag that is not a yes or a no. |
| 500 | The crawl failed. **The credits are refunded**, so `credits_charged` is `0`. |
| 503 | The crawl could not be routed through a proxy pool. Nothing is charged. |
Start building with Irmu today
200 free credits every month, no card required. Every API, every integration, one key.