Rank tracking

How to Track Rankings for Thousands of Keywords With a Rank Tracker API

Track 1,000 to 100,000 keywords by city and device without a six-figure tool bill. A step-by-step setup using a rank tracker API: keyword list, location codes, nightly async jobs, storage, and the two numbers to report.

Rank tracking tools charge by the keyword. At 500 keywords that is fine. At 10,000 keywords across 30 cities it is a five-figure yearly bill for daily checks you may not need. And you still cannot get the report you want.

A rank tracker API flips the model. You pay per check, you choose the schedule, and the data lands in your own table. This guide shows how to set that up, step by step, using Serplify’s API as the example. The same shape works with any SERP API.

What a rank tracker API does

A rank tracker API fetches the Google results page for a keyword in a location on a device, and tells you where a domain sits on it. Two numbers matter:

  • Organic rank (rank_group in most APIs): your place among the normal results.
  • Absolute position (rank_absolute): your place counting every block on the page, including AI Overviews, ads, and map packs.

In our September 2026 sample of 200 US result pages, the first organic result held the very first spot on only 14.5 percent of pages. Reporting both numbers is the only honest way to explain why clicks and rank do not move together. If you are new to that distinction, read how to check your Google rankings first.

Step 1: Build the keyword list with locations and devices

Start a table with one row per thing you want to track. Not one row per keyword. One row per keyword, location, and device.

keywordlocation_codedevicetargetlabel
emergency plumber1023191mobileacmeplumbing.comnyc
emergency plumber1014221mobileacmeplumbing.comchicago
plumber near me1023191mobileacmeplumbing.comnyc

Location codes are Google’s own IDs for countries, regions, and cities. 2840 is the United States. 1023191 is New York. You can pull the list from the API for free:

curl "https://api.serplify.io/v1/locations?country=US&limit=5000" \
  -H "Authorization: Bearer live_your_key_here"

Use the most specific code your customers match. A city code for local services. A country code for national brands. The difference is large for anything local, which we cover in how to check local rankings.

Device matters as much as location. Mobile and desktop pages differ in blocks and order. See why mobile and desktop rankings differ. Track the device your customers use, or both.

Step 2: Pick a schedule

More checks cost more and show more noise. A good default:

Keyword groupFrequency
Top revenue keywords, 50 to 200Daily
Everything elseWeekly
During a confirmed Google updateDaily for the week

Rankings wobble by a position or two every day. Weekly checks smooth that out. Daily checks are for the keywords where you would act on a change.

Step 3: Send async requests, not live ones

A live request waits for the page. It is fine for one keyword in a dashboard. For a batch of 10,000 it ties up connections and hits timeouts.

An async request drops a task in a queue and returns at once. You collect results later, by polling or by webhook. Same price on Serplify, no waiting.

Here is one task. The track block tells the API which domain to find and how to label the check:

curl -X POST https://api.serplify.io/v1/serp/tasks \
  -H "Authorization: Bearer live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "keyword": "emergency plumber",
    "location": { "code": 1023191 },
    "language": { "code": "en" },
    "device": "mobile",
    "depth": 100,
    "track": { "target": "acmeplumbing.com", "label": "nyc" },
    "webhook": { "result_url": "https://you.example.com/hooks/serplify?id=$id" }
  }'

The API answers with a task ID right away. When the page is fetched, it posts the full result to your webhook, or you fetch it from /v1/serp/tasks/{id}. Fetching a result is free.

A nightly job in any language loops over the table and sends one task per row. In Python that is about twenty lines with requests.

Step 4: Read the result

Each result carries the whole page plus a small block with the answer:

"tracked_rank": {
  "target": "acmeplumbing.com",
  "rank_absolute": 6,
  "rank_group": 3,
  "url": "https://acmeplumbing.com/emergency",
  "found": true
}

That says the site is organic rank 3 and the sixth block on the page. When the domain is not in the top 100, found is false and the ranks are null. Store that too. A gap in the history is information.

Also store feature_types from the result. It lists every block on the page, like ["local_pack", "organic", "people_also_ask", "ai_overview"]. Next month, when a keyword’s clicks fall and its rank did not, this column tells you what arrived above you.

Step 5: Store it

You do not need a big system. One table with these columns covers most reporting:

columnexample
checked_at2026-09-06T02:10:00Z
keywordemergency plumber
location_code1023191
devicemobile
targetacmeplumbing.com
rank_group3
rank_absolute6
urlhttps://acmeplumbing.com/emergency
feature_typeslocal_pack, organic, people_also_ask
first_organic_position4

Serplify also keeps its own history for every tracked request. GET /v1/serp/track?keyword=...&target=... returns the snapshots, newest first, at no charge. A spreadsheet or a small script can chart a trend from that without a database at all.

Step 6: Report the two numbers, and the features

A useful weekly report has three columns per keyword: organic rank, absolute position, and a flag when a new feature appeared above you. Add a seven-day average so daily noise does not drive decisions.

Then compare against clicks in Google Search Console. When rank held and clicks fell, look at the feature column. When rank fell across a group of keywords for more than a week, read why Google rankings fluctuate before you change anything.

What it costs

Serplify charges $0.005 per successful SERP, up to 100 results, with every feature parsed. Failed fetches are free. History reads are free.

SetupChecks per monthCost per month
1,000 keywords, weekly4,300about $22
1,000 keywords, daily30,000$150
10,000 keywords, weekly43,000about $215
10,000 keywords, daily300,000$1,500
10,000 keywords, 5 cities, weekly215,000about $1,075

Compare that with tool pricing, where 10,000 daily-checked keywords runs into thousands of dollars a month. We lay the tool prices side by side in how much a rank tracker costs. The break-even is usually a few thousand keywords, or any setup with many cities.

Tracking the local pack

Local businesses live or die by the map pack. It comes back as separate local_pack items, each with the business title, rating, and Google’s place ID (cid). Match on the title or the ID, record the pack position, and request a city-level or even neighborhood-level location code. Packs differ from one side of a city to the other.

Tracking SERP features, not just yourself

Once you store feature_types for every check, you have a SERP feature tracker for free. Filter for keywords where people_also_ask is present and you are not in it. Filter for keywords where ai_overview appeared this month and was absent last month. Our guide on finding SERP feature opportunities turns that data into a plan.

Mistakes that waste money

  • Depth 100 on everything. If you only ever act on top-20 changes, request depth 20 on the weekly list and 100 on the keywords you are trying to move. Serplify charges the same either way, but on per-page providers this is the difference between $0.002 and $0.02 per check.
  • Live calls in a batch. Use async. Same data, no timeouts.
  • One country code for a local business. Use the city.
  • Checking daily and reading daily. Check daily if you like, but report weekly averages.
  • Storing only the rank. Store the URL that ranked and the feature list. Both explain changes that rank alone cannot.

Quick recap

  • A rank tracker API fetches the real page per keyword, location, and device, and returns your rank and position.
  • Build a table of keyword, location code, device, and target. Send async tasks on a schedule. Store rank, position, URL, and feature types.
  • Report organic rank and absolute position together, with a seven-day average.
  • At $0.005 per check, 10,000 keywords checked weekly is about $215 a month, and history is free.

Frequently asked questions

What is a rank tracker API?

It is an API that fetches Google results for a keyword, location, and device, and returns where a given domain appears. Some APIs return the whole page and let you find your domain. Others, like Serplify, also accept a target domain and return its rank directly, and keep a history you can query.

How many keywords can I track with an API?

As many as you can pay for. There is no plan cap. Each keyword, location, and device combination is one request per check. 10,000 keywords on two devices checked daily is 20,000 requests a day.

Is a rank tracker API cheaper than a rank tracking tool?

Usually, once you pass a few thousand keywords or need many cities. Tools charge per keyword slot per month, whether you check daily or not. An API charges per check, so weekly checks on 10,000 keywords can cost less than a 2,000-keyword tool plan. You do need a little code and somewhere to store results.

How accurate is API-based rank tracking?

As accurate as the location and device you request. A request for mobile results in Denver returns the page a mobile searcher in Denver sees, with no personalization. That is more consistent than checking by hand, and the same method commercial rank trackers use under the hood.

Can I track local map pack rankings with an API?

Yes. The local pack comes back as separate items with the business name, rating, and Google's place ID. Match on your business name or place ID to record your map rank, and request a city-level location code so the pack matches what local searchers see.

Sources and further reading

  1. Serplify docs: Rank tracking docs.serplify.io
  2. Serplify docs: Async tasks docs.serplify.io
  3. Serplify docs: Locations and languages docs.serplify.io
  4. Google Search Console Help: Performance report support.google.com

From the team that built it

Put this into practice with the SERP API.

Real-time Google SERP API with AI-ready JSON — 26+ SERP feature types, location and device targeting, 99.9% uptime — full live SERPs at a fraction of the going rate.

Start on the free balance — no card required.