Google results return encrypted /goto URLs instead of direct links
Version: karust/openserp:latest pulled 2026-09-28 (API reports meta.version: "2.1")
What I did
docker run -d --name openserp --restart unless-stopped -p 127.0.0.1:7000:7000 karust/openserp:latest serve -a 0.0.0.0 -p 7000
curl "http://127.0.0.1:7000/google/search?text=seoptimer&limit=20&lang=ES®ion=ES&features=false"
What I got
Every organic result looks like this — encrypted redirect URL, domain is google.es, display_url is google.es › goto:
{
"rank": 1,
"type": "organic",
"title": "...",
"url": "https://www.google.es/goto?url=CAESWAHrOzAVpFXxDsVNoqe1v8jrAP-E8voZNDQ",
"display_url": "google.es › goto",
"domain": "google.es"
}
Same behaviour with lang=ES/region=ES, with and without features, cached or fresh (took_ms 4600+ on fresh). /bing/search for the same query returns direct URLs + real domains, so only the Google parser path is affected.
Why it matters
Domain-based rank tracking is impossible: there is no way to tell which result belongs to which site. The opaque url= token does not decode to the target (tried base64url — binary protobuf-ish payload, 97 bytes).
Question
Is this a known parser drift with Google's current markup, a consent/redirect artifact of datacenter IPs, or is there a flag (raw mode? query param?) to get direct result URLs out of the Google engine? Happy to provide full responses / test other params.
Google results return encrypted
/gotoURLs instead of direct linksVersion:
karust/openserp:latestpulled 2026-09-28 (API reportsmeta.version: "2.1")What I did
docker run -d --name openserp --restart unless-stopped -p 127.0.0.1:7000:7000 karust/openserp:latest serve -a 0.0.0.0 -p 7000 curl "http://127.0.0.1:7000/google/search?text=seoptimer&limit=20&lang=ES®ion=ES&features=false"What I got
Every organic result looks like this — encrypted redirect URL,
domainisgoogle.es,display_urlisgoogle.es › goto:{ "rank": 1, "type": "organic", "title": "...", "url": "https://www.google.es/goto?url=CAESWAHrOzAVpFXxDsVNoqe1v8jrAP-E8voZNDQ", "display_url": "google.es › goto", "domain": "google.es" }Same behaviour with
lang=ES/region=ES, with and withoutfeatures, cached or fresh (took_ms4600+ on fresh)./bing/searchfor the same query returns direct URLs + real domains, so only the Google parser path is affected.Why it matters
Domain-based rank tracking is impossible: there is no way to tell which result belongs to which site. The opaque
url=token does not decode to the target (tried base64url — binary protobuf-ish payload, 97 bytes).Question
Is this a known parser drift with Google's current markup, a consent/redirect artifact of datacenter IPs, or is there a flag (raw mode? query param?) to get direct result URLs out of the Google engine? Happy to provide full responses / test other params.