ScavioScavio
Pricing
Tools
Sign InsGet Startedg
Blog
Google12 min readAug 28, 2026

How to Get Real URLs From Google AI Overview Citations

Follow the 302 on each google.com/goto token. Across 336 AI Overview citations from Scavio's /api/v2/google on two runs, 334 were unusable as returned.

Scavio Team

Aug 28, 2026

Try Scavio Free
scavio
AI overview / AEO
Google

Follow the 302 on each google.com/goto token, and do it only for the citations you actually need. Across 336 AI Overview citations pulled through Scavio's POST /api/v2/google on two runs three days apart, 334 were unusable as returned: opaque google.com/goto tokens, truncated fragments, and in two cases the empty string. The organic results in the same responses were almost untouched both times, 5.4% and then 6.5%. If your pipeline broke this week, it broke in the citation layer, not the SERP.

Google confirmed the goto passthrough rollout on 27 August 2026, having tested it since July. The public framing was about abuse prevention. The reporting that followed was mostly about SERP scrapers dying. On our data that reporting has the target wrong, and it was still wrong when we re-measured at four times the sample three days later.

This post was first published on 28 August with a twelve-query run. It was extended on 31 August with a forty-query re-measurement, which is the "Re-measured on 31 August" section further down. Both runs are reported; nothing from the first has been quietly edited out.

What we ran

Twelve queries, deliberately mixed: commercial intent (best crm for small business, best project management software), local (plumber near me austin, commercial real estate broker chicago), technical (python async tutorial, instagram api documentation), retail (nike running shoes), and a couple aimed at our own market (serp api pricing, how to scrape google search results). One run each, gl=us, hl=en, no_cache=true, on 28 August 2026. Twelve credits.

Seven of the twelve returned an AI Overview. Five did not. That split turned out to be the finding.

Grouped bar chart of goto tokens per query. The seven queries with an AI Overview show 3 to 11 unusable citation links each plus a single unusable organic result; the five queries without an AI Overview show none at all.

The citation layer is gone, the SERP is fine

Across the seven queries that produced an AI Overview, ai_overview.references[] held 57 citations. Zero of them carried a usable URL.

  • 54 were google.com/goto tokens, around 200 characters, of the shape https://www.google.com/goto?url=CAESWQHrOzAV3I3-LKGoNnYCl84611JOJ5jGH51E.... No domain, no path, nothing parseable.
  • 3 were truncated fragments. More on those below, because they are ours.

Meanwhile the organic results sitting underneath those same AI Overviews were nearly clean. Out of 111 organic results across all twelve queries, 6 carried a goto token, or 5.4%. The other 105 were ordinary destination URLs that any existing parser would handle without noticing anything had changed.

The 6 were not scattered. Every one of them sat at position 1 or 2, one per query, on six of the seven queries that had an AI Overview. The five queries with no AI Overview returned 44 organic results and not a single goto token anywhere in the response.

We are not going to claim causation from twelve queries. But the separation is total in this sample, and it suggests the rollout is currently scoped to result sets Google is treating as AI surfaces rather than applied blanket-wide. If that holds, the blast radius depends entirely on what your queries look like. A local-services pipeline may not have noticed a thing. An AEO tracker lost everything.

The obvious workaround does not work

The natural reflex on seeing a tokenised link is to reach for the neighbouring field. Our ai_overview.references[] objects carry four keys, and the other three look promising:

JSON
{
  "title": "Best and inexpensive CRM for small business - Reddit",
  "link": "https://www.google.com/goto?url=CAESfQHrOzAV58vWFyyuweWYUHiR9WfcPRBfIQQ89OXhQPoWsnQ-siKV1m-NjLQJ...",
  "snippet": "Zoho CRM and Zoho One as Alternatives: Zoho CRM and Zoho One are recommended as affordable alternatives to HubSpot, especially for...",
  "source": "Reddit"
}

source is not a domain. It is a publisher display name. Across all 57 citations we got values like Reddit, Slack, PCMag, Innowise, Stack Overflow, U.S. Chamber of Commerce, California State Portal | CA.gov and North Hollywood Toyota. Only 2 of 57 contained a dot at all.

This matters because it quietly changes what you can build. If your question is which brands are being cited for this query, source answers it and always did, and you never needed the URL. If your question is which specific page won the citation, source cannot answer it, and title only sometimes can. There is no field left that gives you the page for free.

We had this wrong in our own monitoring for three days. Our internal SERP probe was written to prefer link and fall back to source, on the assumption that source was a bare domain. It is not, and the fallback was silently producing publisher names where the code expected hostnames.

Three of our links were truncated, and that one is on us

Of the 57 citations, 3 did not carry a full token. They came back as literally https://www, https://www.google and https://www.go.

Those are goto URLs cut off mid-string, at three different offsets. They are not a Google behaviour we can point at and they are not a shape any downstream consumer can do anything with, because they parse as valid URLs with a plausible-looking host and then fail on request. A strict parser would accept all three. That is the worst possible failure mode.

We are logging it as our defect rather than dressing it up as an upstream quirk. Until it is fixed, the defensive check is cheap: treat any link under about 40 characters, or any link whose host is www or www.google with no path, as unusable rather than as a URL.

The truncation is deterministic, not random. Re-running the same query hours later put the same fragment on the same citation, which at least makes it reproducible enough to fix.

While checking this we found a second one worth admitting. We have documented a resolve_ai_overview flag that was supposed to expand citation tokens into publisher URLs. It does not work. The field is accepted, dropped without complaint, and absent from the search_parameters echo, and responses with it set to true are identical to responses without it. That is the same silent-drop behaviour we recently disclosed on num, which makes it a pattern rather than an incident: our request validator is ignoring unknown fields where it should be rejecting them. Do not pass the flag expecting resolution, and do not trust a parameter simply because it appears in a code sample. Check the search_parameters echo, which is the only honest statement of what a request actually did.

The token does resolve

The good news is that goto is not encryption. It is a redirect, and it behaves like one.

Requesting a token returns a single 302 with the destination sitting in plain text in the Location header:

HTTP/2 302 location: https://www.reddit.com/r/CRM/comments/1e5141p/best_and_inexpensive_crm_for_small_business/ server: gws

One hop, no chain, no JavaScript, no cookie requirement in our test. Read the Location header and stop; there is no reason to follow the redirect and pull the destination page unless you wanted it anyway.

The cost is in the volume. Our AI Overviews carried between 3 and 11 citations each, averaging 8. Resolving every citation on every tracked query means roughly eight additional requests per query, aimed at google.com, from infrastructure Google is already scrutinising. That is a rate-limiting problem you are choosing to buy, and it scales with your tracking set rather than with your actual need.

Which is why the resolution step should be conditional. Most citation tracking wants to know who got cited and how often. That question is fully answered by source and title at zero extra requests. Resolve the token when you need the page itself, for a content diff or a scrape of the cited article, and not before.

Re-measured on 31 August: the organic side still has not moved

Three days after the run above we repeated it larger. Forty queries instead of twelve, deliberately mainstream consumer intent rather than our own market (best crm for small business, how to fix a leaking tap, symptoms of vitamin d deficiency, how to sell on amazon), one run each, gl=us, hl=en, on 31 August 2026. Forty credits. Then a twelve-query control on the same queries with no_cache set, to rule out the numbers being an artefact of cache reuse.

The headline from the first run survived the bigger sample.

Grouped bar chart comparing the share of unusable links on two runs. Organic results moved from 5.4 percent on 28 August to 6.5 percent on 31 August, while AI Overview citations stayed at 100 percent and 99.3 percent respectively.

Organic results barely moved. 23 of 354 organic results carried a goto token, 6.5%, against 5.4% on 28 August. The uncached control put it at 6.7%, 7 of 104. Three runs, three numbers inside a point and a half of each other. Whatever the rollout is doing, it is not steadily eating the organic layer, and a rank tracker that reads organic positions is not broken by it.

The position rule got tighter, not looser. On 28 August the six tokens sat at position 1 or 2. At n=40, 22 of the 23 sat at position 1, with a single outlier at position 3. The control put six at position 1 and one at position 2. Across the two runs where we recorded exact positions, 28 of 30 organic goto tokens were the top result, and the six from 28 August all sat at position 1 or 2. If you are writing a defensive parser, this is a position-1 phenomenon and you can scope the guard to match.

The AI Overview correlation held at four times the sample. Seven of the forty queries returned no AI Overview. Those seven returned 64 organic results and zero goto tokens. With the 44 from 28 August, that is nothing at all in 108 organic results on queries with no AI Overview, and the control added 15 more of the same. The first version of this post called that correlation provisional on twelve queries. It is still a correlation and we still cannot show causation, but it is now considerably harder to explain away, and it remains the most useful thing here to design around: if your queries do not trigger AI Overviews, this rollout has not reached you.

The citation layer is still gone. The 33 queries that did return an AI Overview carried 279 citations. 258 were goto tokens, 19 were truncated or empty, and 2 were real URLs — one of which was a google.com/search?q=product&prds=... shopping link rather than a publisher page. The control agreed at 86 of 87 unusable. The tokens themselves ranged from 144 to 308 characters, averaging 190, which is wide enough that a fixed-length check is the wrong guard; match on the google.com/goto prefix instead. source is still not a domain either: 19 of 279 values contained a dot, against 2 of 57 last time, which is the same answer at a larger sample rather than a change.

One number did move, and we are not going to read a trend into it. 33 of 40 queries returned an AI Overview here against 7 of 12 on 28 August, but the query mixes were different on purpose, and AI Overview presence is known to vary between identical requests. Treat that as a property of the two query sets, not as evidence of a widening rollout.

Our truncated links are worse than we described them

The first version of this post reported 3 truncated links out of 57 and called them goto URLs cut off mid-string. At n=40 there are 19 out of 279, and that description was wrong. They are not all cut-off goto tokens:

  • Several are truncated Google image-thumbnail URLs: https://encrypted-tbn2.g, https://encrypted-t, https://encr.
  • One is a cut-off ordinary URL, https://www.go, on a Freddie Mac citation.
  • Two are the empty string.

So the defect is a truncation applied to whatever the link happens to be, not something specific to the goto shape, and it can produce a zero-length value as readily as a plausible-looking short one. The defensive check from the first version still holds and needs one addition: treat any link under about 40 characters as unusable, and test for empty before you test for a scheme, because "" will not match a heuristic that looks for https://www.

This is still our defect and it is still open. The first version said this post would say so when the fix shipped. It has not shipped.

A correction to our own advice about the echo

An earlier section here tells you the search_parameters echo is the only honest statement of what a request actually did, off the back of num and resolve_ai_overview being accepted and silently dropped. That rule needs an exception, and running the control here is what surfaced it.

no_cache does not appear in search_parameters either. Unlike the other two, it works. Our request validator strips unknown keys before the echo is assembled, so no_cache is read off the raw request body upstream of validation and never reaches the echo at all. The parameter is honoured; the echo simply cannot see it.

The corrected rule is narrower than the one we gave you: a parameter missing from the echo is unconfirmed, not disproven. If a flag matters to your freshness guarantee or your bill, test its effect rather than reading the echo for it. That the echo cannot distinguish "silently dropped" from "handled before validation" is a reporting defect on our side, and it joins the truncation on the same list.

What this does not show

One run, twelve queries, one locale, one morning. Specifically:

  • We tested gl=us and hl=en only, on both runs. Whether the rollout is uniform across locales is still untested here, and it is the largest hole left.
  • We did not test whether tokens expire, or whether they are bound to a session or an IP. Ours resolved fine minutes after capture, which rules out a very short TTL and nothing more.
  • Fifty-two queries across two runs still cannot establish that AI Overview presence causes goto injection. What we have is a correlation that did not break when the sample quadrupled, which is worth designing around and is not the same thing as a mechanism.
  • The two runs used different query sets by design, so the jump in AI Overview presence between them is not comparable and we are not treating it as a trend.
  • We have not re-run the same query repeatedly within a single day. Both runs are one draw per query, so per-query stability of the token is still unmeasured.

What you now own

If you are tracking AI Overview citations, this rollout added a permanent job to your backlog, and the second run says it is not a job that expires. You now own a token-resolution layer: a request per citation, a Location header parse, a retry policy for when Google rate-limits the resolution traffic, a truncation guard for links that look valid and are not, and an empty-string check ahead of it. You own noticing the next time Google changes the token shape, which on the evidence of the last six weeks is a question of when rather than whether. And you own the fact that none of this surfaces as an error, because every one of these responses is a 200 carrying a string that looks like a URL.

What you do not own, on this evidence, is a rewrite of your organic parsing. That is the practical dividend of measuring twice: 6.5% of organic results, with 28 of the 30 tokens whose positions we logged sitting at position 1, is a guard on the top result rather than a migration.

Scavio absorbs the fetch layer under that. The SERP request, the proxy and exit-node rotation, the AI Overview block resolving at all, and no_cache when you need a genuinely fresh draw are ours, at 1 credit per call, $0.01 per credit, no monthly commitment. A hundred tracked queries sampled five times daily is 500 credits a day, about $5, and when Google changes the shape again it is our on-call rather than your weekend. We are still not resolving goto tokens server-side, and we are not going to claim we are while 19 of our own links in 279 come back truncated or empty. Both are on the fix list, and this post will say so when they ship rather than before.

Start with 50 free credits, no card required — enough to run the full forty-query re-measurement above with the twelve-query control on top, and check every number in this post against your own capture.

Endpoint reference lives in the Google Search API docs, and the companion piece on how many repeats a citation set actually needs covers the sampling side of the same problem.

Frequently asked questions

What is the URL for an AI Overview citation?

As of the goto rollout it is usually not a URL at all. Across two runs through Scavio's /api/v2/google, 334 of 336 citation links were unusable as returned: opaque google.com/goto tokens of 144 to 308 characters carrying a CAES... payload, truncated fragments, and two empty strings. The token is a real endpoint and it does redirect, but nothing in the string tells you where it goes. You have to make a request to find out.

What is google.com/goto?

A passthrough redirect Google began testing in July 2026 and confirmed as rolling out on 27 August 2026. Instead of putting a destination URL in the results, Google puts a tokenised google.com/goto link that 302s to the destination when clicked. Google's public comment framed it as a technical measure against abuse. The practical effect is that anything reading result links now reads tokens.

How do I resolve a google.com/goto token to the real URL?

Issue a request to the token and read the Location header on the 302 rather than following it. One hop is enough; we saw exactly one redirect per token, no chains. The catch is volume. A single SERP with an AI Overview carried up to 11 citations, so full resolution means up to 11 extra requests per query, from an IP Google is already watching.

Can I use the source field instead of the link?

Not as a URL. Scavio's ai_overview.references[] carries a source field, and it is a publisher display name, not a domain: we saw Reddit, Slack, PCMag, U.S. Chamber of Commerce and North Hollywood Toyota. Only 2 of 57 source values even contained a dot. It is good enough to count which brands got cited, and useless if you need the page.

Did the goto rollout break Google SERP scraping?

Much less than the headlines suggested, and re-measuring did not change that. Across 354 organic results on 40 queries on 31 August, 23 carried a goto token, 6.5%, against 5.4% on a 12-query run three days earlier and 6.7% on an uncached control. The other 93.5% were ordinary destination URLs any existing parser handles. If your pipeline reads organic results you saw a rounding error. If it reads AI Overview citations you lost the whole layer.

How do I scrape Google AI Overview citations now?

Read ai_overview.references[] from Scavio's POST /api/v2/google at 1 credit per call, treat title and source as the reliable fields, and resolve link only for the citations you actually need to visit. Resolving every token on every query is the expensive mistake, because most citation tracking only needs to know who was cited, not to fetch the page.

Where does Google AI Overview get its information from?

From pages it cites in the reference list, which do not have to be the pages ranking in organic results underneath. That gap is the whole reason citation tracking exists as a separate discipline from rank tracking, and it is why losing the citation URLs matters more than losing a couple of organic links.

Is there a URL for Google AI Mode?

AI Mode is a separate surface with its own response, not a variant of the AI Overview block, and Scavio exposes it on its own endpoint rather than inside the SERP response. If you are tracking citations across both, treat them as two datasets; the overlap between what AI Mode cites and what an AI Overview cites is not reliable enough to substitute one for the other.

Has the google.com/goto rollout spread to organic search results?

Not on our measurements. We checked on 28 August (6 tokens in 111 organic results, 5.4%) and again on 31 August at four times the sample (23 in 354, 6.5%), with an uncached control at 6.7%. Three runs inside a point and a half of each other is not a rollout eating the organic layer. The reporting that framed this as the end of SERP scraping had the target wrong; the damage is confined to the AI Overview citation layer.

Where in the results do google.com/goto tokens appear?

Almost always at position 1. Of the 23 organic tokens in our 40-query run, 22 sat at position 1 and one at position 3, and an uncached control put six of seven at position 1. Across the two runs where we recorded exact positions, 28 of 30 were the top result. Every token also appeared on a query that returned an AI Overview. Queries with no AI Overview produced zero tokens in 108 organic results across the two main runs, so a defensive parser can scope its guard to the top result on AI Overview queries rather than rewriting the whole parse.

Does no_cache work on the Scavio Google SERP API?

Yes, but you cannot confirm it from the response. Scavio's validator strips unknown keys before search_parameters is assembled, and no_cache is read off the raw request body upstream of that, so it is honoured and never echoed. This matters because two other parameters, num and resolve_ai_overview, are accepted and genuinely dropped. A parameter missing from the echo is unconfirmed, not disproven, so test a flag's effect rather than reading the echo for it.

Search, social and ecommerce data as JSON

  • One API key for every platform
  • Pay per request with credits
  • Works with MCP, LangChain and n8n
Try Scavio Free

50 free credits, no credit card

On this page

  1. What we ran
  2. The citation layer is gone, the SERP is fine
  3. The obvious workaround does not work
  4. Three of our links were truncated, and that one is on us

Related articles

View all
  • scavio
    AEO / AI citations
    AI overview
    How Reliable Is AI Overview Citation Tracking? 30 Identical Requests
  • scavio
    Pagination / Lead generation
    Google
    How to Get More Than 10 Results From a Google Search API
ScavioScavio

One scraper API for every social, search, e-commerce and real estate platform. Built for AI agents.

Product

  • Features
  • Pricing
  • Dashboard
  • Affiliates

Developers

  • Documentation
  • API Reference
  • Quickstart
  • MCP Integration
  • Python SDK

Alternatives

  • Tavily Alternative
  • SerpAPI Alternative
  • Firecrawl Alternative
  • Exa Alternative
  • Serper Alternative
  • Tavily vs Scavio
  • SerpAPI vs Scavio
  • All alternatives
  • Compare Scavio vs alternatives

Search APIs

  • Google Search API
  • Amazon Product API
  • YouTube API
  • Reddit API
  • Walmart Product API
  • TikTok API
  • Instagram API

Tools

  • All Tools

© 2026 Scavio. All rights reserved.

Featured on TAAFT
Terms of ServicePrivacy Policy