Rank Tracking API — Track Keyword Positions on Every Major Engine

Every search returns a 1-indexed position on every organic result, across Google, Bing, Yahoo, and DuckDuckGo. Look up a keyword's ranking on demand as a SERP checker, or schedule it to track movement over time — the live, structured ranking data is yours to store and report on. Country-level targeting, up to 100 results per call, plus optional pixel position.

Get an API Key Try in Playground
Position on every result Google · Bing · Yahoo · DuckDuckGo 50+ countries From $0.03/10K pages 10 free calls

The Ranking Data Layer for Any Tracker

Managed rank trackers hand you a dashboard. Serpent hands you the data underneath one — a clean position field on every result you can pipe into your own database, dashboard, client report, or AI agent. You own the keywords, the schedule, and the storage.

Daily Rank Tracking

Schedule the same keyword call on any interval and store each position. Build a time series of where every keyword ranks — the foundation of any rank tracker — without paying per-tracked-keyword pricing.

On-Demand SERP Checker

Need a one-off answer to "where does this keyword rank right now?" One call returns the full result set with positions — the same endpoint doubles as a SERP and rank checker API.

Competitor Monitoring

Pull the full top-100 for a keyword and watch which domains move in and out. Track competitor rankings on the exact same keywords you do, with one consistent response shape.

Country-Level Tracking

Track the same keyword across 50+ countries with the country parameter. See the rankings a searcher in the US, UK, Germany, or India actually gets — localized result sets, one code path.

Pixel-Accurate Visibility

Add pixel_position=true and each result also returns its exact y-coordinate on the page. Rank #3 below an AI Overview and four ads is a very different result than rank #3 at the top — track what users actually see.

Automated Client Reports

Feed positions straight into white-label SEO reports. Because the data is structured and yours, you can brand it, schedule it, and ship ranking reports to clients without a third-party tool in the loop.

Check a Ranking in One Call

Send a keyword to /api/search or /api/search/quick. Every organic result returns its position — find your domain and read its rank. No special flag required; the position field ships on every search.

cURL — check a keyword's Google ranking
# Top 100 Google results for a keyword, each with its position
curl "https://apiserpent.com/api/search?q=best+running+shoes&engine=google&country=us&num=100" \
  -H "X-API-Key: YOUR_API_KEY"
Python — find your domain's rank
import requests

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

print(get_rank("best running shoes", "yoursite.com"))
# Schedule this daily and store each result to build a rank tracker
Node.js — track one keyword across all four engines
const engines = ["google", "bing", "yahoo", "ddg"];

for (const engine of engines) {
  const r = await fetch(
    `https://apiserpent.com/api/search?q=serp+api&engine=${engine}&country=us&num=50`,
    { headers: { "X-API-Key": "YOUR_API_KEY" } }
  );
  const { results } = await r.json();
  const hit = results.organic.find(x => x.url.includes("yoursite.com"));
  console.log(engine, hit ? hit.position : "not ranked");
}
JSON Response (annotated)
{
  "success": true,
  "engine": "google",
  "results": {
    "organic": [
      {
        "position": 1,            // 1-indexed 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 rank checker and as the engine behind a scheduled rank tracker.

q
The keyword to look up. Required.
engine
google, bing, yahoo, or ddg. Track and compare a 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. Country-level; city/postcode targeting is not supported.
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.
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 rank-tracking primitive.
Also returned
title, url, snippet on each result, plus metadata.totalOrganicResults for the count measured.

Rank Tracking API vs. SerpApi & DataForSEO

All three return organic positions. Where Serpent differs is price, the included pixel position, and a genuine no-card free tier.

Capability Serpent API SerpApi.com DataForSEO
Position on every organic resultYesYesYes
EnginesGoogle · Bing · Yahoo · DuckDuckGoGoogle + othersGoogle + others
Up to 100 results per callYesYesYes
Country-level targeting50+ countriesYesYes
Exact pixel position includedYes — no extra costPartial (Google, block-level)Live Advanced (premium)
Pricing modelPer call, from $0.03/10K pagesPer search, subscriptionPer call
Free tier10 free calls, no card100/moTrial credits

See the full breakdown in our SERP API pricing comparison and SerpApi alternatives guides.

Rank Tracking API Questions

Send your keyword to the rank tracking API with engine=google and country=us. Every result in the response carries a 1-indexed position field. Find your domain in the organic array and read its position — that's its current Google ranking. Run the same call on a schedule (daily, weekly) and store each position to track movement over time. The position field is not opt-in; it ships on every organic result by default.
They are the same endpoint used two ways. A SERP / rank checker API answers "where does this keyword rank right now?" with a single on-demand call. A rank tracking API answers "how has this keyword moved over time?" by scheduling that same call on an interval and storing each result. Serpent returns the position field on every search, so it works as both — a one-off rank checker and the data layer behind a continuous rank tracker.
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 and compare a keyword's ranking across all four engines with identical code.
Yes. 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. Targeting is country-level; city or postcode-level location targeting is not supported.
Up to 100 organic results in a single call. Use num to set the count (default 10) and pages to fetch multiple result pages (1–10). Every result, on every page, comes back with its sequential position so you can track rankings well beyond the top 10.
Google rankings start at $0.03 per 10,000 pages at the Scale tier. There is no subscription and no per-seat fee — you pay per call. Every account gets 10 free calls to start, and depositing $100 unlocks 10× lower pricing (20× at $500). Tracking 1,000 keywords daily on DuckDuckGo costs cents per month. See full pricing.
Yes. Add pixel_position=true (paid tiers) and every result also returns an integer pixel_position — the exact y-coordinate from the top of the rendered desktop SERP. Ordinal rank tells you the position number; pixel position tells you how far a user actually scrolls past AI Overviews, ads, and snippets to reach you. Measurement is desktop; mobile is on the roadmap.
A managed rank tracker is a finished dashboard. Serpent is the API underneath one — it returns live, structured ranking data you own and can pipe into your own database, dashboard, agent, or client reports. You control the keywords, the schedule, the storage, and the UI. That's why it's priced per call instead of per tracked keyword, which is dramatically cheaper at scale.

Start Tracking Rankings Free

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

Get an API Key