SEO Backlinks API
Get AnyAPI SEO backlinks for a domain or URL, each with the linking page, anchor text, dofollow flag, authority rank, spam score, and first and last seen dates as normalized JSON.
Call it
Make your first request
import os, requests res = requests.post( "https://api.getanyapi.com/v1/run/seo.backlinks", headers={"Authorization": f"Bearer {os.environ['ANYAPI_KEY']}"}, json={ "target": "" }, ) print(res.json())
{
"data": {
"backlinks": [
{
"anchor": "example",
"attributes": [
"example"
],
"dofollow": true,
"domainFrom": "example.com",
"domainFromCountry": "example.com",
"domainFromIp": "example.com",
"domainFromIsIp": true,
"domainFromPlatformTypes": [
"example.com"
],
"domainFromRank": 1,
"domainTo": "example.com",
"firstSeenUtc": 12.5,
"groupCount": 12500,
"imageAlt": "https://example.com/image.jpg",
"imageUrl": "https://example.com/image.jpg",
"isBroken": true,
"isIndirect": true,
"isLost": true,
"isNew": true,
"isOriginal": true,
"lastSeenUtc": 12.5,
"linkType": "https://example.com/page",
"linksCount": 12500,
"pageFromEncoding": "example",
"pageFromExternalLinks": 29,
"pageFromInternalLinks": 29,
"pageFromKeywordsTop10": 29,
"pageFromKeywordsTop100": 29,
"pageFromKeywordsTop3": 29,
"pageFromLanguage": "en",
"pageFromRank": 29,
"pageFromSize": 29,
"pageFromStatusCode": 29,
"pageFromTitle": "Example title",
"previousSeenUtc": 12.5,
"rank": 1,
"semanticLocation": "example",
"spamScore": 5,
"textAfter": "A short example description of this item.",
"textBefore": "A short example description of this item.",
"tldFrom": "example",
"urlFrom": "https://example.com/page",
"urlTo": "https://example.com/page",
"urlToRedirectTarget": "https://example.com/page",
"urlToSpamScore": 5,
"urlToStatusCode": 42
}
],
"totalCount": 12500
},
"found": true,
"reason": "not_found"
}interface SeoBacklinksResponse {
data: {
backlinks: {
anchor?: string;
attributes?: string[];
dofollow?: boolean;
domainFrom?: string;
domainFromCountry?: string;
domainFromIp?: string;
domainFromIsIp?: boolean;
domainFromPlatformTypes?: string[];
domainFromRank?: number;
domainTo?: string;
firstSeenUtc?: number;
groupCount?: number;
imageAlt?: string;
imageUrl?: string;
isBroken?: boolean;
isIndirect?: boolean;
isLost?: boolean;
isNew?: boolean;
isOriginal?: boolean;
lastSeenUtc?: number;
linkType?: string;
linksCount?: number;
pageFromEncoding?: string;
pageFromExternalLinks?: number;
pageFromInternalLinks?: number;
pageFromKeywordsTop10?: number;
pageFromKeywordsTop100?: number;
pageFromKeywordsTop3?: number;
pageFromLanguage?: string;
pageFromRank?: number;
pageFromSize?: number;
pageFromStatusCode?: number;
pageFromTitle?: string;
previousSeenUtc?: number;
rank?: number;
semanticLocation?: string;
spamScore?: number;
textAfter?: string;
textBefore?: string;
tldFrom?: string;
urlFrom: string;
urlTo?: string;
urlToRedirectTarget?: string;
urlToSpamScore?: number;
urlToStatusCode?: number;
}[];
totalCount?: number;
} | null;
found: boolean;
reason?: "not_found";
}Full parameter and response reference - every field, type, and example for this endpoint.
Reference
Request, response, and price
Last verified 2026-09-24 · uptime and latency measured over 30dcurl -X POST https://api.getanyapi.com/v1/run/seo.backlinks \
-H "Authorization: Bearer $ANYAPI_KEY" \
-H "Content-Type: application/json" \
-d '{"limit":10,"target":"ahrefs.com"}'| Field | Type | Example value |
|---|---|---|
| Request body | ||
| target | string | "ahrefs.com"Domain, subdomain, or full page URL to analyze. Send a domain without a protocol or leading www. |
| includeSubdomains | boolean | Count links pointing at the target's subdomains as well as the target itself. |
| limit | integer | 10Maximum number of backlinks to return. You are billed per returned result, so a lower limit costs less. |
| mode | enum | as_is returns every backlink; one_per_domain keeps one backlink per linking domain; one_per_anchor keeps one per anchor text. |
| status | enum | Return backlinks that are live now, ones that have been lost, or both. |
| Response | ||
| data | object | |
| data.backlinks | object[] | Backlinks pointing at the target. Populated whenever the provider has data for the entity. |
| data.backlinks[].anchor | string | Anchor text of the link. |
| data.backlinks[].attributes | string[] | rel attributes on the link, such as nofollow, sponsored, ugc, or noopener. |
| data.backlinks[].dofollow | boolean | True when the link passes ranking value (no nofollow attribute). Populated whenever the provider has data for the entity. |
| data.backlinks[].domainFrom | string | Domain of the linking page. Populated whenever the provider has data for the entity. |
| data.backlinks[].domainFromCountry | string | Country code of the linking domain. |
| data.backlinks[].domainFromIp | string | IP address of the linking domain. |
| data.backlinks[].domainFromIsIp | boolean | True when the linking host is a bare IP address. |
| data.backlinks[].domainFromPlatformTypes | string[] | Site types of the linking domain, such as blogs, news, or ecommerce. |
| data.backlinks[].domainFromRank | integer | Authority rank of the linking domain on a 0-1000 scale. |
| data.backlinks[].domainTo | string | Domain of the target URL. |
| data.backlinks[].firstSeenUtc | number | When the backlink was first seen. UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. |
| data.backlinks[].groupCount | integer | Backlinks grouped into this one by the requested mode. |
| data.backlinks[].imageAlt | string | Alt text of the linked image, for image links. |
| data.backlinks[].imageUrl | string | URL of the linked image, for image links. |
| data.backlinks[].isBroken | boolean | True when the target URL no longer resolves. |
| data.backlinks[].isIndirect | boolean | True when the link reaches the target through a redirect or canonical. |
| data.backlinks[].isLost | boolean | True when the backlink has been removed. |
| data.backlinks[].isNew | boolean | True when the backlink appeared since the previous crawl. |
| data.backlinks[].isOriginal | boolean | True when the link was present on the first crawl of the linking page. |
| data.backlinks[].lastSeenUtc | number | When the backlink was last seen. UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. |
| data.backlinks[].linkType | string | How the link is placed: anchor, image, redirect, canonical, alternate, and so on. |
| data.backlinks[].linksCount | integer | Identical links from the linking page to the target. |
| data.backlinks[].pageFromEncoding | string | Character encoding of the linking page. |
| data.backlinks[].pageFromExternalLinks | integer | Outbound links on the linking page. |
| data.backlinks[].pageFromInternalLinks | integer | Internal links on the linking page. |
| data.backlinks[].pageFromKeywordsTop10 | integer | Keywords the linking page ranks in the top 10 for. |
| data.backlinks[].pageFromKeywordsTop100 | integer | Keywords the linking page ranks in the top 100 for. |
| data.backlinks[].pageFromKeywordsTop3 | integer | Keywords the linking page ranks in the top 3 for. |
| data.backlinks[].pageFromLanguage | string | Language code of the linking page. |
| data.backlinks[].pageFromRank | integer | Authority rank of the linking page on a 0-1000 scale. |
| data.backlinks[].pageFromSize | integer | Size of the linking page in bytes. |
| data.backlinks[].pageFromStatusCode | integer | HTTP status the linking page returned. |
| data.backlinks[].pageFromTitle | string | Title of the linking page. |
| data.backlinks[].previousSeenUtc | number | When the backlink was seen on the crawl before the last one. UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. |
| data.backlinks[].rank | integer | Authority rank of the backlink on a 0-1000 scale. |
| data.backlinks[].semanticLocation | string | Page section holding the link, such as article, footer, or nav. |
| data.backlinks[].spamScore | integer | Spam score of the backlink on a 0-100 scale. |
| data.backlinks[].textAfter | string | Text right after the link on the linking page. |
| data.backlinks[].textBefore | string | Text right before the link on the linking page. |
| data.backlinks[].tldFrom | string | Top-level domain of the linking page. |
| data.backlinks[].urlFrom | string | URL of the page carrying the link. Populated whenever the provider has data for the entity. |
| data.backlinks[].urlTo | string | Target URL the link points at. Populated whenever the provider has data for the entity. |
| data.backlinks[].urlToRedirectTarget | string | Where the target URL redirects, if it does. |
| data.backlinks[].urlToSpamScore | integer | Spam score of the target URL on a 0-100 scale. |
| data.backlinks[].urlToStatusCode | integer | HTTP status the target URL returned. |
| data.totalCount | integer | Total backlinks matching the request, before the limit. Populated whenever the provider has data for the entity. |
| found | boolean | |
| reason | "not_found" | Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost. |
| Price | ||
| Price per request (ceiling) | USD | $0.0768 |
| Price /1k results | USD | $0.08 |
FAQ
About the SEO Backlinks API
The AnyAPI SEO Backlinks API returns SEO backlinks data as normalized JSON from one POST call to /v1/run/seo.backlinks. Get AnyAPI SEO backlinks for a domain or URL, each with the linking page, anchor text, dofollow flag, authority rank, spam score, and first and last seen dates as normalized JSON. AnyAPI returns one normalized schema whichever source serves it. It costs $0.08 per 1,000 results, and never more than $0.0768 for a single request, in US dollars with no subscription and no monthly minimum. Over the last 30 days, 100.0% of SEO backlinks calls through AnyAPI succeeded, with a median response time of 1.7 seconds across 1 measured calls.