SERP API · Rank tracking
Rank tracking API
Where a domain ranks for a keyword, from the city and device you choose: one SERP API call returns the top results as JSON, and your position is the rank of your domain in that list. Google, Bing and DuckDuckGo, $0.0009 per search from the plain page.

How it works
Search, then find your domain.
A rank tracker needs three things from a search: the right place, the right device and enough results to find you. The SERP API takes location (a city or coordinates), device (desktop or mobile) and num, and returns the organic results with their rank, link and domain.
{
"query": "hiking boots",
"location": "Denver, Colorado",
"device": "mobile",
"search_metadata": {
"path": "http",
"total_time_taken": 4.16
},
"organic": [
{
"rank": 1,
"source": "rei.com",
"link": "https://www.rei.com/c/hiking-boots"
},
{
"rank": 2,
"source": "haixusa.com",
"link": "https://www.haixusa.com/hiking-boots/?srsltid=AYCX9vIcuNkJR9iUgUkIzcMo3oOnTznLHhGyZcG2H…"
}
]
}Example
100 keywords, three countries, one script.
import requests
KEYWORDS = ["hiking boots", "trail running shoes"] # up to as many as you track
DOMAIN = "example.com"
for country in ["us", "gb", "de"]:
for kw in KEYWORDS:
r = requests.post("https://api.quanticdata.io/v1/scraper/serp",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"query": kw, "country": country, "device": "mobile", "num": 100})
organic = r.json()["payload"]["organic"]
pos = next((o["rank"] for o in organic if DOMAIN in o["link"]), None)
print(country, kw, pos)For many keywords at once, send them as one job to /v1/serp/bulk and collect the results when it is done. To schedule it without code, the n8n node and the MCP server run the same call.
Location and device
Rankings change by city and by phone.
| Parameter | What it does |
|---|---|
location | Human-readable place ("Denver, Colorado"), encoded server-side; or uule with lat,lon |
country | Market and proxy exit (gl) |
device | desktop, mobile, ios, android: the results page a phone gets |
num | Results to read (up to 100), so you find positions beyond the first page |
engine | google, bing, duckduckgo |
Cost
What tracking costs, at list price.
| Keywords tracked daily | Searches a month | Cost a month |
|---|---|---|
| 100 | 3,000 | $2.70 |
| 1,000 | 30,000 | $27.00 |
| 10,000 | 300,000 | $270.00 |
One search per keyword per day, one country and device; multiply by the countries and devices you track. Searches that need the rendered page cost $0.002. The $2 monthly free credit covers the first 2,200 or so plain searches. No subscription, failed searches not billed.
Before you build it
Questions developers ask
How do I track rankings in a specific city?
Send location with the city name, or uule with coordinates; the results are those a person searching there would see.
Can I track mobile rankings?
Yes: device mobile (or ios, android) returns the results page a phone gets.
How deep can I look?
Up to 100 results per search with num; the position is the rank of your domain in that list.
Does it track Bing too?
Yes, set engine to bing or duckduckgo; Bing matters because ChatGPT draws on its index.
Is there a free tier?
The $2 monthly free credit covers the first searches; then $0.0009 per search from the plain page.
Track your first keywords today.
Create an API key, run the script above and log positions daily. $0.0009 per search, no subscription.