Rate limits and quotas

Two limits apply to a key: requests a minute, and calls a month. Anonymous callers have a minute limit and a daily limit per IP. Every response tells you where you stand.

Limits by plan

PlanRequests a minuteCallsTracked companiesRows per page
Anonymous (no key)10100 a day per IP010
Free (€0)201,000 a month10025
Starter (€49 / month)6025,000 a month1,000100
Pro (€199 / month)300250,000 a month10,000100
Business (€499 / month)6001,000,000 a month50,000100
Scale (€999 / month)12004,000,000 a month200,000100
Trial (7 days)605,000 in the trial500100

At the limit the API stops until the 1st (UTC); there is no overage bill. Upgrade at any time, the same key keeps working. The monthly quota counts calendar months in UTC. Anonymous callers are also limited per network (a shared office or proxy range counts together), and each route has a daily anonymous budget across all callers. A free key moves you out of all of that. Plans and prices: pricing.

Headers on every response

HeaderMeaning
x-ratelimit-remainingRequests left in the current window (a minute, or the day for anonymous callers).
x-ratelimit-resetWhen the window resets, as a Unix timestamp in seconds.
retry-afterOn a 429 or 503: seconds to wait before the next try.
x-quota-limitYour plan’s calls per month (keyed calls only).
x-quota-remainingCalls left this month; 0 on a quota_exceeded answer.
x-quota-overageCalls past the quota, when overage is switched on for your plan.
x-arcadium-anontrue on anonymous answers: a preview with short lists. A free key removes it.
x-cachehit when the answer came from the shared cache (free site tools and anonymous lookups).

Read your own numbers: GET /v1/me shows your plan and usage, and the headers show the rest.

curl -s -D - -o /dev/null "https://api.arcadiumdata.io/v1/me" \
  -H "Authorization: Bearer $ARCADIUM_API_KEY" | grep -i "x-ratelimit\|x-quota"

From a browser on another site the headers are readable because the API lists them in Access-Control-Expose-Headers for allowed origins (the playground shows them).

When you get a 429

  1. rate_limited: too many requests this minute (or the anonymous daily limit). Wait for Retry-After seconds and retry.
  2. too_many_in_flight: too many requests running at once. Keep a few in parallel at most.
  3. quota_exceeded: the month's calls are used up. Upgrade on /account/ (the same key works at once) or wait for the 1st.

Spread bulk jobs: send requests at a steady pace under your per-minute limit instead of in bursts. Details per code: error codes.

Questions

What counts as one call?

One HTTP request is one call, whatever the page size.

Do I get blocked for hitting the limit?

No. A 429 means wait and retry. Repeated hammering after a 429 only delays your own window; use the Retry-After header.

Why does an anonymous call answer 401 or 503?

Without a key the API serves point lookups of one entity (one company, one pay band) as previews. List and search calls need a free key (401 key_required), and under heavy anonymous load some routes serve recent cached answers only (503 anon_strict). A free key avoids both.