Is there a Companies House API?
Yes. Companies House runs a free REST API. You register an account, create an application and get a key. The limit is 600 requests every five minutes.
If you write code, start there. If you don't, or you want a filtered list with directors and owners in one file, there are two other routes: the free monthly bulk file and a scraper that needs no key.
Companies House API
The Companies House developer hub is where you sign up. Registration is free. Every request carries your API key, and the data is live: what you get back is what the register shows right now.
Go over 600 requests in five minutes and the API answers with a 429 error until the window resets. For a few hundred lookups a day that never matters. For enriching tens of thousands of companies it means pacing your script.
The endpoints most people need:
| Data | Endpoint |
|---|---|
| Company profile | /company/{number} |
| Directors and secretaries | /company/{number}/officers |
| Owners (PSCs) | /company/{number}/persons-with-significant-control |
| Filing history | /company/{number}/filing-history |
| Charges (mortgages, loans) | /company/{number}/charges |
| Insolvency | /company/{number}/insolvency |
| Search by name | /search/companies |
| Filtered lists | /advanced-search/companies |
Advanced search is the one for lead lists. It filters on SIC code, status, company type, location and incorporation or dissolution dates, and returns up to 5,000 companies per request:
curl -u YOUR_API_KEY: -G \
https://api.company-information.service.gov.uk/advanced-search/companies \
-d sic_codes=62012 \
-d company_status=active \
-d incorporated_from=2026-09-01 \
-d incorporated_to=2026-09-30 \
-d size=5000 A search result only holds the basic profile. Directors, owners and filings are separate calls per company, so enriching 1,000 companies with officers and owners costs at least 2,000 extra requests.
Bulk data product
Companies House also publishes a free monthly snapshot of every live company. It is a set of CSV files in ZIP archives, updated within five working days after each month end. The file of 1 October 2026 is 471 MB as one download.
It holds the basics: name, number, type, registered address, SIC codes, status, accounts and confirmation statement dates, and previous names. It does not hold directors or owners. Owners come as a separate PSC snapshot in JSON.
The bulk file suits anyone who wants the whole register in a database and can wait a month for updates.
Companies House without an API key
Our Companies House Scraper reads the public register website, so it needs no account and no key. You set filters, press start and download a spreadsheet. It works in three ways: search by name, look up company numbers, or pull a filtered list by SIC code, status, incorporation date and location.
We ran it today for every active company with SIC code 62012 (business and domestic software development) incorporated in September 2026, capped at 1,000 rows:
{
"bulkFilters": {
"sicCodes": ["62012"],
"companyStatus": "active",
"incorporatedFrom": "2026-09-01",
"incorporatedTo": "2026-09-30"
},
"maxResults": 1000
} The run returned 1,000 companies in 30 seconds. One row:
{
"companyNumber": "17429170",
"name": "LIL QUANTUM IDENTITY SYSTEMS LTD",
"status": "active",
"companyType": "ltd",
"incorporationDate": "2026-09-01",
"sicCodes": ["62012"]
} The filtered list uses the register's own CSV export, which returns up to 5,000 companies per request. When a filter matches more, the actor splits the date range and keeps going.
Directors, owners and filings in one row
Set fetchDetails to true and the actor visits each company's register pages and adds officers, owners (PSCs), the latest accounts date, the number of filings and the number of charges to the same row. That saves you the extra calls per company.
We ran a name search for "bakery" with details on. 30 companies took 67 seconds. This is how complete the fields came back:
| Field | Filled |
|---|---|
| Officers | 30 of 30 |
| Filings count | 30 of 30 |
| Charges count | 30 of 30 |
| SIC codes | 29 of 30 |
| Persons with significant control | 27 of 30 |
| Latest accounts date | 23 of 30 |
Empty fields are mostly companies that have not filed accounts yet or have no PSC on record. One enriched row, with the people's names removed here:
{
"companyNumber": "11686984",
"name": "BAKERY AND DELI LIMITED",
"latestAccountsDate": "2025-11-30",
"officers": [
{
"name": "(removed)",
"role": "Director",
"appointedOn": "2024-01-17",
"officerStatus": "Active"
}
],
"personsWithSignificantControl": [
{
"name": "(removed)",
"notifiedOn": "2024-01-17",
"naturesOfControl": ["Ownership of shares – 75% or more"]
}
],
"filingsCount": 32,
"chargesCount": 0
} Which route to pick
| You want | Use |
|---|---|
| Live lookups inside your own app | Official API |
| The whole register in a database | Monthly bulk file |
| A filtered list as a spreadsheet, without code | Scraper |
| Directors and owners per company in one row | Scraper with fetchDetails, or the API plus your own script |
| A weekly list of newly incorporated companies | Scraper on a schedule |
Limits
- Officers come from the first page of the register's officer list, so a company with a very long list of past directors can be cut short.
- A name search does not return SIC codes, because the register's search index does not include them. Use the filters, company numbers or
fetchDetailswhen you need them. - Dates of birth on the public register are month and year only, so the actor does not output birth dates.
- The actor counts filings and charges. It does not download the filed documents themselves.
- Details cost about five extra page requests per company, so large enriched runs take minutes, not seconds.
Cost
The official API and the bulk file are free. The scraper charges $0.012 per company plus $0.01 per run, so the 1,000-company list above costs about $12. You pay for not writing and maintaining the code.
For other countries, European Company Search runs the same kind of lookup across national registers such as KVK in the Netherlands and the Handelsregister in Germany. If you need a company list delivered on a schedule, we also run managed feeds: hello@studioamba.dev.
The actor is on the Apify Store: apify.com/studio-amba/companies-house-scraper