# UK New Companies Feed: Companies House Incorporations (`moment-data/uk-new-companies-feed`) Actor

Daily feed of new UK company incorporations and dissolutions from the official Companies House register. SIC codes + descriptions, sector, registered office postcode, company type. Filter by SIC, postcode, keyword; 'new since last run' mode. No API key.

- **URL**: https://apify.com/moment-data/uk-new-companies-feed.md
- **Developed by:** [Luke Miller](https://apify.com/moment-data) (community)
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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?

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 — Companies House incorporations & dissolutions

Get **every new UK company registered yesterday** (and every company dissolved) straight from the official **Companies House** register — with SIC codes, plain-English nature of business, sector, company type, registered office postcode and a link to the Companies House page. No API key, no login, no Companies House developer account.

Run it once for a quick list, or schedule it daily with **New since last run** mode to get only companies you have not seen before.

### Who it's for

- **B2B sales & lead generation** — accountants, banks, insurers, payroll, web designers, POS/payments, telecoms and office suppliers who sell to brand-new businesses.
- **Local market watchers** — new restaurants, bars, gyms, builders or agencies in a postcode area (e.g. `M`, `EC1`, `BS`, `G`).
- **Credit, risk & KYC teams** — track dissolutions / strike-offs of suppliers and customers.
- **Researchers & journalists** — daily company formation and dissolution counts by sector and region.

### What you get

| Field | Example |
|---|---|
| `eventType` | `newIncorporation` or `dissolution` |
| `eventDate` | `2026-10-30` |
| `companyName` / `companyNumber` | `BUILDERS READY LTD` / `17551960` |
| `companyType` / `companyTypeLabel` | `ltd` / `Private limited company` |
| `companyStatus` | `active`, `dissolved` |
| `incorporationDate` / `dissolutionDate` / `companyAgeDays` | age at dissolution in days |
| `sicCodes` / `sicDescriptions` / `sicSections` / `sectorName` | `62012` / `Business and domestic software development` / `J` / `Information and communication` |
| `dormant` | `true` if SIC 99999 |
| `registeredOfficeAddress`, `postcode`, `postcodeDistrict`, `postcodeArea` | `66 Paul Street London United Kingdom EC2A 4NA`, `EC2A 4NA`, `EC2A`, `EC` |
| `jurisdiction` | `England and Wales`, `Scotland`, `Northern Ireland` |
| `companyUrl` | link to the company on Find and update company information |
| `source`, `retrievedAt` | provenance |

A run summary (rows read per day, filters, requests, notes) is saved as the `OUTPUT` record in the key-value store.

### Data source

| Source | Coverage | Update | Licence |
|---|---|---|---|
| [Companies House — Find and update company information](https://find-and-update.company-information.service.gov.uk/advanced-search) (advanced company search CSV export) | All UK registered companies, LLPs, LPs, CIOs, overseas entities | Daily (around 2,000–4,000 new incorporations per weekday) | Contains public sector information licensed under the [Open Government Licence v3.0](https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/) |

The Actor makes one polite request per day per event type (big Tuesday strike-off batches are split automatically to stay under the 5,000-row export limit), with a descriptive User-Agent and spacing between requests. Not affiliated with or endorsed by Companies House.

**Privacy:** company-level data only. Officers, persons with significant control and other personal data are never requested. Flat/apartment/room numbers are removed from addresses, and companies named only after a person (e.g. "JOHN SMITH LTD") are skipped by default.

### Quick start

- **Default (`{}`)**: up to 30 of yesterday's new incorporations and dissolutions, mixed. If yesterday was a weekend or bank holiday with no data, the latest earlier day is used.
- **New restaurants and bars in Manchester, last 7 days**:

```json
{ "eventTypes": ["newIncorporations"], "daysBack": 7, "sicPrefixes": ["561", "563"], "postcodePrefixes": ["M"], "maxItems": 500 }
```

- **Daily schedule — new tech companies in London, only ones not seen before**:

```json
{ "mode": "sinceLastRun", "eventTypes": ["newIncorporations"], "sicSections": ["J"], "postcodePrefixes": ["EC", "WC", "E", "N", "SE", "SW", "W", "NW"], "maxItems": 2000, "stateKey": "london-tech" }
```

- **Construction firms dissolved this week (credit watch)**:

```json
{ "eventTypes": ["dissolutions"], "daysBack": 7, "sicSections": ["F"], "maxItems": 5000 }
```

### Input

| Field | Default | Description |
|---|---|---|
| `mode` | `window` | `window` = last N days; `sinceLastRun` = only companies not delivered before for this `stateKey` (re-checks last 3 days) |
| `eventTypes` | both | `newIncorporations`, `dissolutions` |
| `daysBack` | 1 (3 in sinceLastRun) | 1–31 days ending yesterday (UTC) or `date` |
| `date` | yesterday | Window end date `YYYY-MM-DD` for backfills |
| `sicPrefixes` | – | SIC 2007 code prefixes, e.g. `62`, `56101`, `4120` |
| `sicSections` | – | SIC section letters A–U |
| `postcodePrefixes` | – | Postcode area/district; letters-only prefixes match whole areas (`M` ≠ `ML`) |
| `keywords` / `excludeKeywords` | – | Name / nature-of-business keyword filters |
| `companyTypes` | all | e.g. `ltd`, `plc`, `llp`, `limited-partnership`, `charitable-incorporated-organisation` |
| `excludeDormant` | `true` | Skip SIC 99999 dormant companies |
| `includePersonNamedCompanies` | `false` | Include companies named only after a person |
| `maxItems` | 30 | Cap per run (also caps spend) |
| `stateKey` | `default` | Saved-state name for `sinceLastRun` |

### Sample output

```json
{
  "eventType": "newIncorporation",
  "eventDate": "2026-10-30",
  "companyName": "BUILDERS READY LTD",
  "companyNumber": "17551960",
  "companyStatus": "active",
  "companyType": "ltd",
  "companyTypeLabel": "Private limited company",
  "incorporationDate": "2026-10-30",
  "sicCodes": ["58290", "62012", "63120"],
  "sicDescriptions": ["Other software publishing", "Business and domestic software development", "Web portals"],
  "sicSections": ["J"],
  "sectorName": "Information and communication",
  "dormant": false,
  "registeredOfficeAddress": "66 Paul Street London United Kingdom EC2A 4NA",
  "postcode": "EC2A 4NA",
  "postcodeDistrict": "EC2A",
  "postcodeArea": "EC",
  "jurisdiction": "England and Wales",
  "companyUrl": "https://find-and-update.company-information.service.gov.uk/company/17551960"
}
```

### Pricing

Pay only for what you get (pay-per-event):

| Event | Price |
|---|---|
| Actor start | $0.005 per run |
| Company record | $0.003 per company event delivered |

Example: the default run (30 records) costs about **$0.095**. A daily filtered watch returning ~5 companies costs about **$0.60 per month**. Set a maximum cost per run and the Actor stops before exceeding it.

### Tips & FAQ

- **How fresh is it?** Companies House publishes incorporations the same day; run after midnight UK time for yesterday's full list.
- **Why fewer records on Saturdays?** Fewer incorporations are registered at weekends; dissolutions are published in batches (Tuesdays are largest).
- **Directors / contact details?** Not included — this feed is company-level only by design.
- **Need the whole day?** Set `maxItems` high (e.g. 5000) — a weekday is typically 2,000–4,000 incorporations.

# Actor input Schema

## `mode` (type: `string`):

window (default): companies incorporated / dissolved in the last N days ending yesterday (UTC). sinceLastRun: only companies not delivered before for this State key (re-checks the last 3 days by default).

## `eventTypes` (type: `array`):

Which register events to return.

## `daysBack` (type: `integer`):

Number of days in the window, ending yesterday or at Date (default 1; 3 in sinceLastRun). Roughly 2,000-4,000 new incorporations per weekday.

## `date` (type: `string`):

YYYY-MM-DD. Last day of the window, for backfills. Default: yesterday (UTC).

## `sicPrefixes` (type: `array`):

Keep companies with any SIC 2007 code starting with these digits, e.g. "62" (IT), "56101" (restaurants), "4120" (construction of buildings).

## `sicSections` (type: `array`):

SIC 2007 section letters A-U, e.g. F (construction), I (accommodation & food), J (information & communication), M (professional services), Q (health).

## `postcodePrefixes` (type: `array`):

Registered-office postcode area or district, e.g. "M" (Manchester), "EC1", "BS", "G". A letters-only prefix matches the whole area ("M" does not match "ML").

## `keywords` (type: `array`):

Keep companies whose name or SIC description contains any of these words (case-insensitive).

## `excludeKeywords` (type: `array`):

Drop companies whose name contains any of these words, e.g. "HOLDINGS", "PROPERTY".

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

Restrict to these Companies House company types (default: all).

## `excludeDormant` (type: `boolean`):

Skip companies whose SIC code is 99999 'Dormant company'.

## `includePersonNamedCompanies` (type: `boolean`):

By default companies named only after a person (e.g. "JOHN SMITH LTD") are skipped as a privacy screen. Set true to include them.

## `maxItems` (type: `integer`):

Cap per run (also caps your spend). Default 30.

## `stateKey` (type: `string`):

Name of the saved state. Use a different key for each saved search.

## Actor input object example

```json
{
  "mode": "window",
  "eventTypes": [
    "newIncorporations",
    "dissolutions"
  ],
  "excludeDormant": true,
  "includePersonNamedCompanies": false,
  "maxItems": 30,
  "stateKey": "default"
}
```

# Actor output Schema

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

One record per company event.

## `summary` (type: `string`):

Window, rows read per day, filters, requests, errors and notes.

# 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("moment-data/uk-new-companies-feed").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("moment-data/uk-new-companies-feed").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 moment-data/uk-new-companies-feed --silent --output-dataset

```

## MCP server setup

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

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/27To2SHQ87l0AdK8h/builds/AZC9f54dFBVhJJGZy/openapi.json
