RankParse

Outbound Links

Get the links a domain points out to, with anchor text and a concentration summary.

GET/v1/outbound-links2 creditsAPI key

Returns links going out from a domain to other sites, ranked by how often each link appears, plus a small summary of how concentrated those destinations are. Use it to audit who a site links to or to find sites that a competitor endorses. Data comes from the pre-processed link graph snapshot (see Response format).

Request

Parameters

ParameterTypeRequiredDefaultDescription
domainstringYesnoneDomain whose outgoing links you want, for example smartify.in. No scheme or path. Must contain a dot.
limitintegerNo100Number of rows to return. Clamped to 1 to 1000. A non-numeric value falls back to 100.

This endpoint does not support offset. Raise limit (up to 1000) to see more rows.

Example

curl "https://api.rankparse.com/v1/outbound-links?domain=smartify.in&limit=50" \
  -H "X-API-Key: rp_your_key"
import requests

res = requests.get(
    "https://api.rankparse.com/v1/outbound-links",
    params={"domain": "smartify.in", "limit": 50},
    headers={"X-API-Key": "rp_your_key"},
    timeout=90,
)
res.raise_for_status()
body = res.json()
print(body["summary"])
for link in body["data"]:
    print(link["to_domain"], link["edge_count"])
const params = new URLSearchParams({ domain: "smartify.in", limit: "50" });

const res = await fetch(`https://api.rankparse.com/v1/outbound-links?${params}`, {
  headers: { "X-API-Key": "rp_your_key" },
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const { data, summary } = await res.json();
console.log(summary, data);

Response

{
  "domain": "smartify.in",
  "data": [
    {
      "to_domain": "github.com",
      "to_url": "https://github.com/smartify/sdk",
      "anchor_text": "Source code",
      "link_type": "hyperlink",
      "edge_count": 12
    },
    {
      "to_domain": "twitter.com",
      "to_url": "https://twitter.com/smartify",
      "anchor_text": null,
      "link_type": "hyperlink",
      "edge_count": 8
    }
  ],
  "total": 2,
  "limit": 50,
  "credits_used": 2,
  "credits_remaining": 996,
  "summary": {
    "unique_destinations": 2,
    "top_domain": "github.com",
    "top_domain_concentration": 0.6
  }
}

Response fields

Top level:

FieldTypeDescription
domainstringThe normalized (lowercased) domain you queried.
dataarrayOutbound links sorted by edge_count descending. Empty when the domain has no data.
totalintegerNumber of rows returned in data.
limitintegerThe limit value you sent, echoed back as received.
summaryobjectConcentration summary computed over the returned rows (below).
credits_usedintegerAlways 2.
credits_remainingintegerYour balance after this call.

Each row in data:

FieldTypeDescription
to_domainstringDomain being linked to.
to_urlstringFull URL being linked to.
anchor_textstring or nullAnchor text, or null when there is none.
link_typestringhyperlink, image, script, stylesheet, iframe or other.
edge_countintegerHow many times this exact link was observed.

The summary object:

FieldTypeDescription
unique_destinationsintegerNumber of rows in data.
top_domainstring or nullDestination domain of the first row, or null when there are no rows.
top_domain_concentrationnumberedge_count of the first row divided by the sum of edge_count across the returned rows (0 to 1). 0 when there are no rows.

Behavior and limits

  • Row grain: a row is one distinct combination of destination domain, URL, anchor text and link type, so the same domain can appear many times.
  • Credits: 2 per call, charged before the lookup. Server errors are refunded.
  • Caching: results are cached for 30 days per crawl release and per combination of domain and limit. A cache hit is billed the same as a fresh lookup.
  • Empty results: a domain with no data returns 200 with data: [], a summary with unique_destinations: 0, and never 404.
  • Rate limit: 60 requests per minute per key. See Rate limiting.

Errors

HTTPCodeWhen
400invalid_domaindomain is missing or not a valid domain.
401invalid_api_keyMissing, invalid or revoked API key.
402insufficient_creditsBalance is lower than the call cost.
402spend_cap_reachedYour monthly spend cap is reached.
429rate_limitedMore than 60 requests in a minute.
503query_timeout, upstream_errorTransient data store problem. Retry after the Retry-After header. Credits are refunded.

See Errors for the full list and the error body format.

MCP tool: get_outbound_links (accepts domain, limit).

On this page