A production REST API for rival audit tool workflows: run a full competitor SEO audit, spy on competitor keywords, analyze competitor backlinks by position, and track displacement alerts — all from a single REST call. One HTTP request returns a ranked list of competing domains, their SERP positions, estimated organic traffic, and active displacement signals. $0.005 per competitor audit — half of SpyFu's Kombat API rate. 5,000 free credits (24-hour trial), no credit card.
Sign up, copy your key from the dashboard, and GET the competitor displacement endpoint. The response arrives synchronously — no polling required. Optionally enrich the result with the /sentiment and /citation/velocity endpoints for a complete competitive picture.
# Competitor displacement audit
curl "https://api.pixelapi.dev/v1/geomind/competitor/displacement?keyword=seo+software" \
-H "Authorization: Bearer YOUR_API_KEY"
# Response:
# {
# "keyword": "seo software",
# "scanned_at": "2026-10-13T10:00:00Z",
# "competitors": [
# {"domain": "semrush.com", "position": 1, "change": 0, "estimated_traffic": 42500},
# {"domain": "ahrefs.com", "position": 2, "change": 1, "estimated_traffic": 38200},
# ...
# ],
# "total_competitors": 5,
# "displacement_alerts": 2
# }
# Save the audit to your scan history
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 software","score":82,"grade":"A"}'
pip install pixelapi
---
from pixelapi import PixelAPI
client = PixelAPI(api_key="YOUR_API_KEY")
# Full competitor SEO audit
audit = client.geomind.competitor_displacement(keyword="seo software")
for rival in audit["competitors"]:
print(f"{rival['domain']} — pos {rival['position']}, traffic {rival['estimated_traffic']:,}")
# Enrich with sentiment data
sentiment = client.geomind.sentiment(keyword="seo software")
print(f"Sentiment: {sentiment['overall']} (score {sentiment['score']})")
# Citation velocity
velocity = client.geomind.citation_velocity(keyword="seo software")
print(f"Citations 7d: {velocity['velocity_7d']}, acceleration: {velocity['acceleration']}")
npm install pixelapi
---
import { PixelAPI } from "pixelapi";
const client = new PixelAPI({ apiKey: process.env.PIXELAPI_KEY });
// Competitor SEO audit
const audit = await client.geomind.competitorDisplacement({ keyword: "seo software" });
for (const rival of audit.competitors) {
console.log(`${rival.domain} — position ${rival.position}, Δ${rival.change}`);
}
// Check active alerts
const alerts = await client.geomind.alerts();
const highSeverity = alerts.alerts.filter(a => a.severity === "high");
console.log(`${highSeverity.length} high-severity alerts active`);
composer require pixelapi/pixelapi
---
<?php
use PixelAPI\Client;
$client = new Client(getenv("PIXELAPI_KEY"));
// Competitor displacement audit
$audit = $client->geomind()->competitorDisplacement(["keyword" => "seo software"]);
foreach ($audit["competitors"] as $rival) {
echo $rival["domain"] . " — position " . $rival["position"] . "\n";
}
// Save the audit
$client->geomind()->saveScan([
"url" => "mysite.com",
"keyword" => "seo software",
"score" => 82,
"grade" => "A"
]);
gem install pixelapi
---
require "pixelapi"
client = PixelAPI::Client.new(api_key: ENV["PIXELAPI_KEY"])
# Competitor audit
audit = client.geomind.competitor_displacement(keyword: "seo software")
audit["competitors"].each do |rival|
puts "#{rival['domain']} — pos #{rival['position']}, traffic #{rival['estimated_traffic']}"
end
# Citation velocity check
velocity = client.geomind.citation_velocity(keyword: "seo software")
puts "7-day velocity: #{velocity['velocity_7d']}"
go get github.com/pixelapi/pixelapi-go
---
import "github.com/pixelapi/pixelapi-go"
client := pixelapi.New("YOUR_API_KEY")
// Competitor displacement audit
audit, err := client.Geomind.CompetitorDisplacement("seo software")
if err != nil { panic(err) }
for _, rival := range audit.Competitors {
fmt.Printf("%s — pos %d, traffic %d\n", rival.Domain, rival.Position, rival.EstimatedTraffic)
}
// Active alerts
alerts, err := client.Geomind.Alerts()
if err != nil { panic(err) }
fmt.Printf("%d active alerts\n", alerts.ActiveAlerts)
| Provider | Plan required | Per-audit cost | API model |
|---|---|---|---|
| PixelAPI | None — pay per call | $0.005 | REST, pay-as-you-go |
| SpyFu | $119/mo minimum for API access | ~$0.01 (Kombat API, $1.00 CPM × 10 rows) | CPM (per 1,000 rows returned) |
| SEMrush | Advanced ($549/mo) + separate unit packages | See semrush.com/pricing | Units-based, contact sales |
| Ahrefs | Lite ($129/mo) and above | See ahrefs.com/pricing | Units-based, row + field charges |
Pricing verified from each rival's public pricing page October 2026. SpyFu: developer.spyfu.com/docs/api-pricing (Kombat API at $1.00/1,000 rows). SEMrush and Ahrefs do not publish per-call rates — see their pricing pages for current unit package costs. PixelAPI's per-audit price is set at exactly half SpyFu's Kombat API rate per our pricing principle.
GET /v1/geomind/competitor/displacement returns competing domains ranked by SERP position, position change delta (±), estimated monthly organic traffic, total competitor count, and an active displacement alert count — all in one synchronous response.
GET /v1/geomind/sentiment returns an overall bullish/bearish score (0–1), breakdown by news, social, and blog sources, 24h mention counts, a 7-day trend array, and top-cited headlines with source attribution.
GET /v1/geomind/citation/velocity returns total citation count, velocity windows (24h/7d/30d), a daily trend array, top citing domains, and an acceleration score — useful for spotting keywords gaining editorial momentum before competitors do.
POST /v1/geomind/scan/save stores audit results (url, keyword, score, grade) with a scan ID. GET /v1/geomind/scan/history returns past scans. GET /v1/geomind/alerts returns active rank-drop, new-competitor, and sentiment-spike alerts across all tracked keywords.
| Endpoint | Method | Description | Key params |
|---|---|---|---|
/v1/geomind/competitor/displacement | GET | Competitor SEO audit for a keyword | keyword (required) |
/v1/geomind/sentiment | GET | Keyword sentiment across news, social, blogs | keyword (required) |
/v1/geomind/citation/velocity | GET | Citation volume and acceleration trends | keyword (required) |
/v1/geomind/scan/save | POST | Persist an audit result to scan history | url, keyword, score, grade |
/v1/geomind/scan/history | GET | Retrieve recent audit history with grades | none |
/v1/geomind/alerts | GET | Active alerts (rank drops, new entrants, spikes) | none |
The rival audit tool API powers these production SEO workflows. Related API documentation:
Track SERP rank changes and get alerts when your positions shift. Combine with competitor displacement for a full SERP picture.
Self-hostable rank tracking patterns and open-source integration examples using the geomind API suite.
Reproduce core SEMrush competitor research features with the geomind API at a fraction of the cost.
Ahrefs-style competitive gap analysis and backlink position data via REST without a monthly subscription.
Spy on competitor keywords and PPC overlap data at half the per-call cost of SpyFu's API.
Complete geomind endpoint documentation including response schemas, error codes, and pagination.
No $549/month plan required. Pay $0.005 per audit vs SEMrush's contact-sales unit pricing. REST API with no SDK lock-in.
No $129/month plan required. No row-caps per request. Synchronous responses vs Ahrefs' async batch model for most endpoints.
Half the per-call cost of SpyFu's Kombat API. No plan requirement. Sentiment + citation velocity included at the same price point.
Pair competitor displacement with rank tracking to get both offensive (spying on rivals) and defensive (tracking your own positions) data in one pipeline.
20 requests/minute on the free trial, 60 on Starter, 120 on Pro, and 300 on Scale, with 3/10/20/50 concurrent requests respectively (see pixelapi.dev/docs). Exceeding the limit returns HTTP 429 with a Retry-After header. Recommended: exponential backoff starting at 2s, doubling on each retry up to 30s. 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) audit = client.geomind.competitor_displacement(keyword="seo software") # auto-retries on 429
Common HTTP error codes:
| Code | Meaning | Action |
|---|---|---|
400 | Missing or invalid keyword parameter | Check request params; keyword is required and non-empty |
401 | Invalid or missing API key | Check Authorization header: Bearer YOUR_KEY |
402 | Insufficient credits | Top up at pixelapi.dev/app or check remaining balance |
429 | Rate limit exceeded | Back off per Retry-After header |
500 | Internal server error | Retry once; if persistent, contact support@pixelapi.dev |
GET https://api.pixelapi.dev/v1/geomind/competitor/displacement?keyword=your+keyword with your API key in the Authorization: Bearer header. The endpoint returns competitor domains, their SERP positions, estimated monthly traffic, and displacement alerts in a single synchronous JSON response.
$0.005 per competitor audit call — half of SpyFu's Kombat API rate ($1.00/1,000 rows; a 10-competitor audit = $0.01 at SpyFu). New accounts get 5,000 free credits (24-hour trial) with no credit card, enough for 1,000 competitor audits before paying anything.
Each response includes: competing domain names, their current SERP position (rank 1–N), position change delta vs. the previous scan, estimated monthly organic traffic per competitor, total competitor count, and an active displacement alert count. The scanned_at timestamp is always in UTC ISO 8601.
Yes. GET /v1/geomind/sentiment?keyword=... returns an overall bullish/bearish score, breakdown by news, social media, and blog sources with 24h mention counts, and a 7-day trend array — all in a single call. Combine with competitor displacement for a full content + SERP intelligence pipeline.
GET /v1/geomind/citation/velocity?keyword=... returns total citation count, velocity over 24h/7d/30d windows, a 7-day daily trend array, top citing domains, and an acceleration score (positive = growing faster). Useful for spotting keywords gaining editorial momentum before your competitors.
PixelAPI is a pay-per-call REST API — no mandatory monthly plan. SpyFu API requires a $119/month plan minimum. SEMrush API requires their Advanced plan at $549/month plus separately purchased unit packages at non-published rates. Ahrefs includes API units in plans from $129/month but applies row-per-request caps. PixelAPI charges $0.005 per audit with no subscription — start with 5,000 free credits, pay only for what you use.
Yes — pip install pixelapi. Official SDKs are also available for Node.js (npm install pixelapi), PHP (Composer), Ruby (Gem), Go (go get), and Java/Kotlin. All SDKs handle authentication, retry-on-429 with exponential backoff, and return typed response objects.
20 requests/minute on the free trial, 60 on Starter, 120 on Pro, and 300 on Scale, with 3/10/20/50 concurrent requests respectively. Exceeding the limit returns HTTP 429 with a Retry-After header. The Python and Node SDKs handle retries automatically. Higher limits available for bulk workloads — email support@pixelapi.dev.
Yes. POST /v1/geomind/scan/save stores an audit result (url, keyword, score, grade) and returns a unique scan_id. Retrieve your full audit history with GET /v1/geomind/scan/history, which returns the latest scans with timestamps, grades (A+ to F), and scores (0–100).
GET /v1/geomind/alerts returns all active alerts across your tracked keywords: rank drops, new competitors entering the top 5, sentiment spikes, and citation surges. Each alert includes a severity level (high/medium/low), the affected keyword, a human-readable message, and a UTC timestamp. Alerts are produced automatically as you run audits.