Rank tracking API: live top-10 Google positions by country and device

Serper.live is a live Google SERP API, not a rank tracking dashboard. It gives your own tracker the one thing it cannot produce by itself: the organic results Google shows right now for a keyword in a chosen country on a chosen device, as JSON with a position on every result.

Published: Updated:
Rank tracking API: live top-10 Google positions by country and device
On this page
01

Why a SERP API instead of a rank tracking SaaS

A rank tracking service sells you its schedule, its keyword limits and its reports. A SERP API sells you the raw material: the live top 10, or up to the top 100, for each keyword, with the schedule, the storage and the reporting in your hands.

That makes Serper.live the backend for a tracker you own: an agency dashboard, a module in your SEO product, a nightly job that writes positions into your database. No seats, no keyword quotas, no per-project plans; the bill is the number of searches multiplied by the market price.

The trade-off is plain: you write the scheduler and the storage, and each check is a real Google search that takes a few seconds. In return every stored position was fetched at a known time, for a known country and device, never from a cache.

02

How to get a keyword position

One request per keyword, country and device. The documentation has the full reference; the logic in your code is four steps, and the example below is the same request in curl, JavaScript and Python:

  1. Send POST /v1/search with query, country and device, optionally language and limit. A live search usually returns in 2–3 seconds, the first one to a market after a pause takes longer: keep the client timeout at least 100 seconds and run checks from a queue.
  2. Read organic[]. Each entry has position, title, url, domain and snippet, in the order Google shows them.
  3. Find the entry whose domain matches the site you track and store its position with fetchedAt and requestId. Decide in advance whether a subdomain counts for the root domain, and ignore a leading www..
  4. No match means outside the requested range for that check, the top 10 by default. Store that too: a keyword dropping out of the top 10 is exactly what a tracker exists to catch.
curl
curl -s -X POST https://api.serper.live/v1/search \
  -H "Authorization: Bearer sl_live_YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query":"best coffee shops","country":"DE","device":"desktop"}' \
  | jq '.organic[] | select(.domain == "example.com") | .position'
JavaScript
const response = await fetch('https://api.serper.live/v1/search', {
    method: 'POST',
    headers: {
        Authorization: 'Bearer sl_live_YOUR_TOKEN',
        'Content-Type': 'application/json',
    },
    body: JSON.stringify({ query: 'best coffee shops', country: 'DE', device: 'desktop' }),
    signal: AbortSignal.timeout(100000),
});
const { organic } = await response.json();
const hit = organic.find(row => row.domain === 'example.com');

console.log(hit ? hit.position : 'outside the top 10');
Python
import requests

response = requests.post(
    "https://api.serper.live/v1/search",
    headers={"Authorization": "Bearer sl_live_YOUR_TOKEN"},
    json={"query": "best coffee shops", "country": "DE", "device": "desktop"},
    timeout=100,
)
organic = response.json()["organic"]
position = next((row["position"] for row in organic if row["domain"] == "example.com"), None)
print(position or "outside the top 10")
03

Markets and devices

Open markets right now: Germany, France, United Kingdom, Türkiye, Ukraine, and United States. Every market has a two-letter code you pass as country, a default Google interface language you can override with language, and both desktop and mobile at the same price.

New markets appear in GET /v1/countries and on the pricing page as they launch; your integration does not change.

04

What it costs

A check is one request: from $0.01 per keyword, per country, per device, which is $10.00 per 1,000 checks. There is no subscription, and credit is prepaid in USDT or USDC from $5 and never expires.

Example: 500 keywords checked once a day on one device come to about 15,000 requests a month. Multiply by the price of your market, or type the number into the calculator on the pricing page. Desktop and mobile double the count; two checks a day double it again.

05

Limits you should know

  • A live search usually takes 2–3 seconds, the first one for a market after a pause longer. Plan for throughput: run checks concurrently from a queue with a client timeout of at least 100 seconds.
  • Positions go as deep as you ask: limit 1–100, 10 by default. Every started block of 10 costs one market price, so a check of the top 30 reserves three prices and keeps only the blocks that received results; a site outside the requested range is reported as absent, not as a position.
  • Nothing is cached. Two identical requests are two live searches and two charges; keep the results on your side.
  • Results are specific to the country, device and language you send. Compare a position only with earlier checks made with the same three values.
  • Google varies results between checks and over time. One live check is a sample; the trend over days is the signal to report.
06

Start with one keyword

Try it before you write code: the playground runs three live searches per IP address per day without an account, and its domain field shows the position straight away. Then create an account, add credit from $5 and send the first request from the quick start.

FAQ

Rank tracking API questions

Is this a keyword rank checker API?

Yes, in the sense that matters: send a keyword, a country and a device, and the response holds the live top 10, or up to 100 results with limit, with a position on each result. Finding your domain in it is one loop in your code.

Can I use it as a Google rank checker API by country?

Yes. The country parameter selects the market, the markets open right now are Germany, France, United Kingdom, Türkiye, Ukraine, and United States, and each accepts desktop or mobile. The language parameter changes the interface language from the market default.

Is there a rank tracking API without a subscription?

This is one. Serper.live has no plans and no monthly fee: you top up a balance from $5 in USDT or USDC, each check costs the market price, and unused credit never expires.

Does it return positions beyond 10?

Yes, up to 100. By default a request returns the top 10; set limit up to 100 and the response holds further pages of results in one call, with every started block of 10 charged at the market price. If the domain you track is not among the results, treat the keyword as outside the requested range for that check.

How often can I check a keyword's position?

As often as your balance allows: each check is a live search, billed separately, and nothing is cached. Daily is the usual cadence; hourly works for a short list. Searches run in parallel, with no quota on checks.

Start with a few dollars of credit.

No subscription and no minimum contract. Create a Serper.live account, add USDT or USDC and send your first live request in minutes.