# UK New Company Leads - Companies House Daily (`scrapersdelight/companies-house-incorporations-scraper`) Actor

From $0.30 per 1,000 companies, no start fee. Every UK company incorporated in your date window: name, number, SIC codes, type, registered office address and postcode. Filter by SIC code, type, status and location. Official Companies House data, no API key. ~3,400 new companies every working day.

- **URL**: https://apify.com/scrapersdelight/companies-house-incorporations-scraper.md
- **Developed by:** [Scrapers Delight](https://apify.com/scrapersdelight) (community)
- **Categories:** Lead generation, News
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.30 / 1,000 per company 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/actors/running/actors-in-store.md#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 New Company Leads — Companies House Daily Incorporations

Every company registered at **Companies House** in your date window: name, company number, SIC
codes, company type, registered office address and postcode — filtered by industry, type, status or
location.

About **3,400 new UK companies are incorporated every working day**. This is the list, the day it
happens.

Official Companies House data. **No API key.** No account.

***

### What one row looks like

A real row from the verified run:

```json
{
  "companyName": "LIL QUANTUM IDENTITY SYSTEMS LTD",
  "companyNumber": "17429170",
  "companyStatus": "active",
  "companyType": "ltd",
  "companySubtype": null,
  "incorporationDate": "2026-09-01",
  "registeredDate": "2026-09-01",
  "sicCodes": ["62012"],
  "sicCodeCount": 1,
  "registeredOfficeAddress": "45 Atlas Close West Malling England ME19 4PS",
  "postcode": "ME19 4PS",
  "companyUrl": "https://find-and-update.company-information.service.gov.uk/company/17429170"
}
```

| field | what it is |
|---|---|
| `companyName` | Full registered name — including names that contain a comma (see below) |
| `companyNumber` | The Companies House number, the stable key for any enrichment |
| `sicCodes` | **A real array** of SIC codes, not a mangled string. `sicCodeCount` alongside it |
| `registeredOfficeAddress` | The full registered office, intact |
| `postcode` | Extracted from the address — present on **100%** of rows in the verified run |
| `companyType` · `companySubtype` | `ltd`, `llp`, `plc`, `community-interest-company`, … |
| `incorporationDate` | The date that makes this a *new* company |
| `companyUrl` | Straight to its Companies House record |

### Who buys a list of brand-new companies

A company incorporated this week needs a bank account, an accountant, insurance, a domain, a
website, software and an office. Filter by `sicCodes` to get only the industries you sell to, and by
`registeredOfficeAddress` to get only your patch.

### Why this is one request per day

Companies House caps **any** results download at **5,000 rows** — and gives no signal when it has
truncated. Asking for a whole week in one query returns exactly 5,000 rows and looks like a complete
answer.

So this Actor always slices **one request per day**. Measured on the verified run: 1–3 September
returned **8,979 companies** (3,466 + 2,987 + 2,526). The same window as a single query would have
returned 5,000 — silently missing 3,979 companies.

If a single day ever does hit the 5,000 cap, that day is listed under `truncatedDays` in the run
summary with a note telling you to narrow it by SIC code, type or location. **It is never hidden.**

### The CSV the source serves is malformed — this handles it

Companies House serves this data as CSV with **three unquoted variable-width fields**. Measured on
one real day of 3,466 companies:

- **35% of rows** are wider than the 11-column header, because `nature_of_business` is rendered as a
  bare bracketed list — `[85590, 85600, 88990, 94990]` — which splits across CSV columns
- **246 rows** carry commas inside the registered office address
- **8 rows** have a comma in the *company name* — "CALEDONIAN WEDDINGS, TOURS & TRANSFERS LTD"

Read naively, a third of every lead list gets a SIC-code fragment where the address should be, and
the comma-named companies end up with half their name filed as the company number. Neither throws an
error; both just produce a list that looks fine and is wrong.

This Actor anchors on the company number and reassembles all three fields, and every release is
checked against a captured real day before it ships.

### Pricing

Pay per event: **$0.0003 per company returned**, and **no run-start fee**.

- One day of UK incorporations (~3,400 companies): about **$1.00**
- A full month (~70,000 companies): about **$21**
- Filtered to one industry, a month is usually a few hundred rows — **cents**

Companies excluded by your filters are never delivered and never charged, and a run that finds
nothing costs nothing.

### Source

Data comes from the Companies House advanced search on
`find-and-update.company-information.service.gov.uk`, the public service anyone can use in a browser,
and is Crown copyright published under the Open Government Licence. This Actor reads the same public
results the website shows. Company registration data is public by statute; how you use it for
outreach is still your responsibility under UK GDPR and PECR.

# Actor input Schema

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

First incorporation date to include (YYYY-MM-DD).

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

Last incorporation date to include (YYYY-MM-DD), inclusive.

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

Filter to specific industries by SIC code, for example 62012 (business software), 43210 (electrical installation), 96020 (hairdressing). Leave empty for every industry.

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

Filter by Companies House type, for example ltd, llp, plc, private-limited-guarant-nsc. Leave empty for all.

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

Filter by status, for example active or dissolved. Leave empty for all.

## `companyNameIncludes` (type: `string`):

Only companies whose name contains this text.

## `registeredOfficeAddress` (type: `string`):

Filter by registered office text - a town, county or postcode area such as Manchester or SW1.

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

Cap on companies delivered - and charged. 0 means no cap.

## `proxyConfiguration` (type: `object`):

Apify Proxy. Datacenter is sufficient.

## Actor input object example

```json
{
  "incorporatedFrom": "2026-09-01",
  "incorporatedTo": "2026-09-01",
  "sicCodes": [],
  "companyType": [],
  "companyStatus": [],
  "maxCompanies": 5000,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `items` (type: `string`):

One row per company incorporated in your window: name, number, status, type, SIC codes, registered office address, postcode and its Companies House URL.

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

RUN\_SUMMARY: companies returned per day, and any day that hit the Companies House 5,000-row download cap and is therefore incomplete.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapersdelight/companies-house-incorporations-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("scrapersdelight/companies-house-incorporations-scraper").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 '{}' |
apify call scrapersdelight/companies-house-incorporations-scraper --silent --output-dataset

```

## MCP server setup

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

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/dPpHODYuPvP8gkvVz/builds/2QvGIDYMKDkOdNHIb/openapi.json
