How to Check a UK Company with Companies House (Official API and Free Data)

How to check a UK company yourself with Companies House: the free monthly company file, the official API with its key and rate limit, and what they don't show.

· By the Fuentio team · 7 min read

Share image: "How to Check a UK Company with Companies House (Official API and Free Data)" on Fuentio's paper background, with the Tutorial label.

If you need to check a company registered in the United Kingdom, you don't need a paid data provider to start. Companies House, the UK's registrar of companies, publishes its register itself: as a free monthly file, as a public website, and through an official API. This guide shows each one, with real requests, and says plainly what each can and can't tell you.

One thing first, so there's no confusion: Fuentio doesn't cover the UK today. This is a guide to Companies House's own tools.

What you'll learn

  • What Companies House publishes, and under which terms
  • How to use the free monthly company file
  • How to get an API key and call the Companies House API, with cURL, Python and JavaScript
  • The API's main endpoints and its rate limit
  • What the register can't tell you

What does Companies House publish?

Companies House keeps the UK's register of companies. Its API, in its own words, "lets you retrieve information about limited companies (and other companies that fall within the Companies Act 2006)". Each company has a public page on the Companies House service, and the register's data is published in three ways:

  • The Free Company Data Product: a monthly file of basic company data.
  • The public website: one page per company, with its filings.
  • The Companies House API: one company at a time, for software.

The terms are short. On its data products page, Companies House says: "We impose no rules or requirements on how the information on the public register is used". Its pages are published under the Open Government Licence v3.0, which allows reuse, commercial reuse included, with an attribution statement.

How do you use the free monthly file?

The Free Company Data Product is described by Companies House as "a free monthly snapshot of information for live companies on the public register". It holds basic information such as the company type and registered office address, the nature of business, the company status and the date of the last accounts or confirmation statement. The contents are compiled up to the end of the previous month and published within five working days.

It's a good fit when you need many companies at once, for example to check a list of suppliers in one go:

  1. Download the latest file from the download page linked from the data products page. There's one file, or the same data split in several parts.
  2. Unzip it: inside is a CSV file.
  3. Look up the companies you need by company number.

Two limits matter. The file only holds companies that are on the register as active ("live") ones, so a company that has been dissolved won't be in it: its absence isn't proof of anything on its own. And it's a monthly snapshot, so anything that changed since the end of last month won't show yet.

Companies House offers a free monthly file of active companies with no key, under the Open Government Licence v3.0, and an API for one company at a time that needs an API key and allows 600 requests per 5 minutes
The file for bulk, the API for one company at a time.

How do you get a Companies House API key?

To use the API, Companies House asks you to "register a user account" with Companies House, then create an application to get credentials. The API then needs those credentials "with each request, which is sent as an API key, stream key or OAuth access token". For reading public data, an API key is what you need.

Keep the key out of your code: put it in an environment variable, here CH_API_KEY.

How do you call the Companies House API?

The API uses HTTP Basic Authentication in a simple way: in Companies House's words, it "takes the username as the API key and ignores the password, so can be left blank". The base address is https://api.company-information.service.gov.uk.

Fetch a company profile with cURL (-u sends the key as the username, with an empty password after the colon):

curl -u "$CH_API_KEY:" https://api.company-information.service.gov.uk/company/00000006

With Python (requests):

import os, requests

key = os.environ["CH_API_KEY"]
r = requests.get("https://api.company-information.service.gov.uk/company/00000006",
                 auth=(key, ""), timeout=20)
r.raise_for_status()
print(r.json())

With JavaScript (fetch), building the Basic header yourself:

const key = process.env.CH_API_KEY;
const auth = "Basic " + Buffer.from(`${key}:`).toString("base64");
const res = await fetch("https://api.company-information.service.gov.uk/company/00000006", {
  headers: { Authorization: auth },
});
console.log(await res.json());

The company number 00000006 is the one Companies House uses in its own authentication example.

Which endpoints will you use?

The API reference lists many endpoints. For checking a company, these are the ones you'll reach for first:

  • GET /company/{company_number}: the company profile.
  • GET /company/{company_number}/officers: the officers.
  • GET /company/{company_number}/filing-history: the filings.
  • GET /company/{company_number}/persons-with-significant-control: the persons with significant control.
  • GET /search/companies: a search by name.

A typical check is a search by name, then the profile of the right result by its company number, then the officers and filings if your process needs them.

What is the rate limit?

Companies House says: "You can make up to 600 requests within a five-minute period." If you go over, you get "a 429 Too Many Requests HTTP status code for each request made within the remainder of the five-minute window". For a batch, spread your requests, and use the monthly file instead when you need many companies at once.

What should you keep from each check?

Whatever tool you use, keep three things with each result: where it came from (the register and the address you called), when you checked it, and what the register actually said, in its own words. A company status from the register is worth more than a summary of it. If you build a process where several people or tools check companies, that habit makes every answer easy to explain later.

That's the principle Fuentio applies in the countries it covers: France and Spain, every answer with its source, licence and check date. See what we cover, and how other registers work: the French registers and the Spanish BORME.

Frequently asked questions

Do I need to pay for the free monthly file?

No: Companies House describes it as a free monthly snapshot.

Do I need an account to use the API?

Yes: Companies House asks you to register a user account and create an application to get an API key.

Can I reuse Companies House data in my product?

Companies House says it imposes no rules on how the information on the public register is used, and its pages are under the Open Government Licence v3.0. Check the licence's attribution statement, and data-protection law for anything about people.

Why isn't a company in the monthly file?

The file holds active companies only. A dissolved company won't be in it, and a company registered after the end of last month won't be in it yet.

Sources

← All articles · RSS feed