# UK Companies House New Companies Scraper & Monitor (`vocal_rhapsody/companies-house-new-companies`) Actor

Daily feed of newly incorporated UK companies from the official Companies House API. Filter by SIC code, location, company type and keywords; get only companies new since your last run. Bring your own free Companies House API key.

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

## Pricing

from $3.00 / 1,000 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

## UK Companies House New Companies Scraper & Monitor

Get a daily list of newly incorporated UK companies from the official Companies House API as JSON, CSV or Excel, and receive only the companies that are new since your last run. Built for B2B sales and marketing teams selling to new UK businesses: accountants, banks, insurers, web agencies and SaaS vendors. You bring your own free Companies House API key.

### Why this Actor

- **Official source.** It calls the public Companies House API (`api.company-information.service.gov.uk`, advanced company search). No page scraping, no login, no CAPTCHA.
- **Built for a daily "new companies" monitor.** The Actor remembers which companies it already returned, separately for every distinct filter combination. Put it on an Apify Schedule and each run returns only what is new.
- **Filters that match how you prospect.** SIC code (prefix match, for example `62` for IT services), registered office location (town or postcode district), company type, status and name keywords.
- **Company data only.** No officers, persons with significant control or other personal data is requested or returned.
- **Polite and bounded.** At most 2 requests per second, automatic backoff on rate limits, and a `maxItems` cap so a run costs what you expect.

### What data you get

One flat item per company. Dates are ISO 8601. Fields the source leaves empty are `null` (SIC codes are an empty list).

| Field | Meaning |
|---|---|
| `companyNumber`, `companyName` | Companies House number and registered name |
| `companyStatus`, `companyType` | Status (for example `active`) and type code (`ltd`, `llp`, `plc`...) |
| `incorporationDate` | Date of incorporation, `YYYY-MM-DD` |
| `sicCodes` | SIC 2007 codes declared by the company (list; may be empty for very new companies) |
| `registeredAddressLine1`, `registeredAddressLine2`, `registeredAddressLocality`, `registeredAddressRegion`, `registeredAddressPostalCode`, `registeredAddressCountry` | Registered office address |
| `url`, `sourceUrl` | Company page on Companies House, and the API endpoint used |
| `scrapedAt` | Run timestamp |

### How to use

1. Register a free application at the Companies House developer hub, create a REST API key, and paste it into **Companies House API key**.
2. Set your filters, for example SIC `62` and location `London`. The form is prefilled with SIC `62`, 7 days and `maxItems` 10 for a small test run. Click **Start**.
3. Save the input as a task, switch on **Only new since last run**, and put it on an Apify Schedule. Each later run returns only companies not seen before. Send results to Google Sheets, your CRM or a webhook with Apify integrations.

Example input:

```json
{
  "apiKey": "YOUR_COMPANIES_HOUSE_KEY",
  "sicCodes": ["62"],
  "locations": ["London"],
  "companyTypes": ["ltd"],
  "lookbackDays": 7,
  "onlyNew": true,
  "maxItems": 100
}
```

### Output example

Real output (live Companies House API, 22 October 2026):

```json
[
  {
    "companyNumber": "17536537",
    "companyName": "MVR RENOVATIONS LTD",
    "companyStatus": "active",
    "companyType": "ltd",
    "incorporationDate": "2026-10-22",
    "sicCodes": [
      "62090",
      "82110"
    ],
    "registeredAddressLine1": "Flat 175, 1 Tennyson Apartments Saffron Central Square",
    "registeredAddressLine2": null,
    "registeredAddressLocality": "Croydon",
    "registeredAddressRegion": null,
    "registeredAddressPostalCode": "CR0 2FY",
    "registeredAddressCountry": "United Kingdom",
    "url": "https://find-and-update.company-information.service.gov.uk/company/17536537",
    "sourceUrl": "https://api.company-information.service.gov.uk/advanced-search/companies",
    "scrapedAt": "2026-10-22T16:57:03.451Z"
  },
  {
    "companyNumber": "17535942",
    "companyName": "CLOTHO3D LTD",
    "companyStatus": "active",
    "companyType": "ltd",
    "incorporationDate": "2026-10-22",
    "sicCodes": [
      "62012",
      "71122"
    ],
    "registeredAddressLine1": "66 Paul Street",
    "registeredAddressLine2": null,
    "registeredAddressLocality": "London",
    "registeredAddressRegion": "England",
    "registeredAddressPostalCode": "EC2A 4NA",
    "registeredAddressCountry": "United Kingdom",
    "url": "https://find-and-update.company-information.service.gov.uk/company/17535942",
    "sourceUrl": "https://api.company-information.service.gov.uk/advanced-search/companies",
    "scrapedAt": "2026-10-22T16:57:03.451Z"
  }
]
```

### Ready-made tasks

Start from a pre-filled search, then adjust the filters:

- [New UK Tech Companies (SIC 62)](https://console.apify.com/create-task-from-example/7NbaQ4GvLakU4OWjA)
- [New London Companies](https://console.apify.com/create-task-from-example/19qQk20NEelgd7wyw)
- [New UK Restaurants, Cafés & Takeaways (SIC 56)](https://console.apify.com/create-task-from-example/bqApi3LyVEvfxam6c)
- [New UK Property & Real Estate Companies (SIC 68)](https://console.apify.com/create-task-from-example/v8HUUdcYe04IKma4Z)

For a daily feed, turn on **Only new since last run** and add a schedule.

### Pricing

Pay per result: you are charged for each company pushed to the dataset. Set `maxItems` to cap a run. The Companies House API itself is free; you only need your own key.

### Use cases

- Accountants and bookkeepers reaching new limited companies in their area.
- Banks and fintechs prospecting business accounts for new businesses.
- Insurers and brokers finding new companies that need cover.
- Web agencies and SaaS vendors targeting new companies in a sector, by SIC code.
- Market researchers tracking company formation by sector and region.

### FAQ

**How fresh is the data?** It is as current as the Companies House API. Schedule a daily run with "Only new" on.

**Why are there fewer results than I expected?** Filters apply together. SIC prefixes and location text are also re-checked after download. Newly registered companies sometimes have no SIC code yet, and SIC filtering excludes them.

**Is there a limit on very large days?** The API limits how deep one query can page. The Actor splits the date range by day to stay within it; if a single day still exceeds it, the run log warns you and you should add SIC, type or location filters.

**Is this legal?** The data is public register data published by Companies House for reuse. No personal data about officers or owners is collected. Not affiliated with or endorsed by Companies House or the UK government.

### Data licence

Contains public sector information licensed under the Open Government Licence v3.0. Source: Companies House.

See [CHANGELOG.md](CHANGELOG.md).

### Verified 2026-10-22

Checked against the live Companies House API, including local runs with the prefill input (about 4 seconds), a repeated "only new" run (second run returned 0) and a 30-day SIC 62 run (1000 items in 6 seconds).

Known limitations:

- The API returns up to 5000 items per request and refuses paging beyond 10,000 results per query (HTTP 500). The Actor splits the date range to stay inside this; a single day with more than 10,000 matches (only possible with no filters) is truncated and logged.
- The API only filters SIC codes by exact 5-digit code. SIC prefixes such as `62` are expanded to all possible 5-digit codes and sent in batches; a 1-digit prefix is matched after download only.
- Location text matches address text (town, county, country and postcode district such as `SL1`); a partial postcode such as `EC1A` returned no results in testing, so prefer town names or postcode districts.
- Results are newest first within each request batch; with several SIC batches or locations, `maxItems` may cut off in batch order rather than strict date order.
- Companies House limits keys to 600 requests per 5 minutes; the Actor stays at 2 requests per second.
- Some company types (for example LLPs) have no SIC codes, so SIC filters exclude them. Registered office addresses of small companies can be a home address; only the registered office as published is returned, no officer or owner data.

# Changelog

This Actor's version history is a separate document: https://apify.com/vocal_rhapsody/companies-house-new-companies/changelog.md

# Actor input Schema

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

Your free API key from developer.company-information.service.gov.uk (register an application, choose a REST key). Optional if the Actor's environment already provides one.

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

UK SIC 2007 codes. "62" matches every code starting with 62 (IT services); a full code such as "62012" matches exactly. Leave empty to include all industries. Prefixes are expanded to exact codes and sent to the API.

## `locations` (type: `array`):

Text such as "London", "Manchester" or a postcode district such as "SL1". A company is kept if its registered office address contains any entry. Leave empty for all of the UK.

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

Companies House type codes, for example ltd, llp, plc, private-limited-guarant-nsc, limited-partnership. Leave empty for all types.

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

Only companies with this status. Newly incorporated companies are normally active.

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

Case-insensitive text match on the company name. A company is kept if its name contains any entry. Leave empty to include all.

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

Companies incorporated from N days ago up to today. Maximum 90.

## `onlyNew` (type: `boolean`):

Turn this on in your scheduled task to return only companies not seen in earlier runs with the same filters. The list of seen companies is kept per filter combination in the named key-value store "companies-house-new-companies-state" in your account. Off (the default) returns all matches in the window on every run.

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

Forget which companies were already seen for these filters and treat this run as a first run. Only applies when "Only new since last run" is on.

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

Stop after this many results. You are charged per result, so this keeps the cost of a run predictable. Newest incorporations come first; companies beyond the cap are returned on the next run when "Only new since last run" is on.

## Actor input object example

```json
{
  "sicCodes": [
    "62"
  ],
  "companyStatus": "active",
  "lookbackDays": 7,
  "onlyNew": false,
  "resetState": false,
  "maxItems": 10
}
```

# Actor output Schema

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

One item per matching newly incorporated company (new since last run when onlyNew is on).

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

API requests, companies read, items pushed, runtime and peak memory.

# 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"
    ],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("vocal_rhapsody/companies-house-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 = {
    "sicCodes": ["62"],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("vocal_rhapsody/companies-house-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 '{
  "sicCodes": [
    "62"
  ],
  "maxItems": 10
}' |
apify call vocal_rhapsody/companies-house-new-companies --silent --output-dataset

```

## MCP server setup

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