Google spurious results: we tested 4 SERP APIs
Google spurious results hit rank trackers. We sent 40 keywords through 4 SERP APIs in the same hour: 3 agreed, 1 returned a different list for 28 of 40.
The looot team · , updated · 7 min read
On this page
Google spurious results are search results Google serves to traffic it takes for a bot, and rank trackers are bots. We sent the same 40 keywords through 4 SERP APIs on 2026-10-13, within 11 minutes. Three APIs returned close to the same top 10. The fourth returned a different list for 28 of the 40 keywords.
The story broke in the SEO press this month. DemandSphere wrote that Google "has also started to introduce spurious results into their SERPs when they detect alleged bot traffic", and that it has "impacted ~11%" of the result pages DemandSphere collects each day (DemandSphere, 2026-10-07, read 2026-10-13). Nobody had published numbers across SERP APIs. We resell all four APIs we tested, and we publish the results as measured, including the bad ones. This post gives the method, the numbers, and a way to check your own keywords.
What are Google spurious results?
They are result pages that differ from what a person would see, served when Google suspects automated traffic. DemandSphere's post quotes an SEO who saw Google "fill the entire first page with UGC content", meaning forums and social posts, and names Ahrefs and Semrush among the tools discussed. DemandSphere says the 11% figure could change quickly.
For anyone who scrapes Google search results, the risk is quiet. The API call succeeds, the JSON is well formed, and the positions are wrong. A rank tracker built on that data reports a drop that never happened.
How we tested 4 SERP APIs for spurious results
We picked 40 common US keywords across shopping, how-to, software, finance and local intent, such as "best running shoes", "mortgage rates today" and "what is an api". None came from our own search data. Each keyword went to four `google.serp.organic` providers in the looot catalog, US and English, between 23:01 and 23:12 UTC on 2026-10-13:
- Serper, `serper-search`
- AnyAPI, `anyapi-run-google-search`
- DataForSEO, `dataforseo-serp-google-organic-live-regular`, depth 10
- ScrapeCreators, `scrapecreators-google-search`
We kept the organic results only, normalized each URL, and compared the top 10 of each provider with the other three. A list counts as diverged when it shares 2 URLs or fewer with every other provider's list for the same keyword. All 160 calls completed and none came back empty. The whole test, with the probes and the rerun below, was 194 calls.
What the test measured
| Provider | Calls completed | Average organic results | Diverged lists | Median best overlap with another provider |
|---|---|---|---|---|
| Serper | 40 of 40 | 9.5 | 0 of 40 | 8 of 10 |
| AnyAPI | 40 of 40 | 8.4 | 0 of 40 | 8 of 10 |
| ScrapeCreators | 40 of 40 | 10.0 | 0 of 40 | 6.5 of 10 |
| DataForSEO, live regular | 40 of 40 | 8.0 | 28 of 40 | 1 of 10 |
Serper and AnyAPI shared 7.4 URLs of their top 10 on average, and each shared about 6 with ScrapeCreators. DataForSEO shared between 2.1 and 2.7 with each of the others. DataForSEO's depth of 10 counts SERP features such as AI overviews and "people also ask" as items, which is why it returned fewer organic rows. That explains the count, not the different URLs.
The diverged lists were not random noise. For "mortgage rates today", the three agreeing APIs returned national rate pages, while DataForSEO returned state pages for Texas, Minnesota and Nevada. For "what is an api", the three returned AWS, IBM and Wikipedia near the top, and DataForSEO returned none of the three.
Is it the provider or is it Google?
We cannot tell from outside, and a rerun suggests the answer is not a fixed setting. Between 23:13 and 23:17 UTC we ran the first 10 keywords again on Serper, on the same DataForSEO endpoint, and on DataForSEO's advanced endpoint.
- Serper kept 8.2 of its 10 URLs on average from one run to the next.
- The same DataForSEO endpoint kept 4.5 of 10. Its new list shared 2 URLs or fewer with Serper for 7 of the 10 keywords.
- DataForSEO's advanced endpoint shared 2 URLs or fewer with Serper for 5 of 10, on different keywords. On 3 keywords it shared 8 of 10.
So the same provider flipped between a list that matched the others and a list that matched almost nothing. That fits Google answering some fetches with a different page, the behavior DemandSphere describes, more than a provider bug. It does not prove it.
Two more things we did not see. No list in the test was filled with forums and social posts: the most user-generated results in one top 10 was 5, and the share was 15 to 19% for every provider. And agreement is not truth. Two providers that agree may share an upstream source, which we cannot see.
How to check your own keywords
Run each keyword through two providers and compare before you trust a ranking change. One call per provider per keyword is enough. The table reads today's price per call for each provider in this test from the looot catalog when the page loads.
The job and its inputs are on the Google SERP API page, and the full provider ranking is on the SERP API ranking. For tracking positions over time, start from the rank tracking API page.
Prompt for your agent
Cross-check my Google rankings on two SERP APIs
What this test cannot tell you
- Google's ground truth. We compared APIs with each other, not with a person's browser. No API, ours included, can promise the page a person sees.
- A rate for your keywords. 40 keywords, one location, one hour. Your share of diverged lists can be higher or lower.
- Why a provider diverged. We see the answer, not how the provider fetched it.
- A ranking of providers. One hour of data does not rank them. A provider that diverged today may agree tomorrow.
- Continuous tracking. Checking the same keywords on a timer needs scheduled runs, not available yet in looot.
Last checked 2026-10-13. The test ran on 2026-10-13 between 23:01 and 23:17 UTC. Provider prices in the live table are read from the catalog when the page loads. Prices for web search APIs, a different job, are in web search API pricing.
Questions
Keep reading
SERP API pricing: cost per 1,000 searches, compared
SERP API pricing compared per 1,000 searches: SerpApi, Serper and DataForSEO list prices with dates, plus live per-call prices from the looot catalog.
Walid Boulanouar · · 7 min read
Web search API pricing per 1,000 searches
Web search API pricing per 1,000 searches, read 2026-10-13: Perplexity, Brave, Tavily, Exa, Cloudflare and the search built into OpenAI, Claude and Gemini.
The looot team · · 7 min read
Data provider fallback: automatic fallback for data APIs
How data provider fallback works when a data API returns nothing or fails: the order, the cost cap, what stops a route and who pays for a miss.
The looot team · · 6 min read
Try it with the agent you already use
Start your workspace, top up, and paste one prompt into your agent.


