Every Registrum response is cached automatically. You never hit the Companies House rate limit. Even when CH goes down, your app keeps working.
Pain points
Cache miss only (first request, or after TTL):
What you get
| Endpoint | TTL | Rationale |
|---|---|---|
| /v1/company/{number} | 24 hours | Company status changes infrequently; directors, SIC, addresses are stable day-to-day |
| /v1/company/{number}/financials | 7 days | Accounts are filed annually; iXBRL parsing is expensive — no point re-parsing daily |
| /v1/company/{number}/directors | 24 hours | Appointment changes are filed within days; a 24h window is accurate enough |
| /v1/company/{number}/network | 24 hours | Network derives from director data — same cadence |
| /v1/search | 1 hour | Company name/status changes rarely; search index updates are gradual |
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.
# 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 free tier gives you 50 calls/month with caching and circuit breaker included. No extra configuration required.