Recipe
Referring-domain diff: a recipe to check backlinks between two months
You cannot see last month's profile in today's lookup. Save it yourself, then subtract. This recipe takes about twenty lines of script and two API calls per domain.
What you end up with
Three lists: kept, gained, missing
Two copies of the referring-domain list give you domains present in both, domains only in the newer copy, and domains only in the older one. The third list is where most arguments start, so the recipe treats it with suspicion.
- Needs two copies taken on comparable days
- Costs 2 credits per domain per month for the list
- Cannot tell a removed link from a page the crawler missed
Step one: the request
The same call in both months. Sorting by DR descending puts the domains you most care about on the first page, and per=1000 is the maximum rows billed in one call.
curl -s "https://rankele.com/api.php?action=refdomains&q=example.com&per=1000&page=1&sort=dr&order=desc&key=sk_live_..." \
> example.com.refdomains.2026-09.json
# next month, same call, new file name
curl -s "https://rankele.com/api.php?action=refdomains&q=example.com&per=1000&page=1&sort=dr&order=desc&key=sk_live_..." \
> example.com.refdomains.2026-10.jsonStep two: the three columns worth keeping
Open one saved file first and read the field names it actually contains. Row field names differ by action, so write your script against what you see.
The domain name
This is your join key. Lower-case it and strip a leading www. before comparing, or the same site appears as both lost and gained.
Its DR at snapshot time
DR is a log of referring domains, so it moves slowly. A jump on a single domain between months is worth a look.
The snapshot label
Add a month column yourself. The API returns the current index, and none of the listed actions returns an earlier one.
Step three: read the missing list slowly
Missing does not mean removed. Think of it as unconfirmed. The domain might have deleted the link, redirected the page, blocked the crawler, or simply sat outside this month's crawl, which is why a repeat pass to check backlink online data a month later often clears half the list.
Semrush users know the pattern: a report flags a link as lost, yet the page still carries it. Index timing explains much of that. Ahrefs, Majestic and our index each fetch on their own schedule, so disagreement between tools is normal rather than a sign that one is broken.
Before you act on a missing domain, open the linking page in a browser. Then read the monthly runbook to decide whether a rank move overlaps the window at all.
Keep the list of unconfirmed domains in its own column and review it again after the next snapshot. Domains that reappear were index gaps. Domains still missing two months running deserve a manual visit.
Triage the missing list by what you see on the page
| What you find when you open the page | Likely meaning | Next move |
|---|---|---|
| Link is there, same anchor | Index gap, not a loss | Ignore, re-check next month |
| Link is there, nofollow added | Attribute change | Note it, check the page's traffic role |
| Page returns 404 or redirects | Real loss | Ask whether the page mattered |
| Link text removed, page live | Editorial removal | Decide if outreach is worth the effort |
Step four: keep the diff honest
- 1
Diff the same query depth
If you pulled only page 1 in one month and page 2 in another, the lists are not comparable. Pin
page,per,sortandorder. - 2
Count, then sample
Record the number of gained and missing domains, then open ten of each at random. A tally with no sampling is a rumour.
- 3
Compare with your rank log
Keep the diff next to Search Console dates. The suspect table shows what else to rule out.