EverGrow SEO Solution Website-Check

Study · Part 2 · SERP API data, November 2026

SERP API measurement series from October 31: almost no Google goto links left at three of five providers

On October 31, all five SERP APIs returned 55 to 85% (eight countries combined) of organic Google results without a real URL. I have been remeasuring with the same queries since: in Germany and the US, the share at SerpApi, Serper and Oxylabs has dropped almost to zero, at DataForSEO and Bright Data it has not.

Hasan Kalkan Computer scientist, in SEO since 2012 9 min read

Auf Deutsch lesen

Updated on · what changed

Added the evening data point of November 3 (from 20:34 UTC); merged tables and charts, all values remain in the charts, alt texts and the CSV. Added DataForSEO's statement of November 3.

Issue ongoing since 30 Oct 2026 Last measurement 3 Nov 2026: DE/US: SerpApi 1.1%, Serper 0%, Oxylabs 6.5%, DataForSEO 60.6%, Bright Data 87.4% without the destination URL Next measurement 7 Nov 2026

In short

  • 01On October 31, all five SERP APIs returned 55 to 85% of organic Google results without a real URL (eight countries combined). I have been remeasuring with the same queries since.
  • 02On November 3 from 20:34 UTC (Germany and the US, desktop), SerpApi returned 5 of 444 and Serper 0 of 477 results without a real URL, Oxylabs 29 of 447; DataForSEO (standard queue) 272 of 449 and Bright Data 397 of 454.
  • 03Every data point uses the same queries for every provider. A sample without unresolved results is no guarantee for other queries or times; Serper itself calls its new approach “likely temporary”.

1.1 / 0%

SerpApi and Serper without a URL

5/444 and 0/477; Oct 31: 85.1 and 42.6%

6.5%

Oxylabs without a URL

29/447; Oct 31: 71.8%

60.6%

DataForSEO, standard queue

272/449; Oct 31: 63.3%

87.4%

Bright Data without a URL

397/454; Oct 31: 74.1%

My own requests, Germany and the US, desktop, 25 queries each, data point November 3, 2026 from 20:34 UTC. Method and limitations below.

Since the baseline measurement of Oct 31, I have kept measuring. At each measurement point, I send the same queries to five SERP APIs and count how many organic results come back without a real destination URL. This page covers Oct 31 through the evening measurement on Nov 3 from 20:34 UTC, the latest complete measurement point for Germany and the US.

I count an organic result as unresolved if its destination link is a Google goto redirect or missing. Relative goto paths and Google country domains are included. Each provider and measurement point in the DE/US desktop comparison is based on 397 to 477 organic results, and all denominators are in the raw data. I repeated Bright Data for the Nov 3 measurement from 12:24 UTC in a catch-up from 16:09 UTC.

Unresolved links over time: DE/US desktop, Europe desktop and mobile DE/US. DE/US desktop, unresolved shares at Oct 31, Nov 1, Nov 2, Nov 3 from 12:24 UTC and Nov 3 from 20:34 UTC: DataForSEO 63.3% / 60.4% / 58.1% / 62.9% / 60.6%; SerpApi 85.1% / 66.0% / 0.0% / 0.0% / 1.1%; Bright Data 74.1% / 83.4% / 86.9% / 85.1% / 87.4%; Serper 42.6% / 0.0% / 0.0% / 0.0% / 0.0%; Oxylabs 71.8% / 0.0% / 0.0% / 4.5% / 6.5%. DE/US desktop, Nov 3 from 12:24 UTC, unresolved / organic: DataForSEO 282/448 (62.9%); SerpApi 0/445 (0.0%); Bright Data 376/442 (85.1%); Serper 0/473 (0.0%); Oxylabs 20/446 (4.5%). Europe desktop, Oct 31 from 12:39 UTC, unresolved share (organic denominator; usable / scheduled responses): DataForSEO 58.5% (1,075; 120/120); SerpApi 84.4% (1,016; 120/120); Bright Data 72.8% (1,046; 119/120); Serper 60.0% (1,112; 120/120); Oxylabs 68.4% (1,016; 120/120). Europe desktop, Nov 2 from 20:34 UTC, unresolved share (organic denominator; usable / scheduled responses): SerpApi 0.0% (1,037; 120/120); Bright Data 82.7% (1,029; 117/120); Serper 0.0% (1,132; 120/120); Oxylabs 3.1% (1,011; 120/120). Europe desktop, Nov 3 from 12:24 UTC, unresolved share (unresolved / organic; usable / scheduled responses): DataForSEO 57.5% (613/1,067; 120/120); SerpApi 0.0% (0/1,018; 120/120); Bright Data 80.4% (811/1,009; 116/120); Serper 0.0% (0/1,114; 120/120); Oxylabs 4.0% (41/1,022; 120/120). Europe desktop, Nov 3 from 20:34 UTC, unresolved share (organic denominator; usable / scheduled responses): DataForSEO 55.3% (1,071; 120/120); SerpApi 1.0% (1,023; 120/120); Bright Data 82.7% (1,015; 116/120); Serper 0.0% (1,134; 120/120); Oxylabs 4.5% (1,024; 120/120). Mobile DE/US, Nov 3 from 12:34 UTC, unresolved / organic (usable / scheduled responses): DataForSEO 119/177 (67.2%) (20/20); SerpApi 0/177 (0.0%) (20/20); Bright Data 131/154 (85.1%) (18/20); Oxylabs 0/164 (0.0%) (20/20). Mobile DE/US, Nov 3 from 20:44 UTC, unresolved / organic (usable / scheduled responses): DataForSEO 120/180 (66.7%) (20/20); SerpApi 2/175 (1.1%) (20/20); Bright Data 151/175 (86.3%) (20/20); Oxylabs 0/164 (0.0%) (20/20)
Unresolved links over time: DE/US desktop, Europe desktop and mobile DE/US · Download as PNG
  • Oct 31 – Baseline measurement, 5 providers, 8 countries
  • Nov 1 – Serper and Oxylabs with no unresolved results in Germany and the US
  • Nov 2 – SerpApi reports “Resolved”, DataForSEO describes the goto limit
  • Nov 3, 12:24 UTC – Measurement point with all providers, Bright Data repeated after server errors from 16:09 UTC
  • Nov 3, 20:34 UTC – Evening measurement point
  • Nov 7 – next measurement point (planned)

Findings

Three providers with 0.0% to 6.5% unresolved results

At the evening measurement point on Nov 3, I find unresolved shares of 0.0% to 6.5% for Serper, SerpApi and Oxylabs in the DE/US desktop comparison. The table also shows Europe and mobile, with counts and denominators for each sample.

DE/US Desktop
Europe Desktop
Mobile DE/US
DataForSEO
60.6 %272/449 · Oct 31: 63.3%
55.3 %592/1,071 · Oct 31: 58.5%
66.7 %120/180
SerpApi
1.1 %5/444 · Oct 31: 85.1%
1.0 %10/1,023 · Oct 31: 84.4%
1.1 %2/175
Bright Data
87.4 %397/454 · Oct 31: 74.1%
82.7 %839/1,015 · Oct 31: 72.8%
86.3 %151/175
Serper
0.0 %0/477 · Oct 31: 42.6%
0.0 %0/1,134 · Oct 31: 60.0%
mobile not measurable
Oxylabs
6.5 %29/447 · Oct 31: 71.8%
4.5 %46/1,024 · Oct 31: 68.4%
0.0 %0/164

Desktop: Nov 3 from 20:34 UTC; usable responses in Europe 120/120 per provider, Bright Data 116/120. Mobile: Nov 3 from 20:44 UTC, 10 queries each for DE and US, 20/20 usable responses per measured provider.

Oxylabs: the rest sits on a few pages

At the evening measurement point on Nov 3, the unresolved results at Oxylabs are concentrated on a few results pages with at most one direct link. That is 3/50 pages in Germany and the US and 5/120 in Europe. All other pages in these two samples contain no unresolved results.

DataForSEO: depth 20 ranges from 0.0% to 99.9%

I also changed the requested depth in the standard queue. At depth 20, the share of unresolved results varies from run to run. Depth 20 also returns results beyond the first results page, so I show page 1 separately.

DataForSEO: requested depths 10 and 20, all results and page 1. Nov 2 from 20:34 UTC, DE/US, depth 10: all results 275/450 (61.1%), page 1 275/450 (61.1%); Nov 2 from 20:34 UTC, DE/US, depth 20: all results 14/949 (1.5%), page 1 7/458 (1.5%); Nov 2 from 21:06 UTC, Europe, depth 10: all results 613/1,084 (56.5%), page 1 613/1,084 (56.5%); Nov 2 from 21:06 UTC, Europe, depth 20: all results 47/2,244 (2.1%), page 1 37/1,080 (3.4%); Nov 2 from 21:32 UTC, DE/US, depth 10: all results 281/454 (61.9%), page 1 281/454 (61.9%); Nov 2 from 21:32 UTC, DE/US, depth 20: all results 211/949 (22.2%), page 1 131/459 (28.5%); Nov 3 from 12:49 UTC, DE/US, depth 10: all results 283/457 (61.9%), page 1 283/457 (61.9%); Nov 3 from 12:49 UTC, DE/US, depth 20: all results 0/940 (0.0%), page 1 0/451 (0.0%); Nov 3 from 20:59 UTC, DE/US, depth 10: all results 278/448 (62.1%), page 1 278/448 (62.1%); Nov 3 from 20:59 UTC, DE/US, depth 20: all results 0/929 (0.0%), page 1 0/452 (0.0%); Nov 2 from 21:21 UTC, daily automated run, depth 20: all results 1,132/1,133 (99.9%), page 1 545/546 (99.8%)
DataForSEO: requested depths 10 and 20, all results and page 1 · Download as PNG

At depth 10, all results and page 1 are identical. The value from Nov 2 at 21:21 UTC comes from my daily automated measurement. I used its counts but did not recount them down to the individual raw response. Its sample differs from the other runs.

DataForSEO stated on Nov 2 that the standard queue resolves all links but takes longer. In my measurement of the standard queue at depth 10, the first results page still contains unresolved results.

Statement from DataForSEO, Nov 3: the team says it is working on fully eliminating the issue in the standard queue, and that most affected users have already received a dedicated solution that resolves the URLs. I do not have that solution yet. I will test it separately and report it as a separate result. My values on this page apply to the standard queue.

These values do not show that a greater depth reliably works around goto links. I do not turn them into a usage recommendation.

In my daily automated measurement, the standard queue had previously returned 331/543 (61.0%) unresolved on Oct 31 at 07:07 UTC, 329/544 (60.5%) on Nov 1 at 18:18 UTC and 337/539 (62.5%) on Nov 2 at 06:00 UTC. At 21:21 UTC it was 544/545 (99.8%). This separate series also shows why I cannot infer a lasting property from individual points in time.

SerpApi and Serper: a new parameter value on every request

When the same direct URL with the srsltid parameter shows up in several requests, the parameter has a different value each time. That holds for 20/20 such URLs at SerpApi and 16/16 at Serper. This argues against these values being reused. It does not show which route the providers take to resolve the links. Serper describes its own route as “likely temporary”.

My assessment

I suspect that SerpApi and Serper resolve the links freshly and in parallel on every request. This fits the changing parameter values and the short median request times, which do not rise consistently with the number of links. I cannot determine the exact route from the outside. For Oxylabs, signs of caching limit what I can say.

I also suspect that the tighter control of access to search data is connected to AI search. I cannot establish Google’s motive or the cause of the measured changes. Each measurement point remains a sample taken at a particular time.

For Serper and Oxylabs, the share in Germany and the US had already dropped to zero by the next data point. A provider’s state can therefore change from one data point to the next. So my own analyses keep reading the domain from the displayed link whenever the URL is a goto URL. I expect Google to keep making access harder without shutting it off completely. This data cannot prove that.

For the background, I rely on documented sources on Google’s JavaScript check, num=100, Google’s lawsuit, goto, grounding and the declined partnership in the US judgment, the Gemini API terms and Microsoft’s API retirement. This measurement series does not recheck that history.

Further analyses

Europe: repeat test and countries

Eight countries on Nov 2 (including DE/US)

ProviderUsable results pagesUnresolved / organic
SerpApi1700/1,484 (0.0%)
Serper1700/1,607 (0.0%)
Oxylabs17031/1,444 (2.1%)
Bright Data1671,242/1,479 (84.0%)

Oxylabs still has some unresolved links outside Germany and the US. For Bright Data, three of the 170 scheduled responses are missing on Nov 2. The tables compare what each provider returned, not identical individual Google results.

For DataForSEO in these six European countries, I use the separate control run from 21:06 UTC. I do not use the run from 20:34 UTC, because 300 of my own test tasks were running at the same time. That may have distorted the results through load, but I cannot establish how this works internally. The later Poland catch-up from that run is excluded from the rates as well. The control run is a later measurement, not a simultaneous replacement in the provider comparison.

The control run covers 20 results pages per country.

DataForSEO: unresolved / organic

GB61.3 %106/173
FR55.6 %99/178
ES53.6 %98/183
IT54.3 %101/186
NL57.2 %107/187
PL57.6 %102/177

Desktop and mobile

For a paired test on Nov 2 from 22:34 UTC, I queried 20 terms per provider on desktop and mobile. Bright Data has 18/20 usable mobile responses.

ProviderDesktopMobile
SerpApi0/180 (0.0%)0/178 (0.0%)
Oxylabs0/178 (0.0%)0/164 (0.0%)
Bright Data153/182 (84.1%)133/152 (87.5%)

The link traces below refer to Nov 2.

ProviderDomain readable in unresolved resultsMatching host / checkableWith srsltid / direct links
DataForSEO828/874 (94.7%)626/62637/659 (5.6%)
SerpApinot applicable1,412/1,412103/1,484 (6.9%)
Bright Data1,211/1,242 (97.5%)208/208–
Serpernot applicable1,519/1,51992/1,607 (5.7%)
Oxylabs31/31 (100.0%)1,396/1,39686/1,413 (6.1%)

On Nov 2, all 5,161 direct links with a checkable displayed domain have a host that matches that domain. For DataForSEO, this combines DE/US from 20:34 UTC with the European control run from 21:06 UTC. The check covers the domain, not whether the specific destination page is the right one.

The srsltid parameter cannot be reconstructed from the displayed domain name alone. Its presence fits destination URLs that originate from Google, but on its own it does not prove how the URL is currently retrieved.

Resolution test

I cannot see how the providers work internally, so I limited the test to what their responses let me measure.

Google redirects remain visible in the responses. Even when SerpApi returns the direct destination URL, an additional redirect field still contains the Google redirect with a token. That field is not the destination link I count as unresolved. The raw responses alone cannot tell whether the token is encrypted or whether providers can read it without another request.

SerpApi and Serper return fresh parameter values on repeated requests. I queried 6 search terms three times in a row, for 18 requests per provider. At SerpApi, 20 URLs with srsltid appeared in at least two requests, and all of them had a different value on every request. At Serper, the same holds for all 16 such URLs. Unchanged values: 0/20 and 0/16. This argues against the values simply coming from a cache. It does not prove that no part of the response is cached.

ProviderRepeated URLsAlways freshUnchangedIdentical lists / comparisons
SerpApi202000/12
Bright Data–––1/12
Serper161600/12
Oxylabs175105/12

For SerpApi and Serper, the median request time does not rise consistently with the number of links. The duration analysis only includes desktop responses in which all links are direct. Values are median request times in seconds, with the number of responses in parentheses. For SerpApi, I also show the processing time the provider reports itself.

For Oxylabs, the median rises with the number of links. At the same time, 5 of the 12 repeated-request comparisons have fully identical link lists, and the parameter value stays the same for 10 of 17 repeatedly observed srsltid URLs. That is consistent with caching. Since I did not set an option to disable caching for Oxylabs, I cannot separate its effect.

Request time by direct-link count, including SerpApi’s reported processing time. SerpApi · request: ≤7 links 1.82 s (n=22); 8–9 links 1.54 s (n=81); ≥10 links 1.60 s (n=55). SerpApi · provider time: ≤7 links 1.04 s (n=22); 8–9 links 0.86 s (n=81); ≥10 links 0.93 s (n=55). Serper · request: ≤7 links 1.70 s (n=5); 8–9 links 1.48 s (n=52); ≥10 links 1.50 s (n=81). Oxylabs · request: ≤7 links 3.30 s (n=19); 8–9 links 3.65 s (n=95); ≥10 links 5.06 s (n=40)
Request time by direct-link count, including SerpApi’s reported processing time · Download as PNG

Serper itself describes a different route. On its status page (incident “/goto links”, resolved on Oct 31 at 16:50 UTC, https://serper.betteruptime.com/), Serper writes: “We've found another way to get the real URLs, and since Oct 31 ~16:30 UTC all result links have real URLs again. This is likely temporary: if Google limits it too, the top 3 stay resolved automatically and /resolve gets the rest after about 30 seconds.” This matches my values for Germany and the US. On Oct 31 from 12:24 UTC, 202/474 Serper results were unresolved (42.6%), on Nov 1 it was 0/470 (0.0%).

Position profile November 2

The position profile only describes the returned links, not how the providers work internally.

Share of unresolved results by position on Nov 2, DE/US
Share of unresolved results by position on Nov 2, DE/US · Download as PNG
Timeline
Time (UTC)Evidence / observation
Oct 31, 12:24 UTC–13:28 UTCBaseline comparison in eight countries; raw responses recounted for this measurement series.
Nov 1, 18:18 UTCDE/US: no unresolved results for Serper and Oxylabs in this sample.
Nov 2DataForSEO describes the goto limit: standard resolves all links but may take longer; high priority and live resolve roughly half. A provider statement; my standard-queue measurements on Nov 2 and 3 appear with counts and denominators in the DE/US comparison and DataForSEO finding.
Nov 2, 13:02 UTCSerpApi issue #4315 closed; provider announcement, not my measurement.
Nov 2, 13:32 UTCSerpApi status marked “Resolved”; time according to the documented provider announcement.
Nov 2, 20:34 UTCDE/US and Europe remeasured; DataForSEO Europe excluded due to concurrent load from my own tasks.
Nov 2, 21:06 UTCDataForSEO European control: 98/183 (53.6%) to 106/173 (61.3%) unresolved by country.
Nov 2, 21:21 UTCDaily automated measurement: standard depth 20 at 1,132/1,133 (99.9%) goto.
Nov 2, 21:32 UTCDepth 20: page 1 at 131/459 (28.5%), all results 211/949 (22.2%).
Nov 2, 22:34 UTCRepeated-request and paired device test; fresh parameter values for SerpApi and Serper, cache indications for Oxylabs.
Nov 3, 09:33 UTCSerpApi issue #4315 reopened over a new case of goto links, closed again at 13:46 UTC; provider issue, not my measurement.
Nov 3 from 12:24 UTCDE/US and Europe measurement point; values in Result.
Nov 3 from 12:34 UTCMobile measurement point; values in Result.
Nov 3 from 12:49 UTCDataForSEO depth 20: all results 0/940 (0.0%); page 1 0/451 (0.0%).
Nov 3DataForSEO contacts me: work on the standard queue, dedicated solution for most affected users (provider statement, not tested by me).
Nov 3 from 20:34 UTCEvening DE/US and Europe measurement point; values in Result.
Nov 3 from 20:44 UTCEvening mobile measurement point; values in Result.
Nov 3 from 20:59 UTCDataForSEO depth 20: all results 0/929 (0.0%); page 1 0/452 (0.0%).
Method and limitations

Comparability

  • Within a measurement point, all providers get the same queries. On Nov 3, the mobile comparison used 10 queries each for Germany and the US.
  • Serper has no device parameter and is therefore not part of the mobile comparison.
  • Catch-up rule: If a provider returned fewer than 90 percent usable responses in a run, I repeated the entire run for that provider with the same queries and counted only the repeat.

Settings

  • Desktop, first results page, language and location of each country, DataForSEO via the standard queue.
  • I disabled caching for SerpApi. For Oxylabs, I did not set a cache-disabling option.
  • The mobile tests are separate samples. Equal rates do not mean identical result lists.
  • The depth tests also include further results pages, which I analyse separately from page 1.

Definitions

  • Unresolved: an organic result whose destination link is a Google goto redirect (including relative paths and country domains) or is missing.
  • Domain readable: the displayed link contains a domain. Follower or comment counts do not qualify.
  • Matching host: the host of the direct URL belongs to the displayed domain, including subdomains and internationalised domain names. This check does not validate the complete destination URL.
  • Position rates: the denominator is the organic results actually returned at each position. The position profile covers positions 1 to 10. Additional positions in individual responses still count towards the overall rate.

Time windows

All times are UTC and mark the start of a run unless stated otherwise. Individual responses may have been generated or collected at different times.

  • Oct 31: DE/US from 12:24 to 12:37 UTC. The European extension started at 12:39 UTC. Some requests for Poland and Bright Data were completed from 13:13 to 13:28 UTC.
  • Nov 1: DE/US from 18:18 to 18:29 UTC.
  • Nov 2: combined run from 20:34 to 21:04 UTC, separate DataForSEO catch-up for Poland from 21:04 to 21:05 UTC. I exclude those values, just like the other DataForSEO European responses collected under my own load. Mobile run from 21:01 to 21:15 UTC, resolution test from 22:34 to 22:50 UTC.

Missing responses and catch-ups at Bright Data

  • Oct 31: 163 of 170 usable responses, 44/50 in the DE/US run from 12:24 UTC.
  • Nov 1: 49/50 in the DE/US run from 18:18 UTC.
  • Nov 2: 167 of 170.
  • Nov 3, DE/US: from 12:25 to 13:49 UTC almost only server errors (mainly HTTP 502 and 504, occasionally 503 and 500) and timeouts. The original run from 12:24 UTC had 0/50 usable responses. The values therefore come from the catch-up with the same queries from 16:09 UTC, which has 49/50 usable responses.
  • Nov 3, mobile: the run from 12:34 UTC showed the same from 12:35 to 14:10 UTC. The values come from the catch-up with the same queries from 17:12 UTC, with 18/20 usable responses. DataForSEO, SerpApi and Oxylabs each had 20/20.
  • I do not treat missing or empty responses as zero unresolved results.

Sample and analysis

  • I picked the queries by hand, and they differ by country.
  • Results on the same page are not independent, so I do not give confidence intervals.
  • For request duration, the seconds come from my request log, while link counts and SerpApi’s own timing come from the raw responses.
  • I have ordinary customer accounts with the providers and no insight into their internal processes.

What the measurement does not show

  • A few runs cannot tell me when a provider changed something internally. A status announcement and a later measurement are two different kinds of evidence.
  • A sample without unresolved links is no guarantee for other countries, queries or times.
  • Response time does not prove a particular resolution technique. Different queries, response sizes and caches can affect duration.
  • The measurements show neither Google’s motive nor the purpose of goto links. They do not assess pricing, provider costs or the quality of every result type.

About the CSV

  • “Anteil unaufgelöst (%)” is rounded to one decimal place. A blank field means there are no organic results.
  • The original counts and their calculated rates stay in the file even when the catch-up rule excludes them from the comparison. The status column marks this.
  • Start time is the scheduled measurement point, and the separate catch-up time is the replacement actually used or an earlier completion. All times are UTC.

Raw data: Download CSV. For each measurement point, group, provider and country, the file contains the scheduled queries, usable responses, results, unresolved links and catch-up times. Missing catch-ups are marked.

Share

LinkedInRedditXEmail
Cite this study

Kalkan, H. (2026). SERP API measurement series from October 31: almost no Google goto links left at three of five providers. EverGrow SEO Solution. https://evergrowsolution.de/en/studies/serp-api-measurement-series-google-goto/

Quick answers.

Do SERP APIs return the real Google URLs again?

Three of five providers almost completely in my sample: on November 3 from 20:34 UTC, SerpApi returned 5 of 444 and Serper 0 of 477 organic results without a real URL, Oxylabs 29 of 447. DataForSEO (standard queue) returned 272 of 449, Bright Data 397 of 454 (Germany and the US, desktop).

Is the problem solved?

The data doesn’t show that. A sample without unresolved results is no guarantee for other queries, countries or points in time, and Serper itself calls its new approach “likely temporary”. I keep measuring and add new data points to this page.

How comparable are the data points?

At each data point, every provider gets the same queries. If a provider returned fewer than 90% usable responses in a run, I repeated it completely with the same queries and counted only the repeat, as with Bright Data on November 3. The raw data is available as a CSV download.

Hasan Kalkan

About the author

Hasan Kalkan, SEO and GEO specialist and computer scientist (B.Sc.), working in SEO since 2012. I analyze server logs, Search Console and web analytics data of large online shops and publish what can be generalized, with method and limitations.

More about the author