Skip to content
Browse documentation

Rate limits

Monthly quotas, response headers, request costs, control-graph limits and tier access. For why there are two separate limits, see Capacity and quotas.

Monthly quota

TierPriceMonthly requests
Free£0 forever500
Growth£29 /month10,000
Enterprise£149 /month50,000

Quota window

Counted per
Account. Usage is metered per account, not per key.
Growth and Enterprise
The quota window is your Stripe billing period.
Free
The quota window rolls monthly from the key's creation time (UTC).
Short months
A window that would end on a day the month lacks (29th to 31st) ends on the month's last day. The next window starts from there.
Reset time
X-RateLimit-Reset. Windows are per key, not calendar months.
Regenerated paid key
Keeps the billing period and the usage already counted.

Response headers

HeaderFormatExamplePresent onMeaning
X-RateLimit-LimitInteger10000Every authenticated responseYour monthly quota.
X-RateLimit-RemainingInteger9847Every authenticated responseRequests left in the current window, after this request and any refund.
X-RateLimit-ResetUnix timestamp (seconds)1767225600Every authenticated responseWhen the current quota window ends.
Retry-AfterInteger seconds12Every 429 and 503How long to wait before sending the request again.
X-Response-TimeMilliseconds, e.g. 84ms84msMost endpoint responses. Absent on 401, rate_limit_exceeded and some 403 and 422 responsesServer processing time. Informational only.

Request cost

A request costs one unit of quota however many sources or graph nodes it touches. Cache hits cost the same as cold lookups.

OutcomeMonthly quota
200, complete response1 request
200, partial response (sources_failed not empty, or a graph with status: partial)1 request
401 authentication errorsNot consumed
403 tier errors, 404, 422 validation errors1 request
429 rate_limit_exceededNothing left to consume
429 upstream_capacityRefunded
429 control_graph_capacity1 request, not refunded
500 internal_error, 502 upstream_error1 request
503 upstream_unavailableRefunded
MCP tools/call, including tool errors1 request, never refunded
MCP tools/call of get_account_statusNot counted
MCP protocol messages (initialize, tools/list and similar)Not consumed, but refused once the quota is spent

Control-graph limits

These are ceilings, not reserved throughput. Shared capacity can stop a graph sooner; see Capacity and quotas.

LimitGrowthEnterprise
Admission burst6 graphs12 graphs
Admission refill6 per minute12 per minute
Concurrent graphs per account11
Concurrent graphs across the platform2, shared2, shared
Ancestor depth (max_depth)1–4, default 41–6, default 6
Company nodes, including the subject (max_nodes)1–12, default 121–24, default 24
Outbound Companies House attempts per graph2030
Deadline per graph8 seconds12 seconds
Descendant depth from each anchor22
Retained edges100100
  • Pagination and failed attempts count towards outbound attempts. Cache hits do not.
  • A graph that cannot start returns 429 control_graph_capacity. A graph stopped by a limit returns 200 with status: partial, coverage and frontier.
  • The graph endpoint has no fresh parameter.

Tier access

Endpoint or featureFreeGrowthEnterprise
GET /entity/{company_number}YesYesYes
Embedded risk_signals on the entity responseOmitted from the response, no errorYesYes
ch, ch_psc, insolvency, charges, officers sourcesYesYesYes
land sourceOmitted, or invalid_sources if it is the only sourceYesYes
GET /entity/{company_number}/risk403 risk_tier_requiredYesYes
GET /entity/{company_number}/control-graph403 control_graph_tier_requiredYesYes
GET /officers/{officer_id}/appointments403 appointments_tier_requiredYesYes
GET /searchYesYesYes

MCP tools have the same tier gates as their REST equivalents. A blocked tool returns the same code in the tool result.

The three 429 codes

CodeCauseRetry-After means
rate_limit_exceededYour monthly quota is spent.Seconds until your quota window ends. Can be days.
upstream_capacityThe shared Companies House budget is exhausted.Seconds until the budget has refilled enough. Usually short.
control_graph_capacityA graph could not be admitted or its subject lookup was shed.Seconds until a graph slot or admission allowance is likely free.

Usage and upgrades