RankParse

Not yet available

Placeholder endpoints that return a not_yet_available status at no cost, and the legacy routes that redirect.

GET/v1/link-velocityFree (placeholder)API key

Four endpoints are reserved for features that are not live yet. They exist so integrations and agents can be written today and start returning data later without a code change. Calling them is free and safe: they always answer 200 with status: "not_yet_available".

EndpointIntended purposeReason codeMCP tool
GET /v1/link-velocityRate of new and lost links over timerequires_2_crawl_releasesget_link_velocity
GET /v1/new-linksLinks gained since the previous crawlrequires_2_crawl_releasesget_new_links
GET /v1/lost-linksLinks lost since the previous crawlrequires_2_crawl_releasesget_lost_links
GET /v1/internal-linksInternal link structure of a domaininternal_links_not_in_pipeline_v1get_internal_links

Why they are not available

  • Velocity, new and lost links compare two link graph snapshots. RankParse currently serves one release, so there is nothing to diff yet. They are intended to work once a second release has been processed.
  • Internal links need per-page internal link data that the current processing pipeline does not extract. It is a pipeline addition rather than a second-release question, so it has no date tied to the next crawl.

Do not build features that depend on these returning data yet. Check the status field and fall back gracefully.

Request

Parameters

NameTypeRequiredDefaultDescription
domainstringinternal-links: yes. Others: optionalnoneDomain to query. The three comparison endpoints accept any value, or none, and still answer the same way. internal-links rejects an invalid domain with 400 invalid_domain.
limitintegerNo100internal-links only. Accepted and ignored.
offsetintegerNo0internal-links only. Accepted and ignored.

Example

curl "https://api.rankparse.com/v1/link-velocity?domain=stripe.com" \
  -H "X-API-Key: rp_your_key"
import requests

body = requests.get(
    "https://api.rankparse.com/v1/new-links",
    params={"domain": "stripe.com"},
    headers={"X-API-Key": "rp_your_key"},
).json()

if body.get("status") == "not_yet_available":
    print("Not live yet:", body["reason"])
else:
    print(body["data"])
const res = await fetch(
  "https://api.rankparse.com/v1/new-links?domain=stripe.com",
  { headers: { "X-API-Key": process.env.RANKPARSE_API_KEY } }
);
const body = await res.json();
if (body.status === "not_yet_available") {
  console.log("Not live yet:", body.reason);
}

Response

{
  "domain": "stripe.com",
  "data": {
    "status": "not_yet_available",
    "reason": "requires_2_crawl_releases"
  },
  "credits_used": 0,
  "credits_remaining": 998,
  "status": "not_yet_available",
  "reason": "requires_2_crawl_releases"
}

Response fields

FieldTypeDescription
statusstringAlways not_yet_available. Present at the top level and inside data.
reasonstringrequires_2_crawl_releases or internal_links_not_in_pipeline_v1. Present at the top level and inside data.
domainstringEcho of the sanitized domain. Omitted when you did not send one.
dataobjectHolds status and reason, so clients that always read data still see them.
credits_usedintegerAlways 0.
credits_remainingintegerCurrent balance.

There is no total, limit or offset in the response.

Behavior and limits

  • Free. No credits are charged, ever.
  • Still authenticated and rate limited. An API key is required and the calls count toward the 60 requests per minute limit. A usage log row with 0 credits is recorded.
  • Detecting launch. When a feature ships, the response is expected to carry real results instead of this placeholder. Treat status: "not_yet_available" as the signal that it is still a placeholder.

Errors

StatusCodeWhen
400invalid_domaininternal-links only: domain is missing or invalid.
401invalid_api_keyMissing, invalid or revoked key.
429rate_limitedMore than 60 requests per minute.

See Errors for the shared error format.

Legacy redirects

Two older routes were renamed. They still work and answer 301 Moved Permanently; they do not require a key themselves, and billing happens on the destination request.

Old routeRedirects toParameters forwarded
GET /v1/page-meta/v1/page-seourl
GET /v1/url-index/v1/sitemapdomain, limit
curl -i "https://api.rankparse.com/v1/url-index?domain=stripe.com&limit=50"
# HTTP/2 301
# location: /v1/sitemap?domain=stripe.com&limit=50

Redirects use a relative Location. Make sure your HTTP client follows redirects (curl -L) and resends the X-API-Key header on the second request. Many clients drop custom headers when they follow a redirect to a different origin, so for new code call /v1/page-seo and /v1/sitemap directly.

Related data that is available today:

On this page