Companies House UK Scraper — Companies, Directors & PSCs
Pricing
from $4.00 / 1,000 uk company profile scrapeds
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
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 days ago
Last modified
Categories
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
00000006orSC123456and 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
| Field | Type | What it controls |
|---|---|---|
companyNumbers | array | Exact 8-character company numbers (English padding, SC/NI/OC prefixes supported) |
companyNames / searchQueries | array | Name search → enrich top hits |
officerNames | array | Director search → company appointments → enrich |
companyUrls | array | Public Companies House /company/{number} URLs |
includeOfficers / includePscs | boolean | Nested directors and PSCs (default true) |
includeResignedOfficers / includeCeasedPscs | boolean | Historical officers/PSCs (default false) |
emitOfficerLeadRows | boolean | Extra flat officer-lead dataset rows (default false) |
maxResults | integer | Billed company row cap (default 10, max 100) |
companiesHouseApiKey | secret | Optional 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"}
| Field | Meaning |
|---|---|
companyNumber + companyName | Canonical register identity |
officers[] | Directors and other officers (public register view) |
pscs[] | Persons with significant control notifications |
sourceUrl | Official public company page |
fetchedAt | ISO-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.
| Event | Price | When |
|---|---|---|
apify-actor-start | $0.00005 | Every run |
company-scraped | $0.004 | Each saved company row |
officer-lead | $0.002 | Only 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
maxResultsat 1–3 while validating a workflow, then schedule larger batches. - Confirm the public
sourceUrlon 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).
Legal / responsible use
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.