Rate limits
The free tier allows 100 requests per day, shared across every API key on your account and resetting at 00:00 UTC. Every response tells you exactly where you stand.
One request = one unit
Every call costs exactly one unit against the daily allowance, however much work it does. A 200-page site crawl is one unit; so is a page diff that fetches two URLs. Reading a crawl result costs one more. There is no per-endpoint plan gating — every plan, Free included, can call all 40 authenticated endpoints, including the ones marked Beta. Plans differ only in the daily allowance.
Daily allowance by plan
| Plan | Requests / day |
|---|---|
| Free | 100 |
| Starter | 250 |
| Growth | 750 |
| Scale | 1,500 |
| Enterprise | Unlimited (fair use) |
Read the live matrix at any time from GET /api/v1/plans, and your own current position from GET /api/v1/usage.
Burst limits
On top of the daily allowance there are short-window burst limits so one caller can't starve the rest:
- 60 requests per 10 seconds per IP address.
- 30 requests per 10 seconds per API key.
- 2 concurrent site crawls per key.
Exceeding any of these returns 429. Back off and retry.
The usage object
Each response includes a usage object so you never have to guess:
- "usage": { "used": 37, "dailyLimit": 100, "tier": "free" }
When you hit the limit
Over the daily limit, requests return 429:
- { "error": "Daily limit reached (100/day on the free tier)", "used": 100, "limit": 100 }
Best practices
- Read the
usageobject and back off before you hit zero — or poll GET /api/v1/usage (which itself costs one unit). - Cache results — on-page data is stable between content changes; don't re-audit the same URL repeatedly.
- Don't poll the same page in a tight loop; audit on publish/update instead.
- Need more? Get in touch about a higher tier.