InstaRank SEO
Developer APIs

The InstaRank API Hub

Production-ready search-data APIs and the full SEO-checks engine, behind one API key and one credit wallet. Pick an API below, or jump to the full OpenAPI reference.

APIs

Choose your API

SERP API

$1 per 1,000 queries

Get the full search results page for any query as structured JSON — organic listings, AI Overview, People Also Ask, featured snippet, shopping, and local pack — across Google, Bing, Yahoo & DuckDuckGo, plus dedicated News, Image, and Video search.

POST/api/v1/serp

Keyword Research API

$0.025 per 50 keywords

Give us a domain and get back a researched keyword list for its niche — each with estimated search volume, competition, and search intent.

POST/api/v1/keywords

Rank Tracker API

$0.30 per job

Track a domain's organic rankings and AI visibility in one async job — submit a domain, get the full report pushed to your webhook when it's ready.

POST · async/api/v1/rank-tracker

AI Visibility API

$0.10 per keyword

Measure whether — and where — a domain is cited by the major AI assistants (ChatGPT, Claude, Gemini, Perplexity) for the queries that matter in its niche.

POST/api/v1/ai-visibility

AI Rank Tracker API

$0.10 per keyword

Track exactly where a domain ranks inside AI answers — pass your own keywords and engines, and get per-keyword, per-engine citation positions and the actual sources each assistant cited.

POST/api/v1/ai-rank

Google Autocomplete API

$1 per 1,000 queries

Return the live Google search suggestions a user sees while typing — perfect for keyword expansion, content ideation, and search-trend discovery.

GET/api/v1/autocomplete

Backlink API

$0.05 per domain

Pull a domain's backlink profile summary — total backlinks, referring domains, domain rank, spam score, and the dofollow/nofollow split.

POST/api/v1/backlinks

Domain Authority API

$0.008 per check

Score any domain 0–100 on a composite of trust, authority, content, and technical signals — with the full breakdown that produced the number.

POST/api/v1/domain-authority

SEO Checks API

from $0.001

Run any of 19 individual SEO checks — or the composite Domain Value score — against a URL. Single-URL or whole-site (async) scope.

POST/api/v1/checks/{check}
API Reference

InstaRank SEO

Every check, one POST away.

21 documented endpoints. REST + JSON. X-API-Key auth. 60 requests/min on Pro. No OAuth ceremony, no SDK lock-in — your curl works in 30 seconds.

21
Endpoints
60
Req / min
REST
+ JSON
v1
Stable

Try it

Live request from your browser. Paste a key, run a real check.

Stored in sessionStorage only — cleared when you close the tab.

Authentication

All requests require an X-API-Key header. Generate yours from the dashboard. Keep it server-side — never expose in client JS.

Getting an API key

  1. Sign in to your InstaRank SEO account
  2. Go to Settings > API Keys
  3. Generate a new API key
  4. Store it securely — it won't be shown again

Using your API key

curl · /api/v1/checks/robots-txt
curl -X POST https://instarankseo.com/api/v1/checks/robots-txt \
  -H "X-API-Key: your-api-key-here" \
  -H "Content-Type: application/json" \
  -d '{"url": "example.com"}'

Validate your key

GET /api/v1/auth returns the current key status + remaining credits.

curl · /api/v1/auth
curl -H "X-API-Key: your-api-key-here" https://instarankseo.com/api/v1/auth

Rate limits & credits

Two systems run in parallel: per-minute throttle, monthly credit pool.

System 1

Requests / minute

  • Free: 10/min
  • SEO+: 60/min
  • Agency: 120/min

Every response carries: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

429 + Retry-After when exceeded.

System 2

Monthly credits

  • Free: 100/mo
  • SEO+: 10 000/mo
  • Agency: 50 000/mo

Checks cost 1 credit; Domain Value costs 2. Auto-refills on the 1st of each month.

402 CREDITS_EXHAUSTED when depleted.

Response format

All endpoints return application/json. Top-level shape is consistent across every check.

Success

200 OK
{
  "success": true,
  "check": "robots-txt",
  "url": "https://example.com",
  "domain": "example.com",
  "score": 85,
  "issues": [
    {
      "id": "no-sitemap-reference",
      "title": "No sitemap reference",
      "description": "robots.txt does not reference a sitemap",
      "severity": "moderate"
    }
  ],
  "data": { /* full check breakdown */ },
  "checkedAt": "2026-05-07T14:32:18.401Z",
  "meta": {
    "requestId": "a1b2c3d4e5f60718",
    "creditsUsed": 1,
    "creditsRemaining": 487,
    "processingTimeMs": 843,
    "apiVersion": "1.0"
  }
}

Error

Every non-2xx response shares the canonical envelope. Branch on code (machine-readable enum) and decide retry from retryable.errorType is a legacy alias kept for pre-2026 clients.

4xx / 5xx
{
  "success": false,
  "error": "Invalid URL format",
  "code": "INVALID_URL",
  "retryable": false,
  "requestId": "a6b6777f25f54236",
  "errorType": "INVALID_URL",
  "details": { /* optional structured context */ }
}

The same requestId appears in the X-Request-ID response header — include it when reporting issues to support.

Idempotency-Key

Safe to retry POST requests without double-charging. Send an Idempotency-Key header (≤255 printable-ASCII chars — UUIDs work well). A retry with the same key + body returns the cached response with Idempotency-Replayed: true.

Counted

  • Rate-limit window

Never re-charged

  • Credits (original request paid them)
curl · safe retry
# First call — runs the check, debits 1 credit.
curl -X POST https://instarankseo.com/api/v1/checks/meta-tags \
  -H "X-API-Key: your-api-key" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"url":"example.com"}'

# Same key + body within 24h — returns cached result.
# Response header: Idempotency-Replayed: true
# No credit re-charged.
Reusing the same key with a different body returns 409 IDEMPOTENCY_CONFLICT. Generate a fresh key for genuinely new requests.

SEO check endpoints

19 endpoints. All POST. Body: {"url": "example.com"}. Click any row to see the full request/response example.

MethodEndpointCost

Domain endpoints

Domain-level metrics that aggregate multiple signals into single composite scores.

MethodEndpointCost

Error codes

StatusTypeMeaning
400INVALID_URL / INVALID_CHECK / INVALID_REQUESTBad request. Check your URL format, check name, or request body.
401AUTH_REQUIREDMissing or invalid API key.
402CREDITS_EXHAUSTEDMonthly credits exhausted. Purchase more credits or wait for the 1st of next month.
403FORBIDDENAPI key does not have the required scope for this endpoint.
429RATE_LIMITPer-minute rate limit exceeded. Check Retry-After header and try again.
500INTERNAL_ERRORServer error. The check failed unexpectedly.
502DNS_ERROR / CONNECTION_REFUSED / SSL_ERRORCould not reach the target website.
504TIMEOUTThe check timed out (target site too slow or unresponsive).

Quick-start examples

Copy-paste-go in Python or Node. Replace your-api-key with the key from your dashboard.

Python (requests)

python
import requests

API_KEY = "your-api-key"
BASE_URL = "https://instarankseo.com/api/v1"

response = requests.post(
    f"{BASE_URL}/checks/meta-tags",
    headers={
        "X-API-Key": API_KEY,
        "Content-Type": "application/json",
    },
    json={"url": "example.com"},
)

data = response.json()
print(f"Score: {data['score']}/100")
for issue in data.get("issues", []):
    print(f"  [{issue['severity']}] {issue['title']}")

JavaScript / Node (fetch)

node
const API_KEY = "your-api-key";
const BASE_URL = "https://instarankseo.com/api/v1";

const response = await fetch(`${BASE_URL}/checks/robots-txt`, {
  method: "POST",
  headers: {
    "X-API-Key": API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ url: "example.com" }),
});

const data = await response.json();
console.log(`Score: ${data.score}/100`);
console.log(`Issues: ${data.issues?.length ?? 0}`);

Batch all checks (bash)

bash
# Run all 19 standalone API check endpoints
CHECKS=(robots-txt sitemap meta-tags canonical-url http-status url-structure \
  internal-links external-links outbound-links mixed-content x-robots-tag \
  keywords content-quality eeat page-speed backlinks llm-optimization \
  social-media spam-score)

for check in "${CHECKS[@]}"; do
  echo "Running $check..."
  curl -s -X POST "https://instarankseo.com/api/v1/checks/$check" \
    -H "X-API-Key: your-api-key" \
    -H "Content-Type: application/json" \
    -d '{"url": "example.com"}' | jq '{check: .check, score: .score}'
done

Ship in 5 minutes.

Generate a key, paste it into your script, run any of the 21 endpoints. Pro plan included.

Get an API key