Base URL: https://backlinks.uk.app/api/v1. Registrieren Sie sich, create an API key in your account and send your first request:
curl -H "X-API-Key: YOUR_KEY" "https://backlinks.uk.app/api/v1/overview?q=github.com"
Data: an index of 181M domains and 2.7B links, refreshed roughly monthly. Domains are normalised automatically: case and the www. prefix don't matter.
Every request except /v1/health must include the API key in a header:
X-API-Key: bl_live_…
Also accepted: Authorization: Bearer …. Passing the key in URL parameters is not allowed: it would end up in logs and browser history.
Each call costs 1–3 credits depending on the endpoint, regardless of how many rows it returns (up to 1,000). Your plan's credits for the current month are used first, then the prepaid balance. If a request fails on our side, the credits are returned. Plans & packs
| Header | Meaning |
|---|---|
X-Credits-Cost | credits this request cost |
X-Credits-Remaining | credits left (plan + balance) |
X-Cache | HIT — served from cache (faster), MISS — fresh query to the index |
X-RateLimit-Limit / -Remaining | the key's per-minute limit and what's left |
X-Plan | free | pro | business |
Your remaining credits are also in the _credits field of every response and in /v1/account (free).
Every response has an ok field. Lists include rows, total, page and per. On error: ok = false, error — a message, code — a machine-readable code.
{ "ok": true, "domain": "github.com", "summary": { "dr": 83, "backlinks": 826422352, "ref_domains": 1233241, … },
"_credits": { "cost": 1, "plan_remaining": 1999, "balance": 0, "available": 1999, "cached": false } }
{ "ok": false, "code": "insufficient_credits", "error": "Not enough credits: this call costs 2, you have 1. …" }
| HTTP | code | When |
|---|---|---|
| 400 | invalid_param, invalid_request | invalid or missing parameter |
| 401 | missing_api_key, invalid_api_key | no key, or the key is revoked |
| 402 | insufficient_credits | not enough credits — top up or upgrade your plan |
| 403 | account_blocked | the key owner's account is blocked |
| 404 | not_found | unknown endpoint |
| 429 | rate_limited | per-minute request limit exceeded |
| 502 / 503 | upstream_error, service_unavailable | temporary problem with the data source — retry later; no credits are charged |
All endpoints are GET /api/v1/{name}. Pagination: page (from 1) and per (10–1000). Sorting: sort + order=asc|desc.
Your plan, plan credits and balance, the credit reset date and the per-minute limit.
Vollständiges Domainprofil: DR, Backlinks, verweisende Domains, Top-Anker und -Seiten, Verteilung nach DR und TLD.
q * | domain (several, comma separated, for compare/intersect) |
Compact metrics for one domain: DR, backlinks, referring domains, dofollow. Best for programmatic lookups.
q * | domain (several, comma separated, for compare/intersect) |
Verweisende Domains mit Linkanzahl, Dofollow, DR des Spenders sowie erstem und letztem Fund.
q * | domain (several, comma separated, for compare/intersect) |
sort | sort field |
order | asc | desc |
page | page, from 1 |
per | rows per page, 10–1000 |
follow | 1 — dofollow, 0 — nofollow |
min_dr | minimum donor DR |
max_dr | maximum donor DR |
min_links | minimum links from the referring domain |
tld | referring domain TLD, e.g. org |
domain | only this referring domain |
from | from date (YYYY-MM-DD) |
to | to date (YYYY-MM-DD) |
Individual backlinks (or grouped by domain or page): source page, anchor, rel, dofollow, type, dates. Alias: refpages.
q * | domain (several, comma separated, for compare/intersect) |
group | domain | page |
sort | sort field |
order | asc | desc |
page | page, from 1 |
per | rows per page, 10–1000 |
follow | 1 — dofollow, 0 — nofollow |
rel | nofollow | ugc | sponsored |
ltype | link type |
atype | anchor type |
oneper | 1 — one link per referring domain |
anchor | filter by anchor |
src | filter by source page |
target | filter by target page |
tld | referring domain TLD, e.g. org |
min_dr | minimum donor DR |
from | from date (YYYY-MM-DD) |
to | to date (YYYY-MM-DD) |
Anchor distribution with link and referring-domain counts, share and dofollow.
q * | domain (several, comma separated, for compare/intersect) |
sort | sort field |
order | asc | desc |
page | page, from 1 |
per | rows per page, 10–1000 |
anchor | filter by anchor |
follow | 1 — dofollow, 0 — nofollow |
min_links | minimum links |
min_refdomains | minimum referring domains |
Top anchors with share — the fast option for a word cloud.
q * | domain (several, comma separated, for compare/intersect) |
per | rows per page, 10–1000 |
The most-linked pages of a domain with backlink and referring-domain counts.
q * | domain (several, comma separated, for compare/intersect) |
sort | sort field |
order | asc | desc |
page | page, from 1 |
per | rows per page, 10–1000 |
url | filter by URL |
follow | 1 — dofollow, 0 — nofollow |
min_backlinks | minimum backlinks |
min_refdomains | minimum referring domains |
Referring domains per DR bucket (0–14 … 70–100).
q * | domain (several, comma separated, for compare/intersect) |
Referring domains grouped by TLD.
q * | domain (several, comma separated, for compare/intersect) |
DR, backlinks and referring domains for up to 2,000 domains in one call. GET ?domains=a.com,b.com or POST with one domain per line in the body. Alias: authority.
domains * | domains separated by commas, spaces or new lines |
Compare up to 20 domains: DR, backlinks, referring domains, dofollow.
q * | up to 20 domains, comma separated |
Domains linking to at least two of 2–10 targets (link intersect), ranked by overlap.
q * | 2–10 domains, comma separated |
Full-text search across all backlinks by anchor, title or URL.
q * | search query |
field | anchor | title | url |
follow | 1 — dofollow, 0 — nofollow |
ltype | link type |
tld | referring domain TLD, e.g. org |
domain | limit to a domain |
sort | sort field |
page | page, from 1 |
per | rows per page, 10–1000 |
Which sites receive links with a given anchor, ranked by relevance.
q * | anchor phrase |
follow | 1 — dofollow, 0 — nofollow |
page | page, from 1 |
per | rows per page, 10–1000 |
Global ranking of domains in the link graph.
metric * | pr_val | in_degree | harmonic_val | out_degree |
page | page, from 1 |
per | rows per page, 10–1000 |
order | asc | desc |
Domain autocomplete.
q * | beginning of a domain |
Overall index size.
* — required parameter
# curl — top referring domains by links
curl -H "X-API-Key: $KEY" "https://backlinks.uk.app/api/v1/refdomains?q=github.com&sort=links&per=20"
# curl — DR for a list of domains (POST, up to 2000)
curl -H "X-API-Key: $KEY" --data-binary $'github.com\nmoz.com\nnytimes.com' "https://backlinks.uk.app/api/v1/bulk_dr"
# Python
import os, requests
r = requests.get("https://backlinks.uk.app/api/v1/backlinks",
params={"q": "github.com", "per": 100, "follow": 1},
headers={"X-API-Key": os.environ["KEY"]}, timeout=30)
r.raise_for_status()
data = r.json()
for row in data["rows"]:
print(row)
print("credits left:", data["_credits"]["available"])
// Node.js 18+ (on the server — not in the browser)
const res = await fetch("https://backlinks.uk.app/api/v1/overview?q=github.com", { headers: { "X-API-Key": process.env.KEY } });
const d = await res.json();
if (!d.ok) throw new Error(d.error);
console.log(d.summary.dr, d.summary.ref_domains);
// PHP
$ch = curl_init('https://backlinks.uk.app/api/v1/anchors?q=github.com&per=50');
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ['X-API-Key: ' . getenv('KEY')]]);
$d = json_decode(curl_exec($ch), true);
foreach ($d['rows'] as $a) echo $a['anchor'], PHP_EOL;
You can create a key in your account. The request goes straight from your browser. The key is not stored anywhere and is gone after a page reload. Requests from the console spend credits like any other.