# UK Companies House Company Data (`adv3ntur3/uk-companies-house`) Actor

Official UK company data straight from the Companies House public register. Search by name, SIC code, status or incorporation date, or look up company numbers in bulk. No scraping, no blocks, no ToS risk.

- **URL**: https://apify.com/adv3ntur3/uk-companies-house.md
- **Developed by:** [Mario Boboc](https://apify.com/adv3ntur3) (community)
- **Categories:** Developer tools, Lead generation, Automation
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.00 / 1,000 company record returneds

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

Get **official UK company data** straight from the [Companies House](https://find-and-update.company-information.service.gov.uk/) public register — **no scraping, no blocked requests, no terms-of-service risk**. Search 5 million+ UK companies by name, industry (SIC code), location, status or incorporation date, or look up company numbers in bulk, and export clean rows to JSON, CSV or Excel.

### What does UK Companies House Company Data do?

This Actor queries the **official Companies House Public Data API** and returns a flat, analysis-ready record for every company it finds: company number, registered name, status, type, incorporation date, full registered office address, SIC codes, accounts and confirmation-statement due dates, insolvency and charges flags, and previous names.

Because it reads a government API rather than parsing web pages, it never gets rate-limited by anti-bot systems, never breaks when a site is redesigned, and needs no proxies. Run it on demand, [schedule it](https://docs.apify.com/platform/schedules), or call it from the [Apify API](https://docs.apify.com/api/v2) and pipe results into Make, Zapier, Google Sheets or your own database.

### Why use UK Companies House Company Data?

- **Sales prospecting.** Build B2B lead lists filtered by industry and location — every electrical contractor in Manchester, every software company incorporated in the last 90 days.
- **Lead enrichment.** Turn a list of company numbers or names into verified, current company records.
- **Credit and supplier risk.** Surface dissolved, liquidated or insolvent companies, and spot overdue accounts before you sign a contract.
- **Compliance and KYB.** Verify that a counterparty exists, is active, and is registered where it claims to be.
- **Market research.** Measure company formations by sector and region over time.

Unlike scrapers pointed at social networks or map listings, this Actor's source is a public register that is *meant* to be queried. Your runs cannot be blocked, and the data is as current as the register itself.

### How to use UK Companies House Company Data

1. **Get a free Companies House API key.** Register at [developer.company-information.service.gov.uk](https://developer.company-information.service.gov.uk/), create an application, and copy its **REST API key**. It takes about two minutes and costs nothing.
2. Paste the key into the **Companies House API key** field.
3. Either enter **company numbers** for a direct bulk lookup, or set search filters — name, SIC code, location, status, incorporation date range.
4. Set **Maximum results**.
5. Click **Start** and download the dataset when the run finishes.

You supply your own key so you get your **own full rate limit**, rather than queueing behind every other user of a shared one.

### Input

Configure everything on the **Input** tab. All fields except the API key are optional, though you must give either company numbers or at least one search criterion.

| Field | Type | Description |
| --- | --- | --- |
| `apiKey` | string | **Required.** Your free Companies House REST API key. |
| `companyNumbers` | array | Bulk lookup, e.g. `["00000006", "01471587"]`. Keep leading zeros. Overrides search filters. |
| `searchQuery` | string | Registered name contains this text. |
| `companyStatus` | array | `active`, `dissolved`, `liquidation`, and others. Defaults to `active`. |
| `companyType` | array | `ltd`, `plc`, `llp`, and others. |
| `sicCodes` | array | Industry codes, e.g. `["62012"]` for business software development. |
| `location` | string | Town, city or region in the registered office address. |
| `incorporatedFrom` / `incorporatedTo` | string | `YYYY-MM-DD` range. |
| `maxResults` | integer | Default `100`. |
| `fetchFullProfile` | boolean | Default `true`. Off is ~2× faster but omits compliance dates and flags. |

```json
{
    "apiKey": "your-companies-house-key",
    "searchQuery": "solar",
    "companyStatus": ["active"],
    "sicCodes": ["43210"],
    "location": "Manchester",
    "incorporatedFrom": "2024-01-01",
    "maxResults": 500
}
```

### Output

Each company becomes one dataset item. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

```json
{
    "companyNumber": "00000006",
    "companyName": "EXAMPLE TRADING LIMITED",
    "companyStatus": "active",
    "companyType": "ltd",
    "jurisdiction": "england-wales",
    "incorporationDate": "1862-10-25",
    "registeredOfficeAddress": "1 Example Street, Manchester, M1 1AA, England",
    "addressLocality": "Manchester",
    "addressPostalCode": "M1 1AA",
    "sicCodes": ["43210"],
    "accountsNextDue": "2026-12-31",
    "accountsLastMadeUpTo": "2025-03-31",
    "confirmationStatementNextDue": "2026-07-14",
    "hasInsolvencyHistory": false,
    "hasCharges": true,
    "previousNames": ["EXAMPLE HOLDINGS LIMITED"],
    "companyUrl": "https://find-and-update.company-information.service.gov.uk/company/00000006"
}
```

#### Data fields

| Field | Description |
| --- | --- |
| `companyNumber` | Official registration number |
| `companyName` | Current registered name |
| `companyStatus` / `companyStatusDetail` | Active, dissolved, in liquidation, etc. |
| `companyType` | Ltd, PLC, LLP, CIC, etc. |
| `jurisdiction` | England/Wales, Scotland, Northern Ireland |
| `incorporationDate` / `dissolutionDate` | `YYYY-MM-DD` |
| `registeredOfficeAddress` | Full address, plus split `addressLine1`, `addressLocality`, `addressRegion`, `addressPostalCode`, `addressCountry` |
| `sicCodes` | Standard Industrial Classification codes |
| `accountsNextDue`, `accountsLastMadeUpTo`, `accountsCategory` | Filing position for accounts |
| `confirmationStatementNextDue`, `confirmationStatementLastMadeUpTo` | Confirmation statement position |
| `hasInsolvencyHistory`, `hasCharges`, `hasBeenLiquidated`, `canFile` | Risk flags |
| `previousNames` | Former registered names |
| `companyUrl` | Link to the public register entry |

### Before you start: you need a free Companies House API key

This Actor runs on **your own** Companies House API key, not a shared one. Getting it takes about two minutes and costs nothing:

1. Register at [developer.company-information.service.gov.uk](https://developer.company-information.service.gov.uk/)
2. Create an application, choosing the **live** environment
3. Copy its **REST API key** (not the streaming key)
4. Paste it into the **Companies House API key** field on the Input tab

Your key means your rate limit is yours alone — 600 requests per five minutes, not shared with every other user of this Actor.

### How much does it cost to get UK company data?

**$1.00 per 1,000 company records.** You are charged only for records actually delivered to your dataset. Failed lookups, companies not found on the register, and runs that return nothing cost you nothing.

| Company records | Cost |
| --- | --- |
| 100 | $0.10 |
| 1,000 | $1.00 |
| 10,000 | $10.00 |

Platform compute is included in that price — there is no separate usage charge to calculate, and no proxy costs, because this Actor calls an official API rather than scraping. The Companies House API itself is free.

Request budget is easy to predict: **one request per company** with `fetchFullProfile` off, **two** with it on, plus one request per 100 search results.

### Tips and advanced options

- **Turn off `fetchFullProfile`** when you only need name, number, status, address and SIC codes. It halves the request count.
- **Filter hard rather than paging deep.** The search index only returns the first 10,000 matches for any query. To sweep a large sector, split the work by incorporation date range or by narrower SIC code.
- **`requestIntervalMs` defaults to 550ms**, which keeps you inside the API's 600-requests-per-five-minutes limit. Only lower it if Companies House has raised your key's allowance.
- **Search matches registered names only**, not trading names. A company trading as "Bob's Solar" may be registered as something entirely different.
- **Schedule a daily run** with `incorporatedFrom` set to yesterday to get a feed of newly formed companies in your sector.

### FAQ and support

**Is this legal?** Yes. Companies House data is published under the [Open Government Licence v3.0](https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/), which expressly permits commercial reuse. This Actor accesses an official API with your own registered key — it does not scrape, and it breaches nobody's terms of service. Attribution: *Contains public sector information licensed under the Open Government Licence v3.0.*

**Does it return director or shareholder details?** No, deliberately. OGL v3.0 excludes personal data from its grant, so returning officers' names and correspondence addresses would move you from a permissive licence into UK GDPR obligations. This Actor returns company-level data only.

**Why do I need my own API key?** So your rate limit is yours alone. A shared key would mean every user throttling every other user.

**Why did my search return nothing?** Most often an over-narrow SIC code or date range, or a trading name rather than the registered name. Try widening one filter at a time.

**Does it cover Scotland and Northern Ireland?** Yes — the register covers the whole UK, and the `jurisdiction` field tells you which.

Found a bug or need a field that isn't here? Open an issue on the **Issues** tab and it will be looked at.

# Actor input Schema

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

Your own free Companies House API key. Register at https://developer.company-information.service.gov.uk/, create an application, and copy its REST API key. Using your own key means you get your own full rate limit rather than sharing one with other users.

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

Look up these specific company numbers directly. Include leading zeros exactly as Companies House writes them — 00000006, not 6. If you fill this in, the search filters below are ignored.

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

Find companies whose name contains this text. Leave the company numbers field empty to use search mode.

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

Only return companies with these statuses. Leave empty for all. Most lead-generation use cases want 'active' only.

## `companyType` (type: `array`):

Only return these company types. Leave empty for all.

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

Filter by Standard Industrial Classification code — the UK's industry classification. For example 62012 is business software development, 43210 is electrical installation. Full list: https://resources.companieshouse.gov.uk/sic/

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

Filter by the town, city or region in the registered office address, for example 'Manchester'.

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

Only companies incorporated on or after this date. Format YYYY-MM-DD. Useful for finding newly formed companies.

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

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

## `maxResults` (type: `integer`):

Stop after this many companies. Each company costs one search request plus, if full profiles are enabled, one more request.

## `fetchFullProfile` (type: `boolean`):

Make an extra request per company to get the complete profile — accounts due dates, confirmation statement dates, insolvency and charges flags, previous names. Turn this off to run roughly twice as fast when the search fields alone are enough.

## `requestIntervalMs` (type: `integer`):

Companies House allows 600 requests per five minutes, which is 2 per second. The default of 550ms stays safely under that. Lower it only if you know your key has a raised limit.

## `maxRetries` (type: `integer`):

How many times to retry a failed request before giving up on that company. Rate-limit responses are always retried after the delay Companies House asks for.

## Actor input object example

```json
{
  "companyNumbers": [
    "00000006",
    "01471587"
  ],
  "searchQuery": "solar",
  "companyStatus": [
    "active"
  ],
  "sicCodes": [
    "62012"
  ],
  "location": "London",
  "maxResults": 100,
  "fetchFullProfile": true,
  "requestIntervalMs": 550,
  "maxRetries": 5
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# 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 = {
    "sicCodes": [
        "62012"
    ],
    "location": "London"
};

// Run the Actor and wait for it to finish
const run = await client.actor("adv3ntur3/uk-companies-house").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 = {
    "sicCodes": ["62012"],
    "location": "London",
}

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

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

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

```

## CLI example

```bash
echo '{
  "sicCodes": [
    "62012"
  ],
  "location": "London"
}' |
apify call adv3ntur3/uk-companies-house --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,adv3ntur3/uk-companies-house"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Dz69AdD0619NzZA0k/builds/ICywjJz7f9VJ9wEcW/openapi.json
