# 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.

## Summary

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](https://www.demandsphere.com/blog/spurious-data-google-serps/), 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.

Google results through looot, live price per call. Prices read on 2026-10-14 from the live looot catalog. They change when a provider changes its price.

| Option | Cheapest provider | Price per call |
|---|---|---|
| Google organic results, cheapest provider | AnyAPI | $0.0009 per call |
| Google organic results with Serper | Serper | $0.0010 per call |
| Google organic results with DataForSEO | DataForSEO | $0.0020 per call |
| Google organic results with ScrapeCreators | ScrapeCreators | $0.00188 per call |

The job and its inputs are on the [Google SERP API page](https://looot.ai/use-cases/google-serp-api), and the full provider ranking is on the [SERP API ranking](https://looot.ai/best/serp-api). For tracking positions over time, start from the [rank tracking API page](https://looot.ai/use-cases/rank-tracking-api).

## 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](https://looot.ai/blog/web-search-api-pricing).

## Questions

### What are Google spurious results?

They are result pages Google serves to traffic it suspects is automated, which differ from what a person sees. DemandSphere reported about 11% of the result pages it collects each day affected in October 2026.

### Do Google spurious results affect every SERP API?

In our test of 4 APIs on 40 keywords, one provider returned a diverged list for 28 of 40 keywords and the other three for none. A rerun showed the same provider flipping between matching and diverging lists, so the effect is not fixed per provider.

### How can I tell if my rank tracker shows spurious results?

Run the same keyword through a second provider in the same hour and compare the top 10. If they share 2 URLs or fewer, treat the ranking change as unconfirmed until a recheck agrees.

### Is it legal to scrape Google search results?

That depends on your country and use, and we do not give legal advice. looot calls SERP API providers on your behalf. Each provider's terms apply to the data.

### Which SERP API was most accurate in the test?

We measured agreement, not accuracy. Serper and AnyAPI agreed most with the others, and DataForSEO's regular endpoint diverged most on 2026-10-13. One hour of data is not a ranking.

### How much does it cost to check rankings on two providers?

Two calls per keyword. The live table in this post reads each provider's price per call from the looot catalog, and the prompt shows the total before it runs.

## For agents

### Cross-check my Google rankings on two SERP APIs

```text
Use looot to cross-check Google rankings for my keywords on two SERP providers. First set up https://looot.ai/skill.md. Inspect the job google.serp.organic and show me the price per call of each provider. For each keyword in my list, run it once on serper-search and once on scrapecreators-google-search, US and English. Compare the two top 10 lists by URL and flag every keyword where they share 2 URLs or fewer. Show me the price of the whole run before you start, and stop if it is above $0.50.
```
