Link Intersect
Find the domains that link to domain A but do not link to domain B.
/v1/link-intersect5 creditsAPI keyReturns domains that link to domain_a and do not link to domain_b. Despite the name, this is a link gap: set domain_a to a competitor and domain_b to your own site to get sites that already link to the competitor but have not linked to you. Swapping the two parameters gives a different answer. Data comes from the pre-processed link graph snapshot (see Response format).
To find domains that link to several sites at once, use Domain Overlap. For a ranked, authority-scored version of the "links to them, not to me" question, use Competitor Gap.
Request
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
domain_a | string | Yes | none | Domain whose linkers you want to see, typically a competitor. Must contain a dot, no scheme or path. |
domain_b | string | Yes | none | Domain whose linkers are excluded, typically your own site. Same format as domain_a. |
limit | integer | No | 100 | Number of rows to return. Clamped to 1 to 1000. A non-numeric value falls back to 100. |
Example
curl "https://api.rankparse.com/v1/link-intersect?domain_a=square.com&domain_b=stripe.com&limit=25" \
-H "X-API-Key: rp_your_key"import requests
res = requests.get(
"https://api.rankparse.com/v1/link-intersect",
params={"domain_a": "square.com", "domain_b": "stripe.com", "limit": 25},
headers={"X-API-Key": "rp_your_key"},
timeout=90,
)
res.raise_for_status()
body = res.json()
print(f"{body['total']} domains link to square.com but not stripe.com")
for row in body["data"]:
print(row["from_domain"], row["total_links"])const params = new URLSearchParams({
domain_a: "square.com",
domain_b: "stripe.com",
limit: "25",
});
const res = await fetch(`https://api.rankparse.com/v1/link-intersect?${params}`, {
headers: { "X-API-Key": "rp_your_key" },
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const { data, total } = await res.json();
console.log(total, data);Response
{
"data": [
{ "from_domain": "shopify.com", "total_links": 214 },
{ "from_domain": "producthunt.com", "total_links": 78 }
],
"total": 1860,
"limit": 25,
"credits_used": 5,
"credits_remaining": 995
}Response fields
Top level:
| Field | Type | Description |
|---|---|---|
data | array | Domains that link to domain_a but not domain_b, sorted by total_links descending, then domain name. Empty when there are none. |
total | integer | Count of all matching domains, independent of limit. 0 when there are no matches. |
limit | integer | The limit value you sent, echoed back as received. |
credits_used | integer | Always 5. |
credits_remaining | integer | Your balance after this call. |
This endpoint does not echo domain_a or domain_b in the response.
Each row in data:
| Field | Type | Description |
|---|---|---|
from_domain | string | A domain that links to domain_a and not to domain_b. |
total_links | integer | Number of links from this domain to domain_a. |
Behavior and limits
- Credits: 5 per call, charged before the lookup. Server errors are refunded.
- Caching: results are cached for 30 days per crawl release and per ordered pair of
domain_a,domain_bandlimit. A cache hit is billed the same as a fresh lookup. - Empty results: if every linker of
domain_aalso links todomain_b(ordomain_ahas no data), you get200withdata: []andtotal: 0. - No scoring: rows are ranked by link count only. Use Competitor Gap for authority-ranked prospects.
- Rate limit: 60 requests per minute per key. See Rate limiting.
Errors
| HTTP | Code | When |
|---|---|---|
| 400 | invalid_domains | domain_a or domain_b is missing or not a valid domain. |
| 401 | invalid_api_key | Missing, invalid or revoked API key. |
| 402 | insufficient_credits | Balance is lower than 5 credits. |
| 402 | spend_cap_reached | Your monthly spend cap is reached. |
| 429 | rate_limited | More than 60 requests in a minute. |
| 503 | query_timeout, upstream_error | Transient data store problem. Retry after the Retry-After header. Credits are refunded. |
See Errors for the full list and the error body format.
Related
MCP tool: get_link_intersect (accepts domain_a and domain_b; described as "domains linking to A but not B").