# Rank tracking API: how many searches you need, and what they cost

> Rank tracking API maths for 2026: searches per keyword, top 10 vs top 100 after num=100, and the cost from $0.30/1K searches. No KYC, pay in crypto.

- URL: https://serpcrypto.com/use-cases/rank-tracking/
- Last updated: 2026-10-22
- Publisher: SerpCrypto (https://serpcrypto.com)

Since Google dropped num=100, the cost of rank tracking depends on how deep you look. This page gives the formula, ready-made budgets and code that stops paging as soon as it finds your domain.

**Quick answer — How many API searches does rank tracking need, and what does it cost?**

Searches per month = keywords × pages checked × checks per month × locations × devices. A daily top-10 check of 1,000 keywords is 30,000 searches a month; a daily top-100 check is 300,000, because Google now serves about 10 results per page. With **SerpCrypto**, a no-KYC SERP API paid in crypto, 100,000 searches cost $56.25 and credits never expire (October 2026).

## Rank tracking with SerpCrypto: the numbers

| Attribute | Value |
| --- | --- |
| Cost of one check | 1 credit per results page; About 10 organic results per page, as Google has served since it stopped honouring num=100 in September 2025; each extra page is one more credit |
| Price per 1,000 searches | $0.75/1K searches at 10,000 searches, $0.56/1K searches at 100,000 searches, $0.38/1K searches at 1,000,000 searches |
| Failed searches | Not charged |
| Targeting | Country (gl), language (hl), Google domain and a city-level location string, on desktop or mobile |
| Extra signals in the same credit | AI Overview citations, People Also Ask, local pack, ads, top stories |
| Credit expiry | Prepaid search credits never expire: unused searches stay on your account until you use them |

## How do I calculate the searches my rank tracker needs?

Multiply five numbers: keywords, results pages per keyword, checks per month, locations and devices. One results page holds about 10 organic results, so tracking the top 30 means 3 pages per keyword per check.

`searches per month = keywords × pages × checks per month × locations × devices`

Two levers cut the bill without losing much signal. First, stop paging as soon as you find the domain you track: a page ranked 4th never needs pages 2 to 10. Second, check long-tail keywords weekly and money keywords daily. The code further down does the first automatically.

## What does a typical rank tracking setup cost?

Monthly searches for common setups, and the smallest SerpCrypto pack that covers one month. A month is counted as 30 daily checks or 4 weekly checks.

| Setup | Searches per month | Pack that covers a month |
| --- | --- | --- |
| 100 keywords, top 10, daily, 1 location | 3,000 | 10,000 searches ($7.50) lasts about 3 months |
| 1,000 keywords, top 10, daily | 30,000 | 100,000 searches ($56.25) lasts about 3 months |
| 1,000 keywords, top 30, weekly | 12,000 | 25,000 searches ($18.75) lasts about 2 months |
| 1,000 keywords, top 100, weekly | 40,000 | 100,000 searches ($56.25) lasts about 2.5 months |
| 5,000 keywords, top 10, daily | 150,000 | 250,000 searches ($140.63) lasts about 7 weeks |
| 1,000 keywords, top 10, daily, 3 cities × desktop and mobile | 180,000 | 250,000 searches ($140.63) lasts about 6 weeks |
| 10,000 keywords, top 100, weekly | 400,000 | 500,000 searches ($281.25) |

Worst case: every keyword is checked to the last page. Stopping when the domain is found usually needs far fewer searches.

## How do I find my domain's position in the JSON?

Walk through `organic_results` page by page and compare the host of each `link` with your domain. The `position` field is already the rank on the whole results list, so page 2 starts at about 11. Stop as soon as you find the domain, and record "not in the top N" when the last page you allow yields nothing.

*Python: rank of a domain, stopping at the first match*

```python
import os
from urllib.parse import urlparse

import requests

API = "https://serpcrypto.com/api/v1/search"
HEADERS = {"Authorization": "Bearer " + os.environ["SERPCRYPTO_API_KEY"]}


def rank_of(domain, query, gl="us", hl="en", location=None, max_pages=3):
    """Return (position, url, searches_used); position is None if not found."""
    params = {"engine": "google", "q": query, "gl": gl, "hl": hl}
    if location:
        params["location"] = location
    for page in range(1, max_pages + 1):
        params["page"] = page
        resp = requests.get(API, headers=HEADERS, params=params, timeout=60)
        resp.raise_for_status()
        for r in resp.json().get("organic_results", []):
            host = urlparse(r["link"]).netloc.lower()
            if host == domain or host.endswith("." + domain):
                return r["position"], r["link"], page
    return None, None, max_pages


if __name__ == "__main__":
    pos, url, used = rank_of("example.com", "project management software", max_pages=3)
    print(pos, url, "searches used:", used)

```

## Should I track AI Overview citations as well as positions?

Yes, if your queries trigger AI Overviews, because a page can rank 7th and still be cited in the overview above position 1. The same search that gives you positions also returns `ai_overview.references` when Google shows an overview, at no extra credit.

Store three things per keyword and day: your organic position, whether your domain is among the overview references, and which other domains are. Over a few weeks this shows which competitors Google's AI cites for your topics, which a position report alone cannot.

## How do I track rankings in several cities?

Run the same query once per city with the `location` parameter, for example `Denver, Colorado, United States` and `Miami, Florida, United States`. Local intent queries, such as services, shops and clinics, can differ a lot from one city to the next, and the map pack in `local_results` changes even more.

Each city is a separate search, so multiply your budget by the number of cities. The [local SEO page](https://serpcrypto.com/use-cases/local-seo/) covers map pack tracking, and [locations and languages](https://serpcrypto.com/docs/locations/) explains the location strings.

## Daily or weekly checks: which one do I need?

Daily checks suit a few hundred keywords that drive revenue, or the weeks after a site migration or a Google update. Weekly checks suit long-tail sets, competitor monitoring and reporting to clients.

A mixed schedule keeps the signal and divides the cost: 200 money keywords daily plus 2,000 long-tail keywords weekly, top 10 only, is 6,000 + 8,000 = 14,000 searches a month. Because SerpCrypto credits never expire, a quiet month does not waste what you bought.

## Which pack fits a rank tracker?

Most rank trackers between 1,000 and 5,000 keywords fit between 100,000 searches and 500,000 searches. Every engine and every page costs one credit; credits never expire.

| Plan | Quantity | Price | Price per unit |
| --- | --- | --- | --- |
| Starter | 25,000 searches | $18.75 | $0.75/1K searches |
| Build | 100,000 searches | $56.25 | $0.56/1K searches |
| Grow | 250,000 searches | $140.63 | $0.56/1K searches |
| Scale | 500,000 searches | $281.25 | $0.56/1K searches |

In every plan: Every engine at 1 credit per search · Failed requests not charged · Credits never expire · Country, language, city and device targeting

**Before you pay**

- Minimum top-up $25. Top up once in crypto, then buy any plan from your balance.
- Unused balance stays on your account and never expires, and it pays for search credits. When a purchase costs less than the minimum top-up, the part added only to reach the minimum is refundable on request to support within 30 days of the payment, in USDT or USDC, as long as it has not been spent. The rest of the balance is not paid back, except where the law requires it.
- Credited once your payment is checked on the blockchain. Typical network confirmation time: BTC ≈ 20 min · USDT TRC-20 ≈ 1 min · USDT ERC-20 ≈ 5 min · USDC ERC-20 ≈ 5 min · ETH ≈ 5 min · SOL ≈ 1 min · LTC ≈ 15 min

## Rank tracking API: common questions

### Why did my rank tracking costs go up in 2025?

Google stopped honouring `num=100` around 10 to 14 September 2025. Before that, one request could return 100 results; now each page of about 10 results is a separate request. Tracking the top 100 therefore takes 10 times more searches than before.

### Can I track mobile and desktop rankings separately?

Yes. Add `device=mobile` to get the phone results page. Mobile and desktop are separate searches, so tracking both doubles the searches for those keywords.

### Does SerpCrypto provide a rank tracking dashboard?

No. SerpCrypto is an API: it returns the results page as JSON, and you store and chart the positions in your own tool, spreadsheet or database. The Python code on this page is a starting point.

### What happens if a search fails during my nightly job?

You get an HTTP error with a code such as `search_failed` or `search_timeout`, and the failed request is not charged. Retry it later with exponential backoff; the [errors page](https://serpcrypto.com/docs/errors/) has a ready-made loop.

### Do I need an ID or a company to buy credits?

No. SerpCrypto is a no-KYC SERP API: no ID, no selfie, no company documents. You top up from $25 in BTC, USDT, USDC, ETH, SOL, LTC and buy a pack from your balance.

## Sources

1. [Google num=100 impact data](https://searchengineland.com/google-num100-impact-data-462231) — Search Engine Land (2025-09)

---

SerpCrypto: SerpCrypto is a SERP API for developers and AI agents that returns Google and Bing results as JSON, paid in crypto with no ID upload. Prepaid search credits from $0.30/1K searches never expire. No KYC — no ID, no selfie, no documents. Pay in crypto.
