Backlink track in Sheets: one column, 2,000 domains
Paste domains in column A and read DR in column B. The formula works offline, and the script fetches the real numbers in a single call.
Quicklinky editorial team ·
The offline formula first
If you already know a domain's referring-domain count, you do not need an API at all. Put the count in B2 and the DR follows from the public formula.
=ROUND(100*LN(B2+1)/LN(20000000)) gives it. That is the same log scale the index uses, so 1,000 referring domains lands near 41 and 100,000 near 68. Treat the result as our own metric, never as Ahrefs DR or Moz DA. Fill the sheet down with the fill handle and every row recalculates in a blink.
Threshold table: what the DR number means for a donor
Values from the formula above, rounded. The flags are our rule of thumb for a sheet, not a Google signal.
Ref domains
DR
Flag in the sheet
Action
10
14
Red
Skip unless the page is very relevant
100
27
Amber
Check traffic and topic by hand
1,000
41
Green
Fine for most placements
10,000
55
Green+
Worth a proper outreach
100,000
68
Top
Rare, expect it to be hard
1,000,000
82
Top
Media-grade, not a cold-email target
Wire up the script
1
Open the editor
In the sheet choose Extensions, then Apps Script. Delete the stub function.
2
Paste the code below
Put your key in the script properties rather than in the code, so a shared sheet does not leak it.
3
Run once and read the log
The first run prints the raw JSON. Look at its shape and map the right field into column B before you scale up.
4
Add a menu or a trigger
Run it by hand when you add rows, or set a monthly trigger that matches the index refresh.
Apps Script, one call for the whole column
Costs 1 credit per run for up to 2,000 domains.
javascript
function fetchDr() {
const sh = SpreadsheetApp.getActiveSheet();
const last = sh.getLastRow();
const domains = sh.getRange(2, 1, last - 1, 1).getValues().flat().filter(String);
const key = PropertiesService.getScriptProperties().getProperty('QL_KEY');
const url = 'https://quicklinky.com/api.php?action=bulk_dr&domains=' +
encodeURIComponent(domains.join(',')) + '&key=' + key;
const res = UrlFetchApp.fetch(url, {muteHttpExceptions: true});
Logger.log(res.getResponseCode() + ' ' + res.getContentText().slice(0, 600));
}
A column of 2,000 in one breath
Here is the shape of a good backlink track sheet. Column A holds bare domains, column B the DR, column C the date of the pull, and column D a flag from the table above. One monthly run refreshes the lot.
Why monthly? The index is rebuilt about once a month, so weekly pulls mostly return the same numbers. Fine. Spend the spare weeks on reading the red rows instead.
If you track more than 2,000 domains, split the list in blocks of 2,000. Ten blocks are ten credits, which is $0.001.
Sheet hygiene
Strip protocols and paths: use the bare host such as example.com
Keep each run under 2,000 domains, because that is the per-call cap
Stamp the pull date in a cell, since the index moves monthly
Never paste the key into a cell of a sheet you share
Sheet questions
Can I use IMPORTDATA or IMPORTXML instead?
Not reliably. IMPORTDATA expects CSV and the API returns JSON, and a key in a cell formula would be visible to every editor. Apps Script keeps the key in script properties, which is the safer route.
How many credits does a monthly refresh of 500 domains take?
One credit, or $0.0001, because bulk_dr bills per call and accepts up to 2,000 domains. The cost page has the rest of the arithmetic.
Does it work in Excel?
The DR formula does, since LN and ROUND exist there too. The Apps Script part does not. In Excel, use Power Query or the curl lines and paste the results.