Google SERP + AI Overviews API
Pricing
from $5.00 / 1,000 search completeds
Go to Apify Store
Google SERP + AI Overviews API
SerpAPI-style Google search JSON: AI Overview text + citations + organic results in one clean response per query. Batch up to 1000 queries per run.
Pricing
from $5.00 / 1,000 search completeds
Rating
0.0
(0)
Developer
subimpact
Maintained by CommunityActor stats
2
Bookmarked
19
Total users
18
Monthly active users
18 hours ago
Last modified
Categories
Share
SerpAPI-style Google search JSON — AI Overview answer + citations + organic results + knowledge graph + top stories + local results in one response per query, at a fraction of the cost.
- Batch up to 1000 queries per run (array input, one API call) — processed with 10-way concurrency (configurable 1–30), rows stream to the dataset as they complete (a timed-out run still delivers partial results)
- AI Overview parsed into structured
text_blocks(paragraphs, headings, lists) +references(citation title + link + snippet) — including deferred AIOs Google generates asynchronously (resolved via Google's own/async/folsrchendpoint, no browser rendering, no third-party API) - Citation tokens auto-resolved: AI Overview citations that arrive as
/goto?url=<token>are resolved to their real destination via Google's redirect endpoint (readLocationheader, ~90ms each), and so are raw/goto?tokens in organic results, top stories, discussions and local results. The original token is kept asgoto_urlon the item for provenance. If a token genuinely cannot be resolved, the citation is markedunresolved: trueandsearch_metadata.unresolved_citationsreports the count — never a silent failure. - Rich SERP surface: organic results, knowledge graph (facts), top stories, local results (rating/reviews), People Also Ask, discussions & forums
- Geo targeting via
location(e.g. "New York, NY", "Kuala Lumpur") — Google uule encoding, same as SerpAPI - Country (
gl) + language (hl) targeting - Pay per search — $0.005 per completed query (0.5¢ each; store badge $5.00 / 1,000 searches is the same price). Queries that return no parseable content (status
Empty), return a partial page with no organic results (statusPartial), or error out are not charged. - Buyer pays platform usage on top (
$0.004/query) — **$0.009 all-in per query**, ~$1.05 for 120 queries - What you get for $0.005: the full SERP in one row — AI Overview + citations, organic results, knowledge graph, top stories, local results, People Also Ask, discussions & forums. The AI-Overview-only alternatives charge $0.003–0.015 per AI Overview alone and return nothing else.
Input
{"queries": ["best crm for startups", "what is retrieval augmented generation"],"gl": "us","hl": "en","maxResults": 10,"location": "New York, NY","retryDeferredAIO": true,"retryDeferredMaxFetches": 2,"captureRawHtml": false,"concurrency": 10,"retryDeferredPoll": false,"resolveGotoTokens": true}
| Field | Type | Default | Description |
|---|---|---|---|
queries | array of strings | required | Search queries (max 1000 per run) |
gl | string | us | Two-letter country code (us, my, uk, sg…) |
hl | string | en | Two-letter language code (en, ms, zh…) |
maxResults | integer | 10 | Max organic results per query (1–10) |
location | string | (proxy IP geo) | Geo target, e.g. "New York, NY". Google uule-encoded server-side. |
retryDeferredAIO | boolean | true | Resolve deferred AI Overviews (Google generates some answers asynchronously). Uses the embedded /async/folsrch template via a datacenter proxy. Extra cost only on affected queries. false = always single fetch. |
retryDeferredMaxFetches | integer | 2 | Max total fetches per query when a deferred AI Overview shell is detected (1–5). 1 = single fetch, same as retryDeferredAIO: false. |
captureRawHtml | boolean | false | Save the raw SERP HTML for every query to the key-value store (key raw-<query>-<ts>.html). For building golden test corpora / debugging selector drift. Adds ~200–400KB per query to KV storage. |
concurrency | integer | 10 | Parallel queries (1–30). A/B measured: c5=34s, c10=35s, c20=65s for 20 queries — the SERP proxy pool is the bottleneck, so beyond ~10 workers latency balloons. 10 = same throughput as 5 with headroom for AIO-heavy sets. |
retryDeferredPoll | boolean | false | Legacy poll re-fetch for deferred AIOs (re-fetch up to retryDeferredMaxFetches times with backing-off delay 1.5s → 3s → 6s and a fresh proxy IP per attempt, keep richest). Off by default — folsrch resolves 90%+ of deferred AIOs; the poll recovered 0/120 in the stress test. Enable only if folsrch regresses. |
resolveGotoTokens | boolean | true | Resolve AI Overview citations that still carry a raw /goto?url=<token> after the resolution chain by reading the Location header of google.com/goto?url=<token> (~90ms each; ~11.5% of citations need it). Original token kept as goto_url on the reference. Failures keep unresolved: true + unresolved_citations count. Verified 93/93 (EnterRank) + 6/6 (our probe). |
Output
One dataset item per query:
{"ai_overview": {"text_blocks": [{ "type": "paragraph", "snippet": "The best CRM for a startup depends on your core workflow…" },{ "type": "list", "list": [{ "title": "…" }] }],"references": [{ "title": "CRM for Startups: Free Software to Scale Your Business", "link": "https://www.hubspot.com/products/crm/startups", "snippet": "…", "index": 0 }],"resolved_by": "folsrch"},"organic_results": [{ "position": 1, "title": "…", "url": "https://…", "displayed_link": "…", "snippet": "…" }],"people_also_ask": ["…", "…"],"search_metadata": { "status": "Success", "created_at": "…", "total_time_taken_ms": 3088, "google_url": "…" },"search_parameters": { "q": "best crm for startups", "gl": "us", "hl": "en", "location": "New York, NY" },"knowledge_graph": {"title": "…","description": "…","source": { "name": "Wikipedia", "link": "…" },"facts": [{ "label": "Born", "value": "…" }]},"top_stories": [ { "title": "…", "url": "…", "source": "The Economist" } ],"local_results": [ { "title": "…", "rating": "4.9", "reviews": 534 } ],"discussions_and_forums": [ { "title": "…", "url": "…", "source": "reddit" } ],"selector_strategy": {"organic_results": "primary","people_also_ask": "primary","knowledge_graph": "fallback","top_stories": "structural","local_results": "primary","discussions_and_forums": "primary"}}
ai_overview.resolved_byisfolsrch(deferred answer resolved via Google's async endpoint),poll(recovered via re-fetch), or absent (answer was inline in the SERP).- Modules are
nullwhen Google returns none for that query. search_metadata.statusisSuccess(content parsed),Partial(organic results missing even after re-fetch — not charged),Empty(no parseable content — not charged), orError(fetch failed after retries — not charged).search_metadata.modules_present(all rows) records which modules actually parsed as booleans:organic_results,ai_overview,people_also_ask,knowledge_graph,top_stories,local_results,discussions_and_forums. No more guessing from status strings — an organic-less row that still delivered a full AI Overview is visible as{ organic_results: false, ai_overview: true, ... }. OnPartialrows the warning also names the modules that were present.search_metadata.partial_recoveredistruewhen organic results were recovered by the partial re-fetch (charged normally).search_metadata.drift_evidence(present onEmpty/Partialrows) is the key of the raw HTML sample saved to the actor's key-value store — grab it for instant diagnosis of selector drift.selector_strategyrecords which parser strategy fired per module:primary(current Google classes),fallback(stable anchors), orstructural(class-free heuristics).primaryeverywhere = healthy;fallback/structural= Google rotated classes but results still parse.adsandrelated_searchesare not included — the Google SERP proxy serves a server-rendered variant where those JS-only modules are absent (verified: thetadsad container arrives empty, "Sponsored" labels never appear). This keeps results clean and ad-free.- No pagination field — each query returns page 1 results; batch more queries for broader coverage.
Pricing
- $0.005 per completed query (pay-per-event,
search-completed) - Platform usage billed on top, paid by the user: Google SERP proxy ~$0.0025/query + compute ~$0.0015/query (amortized at batch scale)
- Deferred-AIO resolution adds a shell re-fetch + a datacenter proxy call on affected queries only — the datacenter leg is not billed as SERP usage
- All-in ≈ $0.009 per query → 120 queries ≈ $1.05
- vs the leading AI-Overview-only alternative: ~$1.81 for the same 120 queries
- vs SerpAPI (prices checked Aug 2026): $0.025/search (Starter, $25/mo, 1,000 searches), $0.015/search (Developer, $75/mo), $0.01/search (Production, $150/mo) — all require a monthly plan. Ours: ~$0.009 all-in with no subscription, no minimum → ~2.8× cheaper than their entry paid tier. (SerpAPI's premium: SOC 2, uptime SLAs, 100+ search engines.)
- Note: tiny runs (1–5 queries) pay ~$0.02–0.03/query effective due to container cold start — batch ≥25 for best economics
Use cases
- AEO/GEO monitoring — track whether your brand appears in AI Overviews and which sources Google cites, per market with
location - SEO rank tracking at scale
- Research / data collection for LLM training sets
- Competitive SERP intelligence
Costs & limits
- 1000 queries max per run (bump the array; batch in chunks for more)
- Each query = 1 Google SERP request through Apify's Google SERP proxy (+ up to 2 extra requests only when Google defers the AI Overview)
- 10-way concurrency (default): 1000 queries ≈ 30 min (fits the 7200s timeout); rows stream to the dataset as they complete. A/B measured: c5=34s, c10=35s, c20=65s for 20 queries — the SERP proxy pool is the bottleneck, so beyond ~10 workers latency balloons. Set
concurrencylower (e.g. 5) for gentler load. - Faster than 30 min? Split the batch into parallel runs (e.g. 2× 500 queries) and fire them concurrently — each run gets its own proxy pool share. Your plan's concurrency limits apply; rows land in separate datasets you can merge by
search_parameters.q. - 7200s timeout (2h), 4096 MB memory
- Build tags: the actor runs the
stablebuild by default (verified, production-hardened). New builds are pushed tolatestand promoted tostableonly after verification — buyers are never exposed to unverified code.

