# 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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "UK Companies House Company Data Scraper",
        "description": "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.",
        "version": "0.1",
        "x-build-id": "3SYc0GSlxJdA2EKNt"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/straightforward_hydra~companies-house-uk-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-straightforward_hydra-companies-house-uk-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/straightforward_hydra~companies-house-uk-scraper/runs": {
            "post": {
                "operationId": "runs-sync-straightforward_hydra-companies-house-uk-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/straightforward_hydra~companies-house-uk-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-straightforward_hydra-companies-house-uk-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "apiKey"
                ],
                "properties": {
                    "apiKey": {
                        "title": "Companies House API key",
                        "type": "string",
                        "description": "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": {
                        "title": "Company name contains",
                        "type": "string",
                        "description": "Find companies whose name includes this text, e.g. \"solar\" or \"consulting\". Combine with the filters below to narrow results."
                    },
                    "companyNumbers": {
                        "title": "Company numbers (direct lookup)",
                        "type": "array",
                        "description": "Look up specific companies by their Companies House number, e.g. 00445790. When set, the search filters are ignored.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "companyStatus": {
                        "title": "Company status",
                        "type": "array",
                        "description": "Filter by status. Leave empty for all.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "active",
                                "dissolved",
                                "liquidation",
                                "administration",
                                "receivership",
                                "open",
                                "closed"
                            ],
                            "enumTitles": [
                                "Active",
                                "Dissolved",
                                "Liquidation",
                                "Administration",
                                "Receivership",
                                "Open",
                                "Closed"
                            ]
                        }
                    },
                    "sicCodes": {
                        "title": "SIC codes",
                        "type": "array",
                        "description": "Filter by SIC industry codes, e.g. 62012 (business software development), 35110 (electricity production). Leave empty for all.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "Filter by registered office location, e.g. \"London\", \"Manchester\". Leave empty for all."
                    },
                    "incorporatedFrom": {
                        "title": "Incorporated from",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                        "type": "string",
                        "description": "Only companies incorporated on/after this date. Format YYYY-MM-DD."
                    },
                    "incorporatedTo": {
                        "title": "Incorporated to",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                        "type": "string",
                        "description": "Only companies incorporated on/before this date. Format YYYY-MM-DD."
                    },
                    "includeOfficers": {
                        "title": "Include officers (directors)",
                        "type": "boolean",
                        "description": "Fetch the officers/directors for each company (one extra request per company).",
                        "default": true
                    },
                    "includePsc": {
                        "title": "Include persons with significant control",
                        "type": "boolean",
                        "description": "Fetch the beneficial owners (PSC) for each company (one extra request per company).",
                        "default": false
                    },
                    "includeFilingHistory": {
                        "title": "Include recent filings",
                        "type": "boolean",
                        "description": "Fetch the most recent filing-history entries for each company (one extra request per company).",
                        "default": false
                    },
                    "maxCompanies": {
                        "title": "Max companies",
                        "minimum": 1,
                        "type": "integer",
                        "description": "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.",
                        "default": 100
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
