← Home
Rank API

Google rankings, as a single JSON call

One endpoint. Give it a domain and a keyword, get back the exact Google organic position and the top-10 results — real SERP data, not Search Console estimates. Built to drop straight into AI assistants, MCP tools, and dashboards. Unlocked by the API plan ($20/mo) — 5,000 searches a month.

Rankings are Google organic results retrieved in real time.

Two APIs — pick the right one

There are two separate endpoints. They share one API key, but they do different jobs and bill differently — don't mix them up:

APIWhat it returnsCost
Live Rank API
GET /api/rank
Any domain's live Google position + top-10, right now. 1 credit / call (metered)
Tracking API
GET /api/tracking
Your OWN tracked keywords' current rank, movement & history. No credits (reads stored data)

Use Live for on-demand lookups of arbitrary domains/keywords (AI agents, ad-hoc checks). Use Tracking to sync the data RankJot already collects for you into your own dashboards — no credits spent. Your key only ever accesses your own account.

What you can build with it

Quickstart

  1. On the API plan, open your accountAPI accessGenerate key. Copy it — it’s shown once.
  2. Call the endpoint with your key:
# Where does example.com rank for "best running shoes"?
curl "https://rankjot.com/api/rank?domain=example.com&keyword=best+running+shoes&country=us" \
  -H "Authorization: Bearer rjk_your_key_here"

Authentication

Pass your key as a bearer token (or the X-API-Key header):

Authorization: Bearer rjk_your_key_here
# — or —
X-API-Key: rjk_your_key_here

Keys are secret — treat them like a password. Rotate or revoke anytime from your account; the old key stops working immediately.

Live Rank API

GET  https://rankjot.com/api/rank

Query parameters

ParamRequiredDescription
domainyesThe site to look up, e.g. example.com. Scheme/www/path are ignored.
keywordyesThe search query to rank for.
countrynoISO country code for the Google market (default us), e.g. gb, de, tr.

Response — 200 OK

{
  "domain": "example.com",
  "keyword": "best running shoes",
  "country": "us",
  "found": true,
  "position": 7,
  "url": "https://example.com/running-shoes",
  "checked_at": "2026-07-13T18:20:00+00:00",
  "results": [
    { "position": 1, "domain": "nike.com", "url": "…", "title": "…" }
    // … up to the top 10 organic results
  ],
  "quota": { "used": 214, "limit": 3600 }
}

position is 1-based, or null when the domain isn’t in the checked depth. found mirrors that as a boolean.

Errors

StatuserrorWhen
400bad_request / bad_countryMissing domain/keyword, or an unknown country code.
401unauthorizedMissing or invalid API key.
403upgrade_requiredYour plan doesn’t include API access — upgrade to enable it.
429rate_limited / quota_exceededPer-minute burst limit, or your monthly query quota is used up.
502provider_errorThe search provider was unreachable — retry.

Billing & quota

Billing is per search. Each API call spends 1 query credit and returns the live top-10 Google results for your keyword. If your domain is on page one you get its exact position; if not, found is false — a real answer, not a failed call. Every response’s quota object shows where you stand, and the budget resets at the start of each month.

PlanPriceAPI searches / month
API$20/mo5,000

API access is exclusive to the API plan — it includes everything in Pro (dashboard, daily tracking, manual checks) plus 5,000 programmatic searches a month. A short per-minute burst limit keeps traffic smooth. Positions are page-one (top ~10); deeper tracking is coming as an option.

Tracking API

GET  https://rankjot.com/api/tracking

Returns the keywords RankJot is already tracking for you — current position, movement, and history — read straight from our stored data. Spends no credits and only ever returns your own account's data. Ideal for syncing into a dashboard, report, or sheet.

Query parameters

ParamRequiredDescription
domainnoFilter to a single tracked site, e.g. example.com.
historynotrue to include each keyword's recent position history (up to 30 points).

Response — 200 OK

{
  "sites": [
    {
      "domain": "example.com",
      "country": "us",
      "keywords": [
        {
          "keyword": "best running shoes",
          "position": 7,       // current rank, null if unranked
          "previous": 9,
          "delta": 2,          // positive = improved toward #1
          "checked_at": "2026-07-13T06:00:00+00:00"
        }
      ]
    }
  ],
  "counts": { "sites": 1, "keywords": 1 }
}
# pull your tracked data, with history, into anything
curl "https://rankjot.com/api/tracking?history=true" \
  -H "Authorization: Bearer rjk_your_key_here"

Use it from an AI assistant (MCP)

RankJot ships a tiny Model Context Protocol server so assistants like Claude can check rankings as a tool. Point your MCP client at mcp/rankjot_mcp.py and set your key:

// claude_desktop_config.json → "mcpServers"
{
  "rankjot": {
    "command": "python",
    "args": ["mcp/rankjot_mcp.py"],
    "env": { "RANKJOT_API_KEY": "rjk_your_key_here" }
  }
}

The server exposes one tool, check_rank(domain, keyword, country?), that returns the same JSON as the endpoint — so the assistant can answer ranking questions on demand.

See plans

Related: Free rank checker · vs Semrush · Cheap rank tracker