Usage & limits / Quotas and rate limits

Your monthly request quota

What counts against your quota, why it's shared across every key, when it resets, and what to do when you hit it.

Your plan includes a fixed number of API requests per calendar month. That's your quota. It's separate from the per-minute rate limit, and the two fail in different ways — rate limits covers the technical behaviour of both.

PlanRequests / month
Free500
Starter50,000
Growth500,000
Scale5,000,000

The quota is per account#

This is the single most common surprise, so it's worth being blunt about:

Keys do not multiply your quota

Quota is enforced per account, not per key. Ten keys on a Growth plan share one 500,000-request pool. Creating another key gives you another credential to revoke independently — it does not give you another 500,000 requests.

The per-minute rate limit works the same way. Four workers on Growth's 300/min get 75/min each, not 300 each.

Keys exist to separate environments and to be revoked independently. If you're creating keys to get more volume, the thing you want is a bigger plan.

What counts#

Every authenticated request that reaches the API, including ones that return zero results. A request that matches nothing still cost us the query, so it still counts.

/v1/health is the exception: it's unauthenticated, isn't rate-limited, and doesn't touch your quota. Use it for liveness probes rather than a limit=1 job query — that's what it's for.

Response size is irrelevant. One request returning 200 jobs with full descriptions costs exactly the same as one returning a single title.

When it resets#

At the start of each calendar month, in UTC. Not on your billing date, and not on a rolling 30-day window. A quota exhausted on 28 January is full again on 1 February at 00:00 UTC.

Buying a plan mid-month doesn't leave you with a stub of a month, though — a plan change starts a new period and refreshes the quota immediately.

Reading your usage#

The dashboard shows month-to-date consumption against your quota, plus a 30-day daily breakdown per key. The per-key view is how you find out which worker is eating the budget — the total tells you that you have a problem; the breakdown tells you where it is.

last_used_at per key is on the same page. A key with unexplained volume is worth investigating.

When you hit the limit#

Requests are rejected until the quota resets or you upgrade. Nothing is queued, nothing is throttled to a trickle, and there's no soft landing — the quota is a wall, not a slope.

Two ways out:

  • Upgrade. A plan change refreshes your quota with the new plan's allocation immediately, so this unblocks you in a minute. It also starts a new billing period and isn't prorated — read that page first.
  • Wait for the calendar month to turn over.

We don't bill overage. You can't accidentally spend $4,000 because a retry loop went feral — you just stop getting data. That's deliberate, and it's why the wall is abrupt.

Making the quota last#

The cheapest fix, by a wide margin, is bigger pages. limit goes to 200 on /v1/jobs and 1,000 on /v1/jobs/feed, and every page costs one request regardless of size:

50 pages × limit=20  = 50 requests
5 pages  × limit=200 = 5 requests   ← same data, 10× cheaper

The second cheapest is not re-crawling to find changes. Walking /v1/jobs to spot what's new is the most expensive possible way to stay current, and on Free or Starter it will exhaust the month before it finishes. Use the feed — one request returns everything since your cutoff. See syncing the feed.

Then: don't retry 401s and 404s. They'll never succeed, and each attempt is billed. See errors.

Custom limits#

If your volume doesn't fit the plans, or you'd rather have the data as files than as HTTP responses, write to [email protected]. Custom quotas and flat-file delivery both exist; neither is self-serve.

Next#

Was this page helpful?