UK Companies House Scraper & Company Intelligence avatar

UK Companies House Scraper & Company Intelligence

Pricing

$4.00 / 1,000 company records

Go to Apify Store
UK Companies House Scraper & Company Intelligence

UK Companies House Scraper & Company Intelligence

Look up UK companies by number and get the full public record: status, registered office, SIC codes, accounts and confirmation statement dates, directors and officers, persons with significant control, and filing history. No API key needed.

Pricing

$4.00 / 1,000 company records

Rating

0.0

(0)

Developer

Technical Dost Solutions

Technical Dost Solutions

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Look up any UK company by number and get its complete public record — profile, directors, beneficial owners and filing history — in one structured JSON object. No API key required.

Give it a list of company numbers and it returns clean, normalised records ready for a CRM, a KYB check or a due-diligence spreadsheet. Officers, persons with significant control and filing history are optional, so you only fetch and pay for what you need.


What you get

Core profile (always included):

{
"companyName": "TESCO PLC",
"companyNumber": "00445790",
"companyStatus": "Active",
"companyType": "Public limited Company",
"incorporationDate": "1947-11-27",
"registeredOfficeAddress": "Tesco House, Shire Park, Kestrel Way, Welwyn Garden City, United Kingdom, AL7 1GA",
"postcode": "AL7 1GA",
"sicCodes": ["47110"],
"sicDescriptions": ["Retail sale in non-specialised stores with food, beverages or tobacco predominating"],
"primarySicCode": "47110",
"accountsNextMadeUpTo": "2027-02-26",
"accountsNextDueBy": "2027-08-26",
"accountsLastMadeUpTo": "2026-02-28",
"confirmationStatementNextDate": "2027-06-18",
"confirmationStatementDueBy": "2027-07-02",
"previousNames": [
{ "name": "TESCO STORES (HOLDINGS) PUBLIC LIMITED COMPANY", "period": "14 Dec 1981 - 25 Aug 1983" }
],
"activeOfficerCount": 11,
"companyUrl": "https://find-and-update.company-information.service.gov.uk/company/00445790"
}

With includeOfficers:

{
"name": "BETHELL, Melissa",
"role": "Director",
"status": "active",
"appointedOn": "2018-09-24",
"resignedOn": null,
"nationality": "British",
"countryOfResidence": "United Kingdom",
"dateOfBirth": "September 1974",
"correspondenceAddress": "Tesco House, Shire Park, Kestrel Way, Welwyn Garden City, United Kingdom, AL7 1GA"
}

With includePsc — including the natures of control, where the ownership bands live:

{
"name": "Kyle Damien Egan",
"status": "Active",
"notifiedOn": "2021-05-06",
"dateOfBirth": "April 1989",
"nationality": "British",
"countryOfResidence": "England",
"naturesOfControl": [
"Ownership of shares – More than 25% but not more than 50%",
"Ownership of voting rights - More than 25% but not more than 50%",
"Right to appoint or remove directors"
]
}

Dates are ISO-8601. Absent values are null, never "N/A". Officer and PSC dates of birth are passed through exactly as the register publishes them — month and year only.


Main use cases

  • KYB and onboarding checks. Verify a company exists, is active, and confirm its registered office and directors before opening an account.
  • Beneficial ownership / AML. Pull the PSC register with natures of control for ownership-threshold checks.
  • CRM enrichment. Turn a list of company numbers into full firmographic records with industry classification.
  • Compliance monitoring. The compliance output view gives you accounts and confirmation-statement deadlines as a CSV — useful for accountants tracking a client book.
  • Due diligence. Filing history, previous names and officer appointment/resignation timelines in one pass.
  • Supplier and counterparty vetting.

Quick start

{
"companyNumbers": ["00445790"]
}

Full record for several companies:

{
"companyNumbers": ["00445790", "SC123456", "13379071"],
"includeOfficers": true,
"includePsc": true,
"includeFilingHistory": true,
"filingHistoryLimit": 25
}

Company numbers are forgiving: 445790 is zero-padded to 00445790 automatically, and sc123456 is upper-cased.


Input reference

FieldTypeDefaultWhat it does
companyNumbersarrayrequired8 digits (00445790) or 2 letters + 6 digits (SC123456). Up to 5,000 per run.
includeOfficersbooleanfalseDirectors and secretaries, with appointment and resignation dates. +1 page per company.
includePscbooleanfalsePersons with significant control and their natures of control. +1 page per company.
includeFilingHistorybooleanfalseRecent filings with document links. +1 page per company.
filingHistoryLimitinteger25Filings per company when filing history is on. Max 100.

Pricing

EventPriceWhen it happens
Company record$0.004One company successfully returned

That is the whole pricing model — one event, one price, whether or not you include officers, PSC and filing history.

You are not charged for:

  • company numbers that are not on the register
  • pages that failed or timed out
  • invalid company numbers — those are reported and skipped
  • anything after the maximum charge you set for the run

Worked example. 500 companies with officers and PSC included: 500 × $0.004 = $2.00.

How this compares

ActorPrice per companyOfficersPSCFiling history
This Actor$0.004yesyesyes
memo23/companies-house-scraper$0.005 + $0.005/run
scrapesage/companies-house-scraper$0.004
memo23/northdata-scraper$0.0035 + $0.00005/run
nexgendata/business-registration-lookup$0.05 + $0.0001/run

Competitors' list prices as published on Apify Store on 2026-08-17; check current figures before relying on this table. Feature columns reflect what each listing advertises.


Using the API

curl -X POST "https://api.apify.com/v2/acts/technicaldost~uk-companies-house-intelligence/run-sync-get-dataset-items?token=<TOKEN>" \
-H 'Content-Type: application/json' \
-d '{ "companyNumbers": ["00445790"], "includeOfficers": true }'

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('technicaldost/uk-companies-house-intelligence').call({
companyNumbers: ['00445790', '13379071'],
includeOfficers: true,
includePsc: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const c of items) {
console.log(`${c.companyName}: ${c.companyStatus}, ${c.activeOfficerCount} active officers`);
}

Python:

from apify_client import ApifyClient
client = ApifyClient("<TOKEN>")
run = client.actor("technicaldost/uk-companies-house-intelligence").call(run_input={
"companyNumbers": ["00445790"],
"includePsc": True,
})
for c in client.dataset(run["defaultDatasetId"]).iterate_items():
for psc in c.get("personsWithSignificantControl", []):
print(psc["name"], psc["naturesOfControl"])

Filing deadlines as CSV:

$curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?format=csv&view=compliance&token=<TOKEN>"

Limitations

  • Lookup by company number only. There is no name search here — if you need to find companies, use the leads monitor below and feed its companyNumber output into this Actor.
  • Each extra section is an extra page fetch. Officers, PSC and filing history each add a request per company, so a 1,000-company run with all three enabled makes 4,000 requests and takes proportionally longer. The price does not change.
  • Not every company has PSCs. Listed companies such as Tesco are exempt and legitimately return an empty array. That is the register's answer, not a parse failure.
  • Dates of birth are month and year only. That is all the public register shows; we do not attempt to resolve a full date.
  • No accounts figures. Turnover, profit and balance-sheet numbers live inside filed PDF documents, which this Actor does not parse. It returns the filing metadata and the document link.
  • Officer fields vary by role. A company secretary typically shows fewer fields than a director; missing values are null rather than invented.


Data source and responsible use

Data comes from the public Companies House register, published under the Open Government Licence. This Actor reads only publicly accessible pages at a paced request rate and does not access anything behind authentication.

The register contains personal data — officer names, partial dates of birth, and correspondence addresses that are sometimes residential. If you process these records, UK GDPR applies to you as the data controller. Use them for legitimate business purposes such as KYB, compliance and due diligence.

Not affiliated with or endorsed by Companies House.