Google Killed &num=100: Why Your Rank Tracker Costs 10× More (and the Fix)

By Serpent API Team · · 11 min read

For years, one tiny piece of a URL did a lot of quiet work. Add &num=100 to the end of a Google search and you got 100 results on a single page instead of 10. Every serious rank tracker, SEO crawler, and homemade Python script leaned on it.

On September 11, 2025, Google switched it off. No announcement, no blog post — the parameter just stopped doing anything. And the fallout was immediate: Search Console graphs cratered overnight, average-position numbers magically "improved", and the cost of tracking deep rankings roughly multiplied by ten.

If your reporting looks broken and you're not sure what's real, this guide explains exactly what happened, what's genuinely different, and the two ways to get the top 100 back.

TL;DR: &num=100 no longer works. Google caps you at 10 results per request. To see the top 100 you must paginate ten times — or send one call to a SERP API that paginates for you. Your real rankings didn't change; only the measurement did.

What &num=100 actually was

By default, Google shows 10 organic results per page. The num URL parameter let you ask for more. So google.com/search?q=running+shoes&num=100 returned the top 100 in one shot.

Humans almost never typed it. Tools did. If you wanted to know whether a site ranked at position 7 or position 73 for a keyword, one request with &num=100 told you. It was cheap, fast, and it was the backbone of how the whole industry measured "deep" rankings.

That's the important part: this was never a consumer feature. It was infrastructure for rank trackers, SEO platforms, and anyone scraping the SERP. Which is exactly why its removal hit tooling so hard and ordinary searchers not at all.

What changed on September 11, 2025

Google stopped honoring the parameter. You can still add &num=100 to a search URL today — it just gets ignored. You get 10 results back, every time.

There was no formal deprecation notice. When pressed, Google's Danny Sullivan described it as something that was never a guaranteed, supported feature, framing the move as part of keeping search simple and limiting automated abuse. In other words: it worked for years, but it was never promised, and now it's gone.

Here's the before-and-after in one view:

 Before Sept 11, 2025After Sept 11, 2025
Results per requestUp to 100 (&num=100)10 (parameter ignored)
Requests to read top 100110 (paginate with start)
Bandwidth per "top 100" pull~1 page load~10 page loads
Deep impressions in GSCCounted (incl. bots)Mostly gone
Your real rankingsUnchanged

Why your Search Console impressions fell off a cliff

This is the part that scared a lot of people. Around September 10–12, 2025, Search Console impressions for huge numbers of sites dropped sharply — sometimes 30–50% on desktop — with no algorithm update to blame.

The cause wasn't a penalty. It was the bots leaving.

When a rank tracker loaded 100 results for a keyword, Google logged an impression for every URL on that page — including yours sitting at position 80. Multiply that across thousands of tools checking millions of keywords every day and a big slice of "impressions" was never human at all. When &num=100 died, those deep bot impressions vanished.

The numbers back this up. According to Search Engine Land's analysis, around 77% of sites lost reported keyword visibility and roughly 87.7% saw impressions fall after the change. Here's how the core metrics shifted:

MetricWhat you sawWhy
ImpressionsSharp dropBot-driven deep impressions (positions ~11–100) disappeared
Average positionLooked betterLow-ranking impressions stopped dragging the average down
ClicksBasically flatBots never clicked — real users were unaffected
Unique query countFellLong-tail terms you only "ranked" for at position 90 dropped out

So if your impressions fell but clicks held steady and average position improved, nothing is wrong with your site. Your reports just got more honest. The trap is comparing September-onward data to August as if it's the same yardstick — it isn't.

Why rank tracking just got 10× more expensive

Here's the quieter story that hit developers and SEO platforms harder than the GSC graphs.

Reading the top 100 used to be one request. Now it's ten. To collect positions 1–100 you have to walk through the pages one block at a time using the start parameter (start=0, start=10, start=20start=90). Ten page loads where there used to be one.

That multiplies almost everything that matters when you scrape at scale:

This is why several rank-tracking vendors quietly raised prices, throttled refresh frequency, or stopped tracking past the top 10 or top 20 by default in late 2025. The unit economics of "track the top 100 daily" changed overnight. If you run your own scraper, you felt it as a bigger proxy bill and more 3 a.m. breakages — the kind we dug into in why your SERP scraper breaks at 3 a.m.

You have two realistic ways out: paginate it yourself, or hand the pagination to an API. Let's do both.

Fix #1: paginate it yourself with start

If you maintain your own scraper, the mechanical fix is to loop through the start offsets and stitch the pages together. The logic looks like this:

import requests
from bs4 import BeautifulSoup

def fetch_page(query, start):
    # NOTE: hitting Google directly like this gets blocked fast.
    url = "https://www.google.com/search"
    params = {"q": query, "start": start, "hl": "en"}
    headers = {"User-Agent": "Mozilla/5.0 ..."}
    return requests.get(url, params=params, headers=headers).text

def top_100(query):
    results = []
    for start in range(0, 100, 10):   # 0, 10, 20 ... 90  -> 10 requests
        html = fetch_page(query, start)
        soup = BeautifulSoup(html, "html.parser")
        for block in soup.select("div.g"):   # selectors change often
            link = block.select_one("a")
            if link:
                results.append(link["href"])
    return results[:100]

It works — for about a day. Then reality arrives:

None of that is impossible — it's just an ongoing maintenance tax that got 10× heavier the day &num=100 died. We compared this build-vs-buy math in detail in Google Search API vs scraping.

Fix #2: one API call that still returns the top 100

The other option is to stop caring about pagination entirely. A SERP API does the ten page loads for you and hands back a clean list. With the Serpent Google SERP API, you ask for the depth you want and get structured JSON:

import requests

resp = requests.get(
    "https://api.apiserpent.com/api/search",
    headers={"X-API-Key": "sk_live_your_key"},
    params={
        "q": "best running shoes",
        "engine": "google",
        "country": "us",
        "num": 100,            # ask for the full top 100
    },
)

data = resp.json()
for r in data["results"]["organic"]:
    print(r["position"], r["url"])

One request in, up to 100 ranked results out — with positions, titles, URLs, snippets, plus SERP features like People Also Ask, featured snippets, and AI Overview sources in the same payload. No proxy pool, no browser fleet, no selectors to babysit.

The cost angle is the part that matters most for this specific change. Because Serpent uses flat per-call pricing, page depth doesn't multiply the price — a 100-result deep search costs the same as a 10-result one. So the exact thing that just made DIY tracking 10× pricier (needing ten page loads for the top 100) doesn't inflate your bill here. Google SERP runs from $0.60 per 10,000 searches pay-as-you-go down to $0.03 per 10,000 at the Scale tier, with 10 free searches to start and no subscription. The full breakdown is on the pricing page.

Want the top 100 back in one line? The Serpent Google SERP API returns up to 100 organic results per call with depth that doesn't change the price. Grab 10 free searches →

If you'd rather see this wired into a working rank tracker, our 100-line Python rank tracker and the Python SERP rank tracker guide both use this exact endpoint, and international rank tracking across 40+ countries shows how to add the country dimension.

How to read your SEO reports now

The change is permanent, so the smart move is to adjust how you measure rather than wait for the old numbers to return. Five practical adjustments:

  1. Treat September 11, 2025 as a data boundary. Don't compare impressions across it as a like-for-like trend. Annotate the date in your dashboards.
  2. Trust clicks over impressions. Clicks barely moved, so they're now your cleanest signal of real demand. Impressions became more honest but smaller.
  3. Re-baseline average position. The "improvement" you saw in September is an artifact of bots leaving, not better rankings. Reset expectations from the new floor.
  4. Measure deep rankings deliberately. If you need positions past 10, pull them on purpose with a SERP API rather than hoping GSC surfaces them.
  5. Track AI surfaces too. With fewer classic impressions, presence inside AI Overviews and AI Mode matters more — see our guide to extracting AI Overviews.

None of this means SEO got worse. It means a layer of inflated, bot-generated data got stripped out, and the tools that quietly depended on one URL parameter had to grow up. Measure with intent, separate human signals from bot noise, and the picture is actually clearer than it was before.

Get the Top 100 in One Call

Serpent's Google SERP API paginates for you and returns up to 100 results per request — with flat per-call pricing where depth doesn't change the rate. From $0.03 per 10,000 searches. 10 free searches on signup, no subscription.

Get Your Free API Key

Explore: Google SERP API · Build a Rank Tracker · Pricing

FAQ

When did Google remove the num=100 parameter?

Around September 11, 2025. Google quietly stopped honoring &num=100, so a single search URL now returns its standard 10 results no matter what value you pass. There was no formal announcement.

Why did my Google Search Console impressions suddenly drop?

Most rank trackers loaded 100 results per query, logging an impression for every URL down to position 100. When the parameter died, those bot-driven deep impressions disappeared. About 87.7% of sites saw impressions fall while real clicks stayed flat.

Can I still get 100 Google results per page?

Not from one page request. You have to paginate with the start parameter — results 1–10, then 11–20, and so on — which means ten requests. A SERP API can do that for you behind a single call.

Why did the change make rank tracking more expensive?

Reading the top 100 now takes ten page loads instead of one, so bandwidth, proxy use, and block risk all jumped roughly 10×. Several vendors raised prices or stopped tracking past the top 10–20 by default in response.

Did my rankings actually change?

No. Your real positions and human traffic didn't move. Only the measurement changed: deep bot impressions left Search Console, so average position looks better and impressions look worse while nothing about your true ranking changed.

How do I fetch the top 100 in a single request?

Use a SERP API that paginates for you. With the Serpent Google SERP API you send num=100 in one call and get up to 100 organic results. Because pricing is flat per call, 100 results costs the same as 10.