UK Companies House Scraper
Pricing
from $2.00 / 1,000 company (basic)s
UK Companies House Scraper
Look up UK companies by company number or Companies House URL, or search the register by name, SIC code, status, address text and incorporation date. Returns company profiles, registered office, accounts dates, directors and PSC beneficial owners from the official API. No API key needed to start.
Pricing
from $2.00 / 1,000 company (basic)s
Rating
0.0
(0)
Developer
Zapticx
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Get structured UK company data from Companies House — by exact lookup or by search. Give it a company number or a Companies House URL, or discover companies by name, SIC code, status, registered-office address text and incorporation date. Every result comes back as a clean record with the company profile, registered office, accounts and confirmation-statement dates, directors and officers, and PSC beneficial owners.
It reads the official Companies House Public Data API — not scraped HTML — and you do not need your own API key to start. Add your own free key when you want to run bigger jobs.
Export to JSON, CSV or Excel, or pull the data straight into your own systems through the Apify API.
Typical uses: B2B lead generation · company and market research · competitor and supplier checks · due diligence support · director and beneficial-ownership research · compliance data workflows · finding newly incorporated companies.
What can you do with this Actor?
- Enrich a list of companies you already have. Paste company numbers or Companies House URLs and get back full, current register data for each one.
- Build a UK company prospect list. Find active companies in an industry (SIC code), incorporated in a date range, with a given town in their registered address.
- Track newly incorporated companies. Filter by incorporation date to see who registered this week, this month or this quarter.
- Research directors and officers. Pull the current and past officer list for any company, with roles and appointment dates.
- Check who really owns a company. Get Persons with Significant Control (PSC) — the beneficial owners — including corporate owners with their registration details.
- Support due diligence. Optionally add filing history, registered charges (mortgages) and insolvency history.
- Monitor compliance dates. Accounts and confirmation-statement due dates, and the register's own overdue flags.
What data can you extract?
Company profile — name, company number, status (active, dissolved, in liquidation, in administration…), company type (Ltd, PLC, LLP…), jurisdiction, incorporation date, dissolution date, previous names.
Registered office — full structured address, plus flattened
locality, region, postalCode and country columns for spreadsheets.
Industry — SIC codes, each with its official Companies House description.
Accounts and confirmation statement — last and next made-up-to dates, next
due dates, accounts category, accounting reference date, and the register's own
accountsOverdue / confirmationStatementOverdue flags.
Register flags — has charges, has insolvency history, has been liquidated, has super-secure PSCs, can file, registered office in dispute.
Directors and officers (on by default) — every current and former director, secretary and LLP member: name, role, appointment and resignation dates, nationality, country of residence, month and year of birth, service address, and Companies House identity-verification details where present.
PSC / beneficial owners (on by default) — name, kind (individual, corporate entity, legal person, super-secure), natures of control with their official plain-English descriptions, notification and cessation dates, and — for corporate owners — the full identification block (legal form, authority, country and registration number). PSC statements are included too, such as a company's formal declaration that it has no registrable person.
Optional deeper data — filing history (25 most recent filings with readable descriptions), registered charges and who they are secured to, and insolvency cases with appointed practitioners.
Calculated for you — company age in years, active and resigned officer
counts, active and ceased PSC counts, days until accounts and confirmation
statement are due, outstanding charge count, recent filing count, and a link to
the company's page on the public register. These live in a separate derived
block so you always know what came from Companies House and what did not.
How to use it
The Actor works in two modes, and it picks the mode from what you fill in.
Lookup mode — you already know the companies
Fill in Company numbers and/or Companies House URLs. Every company you
list is fetched. Short numbers are padded automatically (123456 becomes
00123456) and Scottish (SC), Northern Irish (NI) and LLP (OC) prefixes
all work.
Discovery mode — you want to find companies
Leave the company numbers empty and use the search filters instead: company name contains / does not contain, company status, company type, SIC codes, registered-office address text, and an incorporation date range.
If you supply company numbers and search filters, the Actor runs in lookup mode and tells you in the log which filters it ignored.
Then choose what to collect for each company. Full profile, directors and PSC are on by default; filing history, charges and insolvency are off.
Input examples
Exact company lookup
{"companyNumbers": ["00445790"]}
Multiple companies at once
{"companyNumbers": ["00445790", "03977902", "01624297"],"fetchFullProfile": true,"includeOfficers": true,"includePsc": true}
Companies House URL lookup
Paste the page you were looking at — anything after the company number is ignored.
{"companyUrls": ["https://find-and-update.company-information.service.gov.uk/company/00445790","https://find-and-update.company-information.service.gov.uk/company/03977902/officers"]}
Company discovery — active software companies registered in Manchester since 2025
{"companyStatus": ["active"],"sicCodes": ["62012"],"location": "Manchester","incorporatedFrom": "2025-01-01","maxResults": 25}
Newly incorporated companies in an industry
{"companyStatus": ["active"],"companyType": ["ltd"],"sicCodes": ["62020"],"incorporatedFrom": "2026-01-01","maxResults": 1000,"fetchFullProfile": false,"includeOfficers": false,"includePsc": false}
Turning the profile and enrichments off makes discovery dramatically faster and cheaper — the search itself already returns name, number, status, type, incorporation date, registered address and SIC codes. Runs above 25 companies need your own Companies House API key.
Directors and beneficial owners
{"companyNumbers": ["03977902"],"includeOfficers": true,"includePsc": true}
Deep company research — filings, charges and insolvency
{"companyNumbers": ["NI017460"],"includeOfficers": true,"includePsc": true,"includeFilingHistory": true,"includeCharges": true,"includeInsolvency": true}
Output example
One record per company. Abridged below — a real record carries every officer,
and filingHistory, charges and insolvencyCases are null here because
this run did not ask for them.
{"companyName": "GOOGLE UK LIMITED","companyNumber": "03977902","companyStatus": "active","companyType": "ltd","jurisdiction": "england-wales","incorporationDate": "2000-04-20","cessationDate": null,"registeredOfficeAddress": {"premises": null,"addressLine1": "1 St. Giles High Street","addressLine2": null,"careOf": null,"poBox": null,"locality": "London","region": null,"postalCode": "WC2H 8AG","country": "United Kingdom"},"locality": "London","region": null,"postalCode": "WC2H 8AG","sicCodes": ["82990"],"sicCodeDescriptions": ["Other business support service activities not elsewhere classified"],"accountsNextDueOn": "2026-09-30","accountsOverdue": false,"confirmationStatementNextDueOn": "2027-05-04","confirmationStatementOverdue": false,"hasCharges": false,"hasInsolvencyHistory": false,"officers": [{"name": "ABOGADO NOMINEES LIMITED","officerRole": "corporate-secretary","officerRoleLabel": "Secretary","appointedOn": "2026-06-01","appointedBefore": null,"resignedOn": null,"isActive": true,"isPre1992Appointment": false,"nationality": null,"occupation": null,"countryOfResidence": null,"dateOfBirth": null,"address": {"premises": "C/O Company Secretarial Department","addressLine1": "280 Bishopsgate","addressLine2": null,"careOf": null,"poBox": null,"locality": "London","region": null,"postalCode": "EC2M 4AG","country": "United Kingdom"},"identityVerificationDetails": null}],"psc": [{"name": "Alphabet, Inc.","kind": "corporate-entity-person-with-significant-control","nameElements": null,"naturesOfControl": ["ownership-of-shares-75-to-100-percent","voting-rights-75-to-100-percent","right-to-appoint-and-remove-directors"],"naturesOfControlDescriptions": ["The person holds, directly or indirectly, more than 75% of the shares in the company.","The person holds, directly or indirectly, more than 75% of the voting rights in the company.","The person holds the right, directly or indirectly, to appoint or remove a majority of the board of directors of the company."],"notifiedOn": "2016-04-06","ceasedOn": null,"ceased": false,"isActive": true,"nationality": null,"countryOfResidence": null,"dateOfBirth": null,"address": {"premises": "Corporation Service Company","addressLine1": "251 Little Falls Drive","addressLine2": null,"careOf": null,"poBox": null,"locality": "Wilmington","region": "Delaware","postalCode": "19808","country": "United States"},"identification": {"legal_form": "Corporate","legal_authority": "Delaware Secretary Of State","country_registered": "Delaware","place_registered": "Delaware","registration_number": "5786925"},"identityVerificationDetails": null}],"pscStatements": [],"filingHistory": null,"charges": null,"insolvencyCases": null,"derived": {"companyAgeYears": 26.4,"recentlyIncorporated": false,"activeOfficersCount": 3,"resignedOfficersCount": 16,"activePscCount": 1,"ceasedPscCount": 0,"daysUntilAccountsDue": 23,"daysUntilConfirmationStatementDue": 239,"outstandingChargesCount": null,"recentFilingCount": null},"enrichmentStatus": {"profile": "ok","officers": "ok","psc": "ok","pscStatements": "none_on_register","filingHistory": "not_requested","charges": "not_requested","insolvency": "not_requested"},"companiesHouseUrl": "https://find-and-update.company-information.service.gov.uk/company/03977902","scrapedAt": "2026-09-07T18:04:27Z"}
Note region: null. Companies House simply does not publish a region for most
addresses, and the Actor reports that as unknown rather than inventing an
empty string. The same discipline applies everywhere — see enrichmentStatus
below.
Why a field is empty: enrichmentStatus
| Value | Meaning |
|---|---|
not_requested | You turned that enrichment off. The field is null. |
ok | Fetched, and there is data. |
none_on_register | Fetched, and there genuinely is none. The field is []. |
failed: <reason> | That one lookup failed. The field is null and the rest of the record is still valid and delivered. |
An empty list and a null mean different things, and this Actor never confuses
them. A missing value is never turned into 0, false or "".
Dataset views
The Output tab gives you three ready-made views, which is what makes the data usable in a spreadsheet without a second run:
| View | What it gives you |
|---|---|
| Companies | One row per company — the headline fields plus the calculated summaries |
| Officers | One row per director/officer, with its company alongside |
| Beneficial owners (PSC) | One row per PSC, with its company alongside |
Officers and PSCs are nested inside the company record, which is right for JSON and APIs but awkward for Excel. The Officers and PSC views flatten them for you: a 3-company run with 120 officers exports as 120 clean CSV rows. There is no extra charge for using a view.
Pricing
You are charged once per company delivered, at the highest tier that company actually reached.
| Tier | Per company | Per 1,000 companies | What it covers |
|---|---|---|---|
| Basic | $0.002 | $2.00 | Company profile / search data only |
| Enriched | $0.005 | $5.00 | …plus directors/officers and/or PSC and PSC statements |
| Deep | $0.008 | $8.00 | …plus filing history, charges or insolvency |
The tiers do not stack. A company that reaches Deep costs $0.008, not $0.002 + $0.005 + $0.008. Each company produces exactly one charge.
- No Actor-start fee.
- Companies that are not found on the register, invalid, or fail are never charged — they never reach the dataset.
- If an enrichment fails, you are billed at the lower tier you actually received.
At the default settings (profile + directors + PSC), 25 companies costs $0.125 and 1,000 companies costs $5.00.
Built-in Companies House API access
The Actor ships with a built-in Companies House API key, so you can run it straight away with no registration and no setup.
That key is shared with everyone using the free lane, so it is capped at 25 companies per run. That is intended for trying the Actor out, one-off lookups, small enrichment jobs and automations that check a handful of companies at a time.
Bring your own Companies House API key
For anything larger, add your own key. It is free, takes a few minutes, and gives you your own request quota instead of a shared one.
- Register at https://developer.company-information.service.gov.uk/
- Create an application and choose the Live environment (not the sandbox).
- Create a key of type REST.
- Leave Restricted IPs and JavaScript domains blank.
- Paste it into Your Companies House API key.
The field is handled as an encrypted secret — it is stored encrypted by Apify, never written into your results, and never printed in the run log.
With your own key you can collect up to 10,000 companies per run, which is the maximum Companies House Advanced Search will return for one set of filters.
Using your own key gives you a private quota. It does not raise or bypass Companies House's limits — those still apply, to you as they do to everyone. This Actor never rotates keys or uses proxies to work around them.
Large runs and performance
Companies House allows 600 requests per 5 minutes per key — roughly 2 per second, shared across all endpoints. The Actor paces itself below that and waits for the window to reset if it gets there.
Roughly what a company costs in requests:
| What you collect | Requests per company |
|---|---|
| Discovery only, profile off | ~0.01 (one search request covers 100 companies) |
| Profile only | 1 |
| Profile + directors + PSC (default) | ~4 |
| Everything | ~5 |
Realistic timings at default settings:
| Companies | Approximate time |
|---|---|
| 25 | under 1 minute |
| 100 | ~3 minutes |
| 1,000 | ~25 minutes |
| 10,000 | ~4 hours |
Discovery without enrichment is a different order of magnitude: 1,000 companies in well under a minute, because the search endpoint returns 100 companies per request. If you only need the basics — name, number, status, type, incorporation date, address, SIC codes — turn the profile and enrichments off and the job finishes in seconds.
Records are written to the dataset as each company completes, so a long run you stop early still leaves you everything collected so far.
Integrations and automation
The output is flat, typed and stable, so it drops into whatever you already use.
- Run it and read the dataset through the Apify API, or trigger downstream systems with webhooks.
- Connect the run or its dataset to Make, Zapier or n8n using their Apify integration or a generic HTTP module. There is no native Companies House connector on those platforms, so this Actor saves you hand-building auth, pagination, retries and three separate enrichment calls.
- Call it from Python or JavaScript/Node.js with the Apify client.
- Export CSV or Excel straight from the Output tab — use the Officers or PSC view when you want one row per person.
- Feed the JSON to AI agents and LLM workflows that need current, factual UK company data.
- Load the dataset into BI tools and data pipelines for reporting.
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("zapticx/uk-companies-house-scraper").call(run_input={"companyNumbers": ["00445790"],"includeOfficers": True,"includePsc": True,})for company in client.dataset(run["defaultDatasetId"]).iterate_items():print(company["companyName"], company["derived"]["activeOfficersCount"])
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('zapticx/uk-companies-house-scraper').call({companyNumbers: ['00445790'],includeOfficers: true,includePsc: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0].companyName);
Data source
Data comes from the Companies House Public Data API
(api.company-information.service.gov.uk) — the UK registrar's own service.
SIC, filing, PSC and company-status descriptions come from the official
Companies House enumerations.
Contains public sector information licensed under the Open Government Licence v3.0.
This Actor is built by Zapticx. It is not affiliated with, endorsed by or operated by Companies House, and it is not an official source. For anything legally binding, check the register itself.
Limitations
Worth knowing before you run a big job:
- Discovery is capped at 10,000 companies per set of filters. That is a Companies House Advanced Search limit, not ours. The Actor stops cleanly and tells you. To collect more, split the job — usually by incorporation date range — and run it again.
- The address filter is text, not geography — it is not a map or radius
search. "Registered office address contains" matches the text of the
registered address.
Manchesteralso matches a company on Manchester Road in London, and a business trading in Manchester whose registered office sits at its accountant's address in London will not match. Registered office is not the same as trading address. - Some register fields are sparse. Measured across 120 real officers:
occupationwas populated 0% of the time, identity-verification details 14%, country of residence 52%, date of birth 85%, nationality 89%.regionappeared for about a third of companies. All are returned as nullable and none is relied on internally. - PSC can legitimately be empty. PLCs traded on a regulated market are
exempt, so a large listed company often has no PSC at all. That is correct
register data, reported as
[]withnone_on_register— not a failure. - Optional enrichment costs requests and time. Filing history, charges and insolvency each add per-company requests. Charges and insolvency are skipped automatically when the register already says there are none.
- Companies House rate limits apply (600 requests per 5 minutes per key). Large runs take as long as those limits allow.
- Dissolved and historical companies are valid results. They return complete
data with a
dissolvedstatus and a cessation date — filter by company status if you only want live companies. - What the register does not hold, this Actor does not return: no emails, no phone numbers, no websites, no turnover, no employee counts, no credit scores. Financial figures live inside filed accounts documents, which this version does not parse. Nothing is estimated, inferred or invented.
- Officer dates of birth are month and year only. That is a statutory restriction on the register, not a limitation of this Actor.
- Runs depend on Companies House availability. If the API is down or slow, the Actor retries, reports honestly, and still delivers whatever it collected.
Privacy and responsible use
Officer and PSC records contain personal data about real people. Companies House publishes it because the Companies Act 2006 requires it — but "public" is not the same as "unrestricted".
- The Open Government Licence covers the company data; it excludes personal data.
- When you export officer or PSC records you become a data controller in your own right under UK GDPR, and you are responsible for having a lawful basis.
- If you use the data for marketing, UK PECR and the ICO's direct-marketing rules apply to you.
- This Actor deliberately does not build cross-company profiles of individuals, does not emit person-linking identifiers, and never reconstructs a full date of birth from the month and year the register publishes.
This is practical guidance, not legal advice.
FAQ
What is a Companies House scraper? A tool that pulls company records from the UK's official company register. This one reads the Companies House Public Data API rather than scraping web pages, so results are structured and stable.
Can I search UK companies by SIC code?
Yes. Add one or more five-digit SIC 2007 codes — for example 62012 for
business and domestic software development — and combine them with status,
company type, address text and an incorporation date range.
Can I extract company directors? Yes. Directors and officers are included by default: current and former, with role, appointment and resignation dates, nationality, country of residence and month/year of birth. Use the Officers view for one row per person.
Can I get Persons with Significant Control (PSC)? Yes, on by default — including natures of control with their official descriptions, and the full identification block for corporate owners. PSC statements are returned too.
Why is PSC data sometimes empty?
Because the company genuinely has none on the register. PLCs traded on a
regulated market are exempt, and some companies file a statement instead. The
Actor reports this as [] with none_on_register, which is different from a
failed lookup (null).
Can I scrape Companies House without my own API key? Yes. A built-in key is included, capped at 25 companies per run. Add your own free Companies House key for larger runs.
How many companies can I extract? 25 per run on the built-in key; up to 10,000 per run with your own key, which is the maximum Companies House Advanced Search returns for one set of filters. Split larger jobs by incorporation date range.
Can I export Companies House data to CSV or Excel? Yes — from the Output tab in JSON, CSV, Excel or XML. Pick the Officers or PSC view first if you want one row per person instead of nested data.
Can I use the Actor through an API? Yes. Start runs and read results through the Apify API, or subscribe to webhooks when a run finishes.
Can I use it with Make, Zapier or n8n? Yes, through their Apify integration or a generic HTTP module. None of those platforms has a native Companies House connector, so the Actor handles the authentication, pagination, rate limiting and enrichment calls for you.
Does it return company emails or phone numbers? No. Companies House does not publish contact details, so neither does this Actor.
Can I look up a company from a Companies House link? Yes. Paste the URL into Companies House URLs — anything after the company number in the link is ignored.