Infrastructure

Intelligent caching — built in

Every Registrum response is cached automatically. You never hit the Companies House rate limit. Even when CH goes down, your app keeps working.

The same request — two very different experiences

Direct Companies House API
Your app
Makes request
~480 ms
Companies House API
600 req/5min limit
parse iXBRL yourself
Your app
Handles errors, rate limits

Pain points

  • • 600 req / 5 min hard cap — one busy feature can exhaust it
  • • CH outages propagate directly to your users
  • • Financial data: separate iXBRL download + parse
  • • No caching — every call is a fresh upstream request
Via Registrum
Your app
Makes request
~8 ms (cache hit)
Registrum cache
Supabase · 24h TTL

Cache miss only (first request, or after TTL):

~480 ms
Companies House API
Buffered via circuit breaker
Your app
Clean JSON · no parsing

What you get

  • • Cache hit: ~8 ms response time
  • • CH outage: stale cache served, X-Data-Stale header set
  • • Financial data: already parsed, in the same response
  • • Circuit breaker: bad upstream trips automatically

Cache TTLs by endpoint

EndpointTTLRationale
/v1/company/{number}24 hoursCompany status changes infrequently; directors, SIC, addresses are stable day-to-day
/v1/company/{number}/financials7 daysAccounts are filed annually; iXBRL parsing is expensive — no point re-parsing daily
/v1/company/{number}/directors24 hoursAppointment changes are filed within days; a 24h window is accurate enough
/v1/company/{number}/network24 hoursNetwork derives from director data — same cadence
/v1/company/{number}/psc24 hoursPSC register changes are filed within days; active/ceased split is stable at this cadence
/v1/company/{number}/psc/chainfresh per callChain traverses multiple companies — result depends on live PSC state at each node. Not cached.
/v1/search1 hourCompany name/status changes rarely; search index updates are gradual

What happens during a CH outage?

Companies House goes down several times a year — for maintenance, deployments, or unexpectedly. With a direct integration, that outage becomes your problem. With Registrum, it doesn't.

T+0
CH goes down
Companies House returns 5xx errors
T+0
Circuit breaker trips
Registrum detects upstream failure, stops forwarding requests
T+0 → T+outage
Stale cache served
All requests return cached data with X-Data-Stale: true header
T+recovery
CH recovers
Circuit breaker resets. Cache refreshes on next request per endpoint TTL

# Response during CH outage (stale cache served)

HTTP/1.1 200 OK

X-Data-Stale: true

X-Cache-Age: 14423

X-Request-Id: a3f1...

{

"company_name": "TESCO PLC",

"cached": true

}

Your app receives data. The X-Data-Stale: true header tells you it's from cache, so you can surface that transparently to your users if needed — or silently absorb it.

The data_source field

Every Registrum response includes a data_source field that tells you exactly where the data came from. Useful for compliance workflows or any use case that cares about data freshness.

ValueMeaningMax data age
liveFetched from Companies House right now — as fresh as it gets.Seconds
cachedServed from local cache. The data was fetched recently and is still within its freshness window (< 5 minutes old). No upstream call was made.5 minutes
cached_rate_conservedServed from cache because the shared Companies House API budget was above 70% utilisation. A live call was skipped to protect capacity for other requests.30 days (profiles), 90 days (financials)

cached_rate_conserved is rare under normal load. It only occurs when the platform is handling a high volume of unique company requests simultaneously. Under typical usage, responses will be live or cached.

Stop worrying about rate limits

The free tier gives you 50 calls/month with caching and circuit breaker included. No extra configuration required.

Was this page helpful?