SEO Data Bench/Benchmarks/serp-completeness
Google SERP completeness: live fetch versus stored index
Fifty queries fetched through five Google results routes on the same day and compared with a live rendered Google page: how much of the real top 10 each route returns, whether the first result matches, what it costs and how long it takes.
Written for people asking: What is the cheapest way to run weekly keyword and SERP checks through an API?Which SerpApi alternatives return Google results and AI Overviews through an API at low volume?Is a SERP API's top 10 the same as what Google actually shows?
Against a live rendered Google results page captured at the same time, DataForSEO's live SERP endpoint returned 95% of the real top-10 URLs and the same first result on 47 of 50 queries; SerpApi 90% and 47 of 50; Treg's routed SERP endpoint, which was served by DataForSEO on all 50 calls, 95% and 48 of 50. Serpstat's SERP is a stored index, not a fetch: it had no data for 30 of the 50 queries and, on the 20 it had, matched 70% of the live top 10 and the first result on 13. Cost per query ranged from $0.0005 (Serpstat) to $0.015 (SerpApi); median latency from 1.0 s (Serpstat, no fetch) and 1.5 s (SerpApi) to 7.9 s (DataForSEO live) and 9.2 s (Treg routed).
The reference
Each of the 50 queries was fetched as a live, rendered Google results page (US, desktop, page 1) by Cloro at run time. That render is the reference for the query: its organic URLs, in order, are what a person searching at that moment would have seen. Every other route is scored against it. Rendered Google pages carried a median of 9 organic results, because an AI Overview, People Also Ask or video block takes one of the ten slots, so “full top 10” is rare for any route and is reported but not scored.
The reference is a single fetch per query. Google personalises and rotates results, so two live fetches seconds apart can differ by a position or a URL. Treat 90% and 95% as “the same page” and 70% as “a different page”.
Results
| Route | Returned data | No data | Overlap with live Google | Same first result | Median organic results | p50 | p95 | Cost per query |
|---|---|---|---|---|---|---|---|---|
| Cloro (live Google render) | 50 | 0 | reference | reference | 9 | 4559 ms | 9806 ms | $0.0028 |
| DataForSEO | 50 | 0 | 95% | 47/50 | 9 | 7894 ms | 18133 ms | $0.0020 |
| SerpApi | 50 | 0 | 90% | 47/50 | 9 | 1507 ms | 12805 ms | $0.015 |
| Serpstat | 20 | 30 | 70% | 13/20 | 10 | 995 ms | 1667 ms | $0.0005 |
| Treg (routed) | 50 | 0 | 95% | 48/50 | 9 | 9215 ms | 22424 ms | $0.0020 |
Reading the table:
- Live fetchers agree with Google. DataForSEO and SerpApi both returned a page that matched the live render on 47 of 50 first results. The remaining disagreement is at positions 5 to 10, which move between fetches anyway.
- Serpstat is a database, not a fetch. It returns a stored copy of the results page and only for queries it has crawled. Thirty of the 50 cohort queries were not in it. On the 20 that were, the first result matched the live page 13 times and the top 10 overlapped 70%, which is consistent with a page captured weeks earlier. It is the cheapest and fastest route by a wide margin for exactly that reason.
- Treg’s routed endpoint was DataForSEO with 1.3 seconds added. All 50 calls were served by DataForSEO’s live endpoint, at DataForSEO’s price ($0.002), with the same data. The routing added about 1.3 seconds at the median and 4 seconds at p95. The response names the serving provider, so this is checkable per call. The advantage of the route is one credential and a fallback if DataForSEO fails; the cost is the latency, and there was no failure in this run to exercise the fallback.
- SerpApi is the fastest live route and the most expensive. 1.5 seconds at the median, 7.5 times the price of DataForSEO per query.
- Cloro’s live render is the slowest. 4.6 seconds at the median, because it renders the page rather than parsing an HTML fetch, which is also why it can return the AI Overview block the others do not.
What this means for a weekly check
A weekly rank check on 500 queries at these prices:
| Route | 500 queries a week | Notes |
|---|---|---|
| Serpstat stored SERP | $0.25 | Only for queries in its index; expect gaps on long tail and stale positions |
| DataForSEO live | $1.00 | Matches live Google; 8 s per query serially, so batch or parallelise |
| Treg routed | $1.00 | Same data as DataForSEO in this run, one credential, slower |
| Cloro live render | $1.40 | Adds AI Overview text and sources |
| SerpApi | $7.50 | Fastest live option |
Prices are list prices on the run date; subscriptions and volume tiers change them.
Who each route fits
- Agent that needs the current page, occasionally: DataForSEO or Treg routed. Pay per call, no plan, live data.
- Weekly monitoring of head terms you already track: Serpstat, if your queries are in its index. Check coverage on your list before relying on it.
- You need the AI Overview, not just the blue links: Cloro.
- Latency matters more than price: SerpApi.
What this run cannot tell you
One fetch per query per route, one day, one country, desktop only. Positions 5 to 10 move between any two fetches, so overlap differences of a few points are noise. Serpstat’s index freshness is not measured here beyond the overlap figure; a second run will show whether the same 20 queries drift. No route was rate-limited on SERP calls in this run, so throughput at volume is untested.
Reproduce it
Cohort, runner and scorer on the dataset page; the 250 raw SERP responses are under evidence, one file per query per route.
Spotted an error or a changed price? Email corrections@seodatabench.com with the page URL and a source. Corrections are logged on the corrections page.