# New UK Companies (Companies House) (`leadmagnet/uk-new-companies`) Actor

Newly incorporated UK companies from official Companies House data. Filter by date, SIC code or keyword, type, status, postcode and region. No API key, no personal names.

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

## Pricing

from $1.50 / 1,000 company results

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

## New UK Companies (Companies House): Fresh Incorporations by Industry, Postcode & Region

Get a list of **newly incorporated UK companies**, straight from the official **Companies House** register. Each row has the company name, company number, incorporation date, company type and status, **SIC codes with plain-English industry descriptions**, registered office address and postcode, **local authority, region and coordinates**, and a link to the company's Companies House page. You can also add each company's **first accounts and confirmation-statement due dates**.

Built for **accountants and bookkeepers, business banks, insurers, web design and marketing agencies, payroll/HR and B2B SaaS companies** who want to reach a business in its first weeks.

**No API key, no login, no proxies, no browser.** It uses Companies House's own public advanced-search export, so a typical run finishes in a few seconds.

### Why this Actor

| | This Actor |
|---|---|
| New incorporations in the last N days, or any date range | ✅ |
| Works **without** a Companies House API key | ✅ |
| Filter by **SIC code**, SIC prefix (e.g. `62` = all software/IT) **or plain keyword** (`dental`, `restaurant`, `construction`) | ✅ |
| Filter by company type, status, **postcode area/district**, **ONS region**, address text, name words | ✅ |
| SIC **descriptions** included, not just codes | ✅ |
| **Region, local authority, county, lat/long** for every company (free) | ✅ |
| Flags **formation-agent / virtual-office** addresses (e.g. 71-75 Shelton Street) so you can drop them | ✅ |
| Optional **first accounts due date + confirmation statement due date** (perfect for accountants) | ✅ |
| Skips dormant / non-trading shells by default | ✅ |
| **Monitor mode**: schedule it daily and get only companies you haven't received before | ✅ |
| Directors' / officers' / PSC personal names | ❌ never output (privacy by design) |

### Typical uses

- **Accountants:** `daysBack = 7`, `postcodes = ["LS", "BD", "HX"]`, `addFilingDeadlines = true`, `excludeFormationAgentAddresses = true`. Every new company must file accounts and a confirmation statement; you get the deadlines.
- **Web / marketing agencies:** `industryKeywords = ["restaurant", "hairdressing", "beauty"]`, `regions = ["North West"]`.
- **Business banking and insurance:** `companyTypes = ["ltd", "llp"]`, `sicCodes = ["41", "43"]` (construction), monitor mode on a daily schedule.
- **B2B SaaS:** `sicCodes = ["62", "63"]`, `regions = ["London"]` for brand-new tech companies.

### Input example

```json
{
  "daysBack": 7,
  "industryKeywords": ["dental"],
  "sicCodes": ["86230"],
  "companyTypes": ["ltd", "llp"],
  "companyStatus": "active",
  "regions": ["London", "South East"],
  "postcodes": [],
  "excludeFormationAgentAddresses": true,
  "addFilingDeadlines": true,
  "monitorMode": false,
  "maxResults": 500
}
```

Use `dateFrom` / `dateTo` (YYYY-MM-DD) for a fixed range instead of `daysBack`.

### Output example

```json
{
  "companyName": "FRANKQA LIMITED",
  "companyNumber": "17551843",
  "incorporationDate": "2026-10-29",
  "companyType": "Private limited company",
  "companyTypeCode": "ltd",
  "companyStatus": "active",
  "sicCodes": [
    "71129"
  ],
  "sicDescriptions": [
    "Other engineering activities"
  ],
  "industry": "Other engineering activities",
  "registeredOfficeAddress": "14 Green Lane Norwich United Kingdom NR12 7EL",
  "postcode": "NR12 7EL",
  "localAuthority": "Broadland",
  "region": "East of England",
  "country": "England",
  "latitude": 52.723062,
  "longitude": 1.35218,
  "likelyFormationAgentAddress": false,
  "sharedAddressCount": 1,
  "companiesHouseUrl": "https://find-and-update.company-information.service.gov.uk/company/17551843",
  "registeredOfficeAddressFull": "14 Green Lane, Norwich, United Kingdom, NR12 7EL",
  "accountsNextMadeUpTo": "2027-10-31",
  "accountsNextDue": "2028-07-29",
  "confirmationStatementNextDue": "2027-11-11"
}
```

The last four fields appear only when **Add filing deadlines** is on. Download results as CSV, Excel, JSON, or through the API.

### Pricing (pay per event)

- **Run start:** $0.005 per run
- **Company result:** $0.0015 per company ($1.50 per 1,000)
- **Filing deadlines + full address (optional):** $0.002 per company, only when `addFilingDeadlines` is on

Location data (region, local authority, coordinates) is included at no extra cost. Set a **maximum cost per run** in the run options and the Actor stops cleanly when it's reached.

### How it works

1. Queries the official Companies House advanced search CSV export day by day (or per SIC code), newest first. Searches that hit Companies House's 5,000-row export limit are split automatically by date and then by company type.
2. Filters by your criteria and adds SIC descriptions from the official Companies House SIC 2007 list.
3. Looks up each registered-office postcode in ONS open data (postcodes.io) for region, local authority and coordinates.
4. Optionally reads each company's public profile (or the official REST API if you give your own free Companies House API key) for filing deadlines.

About 2,500 to 4,000 UK companies are incorporated every working day.

### Data, privacy and compliance

- Data comes from the public Companies House register (Crown copyright, reused under the Open Government Licence) and ONS postcode data (OGL).
- **No personal names are output**: no directors, officers, secretaries or persons with significant control.
- **Important, one-person companies:** many new UK companies are run by one person, and their registered office is often a **home address** (for example "Flat 33 ..."). Under UK GDPR and PECR, details that identify a sole director can be personal data. If you use this data for marketing, you are the data controller: have a lawful basis (usually legitimate interests with a documented assessment), tell people where you got their details within one month, honour objections, screen calls against TPS/CTPS, and don't send unsolicited marketing emails or texts to sole traders or partnerships without consent. Get legal advice if you're unsure.
- The Actor does not scrape websites, phone numbers or emails, because Companies House doesn't hold them and guessing them raises privacy and accuracy problems.
- Requests to Companies House are rate-limited and sequential to respect the service.

### Limitations

- Companies House usually publishes new incorporations within about a day; today's list may still be filling up.
- The CSV export gives the registered office as one line without commas. Turn on `addFilingDeadlines` for the full comma-separated address.
- `likelyFormationAgentAddress` uses a list of well-known mass-registration addresses and, in day-by-day mode, a count of same-day companies at the same address. It's a heuristic.
- Region lookup can be empty for brand-new, overseas or mistyped postcodes.

### FAQ

**Do I need a Companies House API key?** No. It's optional and only used for the filing-deadline enrichment.

**How do I get only new companies every day?** Turn on `monitorMode`, set `daysBack` to 2 or 3, and schedule the Actor daily. Use a different `monitorStoreName` for each saved search.

**Can I search by SIC section?** Yes. Enter a prefix like `56` (food and drink service) or `4321` (electrical installation) and every matching 5-digit code is included.

# Actor input Schema

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

Companies incorporated in the last N days, including today (1-3650). Companies House publishes new incorporations within about a day. Ignored if 'From date' is set.

## `dateFrom` (type: `string`):

Incorporated on or after this date (YYYY-MM-DD). Overrides 'last N days'.

## `dateTo` (type: `string`):

Incorporated on or before this date (YYYY-MM-DD). Defaults to today.

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

5-digit UK SIC 2007 codes (e.g. 62012 software, 56101 restaurants, 86230 dental). Shorter prefixes expand to every matching code (e.g. '62' = all IT/software, '4321' = electrical installation). Leave empty for all industries.

## `industryKeywords` (type: `array`):

Matched against official SIC code descriptions (e.g. 'restaurant', 'dental', 'software', 'construction', 'hairdressing'). Combined with SIC codes above.

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

Skip companies whose only SIC code is 99999 (dormant) or 74990 (non-trading).

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

Leave empty for all types.

## `companyStatus` (type: `string`):

Active is best for leads. Choose Any to include every status.

## `postcodes` (type: `array`):

Registered office postcode filter. Area ('M', 'LS', 'SW'), district ('SW1A', 'M1') or full/partial postcode ('EC2A 4'). 'M' matches Manchester only, not 'ME'.

## `regions` (type: `array`):

ONS region / nation of the registered office (looked up from the postcode).

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

Case-insensitive text the registered office address must contain, e.g. a town ('Bristol').

## `nameIncludes` (type: `array`):

E.g. 'consulting', 'dental', 'property'.

## `nameExcludes` (type: `array`):

E.g. 'holdings', 'property'.

## `excludeFormationAgentAddresses` (type: `boolean`):

Skip companies registered at well-known mass-registration addresses (e.g. 71-75 Shelton Street, 128 City Road) or at an address shared by 10+ companies incorporated the same day. Every row is flagged either way.

## `addLocation` (type: `boolean`):

Free lookup of the registered-office postcode in ONS open data (postcodes.io). No extra charge.

## `addFilingDeadlines` (type: `boolean`):

Fetches each company's public profile: first accounts made-up-to and due date, confirmation statement due date, full comma-separated registered office. Great for accountants. Charged as an extra 'company details' event per company and slower (~0.5 s per company).

## `companiesHouseApiKey` (type: `string`):

Not required. If you have a free Companies House REST API key, filing deadlines are fetched from the official API (also adds 'hasCharges').

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

Stop after this many companies (newest first).

## `monitorMode` (type: `boolean`):

Remembers company numbers delivered in previous runs (in a named key-value store) and only returns new ones. Schedule daily with 'last 2 days' for a fresh lead feed.

## `monitorStoreName` (type: `string`):

Use a different name per saved search so monitors don't share history.

## Actor input object example

```json
{
  "daysBack": 7,
  "sicCodes": [],
  "excludeDormant": true,
  "companyTypes": [
    "ltd",
    "llp",
    "plc",
    "private-limited-guarant-nsc"
  ],
  "companyStatus": "active",
  "excludeFormationAgentAddresses": false,
  "addLocation": true,
  "addFilingDeadlines": false,
  "maxResults": 100,
  "monitorMode": false,
  "monitorStoreName": "uk-new-companies-monitor"
}
```

# Actor output Schema

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

One item per newly incorporated company: name, number, incorporation date, type, status, SIC codes and descriptions, registered office, postcode, region, Companies House link.

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

Date range, SIC codes used, rows scanned and saved.

# 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 = {
    "daysBack": 7,
    "sicCodes": [],
    "companyTypes": [
        "ltd",
        "llp",
        "plc",
        "private-limited-guarant-nsc"
    ],
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("leadmagnet/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 = {
    "daysBack": 7,
    "sicCodes": [],
    "companyTypes": [
        "ltd",
        "llp",
        "plc",
        "private-limited-guarant-nsc",
    ],
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("leadmagnet/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 '{
  "daysBack": 7,
  "sicCodes": [],
  "companyTypes": [
    "ltd",
    "llp",
    "plc",
    "private-limited-guarant-nsc"
  ],
  "maxResults": 100
}' |
apify call leadmagnet/uk-new-companies --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,leadmagnet/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/vdnzktezJcZDjPOU0/builds/PJTnsLr5TG4NAcM07/openapi.json
