The Cheapest Gemini Rank Tracking API for Developers

The sources a Gemini answer cited, your position among them, and a visibility score. From $1.00 per 1,000 queries.

Try for Free View Documentation
From $1.00/1K queries Free to start No Cloud project needed Citations with positions

Call GET /api/ai/rank/gemini with a keyword and, optionally, a target domain. No cloud console, no project setup, no service account.

Run a live Gemini rank check

One real call, no signup and no key. You get the cited sources and the raw JSON in one view.

Gemini Citations, One Flat Rate

One call is one Gemini-labeled answer and the sources cited in it. The same rate bills whether an answer cites two sources or fifteen.

GET /api/ai/rank

All four engines

from $2.00
/1K queries (Scale tier)
  • Gemini, ChatGPT, Claude and Perplexity in one call
  • Half the price of four separate single-engine calls
  • One blended visibility score across the four
  • $10.00 an engine at Default, $0.50 an engine at Scale
Default$40.00/1K queries
Growth$4.00/1K queries
Scale$2.00/1K queries
Compare engines →

A single deposit unlocks each discount — $100 for Growth, $500 for Scale — and the tier is permanent once earned. Nothing recurs, nothing expires, and every account starts with free API calls.

A Gemini Rank Check Without a Cloud Project

One API key in a header and three query parameters. There is no console to visit, no billing account to attach and no region to pick.

cURL — Gemini rank check
# The Gemini answer for a keyword, with every source it cited
curl "https://apiserpent.com/api/ai/rank/gemini?q=best+email+marketing+platform" \
  -H "X-API-Key: YOUR_API_KEY"

# Track a domain: position, match type and the score come back filled in
curl -G "https://apiserpent.com/api/ai/rank/gemini" \
  --data-urlencode "q=best email marketing platform" \
  -d "domain=mailchimp.com" -d "prompt_type=brand" \
  -H "X-API-Key: YOUR_API_KEY"
Python — requests
# pip install requests
import requests

resp = requests.get(
    "https://apiserpent.com/api/ai/rank/gemini",
    params={"q": "best email marketing platform", "domain": "mailchimp.com"},
    headers={"X-API-Key": "YOUR_API_KEY"},
    timeout=60,
)
gemini = resp.json()["results"]["gemini"]

print(gemini["target_found"], gemini["target_position"])
for c in gemini["citations"]:
    print(c["position"], c["domain"], c["title"])
Node.js — fetch
// Node 18+ — fetch is built in. Allow a generous timeout.
const qs = new URLSearchParams({
  q: 'best email marketing platform',
  domain: 'mailchimp.com'
});

const res = await fetch('https://apiserpent.com/api/ai/rank/gemini?' + qs, {
  headers: { 'X-API-Key': process.env.SERPENT_KEY },
  signal: AbortSignal.timeout(60000)
});
const { results, aggregate } = await res.json();

console.log(results.gemini.target_position, aggregate.visibility_score);
console.log(aggregate.all_domains_cited.join(', '));
JSON Response (partial)
{
  "success": true,
  "run_id": "2f9c7d13-58ab-4e60-9c0a-33b1de5f8102",
  "keyword": "best email marketing platform",
  "target_domain": "mailchimp.com",
  "results": {
    "gemini": {
      "llm": "gemini",
      "model": "gemini-3.1-pro",
      "citations": [
        {
          "position": 1,
          "url": "https://example.com/email-platforms-2026",
          "title": "Email Marketing Platforms Compared, 2026",
          "cited_text": "...list size is what actually drives the monthly bill [1]",
          "url_normalized": "example.com/email-platforms-2026",
          "domain": "example.com"
        },
        {
          "position": 2,
          "url": "https://mailchimp.com/pricing",
          "title": "Mailchimp Pricing",
          "cited_text": "...a free plan capped by contacts rather than by sends [2]",
          "url_normalized": "mailchimp.com/pricing",
          "domain": "mailchimp.com"
        }
      ],
      "target_found": true,
      "target_position": 2,
      "target_match_type": "exact",
      "target_matched_domain": "mailchimp.com",
      "total_citations": 8,
      "response_text": "Most teams narrow this down by list size and automation needs...",
      "error": null
    }
  },
  "aggregate": {
    "visibility_score": 21,
    "found_in": ["gemini"],
    "best_position": { "engine": "gemini", "position": 2 },
    "all_domains_cited": ["example.com", "mailchimp.com"],
    "total_latency_ms": 11960
  },
  "meta": { "elapsed": "11990ms", "timestamp": "2026-09-08T10:00:00.000Z" }
}

A score of 21 on a single-engine call is not a low score. visibility_score is weighted per engine and blended across the engines in the response, so a Gemini-only call tops out at 25. Chart target_position for one engine and call /api/ai/rank when you want the full 0–100 blend across all four.

Every Field a Gemini Call Returns

Named JSON fields you can index straight into. Every key is present on every response, so an answer that cited nothing still returns the same object.

Cited source fields

  • citations[].position
  • citations[].url
  • citations[].title
  • citations[].cited_text
  • citations[].url_normalized
  • citations[].domain
  • total_citations

Domain tracking fields

  • target_domain
  • target_found
  • target_position
  • target_match_type
  • target_matched_domain
  • aggregate.found_in
  • aggregate.best_position

Answer and run fields

  • run_id
  • keyword
  • llm
  • model
  • response_text
  • aggregate.visibility_score
  • aggregate.all_domains_cited
  • aggregate.total_latency_ms
  • meta.elapsed

Request parameters

  • q (the question, required)
  • keyword (alias for q)
  • domain (optional target)
  • prompt_type=standard (default)
  • prompt_type=deep (up to 15 citations)
  • prompt_type=brand (comparison form)
  • X-API-Key (request header)

What Gemini citation data is, and why teams track it

Gemini answers appear inside the surface most brands already watch closely. A citation there is a placement you can count.

The official route costs more and asks for more

Google publishes 5,000 free requests a month on its own developer API, which is real and generous, and worth taking if it fits. Past that, its published rate is $14.00 per 1,000 requests plus token costs — dearer than every other rate in the comparison table below.

It also wants a Google Cloud project, a billing account and a service credential. This endpoint wants an API key in a header.

A citation is the placement

An answer names a few sources and the reader stops there. citations[] is ordered by first appearance, so position is a genuine ordering rather than an array index, and target_position is what moves when your content changes.

all_domains_cited gives you the whole field in the same call, so one request per keyword measures your competitors as well as yourself.

Priced per call, with no plan attached

Most of this market sells a monthly dashboard seat and puts API access behind the top plan. Athena publishes $295 a month, which is $81.94 per 1,000 responses; Profound’s lowest published credit rate is $44.33 per 1,000, on annual billing.

Here the unit is a call and the price is flat at any volume. Ten calls cost ten calls, and there is no plan to cancel afterwards.

The score has a per-engine ceiling

visibility_score is weighted by engine and blended across the engines present in the response, so a Gemini-only call tops out at 25 even when your domain is cited first. The cap is set by the blend, not by how well the page did.

Use target_position for a single-engine series, and /api/ai/rank when you want the full 0–100 number across all four engines at once.

What One Gemini Answer Costs, By Vendor

Each cell is that vendor’s lowest published rate, including the two that undercut our Growth tier, beside what reaching it costs.

Provider Cost per 1,000 Unit What the lowest rate requires Free tier
Serpent (ours)$1.001 call = 1 Gemini answerOne-time $500 deposit, permanentFree to start
Oxylabs$0.95Per result, 17 parsed fieldsA custom quote. Its cheapest rate on a plan with a published price is $1.00 on $999 a month2,000 results
SearchApi.io$1.00Per search$5,000 a month100 requests
ScrapingBee$1.1215 credits per request$599 a month1,000 credits
DataForSEO LLM Scraper$1.20Per results page$50 minimum deposit, and a queue of up to 45 minutesNone
cloro.dev$1.224 credits per request$5,000 a month500 credits a month
Bright Data$1.30Per record$499 a month5,000 records a month
Google (own API)$14.00 plus tokensPer requestA Google Cloud project and a billing account5,000 requests a month

The Oxylabs, DataForSEO, ScrapingBee and SearchApi.io rows were re-read from those pages on 2026-09-10; the rest were read on 2026-09-08 and are unchanged. Oxylabs publishes a cheaper non-JavaScript band as well, but nowhere states whether it applies to the AI targets, so the rate quoted here is its lowest published JavaScript one. Its plan tiles rotate in a carousel, so a single page view shows only part of the ladder.

$1.00 per 1,000 on Scale is the lowest rate here that a one-time payment reaches. SearchApi.io matches it and needs $5,000 a month; Oxylabs goes lower, to $0.95, but only on a quote-only tier, and its cheapest rate on a plan with a published price is $1.00 on $999 a month. Every other rate under $2.00 here sits behind a recurring plan too, from $499 to $5,000 a month. Ours is unlocked by depositing $500 once, and that tier is never withdrawn.

We are not the cheapest at Default or Growth, and the alternatives that beat those two rates deserve naming. ScrapingBee reaches $1.12 on a $599 monthly plan. DataForSEO reaches $1.20 for a $50 minimum deposit, but that is a queue that can take up to 45 minutes rather than a call you wait on; their live rate is $4.00 per 1,000, twice our Growth rate.

Google’s own developer API is the honest outlier. Its 5,000 free requests a month are real, and if your volume fits inside them it is the cheapest option on this page. Past that it is $14.00 per 1,000 requests plus token costs, and it needs a Google Cloud project that none of the other rows here require.

What Teams Run Gemini Rank Checks For

Four jobs this endpoint gets bought for, and the parameter or field each one leans on.

Tracking a Google-ecosystem surface

Teams that already report Google rankings usually want the Gemini column next to them, on the same keyword list and the same weekly cadence. One call per keyword, with your own domain, gives you target_found and target_position to sit beside the rank.

Keep prompt_type=standard across a series so the question stays the same from week to week.

Share of citations against rivals

all_domains_cited is the deduplicated domain list for the run, so a single call per keyword measures the whole field. Count appearances per competitor across a keyword set and you have a share number rather than an anecdote.

No domain is required. Leave it out and you still get every citation; only the target fields and the score stay empty.

Testing whether a page is quotable

cited_text carries the passage around each reference in the answer, so you can see which claim on a page got picked up rather than only that the page was named.

Rewrite, wait, re-run the same keyword, and compare the two citation lists. The evidence lives in your own storage, not in a vendor dashboard.

Buying questions and long-form audits

prompt_type=brand asks the comparison form of a query, so the answer names and ranks options instead of describing a category — the shape a buyer actually types.

prompt_type=deep raises the ceiling from 10 citations to 15 for topic audits, where the long tail of sources matters more than the top few.

Bash — nightly Gemini citation log
# date, keyword, our position, how many sources the answer cited, and the
# full domain list -- enough to rebuild share of citations later.
DOMAIN="example.com"

while IFS= read -r kw; do
  curl -s -G "https://apiserpent.com/api/ai/rank/gemini" \
      --data-urlencode "q=$kw" \
      -d "domain=$DOMAIN" \
      -H "X-API-Key: $SERPENT_KEY" \
    | jq -r --arg d "$(date -u +%F)" --arg k "$kw" \
        '[$d, $k, (.results.gemini.target_position // 0),
           .results.gemini.total_citations,
           (.aggregate.all_domains_cited | join("|"))] | @csv' \
    >> gemini-citations.csv
done < keywords.txt

Gemini Rank Tracking API Questions

No. This endpoint takes an API key in a request header and three query parameters. There is no console to visit, no billing account to attach, no service credential to rotate and no region to choose. If you already have a Google Cloud project and your volume fits inside Google’s own free monthly allowance, use that instead; this exists for the case where it does not.
A Gemini-labeled answer for your keyword plus the sources cited in it. Per source: position, url, domain, page title, a normalized URL for matching, and cited_text, which is the passage of the answer the reference sits in. Per response: total_citations, the answer in response_text, the public model label, and — only if you sent a domain — the target fields and a score.
Three rates: $20.00 per 1,000 queries on Default, $2.00 on Growth and $1.00 on Scale. A single $100 deposit moves you to Growth and a single $500 deposit to Scale, and neither is ever taken back. Nothing renews, nothing lapses, and the free API calls a new account starts with can be spent here.
Google publishes 5,000 free requests a month on its own developer API, and past that a rate of $14.00 per 1,000 requests plus token costs. So for small volumes Google’s free allowance wins outright, and for anything past it our Default tier of $20.00 is in the same range while Growth at $2.00 and Scale at $1.00 are far below. The other difference is setup: a Cloud project and a billing account, against an API key in a header.
Every response carries a model field with the public Gemini model label, currently gemini-3.1-pro. Store it with each result so that when the label changes, a shift in your chart has an explanation in your own data rather than looking like unexplained movement.
Because visibility_score blends the engines in the response and weights each one, so a Gemini-only call has a single contributor and cannot pass 25 — not even from first place. The ceiling belongs to the blend, not to your page. Chart target_position when you are watching one engine, and use /api/ai/rank when you want the whole 0 to 100 range.
Up to 10 with the default prompt style and up to 15 with prompt_type=deep. Both are ceilings rather than promises: narrow questions often produce fewer, and total_citations reports how many arrived. When nothing was cited, citations comes back as an empty array rather than a missing key, so your parser never has to branch.
Yes, and the response records which of the two it was. target_match_type reads exact when the cited domain is the one you asked for, and subdomain when it is a host beneath it, with that host in target_matched_domain. The exact form is checked before the subdomain form, so your main domain takes precedence whenever both were cited.
Yes. GET /api/ai/rank answers for all four at once, nesting the same object under each engine name. Its rate is $40.00 per 1,000 on Default, $4.00 on Growth and $2.00 on Scale, so four engines cost half what four separate calls would, in a single wait. Narrow it with engines=gemini,chatgpt if you want two; the combined rate applies to any call that names more than one.
Between 10 and 25 seconds is normal here, well above a search call, so set a client timeout of at least 60 seconds and do not treat a slow response as a fault. Asking for several engines through the combined endpoint also costs less than calling them individually.

Start tracking Gemini citations

free API calls, no card, no subscription and no Cloud project. Gemini rank checks from $1.00 per 1,000 queries.

Try for Free

Related guides

More on getting cited across Google’s AI surfaces, and on measuring it.

AI Mode Ranking Factors15 factors that actually move AI Mode citations. Query Fan-Out ExplainedWhy one Google question becomes many searches. Track AI Mode in PythonA runnable script for logging citations over time. AI Overview Tracking ToolsWhat the tools in this category actually measure. Citation Tracker in PythonA runnable tracker across all four engines. AI Visibility ScoringWhat a visibility score is actually measuring. AI Rank APIAll four engines behind one endpoint and one key. Perplexity Rank APIThe same response shape for Perplexity answers.