Local Rank Tracking API — Track Rankings by Location

Track how a keyword ranks the way a local searcher sees it. Send your keyword with a location target and read the 1-indexed position on every organic result — monitor local pack and map pack visibility, follow local competitors, and roll the same keyword across cities, regions, and 50+ countries. On demand as a local SERP checker, or scheduled as a continuous local rank tracker.

Get an API Key Try in Playground
Local pack & map pack Multi-location tracking 50+ countries Google · Bing · Yahoo · DuckDuckGo From $0.03/10K pages

The Data Layer Behind Any Local Rank Tracker

Managed local rank trackers hand you a dashboard and bill per tracked keyword and location. Serpent hands you the data underneath one — a clean position field on every result, for any keyword, in any location you target. Pipe it into your own database, multi-location dashboard, client report, or AI agent. You own the keywords, the locations, the schedule, and the storage.

Local Pack & Map Pack Monitoring

For local-intent queries like "plumber near me" or "best dentist [city]", track the SERP a local searcher sees and watch your local pack and map pack visibility — and which competitors hold the top local spots.

Multi-Location Tracking

Loop one keyword across every location you serve and store the position for each. The result is a per-location ranking matrix — the core of any multi-location local rank tracker — at per-call pricing, not per-keyword.

Country & Language Targeting

Track the same keyword across 50+ countries with the country parameter and set the result language with language. See the localized rankings a searcher in each market actually gets, from one code path.

Local Competitor Visibility

Pull the full result set for a local keyword and see exactly which businesses rank above you in each market. Track competitor movement on the same local keywords with one consistent response shape.

Daily Local Rank History

Schedule the same location-targeted call on any interval and store each position. Build a time series of how your local rankings move — without paying per-tracked-keyword pricing for every location.

White-Label Local SEO Reports

Feed local positions straight into branded agency reports. Because the ranking data is structured and yours, you can schedule it and ship per-location ranking reports to clients without a third-party tool in the loop.

Check a Local Ranking in One Call

Send a location-qualified keyword to /api/search with a country target. Every organic result returns its position — find your domain and read its local rank. No special flag required; the position field ships on every search.

cURL — rank for a local keyword in a target country
# Top 100 results for a local-intent keyword, each with its position
curl "https://apiserpent.com/api/search?q=best+dentist+austin&engine=google&country=us&num=100" \
  -H "X-API-Key: YOUR_API_KEY"
Python — track one keyword across many locations
import requests

API_KEY = "YOUR_API_KEY"

def local_rank(keyword, domain, country="us", language="en"):
    """Position of `domain` for `keyword` as seen from `country`."""
    resp = requests.get(
        "https://apiserpent.com/api/search",
        headers={"X-API-Key": API_KEY},
        params={"q": keyword, "engine": "google",
                "country": country, "language": language, "num": 100},
    )
    for r in resp.json()["results"]["organic"]:
        if domain in r["url"]:
            return r["position"]
    return None  # not in top 100

# One keyword, a matrix of locations -> a multi-location tracker
locations = [("us", "en"), ("gb", "en"), ("de", "de"), ("in", "en")]
for country, lang in locations:
    pos = local_rank("emergency plumber", "yoursite.com", country, lang)
    print(country, pos or "not ranked")
# Schedule daily and store each row to build a local rank history
JSON Response (annotated)
{
  "success": true,
  "engine": "google",
  "country": "us",
  "results": {
    "organic": [
      {
        "position": 1,            // 1-indexed local rank — always present
        "title": "",
        "url": "https://example.com",
        "snippet": "",
        "pixel_position": 742     // only when pixel_position=true (paid)
      },
      { "position": 2, "title": "", "url": "" },
      { "position": 3, "title": "", "url": "" }
    ]
  },
  "metadata": { "totalOrganicResults": 100 }
}

Everything You Can Control

One endpoint, a handful of parameters. The same call works as an on-demand local SERP checker and as the engine behind a scheduled local rank tracker.

q
The keyword to look up. Add a city or region to the query ("dentist austin") to capture location-qualified local intent. Required.
engine
google, bing, yahoo, or ddg. Track and compare a local keyword's ranking across all four with identical code.
country
Two-letter ISO code — us, gb, de, in, and 50+ more. Returns the rankings a searcher in that country sees. Loop it to track one keyword across many markets.
language
Two-letter ISO 639-1 code (en, es, de…) to set result language. Auto-detected from country when omitted.
num
Number of organic results to return, up to 100. Default 10. Pull deep to catch local competitors below the fold.
pages
Number of result pages to fetch, 110. Positions stay sequential across pages.
freshness
Limit to recent results: d, w, m, or y (day/week/month/year).
pixel_position
true adds an integer pixel_position (exact y-coordinate from the top of the rendered desktop SERP) to every item. Paid tiers; desktop measurement.
Response field: position
1-indexed rank on every organic result, on every engine, with no opt-in. This is the core local-rank-tracking primitive.
Also returned
title, url, snippet on each result, plus metadata.totalOrganicResults for the count measured.

Local Rank Tracking API vs. Managed Local Trackers

Managed local rank trackers bill per tracked keyword and location and lock your data in a dashboard. Serpent gives you the raw ranking data — yours to store, brand, and scale.

Capability Serpent API Managed local trackers SerpApi / DataForSEO
Position on every organic resultYesYesYes
Local pack & map pack visibilityYesYesYes
Multi-location trackingYes — loop locationsYes (per-location fee)Yes
EnginesGoogle · Bing · Yahoo · DuckDuckGoUsually Google onlyGoogle + others
You own the raw dataYesLocked in dashboardYes
Pricing modelPer call, from $0.03/10K pagesPer keyword × locationPer search / per call
Free tier10 free calls, no cardLimited trialTrial credits

See the wider picture in our rank tracking API overview and SerpApi alternatives guide.

Local Rank Tracking API Questions

A local rank tracking API returns the position your site holds for a keyword as a searcher in a specific location would see it. With Serpent you send the keyword plus a location target (country and language) and read the 1-indexed position field on every organic result. Run it on a schedule to track how your local rankings move over time, or on demand as a local SERP checker. It powers local rank trackers, multi-location dashboards, and agency reports without per-keyword pricing.
Yes. Loop the same keyword over each location target you care about — country and language — and store the position returned for each. That gives you a per-location ranking matrix for one keyword, which is exactly what a multi-location local rank tracker is built on. Because you pay per call rather than per tracked keyword, tracking the same keyword set across many locations stays inexpensive at scale.
Yes. For local-intent queries — "plumber near me", "best dentist", "[service] [city]" — Serpent returns the SERP a local searcher sees, so you can monitor your local pack and map pack visibility for those keywords and watch which competitors hold the top local positions. Run the same query on a schedule and store each result to chart how your local pack presence changes over time.
Google, Bing, Yahoo, and DuckDuckGo. Pass engine=google, engine=bing, engine=yahoo, or engine=ddg. Each engine returns the same response shape with a position field on every organic result, so you can track a local keyword's ranking across all four engines with identical code.
Pass country with a two-letter ISO code (country=us, country=gb, country=de, country=in, and 50+ more) to get the rankings a searcher in that country sees, and language with a two-letter code to set the result language. Combine that with location-qualified keywords (for example "[keyword] [city]") to monitor city- and region-level local intent. Schedule the calls and store each position to build a continuous local rank history.
Google rankings start at $0.03 per 10,000 pages at the Scale tier. There is no subscription and no per-tracked-keyword fee — you pay per call. Every account gets 10 free calls to start, and depositing $100 unlocks 10× lower pricing (20× at $500). Tracking a few hundred local keywords across several locations daily costs cents per month. See full pricing.
Yes. Managed local rank trackers hand you a finished dashboard and charge per tracked keyword and location. Serpent is the API underneath one — it returns live, structured local ranking data you own and can pipe into your own database, dashboard, agent, or white-label client report. You control the keywords, the locations, the schedule, and the UI, which is dramatically cheaper at scale.

Start Tracking Local Rankings Free

Query any local keyword and read its position by location on Google, Bing, Yahoo, or DuckDuckGo. Per-call pricing from $0.03/10K pages, 10 free calls, no subscription.

Get an API Key