Companies House API: rate limits, licensing and PSC streaming
Published 30 October 2026
Three questions come up again and again from people building on Companies House data: how far the API rate limit stretches and whether it can be raised, what you're allowed to do with a dataset you build from the register, and how to move from the PSC snapshot to the Streaming API without missing or doubling up changes. Here's what the official pages say, checked on 30 October 2026, and how to work with it.
The rate limit: 600 requests per 5 minutes
The rate limiting page puts it under "Per application rates":
- You can make up to 600 requests in a five-minute period.
- Go over and every request for the rest of that five-minute window gets 429 Too Many Requests. Then it resets to 600.
- Companies House "reserve the right to ban without notice applications that regularly exceed or attempt to bypass the rate limits".
- If you need more, the page says to contact them.
Raising it
On the Companies House developer forum, a reply on behalf of Companies House to a request for a higher limit (thread, 22 October 2026) said to email them so they could check eligibility, and that 1,200 requests per 5 minutes is the maximum they can provide. So plan for 600, and treat 1,200 as the ceiling if they agree.
One key behind a hosted service
A common question is whether one key may serve a hosted service used by many people. The docs describe the limit as per application and warn against bypassing it, but they don't answer this directly. Put it in the same email as any limit request, so you have their answer in writing. Don't split traffic across several keys on a guess: that's the kind of thing the ban sentence is about.
Needing fewer calls
- Company basics in bulk. The Free Company Data Product is a monthly download of every live company, with no rate limit (see below).
- Changes as they happen. The Streaming API pushes the same resources the REST API returns whenever they change, so you only call the REST API for things you don't already have. It needs its own key: REST and streaming keys aren't interchangeable.
- Back off on 429. Stop until the window resets instead of retrying straight away.
Licensing a dataset built from the register
Another common question: if you build a company-level dataset from the API and the bulk files, can you publish it, sell it or give it away, and what attribution do you need?
GOV.UK's Our public task, copyright and Crown copyright page covers it:
- Register information isn't released under the Open Government Licence. Section 2.2 says it's made available "by virtue of approvals issued by us in accordance with section 47 of the Copyright, Designs and Patents Act 1988 and Schedule 1 of the Database Regulations (SI 1997/3032)", and that "Companies House imposes no rules or requirements on how the information on the public register is used."
- What they do ask (section 3):
- take your own legal advice on possible breach of third-party copyright;
- don't reproduce the Crown insignia;
- if you use information from their guidance notes, website, publications or statistical tables, credit Companies House as the source.
- Material Companies House writes itself (guidance, statistics) is Crown copyright under the Open Government Licence v3.0 (section 2.1).
In practice: "Source: Companies House" on the dataset and its pages, a line saying you're not affiliated with or endorsed by Companies House, and no Crown insignia. The third-party copyright point mostly matters for filed documents (accounts, images), not for company-level fields like status, SIC codes and dates. This is what the page says, not legal advice.
The monthly bulk file or the API?
For company-level fields such as status, registered office area, SIC codes and accounts due dates, the monthly Free Company Data Product is usually the better base. It's free, it covers every live company in one download (5,704,711 in the 1 October 2026 snapshot), and it doesn't touch your rate limit.
Before you build on it:
- Live companies only. A company that's dissolved simply isn't in the next file.
- Monthly freshness. It's compiled to the end of the previous month and published within 5 working days of month end. It's free and unsupported.
- Keep your own history. The download page only offers the current snapshot, so save each month's file if you want to compare months.
- Change counts come from diffs. Compare consecutive months on company number: new numbers, numbers that disappeared, and changed status, SIC code, address or accounts dates. That gives monthly resolution; something that changes and changes back within a month won't show.
- Fresher than monthly means the Streaming API's company information stream, which sends the full profile whenever a company changes.
- Trim addresses on load. The file includes the full registered office address. Some very small companies use a home address, so if you publish an "area", cut it down to post town and postcode district as you load it.
Moving from the PSC snapshot to the Streaming API
The question: you've loaded the people with significant control (PSC) snapshot and want to switch to the PSC stream from a timepoint, without gaps or duplicates between when the snapshot was cut, when your load finished and when you connected.
What the docs say, and what the file shows
- The streaming overview says snapshots "contain the stream timepoint at which they were taken", so you can connect from that timepoint and carry on where the snapshot left off.
- The PSC stream reference still says "In the future data snapshots will be available".
- The PSC snapshot page says the files are compiled up to the end of the previous day, overwritten daily and updated before 10am GMT. It doesn't mention a timepoint.
- When we opened the last part of the 30 October 2026 PSC snapshot, its final line was a totals record with a
generated_attime and no timepoint, and the word "timepoint" didn't appear in that part.
So don't count on a snapshot timepoint. It's worth asking Companies House whether one is published for the PSC snapshot. Meanwhile, here's a handover that works either way.
A handover that doesn't need the snapshot's timepoint
- Start the stream consumer first, then load the next day's snapshot. Today's file was cut at the end of yesterday, before your consumer was running. Waiting a day means your buffer definitely spans the next file's cut-off. Write every event to a raw table exactly as received:
event.timepoint,event.published_at,event.type,resource_uriand the whole envelope. Don't touch your main tables yet. Save the timepoint of each event you've stored, so a normal reconnect can resume from it. - Load that snapshot into your main tables, however long it takes.
- Replay the buffered events in timepoint order, starting from events published a few hours before the snapshot's cut-off. That overlap closes the gap.
- Each event carries the whole resource, not a diff, so make every write an upsert keyed on the resource's URI. Snapshot rows carry their own path in
data.links.self; check that a sample of those match the stream'sresource_uribefore you rely on it as the key. event.typeischangedordeleted, anddatamay be absent ondeletedevents, so delete or mark the row for those.- Because you apply events in order and the last write wins, replaying an event the snapshot already reflects just writes the same or a newer state. That's how the overlap avoids gaps without leaving duplicates.
- Switch to live processing once the buffer is drained, carrying on from the last applied timepoint.
If Companies House confirms a timepoint for the PSC snapshot, step 3 gets simpler: connect from that timepoint and skip the overlap.
Things that bite
- 416 on reconnect means the timepoint is invalid or too old, or you were reading too slowly. You'll need a fresh snapshot for that stream.
- Two connections per account. A third connection closes the oldest. Don't run a separate catch-up consumer next to the live one. The PSC snapshot also holds PSC statements and exemptions, which have their own streams, so plan which streams you keep open within that limit.
- Reconnect politely. After a 429, wait one minute before reconnecting, because retrying sooner makes the rate-limit period longer. Retry other retryable errors after 10 seconds. Repeated reconnects can get you rate-limited.
- Buffering proxies between you and the stream stop it working. Your HTTP client has to hand you each line as it arrives.
We built this
Disclosure: Your Evenings Ltd built and sells this. It's independent and isn't affiliated with or endorsed by Companies House. If what you need is company-level data rather than PSC records or same-day changes, UK Companies House Company Search & SIC Codes on the Apify Store does the monthly-snapshot work above for you. It looks companies up by number or name, searches every live company by SIC code, status, incorporation date, post town and postcode, and returns a typed month-over-month change feed, with a monitor that only returns what changed in your list. It runs on its own stored copy of the monthly snapshot, so it doesn't use your API key or rate limit, and each row credits Companies House as the source. It works from the monthly file only, so for PSC data and real-time changes, use the streaming setup above.
Pricing: $0.003 per company row and $0.005 per change row (base prices; higher Apify plans pay less). Status rows, filtered-out companies, unmatched names and duplicates are free.
FAQ
What is the Companies House API rate limit? 600 requests in any five-minute period per application. Over that, you get 429 Too Many Requests until the window resets.
Can I get a higher Companies House API limit? Contact Companies House. A reply on their developer forum on 22 October 2026 said 1,200 requests per 5 minutes is the maximum they can provide.
Is Companies House data under the Open Government Licence? No. Register information is supplied under the Copyright, Designs and Patents Act 1988 and the Database Regulations, and Companies House says it imposes no rules on how it's used. Don't reproduce the Crown insignia, and credit Companies House where you use its guidance, website, publications or statistics.
Does the PSC snapshot include a stream timepoint? The streaming guide says snapshots come with one, but the PSC snapshot page doesn't mention it and the 30 October 2026 file we checked didn't show one. Overlap your stream buffer with the snapshot cut-off and upsert by resource URI instead.
Product names and logos belong to their owners. Your Evenings Ltd is not affiliated with or endorsed by them. Company data from Companies House. Your Evenings Ltd is not affiliated with or endorsed by Companies House.
