Recipes
Check backlinks of a website: five curl recipes
Short, copyable and dated. Each recipe states what it costs, what it proves and what it cannot. Replace the key with your own and the domains with your case.
Casework needs repeatable steps. A one-off browser check cannot be shown to a colleague next month, while a saved curl call can. That is why these five recipes exist.
Each is a plain request you can paste into a terminal to check backlinks website by website, with the cost beside it. Work from the free recipe outward, and stop as soon as the question is answered.
Recipe 1: first look, free
No key, no cost. Run this before anything paid.
curl "https://theanchornet.com/api.php?action=overview&q=example.com" | jq .Recipe 2: rate a list in one call
Up to 2,000 domains for 1 credit. Put the candidates in the domains parameter, comma separated, or send a POST body for a longer list.
curl "https://theanchornet.com/api.php?action=bulk_dr&domains=a.com,b.com,c.com&key=sk_live_..." \
| jq . > rated_$(date +%F).jsonRecipe 3: shared referrers
Two to ten domains, 2 credits. This is the call behind the footprint method.
curl "https://theanchornet.com/api.php?action=intersect&domains=rival-a.com,rival-b.com,rival-c.com&per=1000&key=sk_live_..." \
-o overlap_$(date +%F).jsonRecipe 4: anchors, month by month
Archive with the date in the filename, then compare with diff after normalising the keys. Two credits each run.
curl -s "https://theanchornet.com/api.php?action=anchors&q=yoursite.com&per=1000&key=sk_live_..." \
| jq -S . > anchors_$(date +%Y-%m).json
diff anchors_2026-09.json anchors_2026-10.json | head -80Recipe 5: stop if the call failed
A guard for scripts. Every response has ok, and keyed ones carry _credits with the cost and remaining balance.
R=$(curl -s "https://theanchornet.com/api.php?action=refdomains&q=yoursite.com&key=sk_live_...")
echo "$R" | jq -e '.ok' >/dev/null || { echo "call failed"; exit 1; }
echo "$R" | jq '._credits'What each recipe can and cannot show
| Recipe | Proves | Does not prove |
|---|---|---|
| 1: overview | Rough standing of a domain | Anything about its link quality |
| 2: bulk_dr | That a domain has few or many referrers | That its links are good or paid |
| 3: intersect | Shared referrers exist | Shared ownership |
| 4: anchors diff | That the wording changed | Who changed it, or why |
| 5: guard | Your script handled an error | That the data is fresh |
Habits worth stealing
Name files by date. It costs nothing and spares you an argument with your own memory. Next month you will want the old file.
Mind the keys. Keep them in an environment variable rather than in the command, and rotate one if it leaks into a paste. The field reference lists the errors you will see, and the glossary covers the vocabulary. Remember the index refreshes roughly once a month, so run these on a schedule that respects it.
Budget for a small investigation
| Step | Calls | Credits | Dollars |
|---|---|---|---|
| Free overview on 4 rivals | 4 | 0 | $0.00 |
| refdomains on each rival | 4 | 8 | $0.0008 |
| intersect across all four | 1 | 2 | $0.0002 |
| anchors on each rival | 4 | 8 | $0.0008 |
| Rating 1,500 tail domains with bulk_dr | 1 | 1 | $0.0001 |
| Total | 14 | 19 | $0.0019 |
Common slips
Putting a key in a shared script is the first slip. Costly. Anyone who can read the file can spend your credit. Use an environment variable and a private repository.
The second is trusting a number with no date. A DR of 41 means very little without the day it was fetched, and the index changes about every month, so a saved file with its name dated is worth ten remembered figures.
The third is asking for too much. A single call returns up to 1,000 rows, and deep pagination stops at 50,000. If you reach that wall, narrow the question with sort and order rather than paging forever, or split the case by anchor or by target page.
A fourth deserves a mention: running the same pull twice by accident. It is cheap at 2 credits, but a loop with a typo can repeat it ten thousand times, so add a counter and print _credits as you go.