Companies House Scraper — UK Companies, Directors & PSCs avatar

Companies House Scraper — UK Companies, Directors & PSCs

Pricing

from $4.00 / 1,000 company scrapeds

Go to Apify Store
Companies House Scraper — UK Companies, Directors & PSCs

Companies House Scraper — UK Companies, Directors & PSCs

Scrape the UK Companies House register: company profiles, directors, PSCs (beneficial owners), SIC codes, addresses, accounts dates, filing history & charges. Search by keyword, company number, SIC code, location or incorporation date. No API key. Monitoring mode. Export JSON, CSV, Excel.

Pricing

from $4.00 / 1,000 company scrapeds

Rating

0.0

(0)

Developer

Scrape Sage

Scrape Sage

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

6

Monthly active users

7 days ago

Last modified

Share

Companies House Scraper — UK Companies, Directors & PSCs (Officers, SIC Codes, Filings & Leads)

Extract complete UK company data straight from the official Companies House register — company profiles, directors & officers, PSCs (persons with significant control / beneficial owners), SIC codes, registered office addresses, accounts & confirmation-statement due dates, filing history and charges/mortgages — and turn the whole register into a targeted B2B prospect list filtered by industry (SIC code), location and incorporation date.

No API key, no login, no browser — fast HTML extraction from a public UK government service with near-100% reliability.

Why this Companies House scraper?

Most actors return a thin company profile and stop. This one ships the richest record in the category — every person, every key date, every signal — plus advanced-search filtering and a monitoring mode that returns only new companies on a schedule.

DataTypical scrapersThis actor
Company profile (status, type, incorporation date, registered office)
SIC codes (with descriptions)partial
Accounts & confirmation-statement due dates + overdue flags
Previous company names
Officers & directors (role, DOB, nationality, occupation, appointed/resigned)partial
PSCs / beneficial owners (nature & level of control)
Filing history (date, type, description, document link)✅ opt-in
Charges / mortgages (status, dates, persons entitled)✅ opt-in
Advanced search by SIC code + location + incorporation date
Derived lead score (0–100) + company age + active-officer/PSC counts
Monitoring mode — only new companies on each run
Flat one-record-per-director output for CRM import✅ opt-in
Requires a Companies House API keysometimes❌ never

Use cases

  • B2B lead generation — build prospect lists of every UK company in a SIC code (industry) and town, complete with directors to contact and a lead score to prioritise. New incorporations are warm sales triggers — accountants, banks, insurers, SaaS and agencies all chase them.
  • Sales triggers / new-business alerts — schedule a daily run with an incorporation-date window + monitoring mode to receive only the companies registered since yesterday for your target industries and regions.
  • KYC, KYB & compliance — pull directors, beneficial owners (PSCs), nature of control, status and charges for onboarding, AML and due-diligence checks.
  • Credit & risk — track company status, accounts-overdue flags, confirmation-statement lapses, insolvency/liquidation status and registered charges.
  • Market & competitor research — map every company in a sector by SIC code, incorporation cohort and location; analyse director networks across companies.
  • Data enrichment — turn a list of company numbers into fully-enriched records for your CRM or warehouse.

How to use

  1. Sign up for Apify — the free plan is enough to try this actor.
  2. Open the Companies House Scraper, then either enter search queries, paste company numbers, or set the advanced-search filters (SIC code, location, incorporation date). Click Start.
  3. Watch company records stream into the dataset table.
  4. Export as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the Apify API.

Input

{
"sicCodes": ["62012"],
"location": "Manchester",
"incorporatedFrom": "2026-01-01",
"includeOfficers": true,
"includePSCs": true,
"includeFilingHistory": false,
"emitOfficerRecords": true,
"monitoringMode": true,
"maxCompanies": 500
}
  • searchQueries — keywords / company names to search the register (matches current and previous names).
  • companyNumbers — exact company numbers (00445790, SC123456, NI036672, OC301540); fastest and most precise.
  • startUrls — Companies House URLs: company pages (/company/00445790), keyword search (/search/companies?q=…) or advanced-search result pages (/advanced-search/get-results?…).
  • Advanced-search filterssicCodes, location (registered office text), companyNameIncludes / companyNameExcludes, companyTypes, companyStatus, incorporatedFrom / incorporatedTo, dissolvedFrom / dissolvedTo.
  • includeOfficers (default true) — full officer/director list.
  • includePSCs (default true) — persons with significant control + PSC statements.
  • includeFilingHistory (default false) — recent filings (date, type, description, document link) + last-filing date/type.
  • includeCharges (default false) — registered charges / mortgages.
  • emitOfficerRecords (default false) — also output one flat record per officer (type: "officer") for CRM import.
  • monitoringMode (default false) — output only companies not seen in previous runs (see below).
  • maxCompanies / maxConcurrency — run controls.

Output

One record per company (type: "company"), plus optional per-officer lead records (type: "officer"):

{
"type": "company",
"companyNumber": "09384423",
"companyName": "KFORD TYRES (GORNAL) LTD",
"companyStatus": "Active",
"companyType": "Private limited Company",
"incorporatedOn": "2015-01-12",
"companyAgeYears": 11.4,
"isActive": true,
"registeredOfficeAddress": "2 Dawley Brook Road, Kingswinford, England, DY6 7BD",
"sicCodes": [{ "code": "45200", "description": "Maintenance and repair of motor vehicles" }],
"sicCodeList": ["45200"],
"nextAccountsMadeUpTo": "2026-01-31",
"nextAccountsDueBy": "2026-10-31",
"lastAccountsMadeUpTo": "2025-01-31",
"accountsOverdue": false,
"confirmationStatementNextDate": "2026-01-11",
"confirmationStatementLastDate": "2025-01-11",
"previousNames": [{ "name": "TESCO TYRES LTD", "period": "12 Jan 2015 - 03 Mar 2018" }],
"officersCount": 2,
"activeOfficersCount": 2,
"directorsCount": 2,
"officers": [
{
"name": "PAGE, Tanya",
"officerId": "aBcD_eF...",
"role": "Director",
"status": "Active",
"dateOfBirth": "1967-06",
"appointedOn": "2015-01-12",
"nationality": "British",
"countryOfResidence": "England",
"occupation": "Director",
"correspondenceAddress": "2 Dawley Brook Road, Kingswinford, England, DY6 7BD"
}
],
"pscCount": 1,
"pscs": [
{
"name": "Mrs Tanya Page",
"status": "Active",
"notifiedOn": "2017-01-12",
"dateOfBirth": "1967-06",
"nationality": "British",
"countryOfResidence": "England",
"natureOfControl": ["Ownership of shares – More than 25% but not more than 50%"]
}
],
"pscStatements": [],
"leadScore": 90,
"url": "https://find-and-update.company-information.service.gov.uk/company/09384423",
"scrapedAt": "2026-06-14T12:00:00.000Z"
}

Monitoring mode — only pull new companies

Turn on monitoringMode and the actor remembers every company it has already returned (in a named key-value store) and outputs only companies it hasn't seen before. Combine it with an incorporatedFrom window + sicCodes + location and a daily Schedule to receive a clean feed of newly-incorporated companies in your target market — perfect for sales triggers and lead pipelines.

Monitoring mode works alongside Apify Schedules, it doesn't conflict with them: the schedule decides when the actor runs, monitoring mode decides what's new in the results. Each distinct search keeps its own memory, so you can run several monitored searches independently.

Automate & schedule

Run this actor on autopilot and pull results into your own stack:

  • Apify API — start runs, fetch datasets, and manage schedules over REST.
  • apify-client for JavaScript and apify-client for Python — official SDKs.
  • Schedules — run it hourly/daily/weekly with monitoring mode to track new incorporations, filings, or director changes for your target industries and regions.
  • Webhooks — trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });
const run = await client.actor('scrapesage/companies-house-scraper').call({
sicCodes: ['62012'],
location: 'London',
incorporatedFrom: '2026-01-01',
emitOfficerRecords: true,
monitoringMode: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} companies & director leads`);

Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

  • Make — multi-step automation scenarios.
  • Zapier — push new company leads straight into your CRM.
  • Slack — get notified when a monitored search finds new companies.
  • Google Drive / Sheets — auto-export every run to a spreadsheet.
  • Airbyte — pipe results into your data warehouse.
  • GitHub — trigger runs from commits or releases.

Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. You can call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server — ask your assistant to "find software companies incorporated in London this year and list their directors" and let it run this scraper for you.

Agent-ready: autonomous payments (x402 & Skyfire)

This actor is agent-ready — AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:

  • x402 — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server — no account, no API key.
  • Skyfire — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

More scrapers from scrapesage

Build a complete B2B lead-gen & business-intelligence stack:

Tips

  • Targeted prospect lists: combine sicCodes (industry) + location + incorporatedFrom to slice the register exactly to your market, then sort the dataset by leadScore.
  • New-business feed: set a rolling incorporatedFrom, turn on monitoringMode, and schedule the run daily — you'll only ever receive companies you haven't seen.
  • Cost control: officers and PSCs are included by default; turn off includeFilingHistory and includeCharges (the extra page fetches) when you only need profiles + people.
  • Company numbers are the fastest, cheapest input — paste them directly when you already have a list to enrich.
  • Proxies: the default Apify Proxy is plenty — Companies House is a public UK government service and does not block datacenter IPs.

FAQ

Do I need a Companies House API key? No. This actor reads the public Companies House website, so there's no key, no rate-limit registration, and no login.

What's a PSC? A person with significant control — a beneficial owner who holds more than 25% of shares or voting rights, or otherwise controls the company. The actor extracts each PSC's name, nature & level of control, date of birth (month/year), nationality and country of residence.

Which company numbers are supported? All of them — England & Wales (12345678), Scotland (SC…), Northern Ireland (NI…), LLPs (OC…), and others. Search and advanced search resolve numbers for you automatically.

Can I get only newly-registered companies? Yes — set an incorporatedFrom date, enable monitoringMode, and schedule the run. Each run returns only companies not seen in previous runs.

Can I export to Google Sheets, CSV, or Excel? Yes — one click in the dataset view, or automatically on every run via the Google Drive integration.

Is this legal? Companies House data is published as open data by the UK government for public use. This actor collects only that publicly available information. You remain responsible for using personal data (e.g. director details) in compliance with UK GDPR and applicable laws.

A field is null — why? Some companies genuinely don't publish certain data: newly-incorporated companies have no accounts yet, PLCs trading on a regulated market are PSC-exempt, and dormant companies may have no charges. Fields are null only when the data doesn't exist, not because the scraper skipped them.

Need help?

Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome — this actor is actively maintained.