Introduction
Base URL, authentication, request and response conventions, status codes and rate limits for the RankParse REST API.
The RankParse API is a REST API over HTTPS. It takes query parameters or JSON bodies and always answers with JSON (apart from the two legacy redirects and unknown routes). Every page in this reference documents one operation: its parameters, its response fields, what it costs and the errors it returns.
Base URL
https://api.rankparse.com/v1Every path in this reference is relative to that base, so GET /v1/backlinks is https://api.rankparse.com/v1/backlinks. Requests must use HTTPS. The API allows cross-origin requests, but a key must never be shipped in browser code (see Authentication).
Authentication
Send your API key in the X-API-Key header on every request. Keys start with rp_ and are created under Settings, Developers, API keys in the dashboard.
curl "https://api.rankparse.com/v1/domain-authority?domain=github.com" \
-H "X-API-Key: rp_your_key"A missing, unknown or revoked key returns 401 invalid_api_key. A key in the query string is not read. The public GET /v1/pricing and the free tools are the only routes that need no key.
Requests
- GET operations take query parameters. Domains are bare hostnames such as
stripe.com, never URLs:https://stripe.comreturns400 invalid_domain. URL parameters (url=) take a full publichttporhttpsURL. - POST and PATCH operations take a JSON body. Send
Content-Type: application/json. - A few write operations keep their target in the query string, for example
POST /v1/indexnow/key?domain=,POST /v1/site-scan/recheck?site_id=,POST /v1/site-audit/run?site_id=,PATCH /v1/site-context?site_id=andPATCH /v1/rank-tracking/alert-settings?site_id=. Each operation page says where every parameter goes. site_idis the id of one of your websites. List them withGET /v1/websitesorGET /v1/rank-tracking/sites.
Responses
Billable endpoints wrap their result in one envelope:
{
"domain": "stripe.com",
"data": [
{
"from_domain": "example-blog.com",
"from_url": "https://example-blog.com/payments",
"to_url": "https://stripe.com/",
"anchor_text": "Stripe",
"rel": null,
"link_type": "hyperlink",
"crawled_at": "2026-02-11"
}
],
"total": 18342,
"limit": 1,
"credits_used": 2,
"credits_remaining": 998
}| Field | Present on | Meaning |
|---|---|---|
data | Every billable endpoint | The result: an array for row-based endpoints, an object for single-record ones. |
domain or url | Domain-level or URL-level endpoints | What you asked about, normalised. |
total | Row-based endpoints | How many matching rows exist. It can be larger than the rows returned. |
limit | Row-based endpoints | The limit you sent, echoed as sent (not clamped). Use the length of data as the truth. |
credits_used | Every billable endpoint | What this call cost after any refund. 0 means you were not charged. |
credits_remaining | Every billable endpoint | Your spendable balance after the call: monthly plan credits plus purchased credits. |
partial | Some link graph endpoints | true when part of the answer ran out of time. Treat what is missing as unknown, not zero. |
Fields that do not apply are left out rather than sent as null. Free routes (account, rank tracking, Search Console, Google Ads, issues, indexing, AI visibility, site audits, project context, the approval inbox and outreach) have their own shapes, documented on their pages. The details, with examples, are in Response format.
Pagination
limitdefaults to100. On the link graph endpoints it is clamped to 1 to 1000 (similar-domainsstops at 100,competitor-gapdefaults to 50). A non-numeric value falls back to the default.- The link graph endpoints return the top
limitrows in their own order and take nooffset. - A few routes page with
limitandoffset:/v1/usage,/v1/indexingand the rank tracking lists. Their pages give the exact limits. - A domain with no data returns
200withdata: []and is billed as usual. RankParse never answers404for "no data".
Errors
Errors return a non-2xx status and a JSON body with a stable code. Branch on code, not on the message text.
{
"error": "Payment Required",
"code": "insufficient_credits",
"message": "Add credits at https://rankparse.com/pricing"
}| Status | Meaning |
|---|---|
200 | Success. Also returned for an empty result. |
201 | Created: a new API key, or a new IndexNow key. |
202 | Accepted but not done yet: a proposal waiting in the approval inbox, a queued AI visibility re-check, or a queued site audit. |
301 | Legacy path: /v1/page-meta redirects to /v1/page-seo, /v1/url-index to /v1/sitemap. |
400 | A parameter or body is missing or invalid, or a required connection is missing. |
401 | The API key is missing, unknown or revoked, or a connected account (Google, Zeekeo) needs reconnecting. |
402 | Not enough credits (insufficient_credits), the monthly spend cap was reached (spend_cap_reached) or the plan limit was reached (plan_limit_reached). |
403 | Your role or plan does not allow the action, or an upstream provider denied access. |
404 | The route, or a resource you named by id, does not exist in your workspace. |
409 | The resource is in a state that does not allow this now (a campaign launch in progress, a task already claimed). |
422 | IndexNow rejected the URLs for the key or host. |
429 | The per-key rate limit, a daily cap or an upstream quota was hit. |
500, 502 | An unexpected server or upstream error. Retry with backoff. |
503 | The data store, a live fetch or an upstream service timed out or is unavailable. |
Every code, with what to do about it, is in Errors.
Rate limit
Each API key may make 60 requests per minute, counted over a sliding 60 second window. Going over returns 429 rate_limited with no Retry-After header. Two keys do not share a counter. The account routes (/v1/credits, /v1/me, /v1/keys, /v1/usage, /v1/pricing) and the connection status routes are not counted. PageSpeed and Google Ads also have daily caps. See Rate limiting.
Credits
- Each billable call is charged in one atomic step, before the work runs. The cost is on every operation page and in the table on Credits.
- Monthly plan credits (Pro and Agency) are spent first, then purchased credits.
credits_remainingis the sum. - A call that fails on the server side (a data store timeout, a failed live fetch, a failed IndexNow submission) is refunded automatically, and its
credits_usedreads0. - Every data lookup and live page endpoint validates its parameters before charging, so a
400for a missing or invalid parameter costs nothing.
Caching and retries
- Link graph answers are cached for 30 days per crawl release, endpoint and parameters. A cached answer is billed exactly like a fresh one and is the same data. Nothing in the response says whether it came from the cache.
page-performanceresults are cached for 24 hours per URL and strategy. - There is no
Idempotency-Keyheader. Retrying a billed call that succeeded charges it again; retrying one that failed with a refunded error is free. - Some writes are safe to repeat:
POST /v1/indexnow/keyreturns the same key for a host, a proposal for the same action returns the existing proposal, andPOST /v1/activitytakes an optionalclient_request_idthat makes a repeat return the first note. - A
503 query_timeoutorupstream_errorcarriesretry: true,retry_after: 3and aRetry-After: 3header.deterministic_timeoutcarriesretry: false: change the request instead of retrying it.
Resources
Link graph
Backlinks
Inbound links to a domain, with filters and optional scoring.
Referring domains
Unique domains linking to a domain.
Anchor text
The anchor phrases pointing at a domain.
Top pages
The most-linked pages on a domain.
Outbound links
Domains a domain links out to.
Domain authority
Authority score, domain age, registrar and popularity rank.
Domain rank
Inbound edge count and linking domain stats.
Site explorer
Backlinks, authority, top pages and anchor text in one call.
Batch
Backlinks for up to 50 domains in one request.
Competitive analysis
Domain overlap
Domains linking to every one of 2 to 5 targets.
Link intersect
Domains linking to one domain but not another.
Similar domains
Domains with a similar link profile.
Competitor gap
Ranked link prospects: they link to a competitor, not to you.
Link audit
Backlink health score, risk flags and anchor profile.
Live page analysis
Page SEO
Live on-page SEO audit of a URL.
Page performance
PageSpeed Insights scores and Core Web Vitals.
Schema markup
Every JSON-LD block on a page.
Site health
HTTPS, redirects, security headers and robots.txt.
Sitemap
Discover and parse a domain's sitemap.
Tech stack
Frameworks, CMS, analytics, CDN and hosting.
Crawl history
First and last seen dates from the Wayback Machine.
Platforms
Platform domains
Domains running a platform, ranked by authority.
Platform trends
Platforms ranked by the number of domains using them.
Your websites
Websites
Your websites and their site_id values.
Rank tracking
Stored Google, Bing and Yandex rankings, history and alerts.
Search Console
Live Google Search Console analytics, sitemaps and URL inspection.
Google Ads
Keyword ideas and search volume. Never rankings.
Issues
The problems on your websites, as on the Issues tab.
Indexing
Tracked pages with their stored Google index status.
AI visibility scan
Agent readiness and site health checks for verified websites.
Site audit
A multi-page crawl: broken links, redirects, duplicates and sitemap gaps.
Project context
What each website is about, shared by your team and agents.
IndexNow
Submit new and changed URLs to IndexNow engines.
Agent actions
Proposals
Actions an agent asks you to approve.
Agent tasks
Tasks you queue for an agent, and how it completes them.
Client report
The weekly report for one website.
Outreach
Link-building campaigns sent from your Gmail.