Rate limits and quotas

Per-minute limits, monthly quotas, and the headers on every response.

Two independent limits apply to every key: requests per minute, and requests per month.

Headers on every response

RateLimit-Limit: 300
RateLimit-Remaining: 297
RateLimit-Reset: 1755388860
Cruxal-Quota-Remaining: 498112

RateLimit-Reset is a Unix timestamp in seconds. The three RateLimit-* headers are present on every response, including the 429 — so a client that has just been throttled still learns exactly when to try again.

Cruxal-Quota-Remaining is the exception: it is sent only when the plan has a monthly quota, so an unmetered plan never receives it. Treat it as optional.

Per-minute limit → 429

Exceed your per-minute rate and you get 429 Too Many Requests with a Retry-After header. Wait and retry; this is a limit that recovers on its own.

Limits are measured in fixed one-minute windows, not a sliding window. A burst straddling a window boundary can therefore briefly admit up to twice your limit. That is expected behaviour, not a bug.

Monthly quota → 403

Exhaust your monthly quota and you get 403 Forbidden with type: .../quota-exceeded — deliberately not a 429, and with no Retry-After.

A monthly quota does not recover by waiting a few seconds. Because well-behaved HTTP clients retry 429s automatically, returning one here would have your own SDK hammering us for the rest of the billing month. A 403 says what is true: retrying will not help. Upgrade, or wait for the next billing month.

The billing month runs on Indian Standard Time, so it rolls over at midnight IST on the 1st.

What counts

Every authenticated request counts, including ones that end in an error. If your integration sends a malformed request in a retry loop, those attempts consume quota.

Requests rejected before authentication — a missing or malformed key — do not count, because there is no key to count them against.

Check your own consumption at any time:

curl -sS https://api.cruxal.in/v1/usage \
  -H "Authorization: Bearer $CRUXAL_API_KEY"

Plans

PlanPer minutePer monthFiling delayHistoryLogos
Test (ck_test_)101,00060 minutesLast 7 days
Developer6025,00024 hoursFull
Starter120100,00015 minutesFull
Growth300500,000NoneFull
Enterprise1,200UnmeteredNoneFull

The delay applies to exchange filings only. Our own editorial articles under /v1/news are never delayed on any plan.

Test keys additionally return a reduced payload — see Authentication. They are for evaluating the integration, not for running on.

Company logos (logo_url on the companies endpoints) are a separate entitlement available from Starter up, because they are third-party trademarks we redistribute under licence rather than data of our own.

Limits are recorded per key, so if you have negotiated something specific, your key carries those numbers rather than the table's.

Prices are on the pricing page. Growth and Enterprise are quoted rather than listed — talk to us.

Get started

Create a free account, then mint an API key and make your first request in under two minutes.