# UK Companies House Company Data Scraper (`straightforward_hydra/companies-house-uk-scraper`) Actor

Search UK Companies House and export clean company data: profile, officers/directors, beneficial owners (PSC) and filings. For KYC, due diligence and B2B lead enrichment.

- **URL**: https://apify.com/straightforward\_hydra/companies-house-uk-scraper.md
- **Developed by:** [Dev D](https://apify.com/straightforward_hydra) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.25 / 1,000 companies

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## UK Companies House Company Data Scraper 🇬🇧

**Export clean, structured UK company data — profiles, directors, beneficial owners and filings — straight from the official Companies House register.**

Every company registered in the UK is on **Companies House**. This Actor searches it by name, SIC industry code, status, location or incorporation date (or looks up specific company numbers) and returns a clean record per company — optionally enriched with **officers/directors**, **persons with significant control (PSC)** and **recent filings**. Perfect for KYC, due diligence and B2B lead enrichment.

> Data comes from the official Companies House REST API — public register data, clean liability profile.

***

### What you can do with it

- 🔎 **KYC & due diligence** — verify a company, its directors and its beneficial owners.
- 🎯 **B2B lead generation** — build targeted lists by industry (SIC), location and status.
- 🧭 **Sales enrichment** — turn a company name or number into a full structured profile.
- 📊 **Market research** — map companies in a sector or region.
- 🕵️ **Compliance & risk** — check status (active / dissolved / liquidation) and PSC ownership.

### Features

- ✅ **Powerful search** — name, SIC code, status, location, incorporation date.
- ✅ **Direct lookup** — pass company numbers to fetch exact companies.
- ✅ **Optional enrichment** — officers/directors, PSC (beneficial owners), recent filings.
- ✅ **Clean structured output** — profile, full address, SIC codes, direct register link.
- ✅ **Low-maintenance** — official REST/JSON API, no scraping, no browser.

***

### 🔑 Getting your free API key (required)

Companies House keys are free and available **worldwide**:

1. Register at **developer.company-information.service.gov.uk**.
2. Create an **application** and generate a **REST API key** (the "live" key).
3. Paste it into the **Companies House API key** field.

Your key is only ever sent to Companies House. The API allows ~600 requests per 5 minutes.

### Input

| Field | Description |
|---|---|
| **Companies House API key** | Your free key (required). |
| **Company name contains** | Name search, e.g. `solar`. |
| **Company numbers** | Direct lookup by number, e.g. `00445790`. |
| **Company status** | Active, dissolved, liquidation, etc. |
| **SIC codes** | Industry codes, e.g. `62012`. |
| **Location** | Registered office town/city. |
| **Incorporated from / to** | Incorporation date range (YYYY-MM-DD). |
| **Include officers** | Attach directors/officers. |
| **Include PSC** | Attach beneficial owners. |
| **Include recent filings** | Attach recent filing history. |
| **Max companies** | Cap the number of companies. |

#### Example — active software companies in London, with directors

```json
{
  "apiKey": "YOUR_CH_KEY",
  "searchQuery": "software",
  "companyStatus": ["active"],
  "sicCodes": ["62012"],
  "location": "London",
  "includeOfficers": true,
  "maxCompanies": 200
}
```

#### Example — look up specific companies with full enrichment

```json
{
  "apiKey": "YOUR_CH_KEY",
  "companyNumbers": ["00445790", "03977902"],
  "includeOfficers": true,
  "includePsc": true,
  "includeFilingHistory": true
}
```

### Output

Each row is one company:

```json
{
  "company_name": "TESCO PLC",
  "company_number": "00445790",
  "company_status": "active",
  "company_type": "plc",
  "date_of_creation": "1947-11-27",
  "date_of_cessation": "",
  "sic_codes": ["47110"],
  "address_line_1": "Tesco House, Shire Park",
  "locality": "Welwyn Garden City",
  "postal_code": "AL7 1GA",
  "country": "United Kingdom",
  "registered_office_address": "Tesco House, Shire Park, Welwyn Garden City, AL7 1GA, United Kingdom",
  "officers": [
    {"name": "SMITH, John", "officer_role": "director", "appointed_on": "2021-03-01", "nationality": "British", "occupation": "Executive", "date_of_birth": "1970-05"}
  ],
  "persons_with_significant_control": [],
  "recent_filings": [],
  "company_url": "https://find-and-update.company-information.service.gov.uk/company/00445790",
  "api_url": "https://api.company-information.service.gov.uk/company/00445790"
}
```

### Run it on a schedule

Schedule the Actor to refresh a company list or re-check statuses periodically, and connect a **Slack / email / webhook / Google Sheets** integration to push updates to your CRM or compliance workflow.

### Notes & limitations

- Requires a free Companies House API key (each user supplies their own).
- Officer/PSC/filing enrichment adds one request per company; the API allows ~600 requests per 5 minutes, so large runs are paced automatically.
- Dates of birth for officers/PSC are, by design, only month + year (as the register publishes them).
- This is **factual public register data**.

***

#### Keywords

Companies House scraper, UK company data, company registry, KYC, due diligence, B2B lead generation, company search API, UK business data, directors data, officers, persons with significant control, PSC, beneficial owners, company profile, SIC code search, UK companies API, business intelligence, sales enrichment, compliance, company lookup, corporate data, company filings.

# Actor input Schema

## `apiKey` (type: `string`):

Your free Companies House REST API key. Register at developer.company-information.service.gov.uk (available worldwide), create an application, and copy the key. Required. Only sent to Companies House.

## `searchQuery` (type: `string`):

Find companies whose name includes this text, e.g. "solar" or "consulting". Combine with the filters below to narrow results.

## `companyNumbers` (type: `array`):

Look up specific companies by their Companies House number, e.g. 00445790. When set, the search filters are ignored.

## `companyStatus` (type: `array`):

Filter by status. Leave empty for all.

## `sicCodes` (type: `array`):

Filter by SIC industry codes, e.g. 62012 (business software development), 35110 (electricity production). Leave empty for all.

## `location` (type: `string`):

Filter by registered office location, e.g. "London", "Manchester". Leave empty for all.

## `incorporatedFrom` (type: `string`):

Only companies incorporated on/after this date. Format YYYY-MM-DD.

## `incorporatedTo` (type: `string`):

Only companies incorporated on/before this date. Format YYYY-MM-DD.

## `includeOfficers` (type: `boolean`):

Fetch the officers/directors for each company (one extra request per company).

## `includePsc` (type: `boolean`):

Fetch the beneficial owners (PSC) for each company (one extra request per company).

## `includeFilingHistory` (type: `boolean`):

Fetch the most recent filing-history entries for each company (one extra request per company).

## `maxCompanies` (type: `integer`):

Stop after this many companies. Leave empty for no limit. Note: enrichment adds one request per company, and the API allows ~600 requests per 5 minutes.

## Actor input object example

```json
{
  "searchQuery": "solar",
  "includeOfficers": true,
  "includePsc": false,
  "includeFilingHistory": false,
  "maxCompanies": 100
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQuery": "solar"
};

// Run the Actor and wait for it to finish
const run = await client.actor("straightforward_hydra/companies-house-uk-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "searchQuery": "solar" }

# Run the Actor and wait for it to finish
run = client.actor("straightforward_hydra/companies-house-uk-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQuery": "solar"
}' |
apify call straightforward_hydra/companies-house-uk-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=straightforward_hydra/companies-house-uk-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/a2ey7A72XUZoxQeqZ/builds/3SYc0GSlxJdA2EKNt/openapi.json
