# UK New Companies Feed from Companies House (`wellbuilt_zythem/uk-new-companies`) Actor

Companies incorporated in the UK, day by day, from the official Companies House register: number, name, type, status, incorporation date, registered office, postcode, SIC codes with descriptions and, optionally, the directors. Delta mode delivers only what is new since your last run. No API key.

- **URL**: https://apify.com/wellbuilt_zythem/uk-new-companies.md
- **Developed by:** [Carlos Escanez](https://apify.com/wellbuilt_zythem) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.70 / 1,000 uk new companies feed from companies houses

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 New Companies Feed from Companies House

Every company incorporated in the United Kingdom, day by day, read from the official Companies House register: number, name, type, status, incorporation date, registered office with postcode, SIC codes **with their descriptions** and, if you ask for them, the **directors and secretaries** with appointment date, month and year of birth, nationality and country of residence. Filter by activity (SIC), company type, town or postcode. Turn on **only companies new since the last run** and schedule it daily to get a feed. No API key, no login.

A weekday brings about 3,500 new companies (3,519 on Tuesday 13 October 2026, measured). Companies House does not incorporate at weekends.

### What you get

One row per company:

| Field | Example | Filled (measured on 3,519 rows) |
|---|---|---|
| `companyNumber` | `17515975` | 100 % |
| `companyName` | `GAMBLE & MANNS LTD` | 100 % |
| `companyType` | `Private limited company` | 100 % |
| `status` | `Active` | 100 % |
| `incorporationDate`, `daysSinceIncorporation` | `2026-10-13`, `1` | 100 % |
| `address` | `5 Cranwell Close, Bransgore, Christchurch, England BH23 8HY` | 100 % |
| `postcode`, `postcodeDistrict`, `postcodeArea` | `BH23 8HY`, `BH23`, `BH` | 98 % |
| `sicCodes` | `["68100"]` | 100 % |
| `sicDescriptions` | `["Buying and selling of own real estate"]` | 100 % |
| `url` | the company's page on the register | 100 % |

With **Include directors and secretaries** on, each row adds `officerCount` and `officers`, one entry per person (measured on 88 officers of 60 new companies):

| Officer field | Example | Filled |
|---|---|---|
| `name` | `GAMBLE, Deborah Anne` | 100 % |
| `role`, `status` | `Director`, `Active` | 100 % |
| `appointedOn` | `2026-10-13` | 100 % |
| `dateOfBirth` (month and year, as the register publishes it) | `1975-02` | 94 % (secretaries have none) |
| `nationality`, `countryOfResidence` | `British`, `England` | 94 % |
| `address` (correspondence address) | `5 Cranwell Close, ... BH23 8HY` | 100 % |

The run summary (key-value store, `RUN_SUMMARY`) tells you, per day and SIC code, how many companies the register announced, how many were read and how many delivered.

#### What Companies House does not publish, so this Actor does not promise

- **Phone, email or website.** The register holds none of them. For UK lead lists with a phone you need another source; this Actor gives you the legal record on the day it is created.
- **Officer occupation.** The public officers page no longer shows it (0 of 88 measured).
- **Persons with significant control** (shareholders): not in this version.

### Input

| Field | What it does |
|---|---|
| **Incorporated from / to** | Dates like `2026-10-13`. Empty: the last three days up to today, so a Monday run is never empty. Up to 31 days per run. |
| **SIC codes** | Five-digit activity codes, one per line (`68100` real estate, `62012` software, `56101` restaurants). Each code is one query to the register. |
| **Company types** | `ltd`, `plc`, `llp`, `limited-partnership`, `registered-overseas-entity`... Empty for all (96 % are `ltd`). |
| **Statuses** | `active` (default), `dissolved`, `liquidation`... |
| **Registered office contains** | A town or postcode start: `London`, `Manchester`, `SW1`. On 13 October 2026, `London` matched 1,034 of 3,522. |
| **Name includes / excludes** | Words in the company name. |
| **Include directors and secretaries** | One extra request per company. |
| **Max companies** | Cap for the run (default 1,000). |
| **Only companies new since the last run** | Feed mode, see below. |

```json
{
  "incorporatedFrom": "2026-10-13",
  "incorporatedTo": "2026-10-13",
  "sicCodes": ["62012", "62020"],
  "addressContains": "London",
  "includeOfficers": true,
  "maxCompanies": 500
}
```

### Feed mode: only new companies

Turn on **Only companies new since the last run** and schedule the Actor daily. Each run re-reads the last **Days to re-read** (default 3) so companies the register publishes late are still caught, remembers every company number delivered, and delivers only the ones not delivered before.

- The memory lives in the key-value store named in **State store name** (default `uk-new-companies-seen`). Use another name for a separate feed.
- **Forget delivered companies** starts from scratch.

### Speed and limits

- 20 companies per register page; a full weekday (178 pages) is read in about 70 seconds. Officers add about 0.7 seconds per company.
- The run stops 20 seconds before its timeout and delivers what it read, with a warning.
- The register accepts one SIC code per query; the Actor runs one query per code and removes duplicates, so a company with two of your codes is delivered once.
- No login, no proxies, no browser: the Actor reads the public advanced search of the register at a polite pace.

### Pricing

You pay per company delivered (`company` event) and, only when you ask for them, per company whose officers were read (`officers` event), plus the platform's start fee. Companies already delivered in feed mode are not charged again.

### Run summary

`RUN_SUMMARY` in the run's key-value store: dates and filters used, per day and SIC code the companies announced, read and delivered, the feed memory size, and whether the run was cut by time or by the charge limit.

# Actor input Schema

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

First incorporation date to include, like 2026-10-13. Empty: three days before "Incorporated to" (Companies House does not incorporate at weekends, so a single day can be empty).

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

Last incorporation date to include. Empty: today. A range can cover up to 31 days; a weekday brings about 3,500 companies.

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

Five-digit activity codes, one per line: 68100 (real estate), 62012 (software), 56101 (restaurants)... Empty for every activity. Each code is a separate query to the register.

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

Register codes, one per line: ltd, plc, llp, limited-partnership, private-limited-guarant-nsc, registered-overseas-entity... Empty for all types (about 96 % are ltd).

## `statuses` (type: `array`):

active (default), dissolved, liquidation, administration, receivership, voluntary-arrangement, insolvency-proceedings.

## `addressContains` (type: `string`):

Text the registered office address must contain: a town (London, Manchester) or a postcode start (SW1, M1).

## `nameIncludes` (type: `string`):

Word the company name must contain.

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

Word the company name must not contain.

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

Read each company's officers page: name, role, appointment date, month and year of birth, nationality, country of residence, occupation and correspondence address. One extra request per company; charged as the "officers" event.

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

Companies to deliver in this run, across all days and codes.

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

Remember the company numbers delivered and deliver only the ones not delivered before. Schedule the Actor daily to get a feed of incorporations.

## `lookbackDays` (type: `integer`):

With "Only new" on and no dates given, the run reads this many days back from today, so companies the register publishes late are still caught.

## `stateStoreName` (type: `string`):

Key-value store that keeps the delivered company numbers for "Only new". Use a different name to keep separate feeds.

## `resetState` (type: `boolean`):

Start "Only new" from scratch in this run.

## Actor input object example

```json
{
  "statuses": [
    "active"
  ],
  "includeOfficers": false,
  "maxCompanies": 200,
  "onlyNewCompanies": false,
  "lookbackDays": 3,
  "stateStoreName": "uk-new-companies-seen",
  "resetState": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `runSummary` (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 = {
    "statuses": [
        "active"
    ],
    "maxCompanies": 200
};

// Run the Actor and wait for it to finish
const run = await client.actor("wellbuilt_zythem/uk-new-companies").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 = {
    "statuses": ["active"],
    "maxCompanies": 200,
}

# Run the Actor and wait for it to finish
run = client.actor("wellbuilt_zythem/uk-new-companies").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 '{
  "statuses": [
    "active"
  ],
  "maxCompanies": 200
}' |
apify call wellbuilt_zythem/uk-new-companies --silent --output-dataset

```

## MCP server setup

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

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/JaSg4wudD18G59vsB/builds/cFH8hSRc1Zhqy0YjX/openapi.json
