UK Company Data — Directors, Owners & Firmographics avatar

UK Company Data — Directors, Owners & Firmographics

Pricing

from $4.00 / 1,000 results

Go to Apify Store
UK Company Data — Directors, Owners & Firmographics

UK Company Data — Directors, Owners & Firmographics

Look up any UK company and get directors, persons with significant control (beneficial owners), and firmographics. 5M+ companies from the official Companies House API.

Pricing

from $4.00 / 1,000 results

Rating

0.0

(0)

Developer

Berkan Kaplan

Berkan Kaplan

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

11 days ago

Last modified

Share

UK Company Data — Companies House officers, PSC & SIC

UK Company Data — Directors, PSC & Firmographics (Companies House)

Need official, structured data on any UK company — not a scraped HTML snapshot that breaks next week? This Actor turns the UK Companies House register into ready-to-use records: 5M+ companies, with directors & secretaries, persons with significant control (PSC / beneficial owners), SIC industry codes, registered address, accounts & confirmation-statement status, charges (mortgages/debentures) and recent filing history — one clean, flat record per company.

Built on the official Companies House REST API (Crown copyright, Open Government Licence). No browser, no fragile HTML scraping — a default API key is built in, so you can start with one click and it doesn't break when a website changes.

  • 🇬🇧 5M+ UK companies — the official Companies House register, by number, name, or SIC sector
  • 👥 Directors & PSC — full officer list (roles, appointments, nationality) + beneficial owners with control levels
  • 📑 Charges, filings & accounts — mortgages/debentures, filing-history timeline, accounts & confirmation-statement due dates and overdue flags
  • Official API, no browser — plain HTTP, one flat record per company (JSON / CSV / Excel / API)

Quick start (API)

Get a full record for a UK company in one call (Tesco PLC, company number 00445790):

curl -X POST "https://api.apify.com/v2/acts/foxlabs~uk-company-data/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "companyNumbers": ["00445790"], "companyNames": ["BP"], "maxResults": 10 }'

Prefer no code? Open the Input tab, paste company numbers or names (or pick a SIC sector), and click Start — then download the results.

What you get

One clean, flat record per company. Missing values are null (or []), never guessed.

FieldTypeDescription
company_numberstring8-digit Companies House number
company_namestringRegistered legal name
company_status / company_status_detailstringe.g. active, dissolved, liquidation (+ detail)
company_type / subtypestringe.g. plc, ltd, llp
incorporation_date / dissolution_datestringISO dates
sic_codesarraySIC 2007 industry codes
registered_addressstringFull registered office address
registered_instringJurisdiction (e.g. england-wales, scotland)
previous_company_names / previous_names_countarray / intFormer names { name, ceased_on, effective_from }
foreign_company_details / branch_company_detailsobjectPresent for overseas companies / UK branches
officersarrayOfficers currently in office{ name, role, appointed_on, resigned_on, nationality, country_of_residence, occupation, address }
officers_countintDistinct people currently in office (a person holding two roles counts once)
officers_truncatedbooleantrue when Companies House reports more serving officers than could be returned in one page of 100 — the board list is then partial
officers_textstringShort summary of the first few current officers
resigned_officers / resigned_officers_countarray / intPast appointments (same shape, each with a resigned_on date). On long-lived companies the register holds more than the 100 appointments returned per request, so this list can be partial
persons_with_significant_controlarrayPSC / beneficial owners { name, kind, natures_of_control, notified_on, ceased_on, nationality, country_of_residence, address, identification }
psc_count / psc_textint / stringTotal PSC + a short summary
chargesarrayMortgages/debentures { charge_number, status, created_on, satisfied_on, classification, persons_entitled, amount_secured, ... }
charges_count / charges_outstanding / charges_textint / int / stringTotal, still-outstanding count, and a summary
recent_filings / filing_categories / total_filingsarray / array / intLast ~10 filings { category, type, date, description, pages, document_url }
accounts_type / accounts_period_start / accounts_period_endstringLatest accounts type and period
last_accounts_date / next_accounts_due / next_accounts_due_on / next_accounts_overduestring / boolAccounts filing dates and overdue flag
accounting_reference_datestringAccounting reference date (day/month)
last_confirmation_statement / next_confirmation_statement / next_confirmation_due / confirmation_overduestring / boolConfirmation-statement dates and overdue flag
annual_return / last_members_list_dateobject / stringLegacy annual-return dates (older companies)
has_charges / has_insolvency_historyboolQuick risk flags
can_file / undeliverable_registered_office / registered_office_in_disputeboolRegister housekeeping flags
registered_email / websitestringCH registered email / website where the register lists them (often null)
matchedbooltrue if resolved; false with an error if not found
source / source_url / scraped_atstringProvenance: UK Companies House, the public CH URL, ISO timestamp

Sample output

Illustrative record (values shown for shape — run the Actor for live data):

{
"company_number": "00445790",
"company_name": "TESCO PLC",
"company_status": "active",
"company_status_detail": null,
"company_type": "plc",
"incorporation_date": "1947-11-27",
"sic_codes": ["47110"],
"registered_address": "Tesco House, Shire Park, Kestrel Way, Welwyn Garden City, AL7 1GA, United Kingdom",
"registered_in": "england-wales",
"previous_company_names": [],
"previous_names_count": 0,
"officers": [
{ "name": "MURPHY, Ken", "role": "director", "appointed_on": "2020-10-01", "resigned_on": null, "nationality": "Irish", "country_of_residence": "England", "occupation": "Company Director", "address": "Welwyn Garden City, England" }
],
"officers_count": 11,
"officers_truncated": false,
"officers_text": "TAYLOR, Christopher Jon (secretary); BETHELL, Melissa (director); …",
"resigned_officers": [
{ "name": "LEWIS, David John", "role": "director", "appointed_on": "2014-09-01", "resigned_on": "2020-09-30", "nationality": "British", "country_of_residence": "England", "occupation": "Company Director", "address": "Welwyn Garden City, England" }
],
"resigned_officers_count": 63,
"persons_with_significant_control": [],
"psc_count": 0,
"psc_text": null,
"has_charges": true,
"charges_count": 4,
"charges_outstanding": 1,
"recent_filings": [
{ "category": "confirmation-statement", "type": "CS01", "date": "2025-05-12", "description": "confirmation-statement-with-updates", "pages": 5, "document_url": "https://.../document" }
],
"filing_categories": ["confirmation-statement", "accounts"],
"total_filings": 312,
"accounts_type": "group",
"next_accounts_due": "2025-11-30",
"next_accounts_overdue": false,
"has_insolvency_history": false,
"registered_email": null,
"website": null,
"matched": true,
"source": "UK Companies House",
"source_url": "https://find-and-update.company-information.service.gov.uk/company/00445790",
"scraped_at": "2026-07-05T10:00:00.000Z"
}

Input & filters

  • Company numbers (companyNumbers) — 8-digit Companies House numbers for exact, guaranteed lookup.
  • Company names (companyNames) — best-effort search via Companies House; returns the top match per name (use numbers when you need certainty).
  • SIC sector — Discovery mode (sicCode) — pick a UK SIC 2007 section (e.g. IT & Software, Construction, Manufacturing) to discover companies in that industry without a list.
  • API key (api_key) — a default Companies House key is built in; supply your own for higher rate limits.
  • Max results (maxResults) — hard cap on companies returned (up to 1,000 per run).
  • Concurrency (maxConcurrency) — parallel lookups (1–10); keep it modest to respect the Companies House rate limit.
  • Proxy (proxyConfiguration) — Apify Proxy for the API requests.

Example inputs (copy & paste)

// 1) Exact lookups by company number (most precise)
{ "companyNumbers": ["00445790", "00000006"], "maxResults": 10 }
// 2) Resolve companies by name (best-effort search)
{ "companyNames": ["Tesco", "BP", "Monzo Bank"], "maxResults": 10 }
// 3) Discover companies in a sector (SIC 2007: IT & Software services)
{ "sicCode": "JC", "maxResults": 200 }
// 4) Sector discovery, active companies only (status filter, applied server-side)
{ "sicCode": "K", "statusFilter": "active", "maxResults": 500 }
// 5) Distressed-company research: dissolved construction firms
{ "sicCode": "F", "statusFilter": "dissolved", "maxResults": 200 }
// 6) Filter a direct lookup by status — return Tesco only while it is active
{ "companyNumbers": ["00445790"], "statusFilter": "active" }
// 7) Manufacturing sector, active only, with tuned concurrency
{ "sicCode": "C", "statusFilter": "active", "maxResults": 300, "maxConcurrency": 5 }

Use cases

  • KYC / KYB & due diligence. Onboarding a UK counterparty? Pass its companyNumbers → verified legal identity, status, registered address, the full director list and the PSC (beneficial-owner) chain with control levels — plus has_charges and has_insolvency_history risk flags, in one call.
  • Supply-chain & vendor risk. Map a supplier's corporate structure, directors and outstanding charges (mortgages/debentures) to spot financial distress before you sign.
  • Compliance & PSC-register checks. Verify persons with significant control for AML / Economic Crime Act obligations, with the register's own natures_of_control labels.
  • Firmographic enrichment. Already have UK company numbers or names? Feed them in → append status, type, SIC codes, incorporation date, accounts and confirmation-statement dates. Missing fields return null, never a guess.
  • Sector prospecting & market mapping. Use SIC discovery to build a target-account list for an industry, then rank by status, age (incorporation date) or officer count.
  • Monitoring & research. Track filing history, accounts-overdue and confirmation-overdue flags across a portfolio of companies to catch changes early.

Performance & throughput

Each company is assembled from 3–5 Companies House API calls — profile, officers and PSC always, plus charges (only when the company has_charges) and recent filing history. Throughput is bounded by the Companies House rate limit of ~600 requests per 5 minutes and your maxConcurrency (default 3, max 10) — keep concurrency modest to avoid 429 back-off. There are no browsers or page renders, so lookups are lightweight; results cap at 1,000 companies per run (maxResults).

Integrations

JavaScript (apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('foxlabs/uk-company-data').call({
companyNumbers: ['00445790'], companyNames: ['BP'], maxResults: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Python (apify-client):

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("foxlabs/uk-company-data").call(run_input={
"companyNumbers": ["00445790"], "companyNames": ["BP"], "maxResults": 10,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["company_name"], item.get("company_status"))

Also works with Make / n8n / Zapier (Apify app → run this Actor, map the input), scheduled runs, webhooks, and the Apify MCP server for AI agents.

Data quality

Identity, status, officers, PSC, charges and filing history come straight from the official Companies House register — never fabricated; missing values are null (or []). Coverage of any given field mirrors what Companies House itself holds:

  • Always present: company number, name, status, type, incorporation date, SIC codes, registered address, officers and PSC (when the company has them).
  • Frequently empty: registered_email and website — Companies House rarely exposes these through the API, so expect null for most companies. This Actor is a firmographic / ownership / compliance source, not a contact-email list.
  • Present when applicable: charges (only if has_charges), previous names, foreign/branch details, annual-return dates (older companies).

Pricing

You're billed through Apify for the compute/results this Actor uses — see the Pricing tab on the Actor page for the current plan. A default Companies House API key is built in, so there are no external API costs, and officer, PSC, charges and filing enrichment are all included. Apify's free tier lets you evaluate the full feature set before you scale.

FAQ

Can I look up a company by name? Yes — put names in companyNames. It's a best-effort search that returns the top match; for guaranteed results use the 8-digit companyNumbers.

What's the difference between officers and PSC? officers are the appointed directors/secretaries; persons_with_significant_control are the beneficial owners (people or entities that own/control the company), with natures_of_control levels like "Owns 75-100% of shares".

Does officers include people who have left? No — officers is the board currently in office, and officers_count counts the distinct people on it. Past appointments are kept separately in resigned_officers. Companies House itself returns both in one list: Tesco's record is 74 appointments, of which 11 are current. Note that persons_with_significant_control is not filtered the same way — a PSC that has been removed carries a ceased_on date, so filter on that if you only want live controllers.

Do I need my own Companies House API key? No — a default key is built in. Supply your own api_key only if you need higher rate limits for large runs.

How many companies can I pull in one run? Up to 1,000 via maxResults.

What export formats are available? JSON, CSV, Excel, or via the Apify API / integrations.

Does it include financial statements? It includes accounts metadata (type, period, due/overdue dates) and charges (mortgages/debentures), plus a filing-history timeline — not the full parsed financial figures.

Can I discover companies by industry? Yes — set sicCode to a SIC 2007 section (Discovery mode) to find companies in that sector without a pre-built list.

Is contact email or phone included? Not reliably. Companies House rarely publishes an email and almost never a website through the API, so registered_email and website are usually null. Use this for firmographics and ownership, not for cold-email lists.

Why did a name return the wrong company? Name search picks the top Companies House match, which can be ambiguous for common names. Use the exact company number for certainty.

Is there a rate limit? Yes — Companies House allows ~600 requests per 5 minutes. Keep maxConcurrency modest; the Actor backs off automatically on 429.

Troubleshooting

  • matched: false on a lookup → the company number wasn't found, or a name search returned nothing. Check the 8-digit number, or try a more specific name.
  • Run is slow on large pulls → each company is 3–5 API calls and Companies House caps throughput at ~600 requests / 5 minutes; lower maxConcurrency if you see 429 warnings in the log, don't raise it.
  • A company has no email or website → that's the register, not a miss — Companies House rarely exposes these, so the value is null.
  • Nothing runs → you must provide at least one of companyNumbers, companyNames, or sicCode; an empty input throws.
  • Source & licence. Data comes from the official Companies House public register (Crown copyright), generally reusable under the UK Open Government Licence (OGL v3) with attribution. You are responsible for complying with Companies House's terms for your use.
  • Personal data / GDPR. Officer and PSC records include individuals published by law in the register. If you process this personal data you're responsible for your own GDPR legal basis.
  • Best-effort name search. companyNames resolves to the top match and can be ambiguous — use companyNumbers when identity must be exact.
  • Shared default key. The built-in API key is shared across users; for heavy or scheduled runs, add your own api_key to avoid contended rate limits.
  • Not affiliated with Companies House or the UK Government; this Actor retrieves and structures their public data via the official API.

Support

Questions, a field you'd like added, or a custom build? Open the Issues tab on this Actor, or email info@foxlabs.com.tr. We reply fast.

If this Actor saves you time, a ⭐ review really helps.

Changelog

0.2.1 — 2026-07-28

  • officers is the board currently in office, not the whole appointment history. Companies House returns current and resigned appointments in one list, and the Actor passed the lot through — Tesco came back with 74 officers and officers_count: 74, which reads as a 74-person board when only 11 people actually serve. officers now holds the current appointments only, and past ones move to the new resigned_officers / resigned_officers_count. Measured across 13 companies / 838 appointment rows: 114 current, 724 resigned (86.4%). Tesco: 74 → 11. officers_text follows the same rule.
  • officers_count counts distinct people, not rows — one person can hold two roles (1 of the 13 companies measured did: 8 rows, 7 people).
  • New officers_truncated. Companies House pages officers at 100 per request and 3 of the 13 companies measured hold more appointments than that. The flag is raised when the register reports more serving officers than the Actor could return, so a short board is never presented as complete. (It was false for all 13 — every current board fitted.)
  • Unchanged: identity, status, SIC, addresses, PSC, charges, filing history. persons_with_significant_control is still unfiltered — a removed PSC carries ceased_on (7 of 16 PSC rows in the same sample); filter on that field if you need live controllers only.

0.2 — 2026-07-05

  • Reworked docs: API quick-start, full field reference, sample output, integration snippets (JS/Python/Make/MCP), FAQ & troubleshooting.
  • Documented the complete emitted field set — officers, PSC, charges, filing history, accounts & confirmation-statement status, previous names, and foreign/branch details.

v0.1 — 2026-06-22

  • Initial release: Companies House company profile + officers + PSC.
  • 5M+ UK companies.
  • Name search & company number lookup.
  • Built-in default API key.

Part of the foXLabs data platform — official public-data company, contact, ownership, jobs, charity, location & AI-search intelligence scrapers. Browse the full suite at data.foxlabs.com.tr.