cloro

Poisoned Google SERPs: what we measured and how we fixed it

Ricardo Batista
Founder, cloro
•8 min read•
On this page

Poisoned Google SERPs are a new failure mode for rank tracking, and a worse one than a block. When Google blocks a scraper, the request fails, the tool retries, and the data is late but right.

Since September 2026 Google has started doing something else with some automated traffic: it answers the search. The page has ten organic results, ads, a People also ask box and an AI Overview. It just has the wrong sites on it.

Nozzle, a rank tracker, named this a poisoned SERP in a study published on 10 October 2026. We saw the same thing in cloro’s SERP API data, in our customers’ reports, and in every competitor we benchmark. Below is what we measured, what we think causes it, and how we fixed it.

What is a poisoned Google SERP?

A poisoned page is not empty and not short. It is a full first page for a different, weaker set of sites.

Here is the query what is a roth ira, US, read twice on 18 October 2026 at 07:00 UTC, a few seconds apart, by two SERP APIs:

RankFull pagePoisoned page
1fidelity.comsmartasset.com
2tiaa.orgcapitalone.com
3irs.govduncangrp.com
4investor.vanguard.comrobinhood.com
5prudential.comstephensheffner.com

The IRS, Vanguard and Fidelity are gone. Nothing in the response says so. Both requests returned success, both pages parsed cleanly, and a rank tracker reading the second one would report that Fidelity dropped out of the top 10 overnight.

Every check a scraper runs (status code, captcha detection, result count, parse success) passes, so only a reader who knows what the page should look like can tell.

Nozzle’s study puts numbers on the damage. On a poisoned page, a tracked site falls out of the top 10 58.6% of the time, against 2.7% normally, and the organic results keep only 20.7% of the previous page’s sites, against 88.5% on a normal day. The gaps fill with Reddit, social sites and pages that have nothing to do with the query. Their worked example: for white label local seo, page one turned into a steakhouse, county health departments and usa.gov.

Why Google would serve wrong results instead of blocking

Google has not said it does this. It has made no statement about poisoned results, and we found no Google source that confirms the practice, its trigger or its target. What follows is our reading of the public record and of our own data.

Google keeps making automated access harder

Over the last two years Google has made automated access to Search steadily harder:

DateChangeSource
January 2025JavaScript required to use Search, to protect it “from bots and evolving forms of abuse and spam”TechCrunch
September 2025The num=100 parameter stops working. Google: “The use of this URL parameter is not something that we formally support.”Search Engine Land
December 2025Google sues SerpApi over scraping that it says reached “hundreds of millions” of requests a dayGoogle
August 2026Result links start passing through Google redirect URLsRelevant Audience
September 2026Trackers report a sharp drop in the Google data they can collect, then pages of wrong resultsSearch Engine Roundtable, Nozzle

The num=100 change made scraping ten times more expensive. Poisoning goes one step further: it makes the data untrustworthy, which hurts a data business more than cost does.

A wrong answer works better than a block

From the defender’s side, a wrong answer works better than a block, and the idea is common in bot defence well outside Google. Cloudflare’s AI Labyrinth feeds suspected bots generated pages instead of blocking them, because, in its words, “blocking malicious bots can alert the attacker that you are on to them” (Cloudflare). A block tells the scraper to change its approach. A plausible wrong answer tells it nothing, so it keeps paying for bad data and has no error to fix.

Google’s rules already cover rank tracking

Its spam policies list “scraping results for rank-checking purposes” as machine-generated traffic that violates them (Google Search Central). Rank trackers, SEO platforms and AI products that ground answers on Google results all sit in that category.

What we measured in our own data

We run a fixed set of prompts through Google every day as part of our monitoring corpus, on our own API and on the SERP APIs we benchmark. That gives us something most reports lack: the same queries, read the same way, for weeks before the problem started.

To score each page we used Nozzle’s rule, slightly simplified. For each query we took the sites that appeared on at least half of our pages from 1 to 14 September. Those are the query’s “usual” sites. A later page counts as poisoned when fewer than half of them appear on it.

Share of our Google pages that were poisoned: 2.9% from 1 to 14 September, 6.5% from 15 to 23 September, 26.5% from 24 to 29 September, 71.5% from 30 September to 12 October, and 10.3% from 14 to 17 October after the fix

  1. We were hit hard. From 30 September to 12 October, 71.5% of our Google pages were poisoned, with single days at 83%. Customers saw it first: the first reports of unusual Google organic results reached our support desk in the last week of September.
  2. It was not only us. SerpApi’s pages for the same prompts, scored against the same baseline, went from 16.0% (15 to 23 September) to 73.2% (24 to 29 September), with days at 89%. SerpApi also had an earlier, separate spike, from 4 to 10 September, that peaked at 56%. That is the first poisoning signal in our data, a week before Nozzle saw collection fall.
  3. Waiting did not fix it for us. Nozzle’s daily rate settled at 5% to 11% after 1 October. Ours stayed above 60% until our fix shipped on 13 and 14 October. Then it fell to about 10% in a day.

The 10% after the fix is not all poisoning. The baseline is five weeks old by then and real rankings drift, so some usual sites have genuinely moved. The rate on the reference queries below, which are read against a current full page, is the cleaner measure.

Our rates run higher than Nozzle’s peak of 27.0%, for two reasons. Our rule is looser (a site is “usual” at 50% of baseline pages, where Nozzle uses 60%, and we do not wait for the sites to come back before counting a page). And Nozzle found the rate depends on how a request reaches Google: one of its request routes ran at 1% to 7% poisoned, another at 9% to 30%. That second finding is the one that pointed us at the cause.

Why some requests get the poisoned page

Our engineers ran the failing queries by hand and changed one input at a time. Most of the usual suspects made no difference.

What we found is that Google appears to sort automated traffic into tiers. One tier gets the normal page. The other gets a weaker page, and it gets it on any query and in any market, not only on the keywords a customer happens to track.

That accounts for the patterns we and others saw:

  • Poisoned Google SERPs look random per query. Two requests for the same keyword a minute apart can disagree.
  • Some markets are hit harder than others. In our data, Danish rank tracking broke worse than US rank tracking.
  • Each provider sees a different rate, because each one reaches Google in its own way.

We do not know what Google uses to place traffic on a tier, and Google has not said. We found a reliable way to tell the two tiers apart, and that was enough to fix it.

How we fixed it

We now check that our access to Google gets the full results page before it serves a customer request, using queries whose correct first page we know. It keeps checking while it serves. Anything that reads degraded is taken out of service until it reads clean again. None of this changes what a customer sends us or how they call the API.

The fix shipped on 13 and 14 October. Our poisoned rate fell from above 60% to about 10% within a day, and on the reference queries below we now return the full page 98% of the time.

How SERP APIs compare on the reference queries now

Since 16 October we run the same reference queries through our API and three other SERP APIs throughout the day, with the same rule for all of them. A failed call counts as a wrong answer.

Share of reference-query reads that returned the full Google page, 16 to 18 October 2026: cloro 98.0%, Oxylabs 83.4%, SerpApi 65.9%, DataForSEO 33.1%

ProviderFull pageDegraded pageUnclearFailed
cloro98.0%0.8%1.2%0.0%
Oxylabs83.4%3.2%0.8%12.6%
SerpApi65.9%31.9%2.2%0.0%
DataForSEO33.1%61.8%5.1%0.0%

Oxylabs rarely returns a degraded page; its gap is failed calls. SerpApi returns the degraded page on about a third of reads, and DataForSEO on most of them. Neither shows it as an error.

Day by day, the picture moves. Oxylabs matched us on 16 October (98.1% against 98.8%), then fell to 78.2% on 17 October and 80.8% on the morning of 18 October. Almost all of that drop is calls that Oxylabs reported as faulted after too many retries. We stayed between 97.5% and 98.8% on each day.

cloroOxylabsSerpApiDataForSEO
100%50%0%
Oct 16, 12:00 UTCOct 18, 06:00 UTC
Share of reference-query reads that returned the full Google page, in 6-hour blocks (UTC). Same queries and rule for every provider; failed calls count as wrong. cloro monitoring corpus, 16 October 12:00 to 18 October 07:50 UTC.

This window is short (16 to 18 October 2026), and we will update the post as it grows. For success rate and latency on a wider set of queries, see our SERP API reliability benchmark.

How to tell if your rank tracker is showing wrong Google results

Whatever provider you use, these checks separate a poisoned page from a real ranking change:

  1. Look for wholesale changes. A real update moves a few sites. A poisoned page replaces most of them at once, then the old page comes back a read or two later. Nozzle found 80% of poisoned spells lasted a single read.
  2. Compare against several weeks of history. Yesterday’s page may itself be poisoned. A baseline of several weeks shows what the page usually holds.
  3. Keep a few reference queries. Pick queries in your market whose first page barely changes (a government site, the category leaders) and track them alongside your keywords. When those break, your other keywords are broken too.
  4. Check Search Console. If your own site “dropped” in the tracker but Search Console shows steady impressions and position, the tracker read a poisoned page.
  5. Ask your provider how it measures quality. Success rate is not enough when the failure returns success. Ask what share of pages it checks against a known-good result, and what it does when a check fails.

Poisoned Google SERPs also reach AI products. An AI Overview appears on 34.9% of poisoned pages against 54.2% normally, per Nozzle, so AI-visibility tracking built on poisoned SERPs under-reports. An agent that grounds its answer on a poisoned page cites the wrong sources with no error to catch.

What we still do not know

  • Why Google places traffic on a tier. We can detect it and route around it. We cannot predict it.
  • Whether this lasts. Google changed something around 4 September and again around 24 September. It will change again, and the reference queries are how we will see it.
  • How big it is across the industry. Nozzle, DemandSphere (about 11% of its daily reads) and TrueRanker (about 30% from page two onward) all measure it differently, and BrightLocal reports it does not affect page one. No two of these numbers compare directly, ours included.

We run every request as a logged-out session, so the page we return is the one an unauthenticated visitor sees. Since 14 October, it is also the page that visitor would see on the full results tier. If your rank tracking moved in ways your Search Console does not explain, run the same keywords through cloro’s SERP API and compare.

Ricardo Batista

About the author

Founder, cloro

Ricardo is one of the founders and engineers behind its SERP and AI-search scraping infrastructure. Before cloro he scaled a financial comparison site to $7M ARR and ran the full-country operations of a unicorn to $65M ARR, then went back to building. He writes about search engine scraping, generative-engine optimization, and turning live search and AI-answer data into something teams can act on.

Frequently asked questions

What is a poisoned Google SERP?

A results page that loads normally, with ten organic results, ads and features, but where most of the sites that usually rank for the query are missing and unrelated sites take their place. Google does not block the request or show a captcha, so the scraper records the page as a success.

Has Google confirmed it poisons search results?

No. Google has made no statement about poisoned results. Its spam policies count "scraping results for rank-checking purposes" as machine-generated traffic, and its terms forbid automated access, but the degraded pages themselves are known only from measurements by rank trackers and SERP APIs, including ours.

How do I know if my rank tracking data is poisoned?

Look for wholesale changes rather than single drops: a page where most of the usual top-10 sites vanish at once, then come back a day later, is a data problem, not a ranking change. Compare against several weeks of history, check the keyword in Google Search Console, and ask your data provider how it measures result quality, not only success rate.

Is the poisoned page a captcha or a block?

No, and that is why it is hard to catch. A captcha or a block fails loudly and gets retried. A poisoned page returns a normal status and a normal-looking page, so it passes every success check a scraper runs.

How did cloro fix poisoned SERPs?

We found that Google sorts some automated traffic onto a degraded results tier. cloro now checks its access to Google against queries whose correct first page we know, before and while it serves customer requests, and takes anything that reads degraded out of service until it reads clean again.