Comparison · Companies House API

Companies House API rate limit: 600 requests in 5 minutes, how to get a key, and what it lacks

The Companies House API is free, with no per-call charge, and its rate limit is 600 requests within a five-minute period (about 2 per second); after that every call returns 429 Too Many Requests until the window ends, as the Companies House developer documentation states. To use it you register an application on the Companies House Developer Hub and create an API key. Here is how to get the key, exactly what the limit is, what the API does well and what it lacks for a product team, and when a multi-country API helps.

Need more than the free API? Companies House covers the UK only. Prometiam is one key and one response shape for every live country, from €9.99 a month, with monitoring by webhook, insolvency notices and filed accounts beside the UK record; see the KYB API.

TL;DR

The UK Companies House API is the canonical free source for UK company data — and for UK-only use cases that fit inside its 600 requests / 5-minute rate limit, you should keep using it. Prometiam is the right alternative when you (a) need EU coverage too, (b) need sanctions screening (beta) in the same API, (c) need normalized corporate events instead of raw filings, or (d) hit the rate limit and need higher predictable throughput.

What the Companies House rate limit actually is

Straight from the official developer specification (developer-specs.company-information.service.gov.uk/guides/rateLimiting, re-verified 27 September 2026, unchanged since 25 July 2026):

  • “You can make up to 600 requests within a five-minute period.”
  • “If you exceed this limit, you will receive a 429 Too Many Requests HTTP status code for each request made within the remainder of the five-minute window.”
  • “At the end of the period, your rate limit will reset back to its maximum value of 600 requests.”
  • “We reserve the right to ban without notice applications that regularly exceed or attempt to bypass the rate limits.”

That works out to a sustained ceiling of 2 requests per second. It is generous for interactive lookups and tight for anything that backfills or re-checks a book of counterparties. Companies House will consider a higher limit on request — that is the first thing to try, and it is free.

What it costs

The Companies House API is free. There is no per-call charge and no paid tier; the only cost is the throughput ceiling above and the engineering work of handling 429s with backoff. Anyone quoting you a price for “Companies House API access” is reselling it.

How to get a Companies House API key

From the official developer documentation (developer-specs.company-information.service.gov.uk/guides/authorisation, checked 7 October 2026):

  1. Register a user account with Companies House on the Developer Hub.
  2. Register the application at the Developer Hub (manage applications) as an API Key application, then create a key for it.
  3. Authenticate with HTTP Basic: the API takes the username as the API key and ignores the password, so it can be left blank. With curl: curl -u YOUR_API_KEY: https://api.company-information.service.gov.uk/company/00445790.

The same call in Python, with retries on 429, is in the Companies House API in Python guide, and the free Companies House number lookup shows what a company record looks like before you write any code.

If you need more than 600/5min

  1. Ask Companies House for an increase — free, and the right first step.
  2. Cache aggressively — most company records change rarely; a local store plus a daily delta usually removes the pressure entirely.
  3. Use a provider that fronts the registry — Prometiam serves UK data with tier-based limits of 10 / 60 / 120 / 300 requests per minute (trial, Starter, Professional, Scale; Enterprise above), and adds every other country the API covers behind the same key and the same response shape. That is the honest pitch: not “better data”, the same registry data with a higher throughput ceiling from Scale up and without a second integration per country.

What the Companies House API lacks for a product team

  1. Multi-country need. As soon as your portfolio touches Spain or France, you need a second integration. CH is UK-only by design.
  2. Rate limit (600 requests / 5 min) is hard for medium-volume production workloads. There is no paid tier to lift it.
  3. No sanctions screening. CH gives you who's behind a UK company, not whether they're sanctioned.
  4. Filings vs events. CH returns filings; you implement the classification (capital change vs director change vs dissolution) yourself.

At a glance

PrometiamCompanies House API
CoverageUK + Spain + France + Ireland + Poland + Norway + Finland + Sweden + Croatia + Belgium + Denmark + Estonia, Slovakia, Switzerland, Latvia, Cyprus, Romania, United States, Lithuania, Canada, Australia, Japan, Israel, Singapore, Colombia, Taiwan, Czech Republic, Germany, Argentina, Ukraine, Serbia, Ecuador, Chile, Mexico, the Netherlands, BrazilUK only
PricingPublic — 14-day trial, then €9.99 / €29.99 / €99.99 / Custom, monthly or annualFree
Rate limitPer-tier: Professional 120 rpm and 10,000 credits/month; Scale 300 rpm600 / 5min hard ceiling
AuthBearer rk_live_*API key (HTTP Basic)
Sanctions screeningIncluded on Professional (beta)Not provided
Corporate eventsNormalized into typed eventsRaw filings — you classify them
PSC dataIncluded in person/company endpointsAvailable via separate endpoints
Insolvency noticesIncluded in /search and /records/{id}Available via separate Gazette feed
SupportEmail support on paid tiers; negotiated SLA on EnterpriseNone — public service

What Companies House does well

The CH API is:

  • Free, with no contract. Hard to beat at zero cost.
  • Authoritative. It's the source of truth — Prometiam draws on it, so does every commercial vendor.
  • Real-time at filing-publication. New filings appear quickly.
  • Stable and government-maintained. Long-term API contract continuity.

If your use case is UK-only, your volume is under 600/5min, and you're happy classifying filings into your own event types — the CH API is the right tool. Prometiam's value-add doesn't apply to that shape.

Where Prometiam adds value

Prometiam is not a replacement for the CH API in the sense of "we host the same data and charge for it". It's a layer that adds three things UK-only CH consumers usually need:

  1. More countries in the same API. ?country=ES (BORME), ?country=FR (BODACC), ?country=NO (Brønnøysundregistrene, companies and directors), and ?country=IE, ?country=PL, ?country=FI, ?country=SE, ?country=HR, ?country=BE, ?country=DK, ?country=EE and ?country=SK (company-level) on the same endpoints with the same response shape.
  2. Sanctions (beta) & export-control screening. /sanctions/screen?name=…&threshold=80 — EU consolidated + UN + OFAC + UK + Australia (DFAT) + FR gels, plus the US Consolidated Screening List, under one trigram fuzzy match.
  3. Normalized corporate events. Filings come in as typed events (capital_change, director_change, dissolution, liquidation, etc.). For monitoring/analytics workloads, this is the difference between "stream raw XBRL" and "alert me when a counterparty has a director change".

Rate limit and predictability

CH's 600 / 5min ceiling translates to ~2 rps sustained. For background enrichment of a 100k-counterparty list, that's ~14 hours of pure API time even before back-off. There's no paid tier to lift this — it's a public service.

Prometiam's Professional tier is 120 rpm (2 rps, the same sustained rate) with 10,000 credits/month; Scale (€99.99/mo, 50,000 credits/month) runs at 300 rpm (5 rps), and Enterprise goes beyond both, which a 100k list needs anyway for its credits. For batch enrichment, the gain starts at Scale.

Compliance and PSC

Both expose PSC (Persons with Significant Control) data for UK companies — CH directly, Prometiam through the /people/{id} and company-detail endpoints. The data lineage is the same; Prometiam provides a cleaner schema and adds cross-company linkage (the director-network graph), which CH doesn't normalize. The UK company data API guide walks through the number lookup, officers and PSC, and UK companies that have stopped meeting their filing duties carry a strike-off warning signal.

Built for the API-native workflow

The comparison above is about a rate limit. This is about the call a developer actually writes: resolving a customer's identifier, or a few typed letters, into a company record for an onboarding form, an invoice or a CRM row.

  • Every identifier, one parameter. The company number for the UK, SIREN or SIRET for France, NIF/CIF for Spain, the CRO number for Ireland, the KRS number for Poland, the organisasjonsnummer for Norway, the Y-tunnus for Finland, the organisationsnummer for Sweden, the MBS or OIB for Croatia, the enterprise number for Belgium, the CVR number for Denmark, the registry code for Estonia, the IČO for Slovakia, the UID for Switzerland, the registration number for Latvia, Cyprus and Romania, the legal entity code for Lithuania, the corporation number for Canada, the ACN or ARBN for Australia, the corporate number for Japan, the company number for Israel, the UEN for Singapore, the NIT for Colombia, the unified business number for Taiwan, the IČO for the Czech Republic, the CNPJ for Brazil, the CUIT for Argentina, the LEI for Germany, the state-prefixed number for the United States (such as NY-4424185) — ?country= picks the register, the parameter doesn't change.
  • Name search built for a form field. ?name= is a normalised, partial match — call it on every keystroke and wire it into a type-ahead field.
  • One schema, every registry. The same response shape across ?country=ES|FR|GB|IE|PL|NO|FI|SE|HR|BE|DK|EE|SK|CH|LV|CY|RO|US|LT|CA|AU|JP|IL|SG|CO|TW|BR|CZ|DE|AR|UA|RS|EC|NL|CL|NL|MX, unlike CH's UK-only schema.
  • Auth and rate limits. A single bearer key (Authorization: Bearer rk_live_...); limits scale 10 to 600 requests/minute by tier, well above CH's 600/5min ceiling on Professional and Scale.
  • A typed client, if you want one. prometiam-risk-api on npm — TypeScript types, retries on 429/5xx, cursor pagination, typed errors. The same client for Python: prometiam-risk-api on PyPI.
  • From an agent, not just a form. The MCP server (prometiam-risk-mcp on npm) puts the same lookups in Claude Desktop, Cursor or any MCP client.
  • Try an identifier before signing up. Free Companies House number, SIREN, NIF, KRS, CRO number and organisasjonsnummer lookup tools run the same call with a shared key.

Who should choose Companies House API

  • Your use case is UK-only and likely to stay UK-only
  • Your volume fits comfortably under 600 / 5min
  • You're happy implementing your own filing-to-event classification
  • You don't need bundled sanctions screening
  • You want zero vendor cost
  • You're building a hobby project, prototype, or lightweight production workload

Who should choose Prometiam

  • Your scope crosses UK + EU (Spain or France or both)
  • You want sanctions screening (beta) alongside registry data, in one API
  • You want corporate events as typed events, not raw filings to classify
  • Your volume exceeds CH's 600 / 5min, or you want predictable headroom
  • Commercial support is needed for a production system
  • You'd rather pay €29.99/mo for one integration than maintain three (CH + EU vendor + sanctions vendor)

Migrating from the Companies House API

  1. Sign up free at prometiam.com/signup. Get an rk_live_* key.
  2. Map endpoints. CH /company/{number} → Prometiam /companies/{id} (after /companies/search?company_number=). CH /officers/{officerId} → Prometiam /people/{id}. CH filing history → Prometiam /company-events/timeline?company_number= with normalized event types.
  3. Add EU coverage. If your project is about to expand into Spain or France, add ?country=ES or ?country=FR calls instead of integrating two more vendors.
  4. Add sanctions screening. Call /sanctions/screen?name=…&threshold=80 on each new counterparty before completing onboarding.
  5. Decide what to keep on CH. Many teams keep the free CH API for low-frequency real-time-filings access and use Prometiam for batch enrichment + multi-country + sanctions.

Beyond the registry record

Two derived signals, neither of them a rating. Both are dated facts carrying the source they came from, so whoever reviews your file can check them.

  • Companies that stopped filing. A company that quietly stops trading rarely dissolves; the register notices first. The registry_compliance flag returns that state in one shape for Spain (provisional closure of the registry sheet), the United Kingdom (a strike-off proposal, or annual accounts overdue), Ireland (the strike-off list) and Norway (compulsory liquidation). Read it on GET /companies/{id}?include=risk_flags, or list those companies with risk_flag_type=registry_compliance. It is a compliance signal, not an insolvency: read it together with status.
  • Public contracts, and the buyer behind them. GET /procurement/awards returns public-contract awards from Spain, France, the UK, Ireland, Poland and Norway by supplier, buyer, identifier, CPV code and date, linked to the supplier’s registry record where the identifier resolves. GET /procurement/buyer/{id} scores the contracting body itself: the probability that its next award draws a single bid, and the probability that a supplier it awards to enters insolvency within two years.

Both are ordinary REST calls on the published price and included in the 14-day trial. Procurement awards cover Spain, France, the UK, Ireland, Poland and Norway (Ireland, Poland and Norway above the EU thresholds only), the buyer scores are Spain and France and in beta, and a score is a prompt to look, never a finding of wrongdoing.

FAQ

How do I get a Companies House API key?
Register a user account on the Companies House Developer Hub, register an application there as an API Key application and create a key. You authenticate with HTTP Basic, sending the key as the username and leaving the password blank.

What is the Companies House API rate limit?
600 requests within a five-minute period. Beyond that you receive 429 Too Many Requests until the window ends, and the allowance then resets. Companies House says it will help with requests for a higher limit.

Is the Companies House API really free?
Yes. The UK government provides it free as a public service. The 600 requests / 5-minute rate limit is the hard ceiling.

Does Prometiam replace the Companies House API?
For UK-only low-volume use cases, no. For multi-country (UK + EU), batch enrichment exceeding the CH rate limit, or any workflow needing sanctions screening (beta) in the same call, yes.

Where does Prometiam's UK data come from?
From the official Companies House sources — bulk product files + daily delta feed + The Gazette for insolvency notices. Same data lineage as the CH API.

Can I use both the CH API and Prometiam together?
Yes — common pattern. Use CH for real-time filing-event consumption and Prometiam for batch enrichment, multi-country, and sanctions screening.

Does Prometiam cover Persons with Significant Control (PSC)?
Yes — embedded in /companies/{id} and /people/{id} responses, plus a director-network graph at /directors/network.

How does pricing compare?
CH is free with a hard rate limit. Prometiam's Starter plan begins with a 14-day trial (500 credits, card required, nothing charged for 14 days), not an ongoing plan; paid tiers are billed monthly or annually (ten months' price for twelve). Right comparison: "free CH + paid sanctions vendor + paid EU vendor" vs "Prometiam Professional at €29.99/mo".

What are the Companies House API rate limits on the free tier?
The API is free and there is no paid tier. The limit is 600 requests in a five-minute window, then 429 Too Many Requests until the window ends. Companies House says it will discuss a higher limit on request.

Does it cost anything to use the Companies House API?
No. There is no per-call charge. The only constraint is throughput, the 600 requests per five minutes.

What is the Companies House API call limit?
600 requests per five-minute window. Past it, calls return 429 until the window resets, so batch jobs need throttling or a second source.

How do I make a Companies House API call in Python?
Authenticate with HTTP Basic, sending the API key as the username and leaving the password blank. The Companies House API in Python guide has a worked example.