REST API · Live

Open Source Rank Tracker API

The open source rank tracker API you actually want: a production REST endpoint that tracks SERP keyword positions, monitors competitor displacement, fires rank change alerts, and measures citation velocity — with no infrastructure to run, no proxy rotation to manage, and no CAPTCHA headaches. $0.002 per call — lower than SerpWatch's public per-check rate. 5,000 free credits (24-hour trial), no credit card.

$0.002 / call JSON responses 5,000 free credits (24-hour trial) No credit card No infrastructure to run Rank alerts included
Get an API key (free) Quick start See pricing API docs

Why developers search for an open source rank tracker API

Most rank tracking tools are built for marketing dashboards, not developers. Subscription costs start at $29–$224+/month, seat fees compound quickly, and getting raw data out for your own pipelines requires CSV exports or undocumented APIs. Open source alternatives exist, but they require you to stand up servers, rotate proxies, handle CAPTCHA challenges, and maintain the scraper as search engines update their pages.

PixelAPI's geomind-rank-tracker is the middle path: a fully managed, pay-per-call REST API that gives you clean JSON rank data with no infrastructure overhead. It behaves like open source in the ways that matter for developers — transparent pricing, REST-first design, no lock-in, works in any language — while handling the messy reliability layer so you don't have to.

Quick start — open source rank tracker API in one call

Sign up, copy your key from the dashboard, and call the competitor displacement endpoint with your target keyword. You get back a structured JSON list of domains, their current SERP positions, position deltas, and estimated organic traffic. No SDK required — a plain HTTP GET is enough to start.

# Track keyword positions — open source rank tracker API
curl "https://api.pixelapi.dev/v1/geomind/competitor/displacement?keyword=seo+rank+tracker" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Response:
# {
#   "keyword": "seo rank tracker",
#   "scanned_at": "2026-10-09T01:00:00Z",
#   "competitors": [
#     {"domain": "semrush.com",  "position": 1, "change": 0,  "estimated_traffic": 42500},
#     {"domain": "ahrefs.com",   "position": 2, "change": 1,  "estimated_traffic": 38200},
#     {"domain": "moz.com",      "position": 3, "change": -1, "estimated_traffic": 29100}
#   ],
#   "total_competitors": 5,
#   "displacement_alerts": 2
# }

# Get active rank change alerts
curl "https://api.pixelapi.dev/v1/geomind/alerts" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Save a rank scan snapshot
curl -X POST "https://api.pixelapi.dev/v1/geomind/scan/save" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"mysite.com","keyword":"seo rank tracker","score":82,"grade":"A"}'
pip install pixelapi
---
from pixelapi import PixelAPI

client = PixelAPI(api_key="YOUR_API_KEY")

# Track SERP keyword positions
result = client.geomind.competitor_displacement(keyword="seo rank tracker")
for c in result["competitors"]:
    print(c["domain"], c["position"], c["change"])

# Get rank change alerts (drop, rise, competitor_new, sentiment_spike)
alerts = client.geomind.alerts()
drops = [a for a in alerts["alerts"] if a["type"] == "rank_drop" and a["severity"] == "high"]
print(f"{len(drops)} high-severity rank drop alerts")

# Save and retrieve rank scan history
client.geomind.scan_save(url="mysite.com", keyword="seo rank tracker", score=82, grade="A")
history = client.geomind.scan_history()
print(history["scans"])
npm install pixelapi
---
import { PixelAPI } from "pixelapi";

const client = new PixelAPI({ apiKey: process.env.PIXELAPI_KEY });

// Track keyword positions
const result = await client.geomind.competitorDisplacement({ keyword: "seo rank tracker" });
result.competitors.forEach(c =>
  console.log(`${c.domain}: #${c.position} (${c.change >= 0 ? "+" : ""}${c.change})`)
);

// Poll alerts and fire Slack notification on rank drop
const alerts = await client.geomind.alerts();
const drops = alerts.alerts.filter(a => a.type === "rank_drop" && a.severity === "high");
if (drops.length > 0) notifySlack(drops);

// Check citation velocity for trending keywords
const vel = await client.geomind.citationVelocity({ keyword: "seo rank tracker" });
console.log(`24h citations: ${vel.velocity_24h}, acceleration: ${vel.acceleration}`);
composer require pixelapi/pixelapi
---
<?php
use PixelAPI\Client;

$client = new Client(getenv("PIXELAPI_KEY"));

// Track keyword positions
$result = $client->geomind->competitorDisplacement(["keyword" => "seo rank tracker"]);
foreach ($result["competitors"] as $c) {
    echo "{$c['domain']} — position {$c['position']} (delta: {$c['change']})\n";
}

// Get citation velocity data
$velocity = $client->geomind->citationVelocity(["keyword" => "seo rank tracker"]);
echo "Citations in last 24h: {$velocity['velocity_24h']}\n";
echo "7-day acceleration: {$velocity['acceleration']}\n";

// Retrieve rank scan history for client reports
$history = $client->geomind->scanHistory();
foreach ($history["scans"] as $scan) {
    echo "{$scan['keyword']}: {$scan['grade']} ({$scan['score']}/100) @ {$scan['timestamp']}\n";
}
gem install pixelapi
---
require "pixelapi"

client = PixelAPI::Client.new(api_key: ENV["PIXELAPI_KEY"])

# Track keyword positions
result = client.geomind.competitor_displacement(keyword: "seo rank tracker")
result["competitors"].each do |c|
  puts "#{c['domain']}: ##{c['position']} (change: #{c['change']})"
end

# Save a rank scan snapshot for historical tracking
client.geomind.scan_save(
  url: "mysite.com",
  keyword: "seo rank tracker",
  score: 82,
  grade: "A"
)

# Get keyword sentiment (bullish/bearish/neutral)
sentiment = client.geomind.sentiment(keyword: "seo rank tracker")
puts "Sentiment: #{sentiment['overall']} (score: #{sentiment['score']})"
go get github.com/pixelapi/pixelapi-go
---
import (
    "fmt"
    pixelapi "github.com/pixelapi/pixelapi-go"
)

client := pixelapi.New("YOUR_API_KEY")

// Track keyword positions
result, err := client.Geomind.CompetitorDisplacement("seo rank tracker")
if err != nil { panic(err) }
for _, c := range result.Competitors {
    fmt.Printf("%s: position %d (change %+d)\n", c.Domain, c.Position, c.Change)
}

// Get active rank alerts
alerts, err := client.Geomind.Alerts()
if err != nil { panic(err) }
fmt.Printf("%d active alerts (%d total)\n", alerts.ActiveAlerts, alerts.TotalAlerts)

// Get citation velocity for trending keyword detection
vel, err := client.Geomind.CitationVelocity("seo rank tracker")
if err != nil { panic(err) }
fmt.Printf("24h velocity: %d, 7d trend: %v\n", vel.Velocity24h, vel.Trend7d)

Open source rank tracker API — pricing vs rivals

Open source self-hosted rank trackers have real costs: server compute, proxy subscriptions, bandwidth, and engineering time to maintain scrapers. Here is how PixelAPI's pay-per-call pricing compares to self-hosting and to commercial subscription tools:

ProviderPricing modelPer-check costInfrastructure requiredFree tier
PixelAPI geomind-rank-tracker Pay per API call $0.002 / call None — REST API 5,000 credits (24-hour trial), no card
SerpWatch Subscription (checks/month) ~$0.0039/check (annual Starter: $29/mo ÷ 7,500 checks) None (SaaS) 14-day money-back guarantee
AccuRanker Subscription (keywords tracked) See accuranker.com/pricing None (SaaS) No public free tier
SEMrush API Add-on to subscription plan See developer.semrush.com None (SaaS) Limited free API rows on paid plan
Ahrefs API Subscription add-on See docs.ahrefs.com None (SaaS) See ahrefs.com/pricing
Self-hosted open source (e.g. SerpScraper) Server + proxy cost $0.005–$0.02+ when cloud + proxy costs are counted VPS, proxy service, maintenance required Free software license — not free to run

Pricing verified from each rival's public pricing page October 2026. SerpWatch per-check rate calculated from annual Starter plan ($29/month ÷ 7,500 checks = $0.0039/check). AccuRanker, SEMrush, and Ahrefs API costs require a subscription or sales contact and do not publish a simple per-call rate. PixelAPI's price is set at exactly half of SerpWatch's public per-check rate per our standing pricing rule.

What you get back — rank tracker API response shapes

Every endpoint returns clean JSON. Here are the response structures for each geomind-rank-tracker endpoint:

Competitor displacement

GET /v1/geomind/competitor/displacement?keyword=...
Returns competitors array: domain, position (1–100), position change delta vs prior scan, and estimated organic traffic. Also includes total_competitors, displacement_alerts, and scan timestamp.

Rank change alerts

GET /v1/geomind/alerts
Returns total_alerts, active_alerts, and an alerts array. Alert types: rank_drop, rank_rise, competitor_new, sentiment_spike, citation_surge. Each alert includes severity (low/medium/high), keyword, message, and ISO timestamp.

Scan history

GET /v1/geomind/scan/history — returns total_scans and a scans array: id, url, keyword, numeric score, letter grade (A+/A/B+/B/C), and ISO timestamp.
POST /v1/geomind/scan/save — persist your own rank measurement with url, keyword, score, and grade. Returns the assigned scan_id.

Citation velocity

GET /v1/geomind/citation/velocity?keyword=...
Returns total_citations, velocity windows (velocity_24h, velocity_7d, velocity_30d), a 7-day trend array, acceleration score, and top_citing_sources with first-seen dates.

Keyword sentiment

GET /v1/geomind/sentiment?keyword=...
Returns overall rating (bullish/bearish/neutral), 0–1 score, per-source breakdowns (news, social, blogs), a 7-day trend_7d array, and top_sentiments with source headlines.

Agent protocol

GET /v1/geomind/agent/protocol
Returns the agent's capabilities list (geo_scan, competitor_analysis, sentiment_tracking, citation_tracking, alert_management, keyword_discovery), status, and a full endpoints map — useful for orchestration pipelines that discover available operations at runtime.

Common workflows for open source rank tracker API users

These are the most common patterns developers build with the geomind-rank-tracker API. Each is a self-contained script you can run in any language — no dependencies beyond an HTTP client.

Daily rank monitoring

Schedule a daily cron that calls /competitor/displacement for your target keywords and writes positions to a time-series store (Postgres, InfluxDB, Google Sheets) for trend charts.

Rank-drop alerting

Poll /alerts every hour; filter for type=rank_drop and severity=high; push Slack or PagerDuty notifications when a key page drops more than 3 positions.

Competitive gap analysis

Compare competitor positions across a keyword set to find gaps where rivals rank #1–#3 but your domain is outside the top 10 — then prioritize those pages for content updates.

Trending keyword detection

Pair /citation/velocity with /sentiment: keywords with high 24h velocity and a bullish score are trending — invest in fresh content before competitors do.

SEO agency reporting

Use /scan/save to store weekly client rank snapshots and /scan/history to pull them into branded PDF reports — no dedicated reporting database required.

In-house SEO dashboards

Stream rank data into Google Sheets or Looker Studio via a lightweight scheduled function — one API key, no per-seat licensing, unlimited keywords.

E-commerce category tracking

Track product-category keywords at scale — pull displacement data for 1,000+ keywords per day without per-seat dashboard costs typical of subscription tools.

Content freshness scoring

Cross-reference citation velocity acceleration with page publish dates: pages with high citation velocity but old content dates are prime candidates for a refresh.

Agent-based SEO pipelines

Use /agent/protocol to enumerate capabilities and orchestrate multi-step workflows from a Python or Node script — no dashboard interaction required.

Integrations — connect to your SEO stack

The geomind-rank-tracker API integrates with any tool that can make an HTTP request. Common patterns:

Zapier / Make.com

Use the PixelAPI HTTP action in Zapier or Make to schedule keyword rank checks and push results into Google Sheets, Airtable, Notion, or your CRM — no custom code needed.

Google Sheets

A 30-line Apps Script function calling the displacement endpoint populates a sheet with daily position history. Free, shareable with clients instantly, no extra tooling.

Looker Studio

Write rank data to BigQuery via a daily Cloud Function, then connect Looker Studio for live position charts. Full history with no per-seat dashboard fees.

Slack alerts

A 20-line Lambda polls /alerts and posts rank-drop notifications to your #seo Slack channel, including keyword, old position, new position, and severity.

GitHub Actions

Add a rank-check workflow that runs on push to content branches — fail the deploy if target keywords drop below a threshold, surfacing SEO regressions before they go live.

Python / Jupyter

Fetch multi-keyword position data into a pandas DataFrame for ad-hoc analysis, traffic correlation experiments, or cohort-based content A/B tests in notebooks.

Comparison vs alternatives — open source rank tracker API

vs SEMrush

Pay per API call, not a $117–$417+/month subscription. No seat limits. Free trial with 5,000 credits — no sales call, no credit card. Full JSON rank data from day one without a full SEMrush enterprise contract.

vs Ahrefs

Same structured keyword rank data via REST. Transparent $0.002/call pricing vs an opaque API add-on cost. Suitable for developers who need programmatic access without a full Ahrefs subscription plan.

vs SerpWatch

$0.002/call vs $0.0039/check minimum (SerpWatch annual Starter). No monthly minimum — pay only for calls made. Ideal for burst usage or sporadic rank checks that don't justify a monthly seat fee.

vs AccuRanker

AccuRanker requires a minimum plan starting at ~$224/month. PixelAPI has no monthly minimum — 1,000 rank checks costs $2.00. See pixelapi.dev/pricing for full plan comparison.

Rate limits & error handling

Rate limits by plan: 20 requests/minute on the free trial, 60 on Starter, 120 on Pro, and 300 on Scale. Exceeding the limit returns HTTP 429 with a Retry-After header. Recommended: exponential backoff starting at 2 seconds, doubling on each retry up to 30 seconds. The Python and Node SDKs handle this automatically.

# Python SDK auto-retries 429 with backoff
from pixelapi import PixelAPI
client = PixelAPI(api_key="...", max_retries=4)
# Retries on 429 automatically — no manual retry loop needed
result = client.geomind.competitor_displacement(keyword="seo rank tracker")

Common error responses:

HTTP statusCodeMeaning
401unauthorizedMissing or invalid API key in the Authorization header
402trial_ended_subscribeFree trial credits exhausted — upgrade to a paid plan at pixelapi.dev/pricing
422validation_errorMissing required query parameter (e.g. keyword is required for /displacement and /sentiment)
429rate_limit_exceededToo many requests — back off and retry after the Retry-After header value (seconds)
500server_errorTransient error — retry with exponential backoff; contact support if it persists

Frequently asked questions — open source rank tracker API

What is an open source rank tracker API?

An open source rank tracker API is a programmable interface for checking SERP keyword positions. Some developers self-host open-source scraper projects; others use a managed REST API like PixelAPI's geomind-rank-tracker at $0.002/call — no infrastructure, no maintenance, just call the endpoint and get structured JSON back.

Is PixelAPI's rank tracker API free to try?

Yes. New accounts get 5,000 free credits during a 24-hour trial — enough for 2,500 rank checks — with no credit card required. After the trial, calls cost $0.002 each, lower than SerpWatch's public per-check rate of $0.0039 (October 2026 pricing).

Why use a managed rank tracker API instead of a self-hosted open source tool?

Self-hosted open source rank trackers require server provisioning, proxy rotation, CAPTCHA handling, ongoing maintenance, and SERP rate-limit management. PixelAPI handles all of that for you. At $0.002/call, 10,000 daily checks costs $20/month — often cheaper than the cloud compute and proxy costs of self-hosting once your engineering time is factored in.

What endpoints does the geomind-rank-tracker API expose?

Six endpoints: GET /v1/geomind/competitor/displacement (SERP positions + traffic), GET /v1/geomind/alerts (rank change alerts), GET /v1/geomind/scan/history and POST /v1/geomind/scan/save (rank snapshot history), GET /v1/geomind/citation/velocity (trend velocity), GET /v1/geomind/sentiment (keyword sentiment), and GET /v1/geomind/agent/protocol (capability discovery for orchestration pipelines).

What does the competitor displacement endpoint return?

The /v1/geomind/competitor/displacement endpoint returns the queried keyword, scan timestamp, and a competitors array. Each entry has domain, position (integer 1–100), change delta (positive = rose, negative = dropped), and estimated_traffic. Top-level fields include total_competitors and displacement_alerts count.

How do rank change alerts work?

GET /v1/geomind/alerts returns all active alerts for your tracked keywords. Alert types: rank_drop, rank_rise, competitor_new (a new domain entering the top 5), sentiment_spike, and citation_surge. Each alert carries type, severity (low/medium/high), keyword, a human-readable message, and an ISO timestamp.

Can I save and retrieve rank scan history via the API?

Yes. POST /v1/geomind/scan/save with JSON body {"url":"mysite.com","keyword":"seo rank tracker","score":82,"grade":"A"} persists a rank snapshot and returns a scan_id. Retrieve all saved scans via GET /v1/geomind/scan/history, which returns a list sorted by most recent timestamp. Useful for weekly client rank reports without a separate database.

Is there a Python SDK for the rank tracker API?

Yes — pip install pixelapi. Official SDKs also available for Node.js (npm install pixelapi), PHP (Composer), Ruby (Gem), Go (go get), and Java/Kotlin. All SDKs handle authentication, 429 retry with exponential backoff, and response deserialization automatically.

What are the rate limits for the rank tracker API?

20 requests/minute on the free trial, 60 on Starter, 120 on Pro, and 300 on Scale. Exceeding the limit returns HTTP 429 with a Retry-After header. Higher limits for large-scale rank monitoring pipelines — email support@pixelapi.dev with your expected call volume.

How does PixelAPI compare to SEMrush and Ahrefs for rank tracking?

SEMrush and Ahrefs charge $117–$417+/month in subscription fees plus API add-on costs. PixelAPI charges $0.002 per call — no monthly minimum. For developers who need programmatic access to rank data without a full enterprise subscription, PixelAPI is significantly cheaper for burst or moderate usage. See the full comparison at PixelAPI vs SEMrush and PixelAPI vs Ahrefs.

Can I get a GST invoice for rank tracker API usage?

Yes. PixelAPI is a registered Indian business. We issue GST invoices — 18% IGST for international clients, CGST/SGST for domestic. Invoice download is built into the dashboard at pixelapi.dev/app.

Start free — 5,000 credits, no card Read full API docs Compare all plans