We publish no requests-per-second ceiling, so this page gives you pacing defaults of our own and the limits that sit on the tool side. Treat them as starting points.
Deeplinkify research team ·
Action by action: batch, wait, retry
Suggested defaults for scheduled jobs. These are our advice, not enforced quotas.
Action
Credits
Max per call
Suggested wait between calls
Retry on failure
overview, domain, stats
0
1 domain
0.5 s
Twice, 2 s apart
bulk_dr
1
2,000 domains
1 s
Twice; never on 402
compare
1
20 domains
1 s
Twice
refdomains, backlinks, anchors, toppages
2
1,000 rows, per up to 5000, deep paging capped at 50,000
1 to 2 s
Twice; never on 401 or 402
intersect
2
2 to 10 domains
2 s
Once
search, keyword
3
1,000 rows
2 s
Once
What each tool does to your loop
Platform behaviour in general terms. Check each vendor's current documentation for exact figures.
Tool
What counts as the unit
Where to put the pause
Watch out for
n8n
An execution, plus node runs in memory
Wait node inside Loop Over Items
Big arrays held in memory on a small server
Zapier
A task per successful action step
Delay After Queue or Delay For
Task counts rise with every step you add
Make
An operation per module per bundle
Sleep module in the iterator path
Operations multiply through Iterators
Google Apps Script
An execution, with run-time and URL Fetch caps
Utilities.sleep(ms)
Run-time ceiling on long lists
A rule of thumb for the first week
Start slow. Speed up later.
Set a one-second pause, then run a hundred items and count how many answers came back with anything other than 200. If none did, halve the pause once and repeat. Stop there. Shaving another half second from a weekly job gains you nothing, and a flood of failed calls is hard to untangle afterwards. Patience is cheap.
Every authenticated response carries _credits, so log the remaining balance at the end of each run. A balance that drops faster than you expected is the earliest warning that a loop is running twice or that a Filter is not filtering.
Three habits that matter more than the wait
Batch first. Pause second.
Use bulk_dr whenever you only need ratings, because one call replaces up to 2,000 individual ones, as the outreach list recipe shows. Page through refdomains with per=1000 rather than many small pages, since a call is billed once whatever the row count.
Cache what you already know. The index refreshes roughly monthly, so a Sheets lookup tab keyed by domain with a date column stops you paying twice for the same answer inside a month.
Finally, write down your batch size and pause in the workflow's description field. Six months from now, the person who edits it (probably you) will not remember why the Wait node says 1.5 seconds. The n8n recipe uses that habit.
Backoff in one n8n Code node
If you prefer explicit control over the built-in retry, this node computes a wait for the next attempt.
javascript
// Input: items with an 'attempt' field (starts at 0)
return items.map(it => {
const a = (it.json.attempt || 0) + 1;
it.json.attempt = a;
it.json.waitSeconds = Math.min(30, 2 ** a); // 2, 4, 8, 16, 30
it.json.giveUp = a > 3 || [401, 402].includes(it.json.status);
return it;
});
What to do on the day it still goes wrong
Stop the run. Read one failure.
Take one failed item and reproduce it with curl outside your tool. Then compare the status code with the table in the error runbook. A 401 or 402 is about your key or balance. Anything else deserves a second look at the domain you sent, since a stray space, a protocol prefix or an uppercase letter is the usual culprit.
Take one failed item and reproduce it with curl outside your tool. Then compare the status code with the table in the error runbook. A 401 or 402 is about your key or balance. Anything else deserves a second look at the domain you sent, since a stray space, a protocol prefix or an uppercase letter is the usual culprit.