Skip to content

New Official SDKs for TypeScript, Python and Go

SerpKite
Get API key

num=100 is gone: the real cost of top-100 tracking

Since Google removed &num=100 in September 2025, the top 100 takes ten requests. What that does to rank-tracking costs, and how to price depth fairly.

SerpKite team 2 min read

On this page

For years, rank trackers fetched the top 100 results for a keyword with one request: add &num=100 to the Google URL. On September 14, 2025, Google stopped honoring it. The top 100 now means ten pages of ten, which means ten requests.

Google also moved quickly against workarounds: in October 2025 it blocked the one DataForSEO had found within five days.

What changed in the cost model

A SERP API’s cost is roughly proportional to the requests it makes to Google: proxy bandwidth, rendering, retries. When one request became ten, the cost of a top-100 check went up about 10× for everyone. Vendors had three choices:

  1. Keep charging “per search” and eat the difference (not sustainable at volume).
  2. Charge per page, so the top 100 costs 10×.
  3. Offer depth as a bundle priced between the two.

Pricing units got confusing fast. Some vendors charge per query, some per page, some a flat multiplier for “more than 10 results”. Serper, for example, charges 2 credits for 11–100 results.

How SerpKite prices depth

  • 1 credit per page of 10. Shallow checks (top 10, top 20) cost exactly what they use.
  • num=100 is a 7-credit bundle: the top 100 for 30% less than ten separate pages.
  • The batch lane halves it. Queue checks with POST /v1/batches (results within about 15 minutes, delivered by webhook or polling) and the price is multiplied by 0.5.
  • Empty and failed pages are free, so a keyword with only 40 results doesn’t burn credits on six empty pages.

Worked example: 1,000 keywords, daily, top 100

That’s 30,000 top-100 checks a month.

Approach Credits / month At $0.60 per 1k (Pro pack)
10 separate pages, realtime 300,000 $180
num=100 bundle, realtime 210,000 $126
num=100 bundle, batch lane 105,000 $63

Credits never expire, so you can buy a larger pack and let it run down over several months at the lower per-1k rate.

Do you need all 100?

Most trackers only need depth for a subset of keywords. A common pattern: check the top 20 daily for everything, and the top 100 weekly, or only for keywords where you’re outside the top 20. At 1 credit per page, that often cuts the bill by more than half again.

The request

curl https://api.serpkite.com/v1/batches \
  -H "Authorization: Bearer $SERPKITE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"endpoint":"search","webhook_url":"https://example.com/hooks/serp","requests":[{"q":"project management software","country":"us","num":100,"fields":"results.position,results.domain,results.link"}]}'

The response is 202 with one batch per request (id, status, poll_url); the finished result is POSTed to your webhook as a batch.completed event, signed with X-SerpKite-Signature, or you poll GET /v1/batches/{id}. fields keeps the payload to what a tracker stores. Links are always resolved destination URLs, which matters since Google’s /goto change.

More on the Rank Tracker API page and on pricing.

Related posts

3 min read

Introducing SerpKite

A Google search API built for AI agents: clean JSON or Markdown, official TypeScript/Python/Go SDKs, native LangChain, CrewAI and MCP, and credits that never expire.

Start building

Get your API key in 30 seconds

2,500 free credits, then 1,000 every month. No credit card.