Companies House API — UK Company Search, Profile & Filings avatar

Companies House API — UK Company Search, Profile & Filings

Pricing

$1.00 / 1,000 companies

Go to Apify Store
Companies House API — UK Company Search, Profile & Filings

Companies House API — UK Company Search, Profile & Filings

Search UK companies and read the public register: number, status, type, SIC codes, dates, registered office, accounts dates, latest filings, officer and charge counts. Unofficial Companies House API.

Pricing

$1.00 / 1,000 companies

Rating

0.0

(0)

Developer

yestrue

yestrue

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 hours ago

Last modified

Share

Everything the UK Companies House register shows about a company as one clean JSON record: company number, registered name, status (Active, Dissolved, Liquidation …), company type, incorporation and dissolution dates, registered office address (as one line and split into street, town, region, postcode, country), SIC codes with descriptions, previous names with their periods, accounts and confirmation-statement due dates, the number of officers and resignations, the number of registered charges, and the latest filings with date, type code, description, page count and PDF link. Search by company name or look up company numbers — built on the public Companies House website, no API key, no login.

Try it in 1 minute:

  1. Press Start — the prefilled input searches "Rolls-Royce Holdings" (the top hit) and looks up company number 00445790 (Tesco PLC).
  2. Seconds later the Output tab shows the records: status, type, incorporation date, registered office, SIC codes, accounts dates, officers count and the latest 25 filings.
  3. Download JSON, CSV or Excel, or paste your own list of names or numbers, raise Max results per query and switch Include charges count on.

Price: $1.00 per 1,000 companies (one company = one record, with its filings and counts included when you ask for them). Numbers that are not on the register, queries without matches and invalid inputs are free.

Use it to:

  • Enrich a CRM or spreadsheet of UK suppliers, customers or leads with their registered details, status and SIC codes.
  • Run KYB / onboarding checks: is the company active, when was it incorporated, are its accounts or confirmation statement overdue, how many charges are registered.
  • Monitor competitors or a portfolio on a schedule: new filings, status changes, name changes, address moves.
  • Resolve company names to company numbers (with search position) before feeding an AI agent or a data pipeline.
  • Build lists of companies by name pattern and read their nature of business without an API key.

How it works

  1. Company numbers are normalised to the 8-character register form (7524813 → 07524813, sc123456 → SC123456; a company page link gives its number) and deduplicated.
  2. Search queries go to the public search page (/search/companies?q=…); the first results page holds 20 companies, cut to Max results per query, each with its position. A company found by several inputs is read once.
  3. For every company the overview page (/company/<number>) gives name, number, status, type, dates, registered office, SIC codes, previous names and the accounts / confirmation-statement dates.
  4. With the options on, up to three more pages are read per company: the officers page for the heading "N officers / M resignations" (counts only — no officer names are collected), the first filing-history page (25 filings) and the charges page for its count.

Requests go directly to Companies House (no proxy, unless a connection drops), one second apart per worker; the register's per-IP rate limit (HTTP 429) is waited out and retried on the same route. The website has no robots.txt (checked October 2026). Filing descriptions are scrubbed of phone numbers and e-mail addresses.

Input

FieldWhat it does
queriesCompany names to search, one per line.
companyNumbersCompany numbers (07524813, SC123456, 7524813) or company page links, one per line.
maxResultsCompanies per query, up to 20 (default 5).
includeFilingsAdd the latest filings to every company (default on).
maxFilingsFilings per company from the first page, up to 25 (default 25).
includeOfficersCountAdd the officers and resignations counts (default on).
includeChargesAdd the registered charges count (default off).
maxConcurrencyCompanies read in parallel (default 2; each worker waits 1 s between requests).
proxyConfigurationUsed only to retry after a network error; the first try is direct.

Output

One record per company:

FieldWhat it is
companyNumber, name, urlIdentity and the company's page on the register
companyStatus, companyTypeActive / Dissolved / Liquidation …; Private limited Company, Public limited Company, LLP …
incorporatedOn, dissolvedOnDates, YYYY-MM-DD
registeredOffice, addressThe registered office as one line and split into { addressLine1, addressLine2, locality, region, postalCode, country } (best effort)
sicCodes[]{ code, description } — nature of business
previousNames[]{ name, from, to }
accounts, confirmationStatement{ nextDue, lastMadeUpTo, nextMadeUpTo, overdue }
officersCount, resignationsCountHow many officers the register lists and how many resigned (counts only)
chargesCountRegistered charges, with Include charges count on
filings[]{ date, type, description, pages, url } — newest first, from the first filing-history page
detailsErrorWhy an optional page could not be read; null when all went well
query, positionThe search query and the 1-based position the company came from; null for a company number
input, status, error, scrapedAtWhat you gave, OK / NOT_FOUND / NO_RESULTS / INVALID_INPUT / FAILED, the reason, and when

Example

{
"input": "Rolls-Royce Holdings",
"query": "Rolls-Royce Holdings",
"position": 1,
"companyNumber": "07524813",
"name": "ROLLS-ROYCE HOLDINGS PLC",
"companyStatus": "Active",
"companyType": "Public limited Company",
"incorporatedOn": "2011-02-10",
"dissolvedOn": null,
"registeredOffice": "Kings Place, 90 York Way, London, United Kingdom, N1 9FX",
"address": { "addressLine1": "Kings Place", "addressLine2": "90 York Way", "locality": "London", "region": null, "postalCode": "N1 9FX", "country": "United Kingdom" },
"sicCodes": [{ "code": "70100", "description": "Activities of head offices" }],
"previousNames": [{ "name": "ROLLS-ROYCE HOLDINGS LIMITED", "from": "2011-02-10", "to": "2011-03-08" }],
"accounts": { "nextDue": "2027-06-30", "lastMadeUpTo": "2025-12-31", "nextMadeUpTo": "2026-12-31", "overdue": false },
"confirmationStatement": { "nextDue": "2027-10-13", "lastMadeUpTo": "2026-09-29", "nextMadeUpTo": "2027-09-29", "overdue": false },
"officersCount": 52,
"resignationsCount": 37,
"chargesCount": null,
"filings": [
{ "date": "2026-10-07", "type": "CS01", "description": "Confirmation statement made on 29 September 2026 with no updates", "pages": 3, "url": "https://find-and-update.company-information.service.gov.uk/company/07524813/filing-history/MzU0OTcwNzk4OWFkaXF6a2N4/document?format=pdf&download=0" }
],
"detailsError": null,
"url": "https://find-and-update.company-information.service.gov.uk/company/07524813",
"status": "OK",
"error": null,
"scrapedAt": "2026-10-19T12:00:00.000Z"
}

FAQ

Is this an official API? No, it's an unofficial API built on public pages — the Companies House website that anyone can browse without a key or login. Companies House also offers an official REST API, which needs a registered account and key; this Actor is for the cases where you have neither. The data is what the website shows; the Actor only shapes it into stable JSON records.

Why is a company NOT_FOUND? The number is not on the register (a typo, or a number from another registry). Numbers are padded with leading zeros for you (7524813 → 07524813); Scottish, Northern Irish and LLP numbers keep their two-letter prefix (SC, NI, OC …). Try the name as a search query instead.

Do you collect officer names or personal data? No. The officers page is read only for its heading ("N officers / M resignations"); names, addresses, dates of birth and nationalities are never read or stored. Registered office addresses are public business data and are kept.

How many search results can I get? Up to 20 per query, the first results page of the register. For long lists, use more specific names (the register searches previous names too, and the record says which previous name matched a hit through position) or paste the company numbers directly.

What about rate limits? Companies House limits requests per IP; this Actor waits one second between the requests of a worker (2 workers by default) and waits out and retries an HTTP 429 on the same route. A run of a thousand companies with filings and officers counts takes about half an hour.

Like it? A short review on the Store page helps other people find this Actor. Something missing or broken? Tell us on the Issues tab — we read every one.