# UK Companies House Scraper: New Companies & Company Data (`agentready/uk-companies-house-search`) Actor

Search the official UK Companies House register: new incorporations, companies by SIC code, location, name, status and type, or look up company numbers. Clean records with SIC descriptions and registered office; optional accounts, charges and insolvency details.

- **URL**: https://apify.com/agentready/uk-companies-house-search.md
- **Developed by:** [agentready](https://apify.com/agentready) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.12 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## UK Companies House Scraper: New Companies & Company Data

Search the **official UK Companies House register** and get clean, flat company records: **new incorporations**, companies by **industry (SIC code)**, **location**, name, status and type, or look up a list of **company numbers**. Every record includes SIC code descriptions and the registered office address; optionally add **accounts and confirmation-statement due dates, charges, insolvency history and previous names**.

**No API key needed.** The Actor uses the official Companies House API with its own key. You only pay per company returned.

### What you can do with it

- **Daily new-company leads:** every new IT company in Manchester, every new restaurant in London, every new construction firm in Scotland, delivered each morning.
- **Market sizing:** how many active companies are in an industry, by town.
- **KYB and enrichment:** look up thousands of company numbers and get status, incorporation date, industry and filing deadlines.
- **Distress signals:** companies in liquidation or administration, or with overdue accounts.
- **Feed an AI agent, CRM or spreadsheet** with one consistent format.

### Quick start

New software companies incorporated in the last 7 days:

```json
{
  "sicCodes": ["62"],
  "incorporatedWithinDays": 7
}
```

#### Daily feed of new companies in a town

Schedule this every morning. You only get, and only pay for, companies you haven't received before.

```json
{
  "sicCodes": ["56101", "56102"],
  "location": "Leeds",
  "incorporatedWithinDays": 3,
  "onlyNewCompanies": true,
  "monitoringList": "leeds-restaurants"
}
```

#### Look up company numbers with full details

```json
{
  "companyNumbers": ["00445790", "04256886"],
  "includeProfileDetails": true
}
```

### Step-by-step tutorial

[Get every new UK company in your industry each morning](https://dev.to/wballztrading1/get-every-new-uk-company-in-your-industry-each-morning-3o54): new software companies this week, then a daily lead feed (with a real example record).

### Input

| Field | What it does |
| --- | --- |
| `sicCodes` | SIC 2007 codes or prefixes: `62` covers 62011, 62012, 62020, 62030 and 62090. |
| `incorporatedWithinDays` | Only companies incorporated in the last N days. |
| `location` | Town, city or area in the registered office address. |
| `nameContains` / `nameExcludes` | Filter on the company name. |
| `companyStatus` | Default `active`. Also `dissolved`, `liquidation`, `administration` and more. |
| `companyTypes` | e.g. `ltd`, `plc`, `llp`. |
| `incorporatedFrom` / `incorporatedTo`, `dissolvedFrom` / `dissolvedTo` | Date ranges. |
| `companyNumbers` | Look up these companies instead of searching (up to 5,000 per run). |
| `includeProfileDetails` | Add accounts, confirmation statement, charges, insolvency and previous names (slower: one extra request per company). |
| `onlyNewCompanies` / `monitoringList` | Output only companies not returned in earlier runs under the same list name. |
| `maxResults` | Default 1,000; `0` means up to 100,000. |

Big searches are read in incorporation-date ranges automatically, so you can collect more than the 10,000 results a single Companies House search allows.

### Output

One record per company, always with the same fields. Missing values are `null`.

```json
{
  "id": "gb-ch:15123456",
  "companyNumber": "15123456",
  "companyName": "EXAMPLE SOFTWARE LTD",
  "status": "active",
  "statusLabel": "Active",
  "statusDetail": null,
  "companyType": "ltd",
  "companyTypeLabel": "Private limited company",
  "companySubtype": null,
  "jurisdiction": "England/Wales",
  "incorporatedOn": "2026-09-01",
  "dissolvedOn": null,
  "sicCodes": ["62012", "62020"],
  "sicDescriptions": ["Business and domestic software development", "Information technology consultancy activities"],
  "registeredOffice": { "premises": "1", "addressLine1": "Example Street", "locality": "London", "postalCode": "EC1A 1AA", "country": "England", "...": "..." },
  "registeredOfficeText": "1 Example Street, London, EC1A 1AA, England",
  "hasCharges": false,
  "hasInsolvencyHistory": false,
  "accountsNextDue": "2028-06-01",
  "accountsLastMadeUpTo": null,
  "accountsOverdue": false,
  "confirmationStatementNextDue": "2027-09-14",
  "confirmationStatementOverdue": false,
  "previousNames": [],
  "detailLevel": "profile",
  "url": "https://find-and-update.company-information.service.gov.uk/company/15123456",
  "scrapedAt": "2026-10-03T12:00:00Z"
}
```

(Example values; real records come from the register.)

- `detailLevel` is `search` for search results and `profile` when profile details were added or numbers were looked up. Profile-only fields are `null` at the `search` level.
- `sicCodes` are strings: keep the leading zeros.

Each run also saves a **`RUN_SUMMARY`** record: the search parameters sent to Companies House, how many companies matched, how many were output or skipped as already seen, numbers not found, and API usage.

### Personal data

This Actor returns **company** data only. It does not read directors, secretaries or people with significant control, so no personal details about individuals are output. The registered office is the company's official address as published on the public register.

### Using it from an AI agent (MCP)

Works as a tool in Claude, Cursor and other MCP clients through [Apify's MCP server](https://mcp.apify.com). For example: *"Use UK Companies House to list new cyber-security companies registered in Bristol this month."*

### Pricing

You pay **per company returned**, the same with or without profile details, with no monthly fee and no API key. Set a **maximum charge** on any run and the Actor stops cleanly when it's reached.

### Good to know

- Companies House allows a set number of requests per minute, so profile details and company-number lookups run at about 100 companies a minute; searches without profile details are much faster (up to 5,000 companies per request). For very large or frequent jobs you can add your own free key in `apiKey`.
- New companies appear in search a day or so after incorporation.
- The register has no emails, phone numbers or websites.

### Data source and licence

Data comes from the [Companies House Public Data API](https://developer.company-information.service.gov.uk/). Contains public sector information licensed under the [Open Government Licence v3.0](https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/). SIC descriptions come from Companies House's published code lists. This Actor is not affiliated with or endorsed by Companies House.

### Support

Found a problem or want a field added? Open an issue on the Actor's **Issues** tab.

# Actor input Schema

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

UK SIC 2007 codes or prefixes. '62' covers all IT and software codes (62011, 62012, 62020, 62030, 62090); '62020' is one exact code.

## `incorporatedWithinDays` (type: `integer`):

Only companies incorporated in the last N days. Great for daily feeds of new companies. 0 means any date.

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

Town, city, county or postcode area in the registered office address, e.g. 'Manchester' or 'Leeds'.

## `nameContains` (type: `string`):

Only companies whose name contains this text, e.g. 'solar'.

## `nameExcludes` (type: `string`):

Drop companies whose name contains this text, e.g. 'holdings'.

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

Default: active companies only. Remove all to include every status.

## `companyTypes` (type: `array`):

For example 'ltd' (private limited), 'plc', 'llp'. Leave empty for all types.

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

Earliest incorporation date (YYYY-MM-DD).

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

Latest incorporation date (YYYY-MM-DD).

## `dissolvedFrom` (type: `string`):

Find companies dissolved on or after this date (set 'Company status' to dissolved).

## `dissolvedTo` (type: `string`):

Find companies dissolved on or before this date.

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

Instead of searching, return these companies with full details, e.g. 00445790 or SC123456. Up to 5,000 per run. Search filters are ignored when this is set.

## `includeProfileDetails` (type: `boolean`):

Adds next accounts and confirmation statement due dates, overdue flags, charges, insolvency history and previous names. Needs one extra request per company, so runs are slower (about 100 companies a minute).

## `onlyNewCompanies` (type: `boolean`):

Remember which companies you already received and output only new ones. Ideal for scheduled runs; you are only charged for new companies.

## `monitoringList` (type: `string`):

Keeps separate 'already seen' lists for different searches (letters, numbers, '-' and '\_').

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

Stop after this many companies. 0 means up to 100,000. You can also cap cost with the run's maximum charge.

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

Not needed. For very large or frequent jobs you can use your own free key from developer.company-information.service.gov.uk so you get your own rate limit.

## Actor input object example

```json
{
  "sicCodes": [
    "62"
  ],
  "incorporatedWithinDays": 7,
  "companyStatus": [
    "active"
  ],
  "includeProfileDetails": false,
  "onlyNewCompanies": false,
  "monitoringList": "default",
  "maxResults": 100
}
```

# Actor output Schema

## `companies` (type: `string`):

Every company returned by this run, one record per company.

## `runSummary` (type: `string`):

Search parameters, matching count, companies output, numbers not found and API usage.

# 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": [
        "62"
    ],
    "incorporatedWithinDays": 7,
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("agentready/uk-companies-house-search").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": ["62"],
    "incorporatedWithinDays": 7,
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("agentready/uk-companies-house-search").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": [
    "62"
  ],
  "incorporatedWithinDays": 7,
  "maxResults": 100
}' |
apify call agentready/uk-companies-house-search --silent --output-dataset

```

## MCP server setup

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

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/gTWlcdlxOjzo5FUbv/builds/7ItviQ1ohHU4wpd1K/openapi.json
