Companies House UK Scraper — Companies, Directors & PSCs avatar

Companies House UK Scraper — Companies, Directors & PSCs

Pricing

from $4.00 / 1,000 uk company profile scrapeds

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

Companies House UK Scraper — Companies, Directors & PSCs

UK Companies House lookup: company profiles, directors & PSCs. Zero-config public HTML register; optional free API key preferred when set. HTTP-only, MCP-ready.

Pricing

from $4.00 / 1,000 uk company profile scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

Share

Turn a UK company number, company name, director name, or Companies House URL into one structured company row with nested directors (officers) and persons with significant control (PSCs).

Works zero-config against the public Companies House HTML register. When you supply an optional free Public Data API key, the Actor prefers that JSON API path instead. HTTP-only — no browser login and no residential proxy required for the default path.

Designed for KYB, vendor onboarding, UK lead enrichment, and MCP agents that need a predictable company profile.

Best fit

  • You already have company numbers such as 00000006 or SC123456 and want officers + PSCs in one call.
  • You only know a trading name and need Companies House search → enrich.
  • An agent needs public UK register data without managing browser sessions or residential proxies.

For the next workflow step after UK register enrichment, continue with SEC EDGAR All-in-One Scraper when you need US filings, or USPTO Trademark Batch Search for US trademarks. This Actor stays a focused live lookup / search enricher for Companies House.

Practical scenario

A compliance analyst pastes companyNumbers: ["00000006"], leaves includeOfficers and includePscs on, and caps maxResults at 1. The Actor starts from the public Companies House register (no API key required), then loads the company profile, lists active officers and PSCs, and exports one company-scraped row with nested arrays plus a public sourceUrl. Optional free Public Data API key is preferred when set. An unknown number finishes SUCCEEDED with VALID_EMPTY and no company charge.

Quick start input

{
"companyNumbers": ["00000006"],
"includeOfficers": true,
"includePscs": true,
"maxResults": 1
}

Input reference

FieldTypeWhat it controls
companyNumbersarrayExact 8-character company numbers (English padding, SC/NI/OC prefixes supported)
companyNames / searchQueriesarrayName search → enrich top hits
officerNamesarrayDirector search → company appointments → enrich
companyUrlsarrayPublic Companies House /company/{number} URLs
includeOfficers / includePscsbooleanNested directors and PSCs (default true)
includeResignedOfficers / includeCeasedPscsbooleanHistorical officers/PSCs (default false)
emitOfficerLeadRowsbooleanExtra flat officer-lead dataset rows (default false)
maxResultsintegerBilled company row cap (default 10, max 100)
companiesHouseApiKeysecretOptional BYOK for official API; omit for zero-config public HTML

What data you receive

One primary dataset item is one company profile.

{
"recordType": "company",
"companyNumber": "00000006",
"companyName": "EXAMPLE COMPANY LIMITED",
"companyStatus": "active",
"companyType": "ltd",
"dateOfCreation": "1909-04-01",
"jurisdiction": "england-wales",
"registeredOfficeAddressFormatted": "1 Example Street, London, E1 1AA",
"sicCodes": ["62012"],
"officerCount": 2,
"pscCount": 1,
"officers": [
{
"recordType": "officer",
"name": "DOE, Jane",
"officerRole": "director",
"appointedOn": "2020-01-01",
"isActive": true
}
],
"pscs": [
{
"recordType": "psc",
"name": "DOE, Jane",
"kind": "individual-person-with-significant-control",
"naturesOfControl": ["ownership-of-shares-75-to-100-percent"],
"isActive": true
}
],
"source": "companies-house-public-html",
"sourceUrl": "https://find-and-update.company-information.service.gov.uk/company/00000006",
"fetchedAt": "2026-09-22T12:00:00.000Z"
}
FieldMeaning
companyNumber + companyNameCanonical register identity
officers[]Directors and other officers (public register view)
pscs[]Persons with significant control notifications
sourceUrlOfficial public company page
fetchedAtISO-8601 fetch time

OUTPUT and RUN_SUMMARY hold outcome, itemsPushed, and chargedEventCounts. Outcomes include COMPLETE, PARTIAL, VALID_EMPTY, INVALID_INPUT, UPSTREAM_FAILED, and CONFIG_ERROR.

Use through the API

curl -X POST "https://api.apify.com/v2/acts/khadinakbar~companies-house-uk-scraper/runs" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"companyNumbers":["00000006"],"includeOfficers":true,"includePscs":true,"maxResults":1}'

Then read the dataset and the OUTPUT / RUN_SUMMARY key-value records for outcome and charge reconciliation. Download rows as JSON, CSV, Excel, or HTML from the Dataset tab.

Use with AI agents through Apify MCP

Look up UK company 00000006 on Companies House and return company status, registered office, directors, and PSCs as structured JSON. Cap at 1 company, then report OUTPUT.outcome and chargedEventCounts.

Claude and other MCP clients should prefer company numbers when known; otherwise search by company or officer name. After the run, read dataset rows plus OUTPUT.outcome for provenance and cost. Scope is bounded by maxResults and maxSearchResultsPerQuery (no infinite scroll cursor in v1). Pair filings or trademark work with the sibling Actors linked above.

Pricing

Pay per event + platform usage pass-through (caller pays Apify platform usage). Open the live Pricing tab for the current schedule.

EventPriceWhen
apify-actor-start$0.00005Every run
company-scraped$0.004Each saved company row
officer-lead$0.002Only if emitOfficerLeadRows is true

Example: one company row → start event + one company-scraped ≈ $0.00405 plus platform usage. Invalid input and VALID_EMPTY runs are not charged the company event.

Best results

  • Provide company numbers when you have them; name and officer search are for discovery.
  • Start with maxResults at 1–3 while validating a workflow, then schedule larger batches.
  • Confirm the public sourceUrl on each row before downstream KYB decisions.
  • Keep resigned officers and ceased PSCs off unless history is required.

Builder's note

I built this after finding that requiring a Companies House API key stalled every first-run canary even though the public HTML register already exposes overview, officers, and PSC pages for the same numbers. My goal was a zero-config path agents can call immediately, with the official JSON API preferred only when a free key is present, and with nested public-register fields kept honest (no filings dump).

Public Companies House data only. Companies House is a UK government service. This independent Actor is not affiliated with, associated with, or endorsed by Companies House or the UK government. Follow applicable laws and UK data-protection rules for any downstream use of director or PSC personal data. This is not legal advice and not a substitute for official filings or identity verification products.

FAQ

Do I need my own API key?
No. The Actor works zero-config against the public HTML register. A free Companies House Public Data API key is optional and preferred when provided (owner env or BYOK input).

Does this scrape every UK company?
No. It is a live lookup / search enricher, not a bulk snapshot of the full register.

Are private contact fields included?
No. Only public register company, officer, and PSC fields.