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

The complete public record for any UK company from just its company number: status, registered office, SIC codes, accounts and confirmation-statement deadlines, directors and officers, persons with significant control including their ownership bands, and filing history. No API key required.

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

3

Total users

1

Monthly active users

a day ago

Last modified

Security

Limited permissions

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.

Output example

Each result is one dataset item. A real item from a test run (long fields shortened):

{
"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",
"primarySicDescription": "Retail sale in non-specialised stores with food, beverages or tobacco predominating",
"accountsNextMadeUpTo": "2027-02-26"
}

Use UK Companies House Scraper & Company Intelligence with AI agents (MCP)

Give Claude, ChatGPT, Cursor, VS Code or any MCP client this Actor as a tool through the hosted Apify MCP server. The agent sees the input fields with descriptions and example values, runs the Actor, and reads the results.

MCP server URL (this Actor only):

https://mcp.apify.com/?tools=technicaldost/uk-companies-house-intelligence

Claude Code:

$claude mcp add --transport http apify "https://mcp.apify.com/?tools=technicaldost/uk-companies-house-intelligence" --header "Authorization: Bearer YOUR_APIFY_TOKEN"

Cursor, VS Code, Claude Desktop and other clients (mcp.json or the client's MCP settings):

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=technicaldost/uk-companies-house-intelligence",
"headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
}
}
}

Clients that support sign-in (such as Claude.ai connectors) can use the URL without a token and log in to Apify instead. Get your token in Apify Console → Settings → API & Integrations, or generate a ready config for your client at mcp.apify.com. In the agent the tool is named technicaldost--uk-companies-house-intelligence; ask it, for example, to "run UK Companies House Scraper & Company Intelligence with {"companyNumbers": ["00445790"]}".

AI agents without an Apify account can also run and pay for this Actor per request with x402 agentic payments.

Run UK Companies House Scraper & Company Intelligence via API

Run the Actor and get its results in one call (replace YOUR_APIFY_TOKEN):

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

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("technicaldost/uk-companies-house-intelligence").call(run_input={"companyNumbers": ["00445790"]})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript / TypeScript (npm install apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('technicaldost/uk-companies-house-intelligence').call({"companyNumbers": ["00445790"]});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Long runs: start them with POST /v2/acts/technicaldost~uk-companies-house-intelligence/runs and fetch the dataset when the run finishes, or receive a webhook.

Integrations

UK Companies House Scraper & Company Intelligence works with Make, Zapier, n8n, LangChain, Google Sheets, Slack, GitHub and webhooks. Schedule runs in Apify Console and send new results straight to your apps, spreadsheets or AI pipelines.

FAQ

Can I use UK Companies House Scraper & Company Intelligence with AI agents like Claude or ChatGPT?

Yes. Connect the Apify MCP server with ?tools=technicaldost/uk-companies-house-intelligence (see above) and the agent can run the Actor and read its results on its own.

Can I call UK Companies House Scraper & Company Intelligence from my own code?

Yes. Use the REST API, or the official Python and JavaScript clients shown above. Results are available as JSON, CSV, Excel, XML or HTML.

How do I run it on a schedule?

Save your input as a task in Apify Console and add a schedule (for example, daily). Use webhooks or integrations to send each run's results onward.

It works with publicly available data. Make sure your use complies with the source website's terms and with data protection laws such as GDPR, especially for personal data.

Something doesn't work or I need a feature. What should I do?

Open an issue in the Issues tab on this Actor's page with an example input, and we'll look into it.