# Companies House Scraper | New UK Company Registrations Daily (`aurelix/companies-house-scraper`) Actor

Extract newly incorporated UK companies from the official Companies House API daily: name, number, incorporation date, SIC codes with descriptions, registered office, region, directors with roles, corporate owners. Filters by SIC, region, postcode, type. $2.00 per 1,000.

- **URL**: https://apify.com/aurelix/companies-house-scraper.md
- **Developed by:** [Aurelix](https://apify.com/aurelix) (community)
- **Categories:** Lead generation, Business, Automation
- **Security:** Limited permissions
- **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.
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

### What is Companies House Scraper?

**Get a daily feed of newly incorporated UK companies (SIC codes, region, registered office, directors with roles) for $2.00 per 1,000 companies, no login.**

For B2B sellers, accountants and agencies prospecting new UK businesses. Straight from the official Companies House API, filtered by SIC code, region, postcode and company type; dormant shells removed by default.

[![Companies House Scraper: example output from a real run](https://api.apify.com/v2/key-value-stores/twkCCtTWzsi8fVbx5/records/companies-house-scraper-card-v3.png)](https://apify.com/aurelix/companies-house-scraper)

| | |
|---|---|
| **Source** | Official Companies House Public Data API (the UK company register), 2,000 to 4,000 new companies a working day |
| **Filters** | Days back (up to 30), SIC code prefixes, 21 SIC sections, 12 UK regions, postcode areas/districts, company type, dormant |
| **Output** | 27 fields per company incl. SIC descriptions, region, directors and roles, corporate owners; JSON, CSV, Excel, API |
| **Automate** | Only new companies since last run, Slack/webhook digest, schedules, Zapier, Make, n8n, MCP for AI agents |
| **Price** | $2.00 per 1,000 companies ($1.50 per 1,000 companies on paid Apify plans) |
| **Free to try** | Runs on Apify's free plan: the $5 monthly credit covers about 2,400 companies |
| **Login needed** | No |

### Daily monitor: only what's new, every morning

Set it once, get only the new companies every morning. With **Only new companies since last run** on, the first run returns everything that matches; each later run skips companies that earlier runs already returned, so you pay only for new ones.

```json
{
  "daysBack": 2,
  "sicCodes": [
    "62",
    "63"
  ],
  "regions": [
    "london"
  ],
  "incremental": true,
  "stateKey": "london-tech-new"
}
```

1. Paste this input into the **Input** tab (JSON view) and click **Save as a new task**; it appears under **Saved tasks**.
2. Open the task from **Saved tasks** and click **Schedule**.
3. Choose **Daily**, pick the hour, and save.

**Cost example:** London software and IT, about 50 new companies a day ≈ $3.15/month on the free plan ($2.40 on paid plans): one run a day for 30 days, start fee included. The first run returns everything that matches, so it costs more.

Add a Slack incoming-webhook URL in `slackWebhookUrl` (or any URL in `webhookUrl`) to get a short digest of each run's new companies; nothing is sent when a run finds nothing.

### Why Companies House Scraper users pick this one

- **Cheaper than the leading tools.** $2.00 per 1,000 companies, directors included.
- **Built as a daily feed.** Incorporation date window, only-new mode and a Slack or webhook digest.
- **Real region filters.** 12 UK regions and postcode areas or districts.
- **Industry codes explained.** SIC codes with descriptions and industry section.
- **Optional website and contacts.** Website confirmed by company number or postcode; contacts charged only when found.

### Get started in 3 steps

1. Set 'Incorporated in the last N days' (1 = today and yesterday) and 'Max companies'; directors are included and dormant companies removed by default.
2. Optionally narrow it by SIC codes, industry, UK region, postcode area or company type, turn on 'Only new companies since last run' for a daily feed, and 'Add website contacts' for emails and phones.
3. Click Start, then download JSON, CSV or Excel, or schedule it daily and send new companies to Slack, Google Sheets, your CRM, Zapier, Make or n8n.

**[▶ Try it with the example input](https://apify.com/aurelix/companies-house-scraper)**

The form opens with an example input already filled in.

### How much does it cost to scrape Companies House?

Pay per event: you pay only for what the run returns, plus a small start fee. Bronze, Silver, Gold and higher Apify plans pay less per result.

| Companies | Free plan | Paid plans (Bronze, Silver, Gold) |
|---|---|---|
| 100 | $0.21 | $0.16 |
| 1,000 | $2.01 | $1.51 |
| 10,000 | $20.01 | $15.01 |

Totals include the $0.005 start fee per run, rounded to the cent. Apify's free plan includes $5 of credit a month, enough for about 2,400 companies.

Companies outside your filters, dormant companies, companies returned by an earlier run (with 'Only new companies since last run') and suppressed names are not charged, and directors and corporate owners cost nothing extra. A contact-result is charged only for a company whose website gave at least one email, phone, social link or named person.

#### Billing events

| Event | Free plan | Paid plans (Bronze, Silver, Gold) |
|---|---|---|
| `company-result` | $2.00 per 1,000 companies | $1.50 per 1,000 companies |
| `contact-result` | $10.00 per 1,000 companies with contacts | $10.00 per 1,000 companies with contacts |
| `apify-actor-start` | $0.005 per run | $0.005 per run |

### Benchmarks: how we compare

| Test | Input | Result | Run time |
|---|---|---|---|
| Prefilled form | 1 day back, 10 companies, directors on | 10 companies | 9 s |
| Default input | 1 day back, 200 companies, directors on | 200 of 2,689 incorporated; 199 with at least one current officer, 233 officers in all | 111 s |
| Daily feed | SIC 62, London, corporate owners, only-new, max 100 | 100 new companies; 2 with a corporate owner | 110 s |
| Same feed run again | same input and memory name | 32 new; 100 repeats skipped and not charged | 42 s |
| Same feed a third time | same input and memory name | 0 new; 132 repeats skipped | 5 s |
| Filters that match nothing | 30 days back, SIC 01110 in postcode area ZE | 0 of 66,230 listed | 31 s |
| Website and contacts, brand-new companies | 3 days back, 150 companies, directors off | 150 companies, 0 confirmed websites | 165 s |
| Website and contacts (local) | SIC 62, 70 and 73, 400 companies, directors off | 400 companies, 14 confirmed websites, 12 with contacts | not timed |
| Busy API key (simulated, local) | rate limit forcing a 60 s wait | 11 companies saved; run ended with a 'stopped early' status | - |

Measured on the Apify cloud at 256 MB, one run per row, except rows marked local, which ran the same code on our machine. None of the 7 cloud runs spent any time waiting on the API rate limit. Officer counts are taken from the default-input run's dataset.

### What data you get

**Companies House Scraper** turns the official Companies House register into a daily feed of newly incorporated UK companies: company name and number, incorporation date, company type, SIC codes with their descriptions and industry section, registered office address with postcode area and UK region, and the current directors, secretaries and LLP members as the register lists them: role, appointment date, birth month and year, nationality, country of residence and service address. Filter by SIC code, industry, region, postcode area and company type; dormant shells are removed by default. Turn on 'Only new companies since last run' and schedule it daily for a lead feed, add owners (PSCs, corporate and individual) to spot new subsidiaries and owners, and optionally find each company's website and its business emails and phones.

- company_number, company_name, incorporation_date, company_status, company_type, company_type_description, company_subtype (e.g. community-interest-company)
- sic_codes, sic_descriptions (official Companies House wording), industry (SIC section)
- registered office: address_line_1, address_line_2, locality, county, postal_code, country, postcode_area, uk_region
- officers: name, role, role_code, appointed_on, is_corporate, occupation, birth_month, birth_year, nationality, country_of_residence, address (service address), appointments_url (current officers only); officers_count
- corporate_psc: corporate and legal-person owners with registration number, legal form, country and nature of control; individual_psc: individual owners with name, natures_of_control, notified_on, birth_month, birth_year, nationality, country_of_residence, address; individual_psc_count
- website (confirmed), and with contacts on: emails, phones, social_profiles and people (name, title, seniority, function)
- company_url on the Companies House register, source_url (API resource), scraped_at

| company_name | company_number | incorporation_date | sic_codes | locality | postal_code | uk_region | officers_count |
|---|---|---|---|---|---|---|---|
| GINGER HOUSE PROPERTY LIMITED | 17563272 | 2026-11-04 | \["68310"] | Bury St. Edmunds | IP28 7DE | East of England | 1 |
| JACKNET LIMITED | 17563269 | 2026-11-04 | \["62012"] | Bishop Auckland | DL14 8QN | North East | 1 |
| REYNOLDS SURGICAL LIMITED | 17563268 | 2026-11-04 | \["86220"] | Newton Abbot | TQ12 5SS | South West | 1 |
| WALTHAM & CO LIMITED | 17563267 | 2026-11-04 | \["47190"] | Guildford | GU2 9QE | South East | 1 |
| ARKANVIL LTD | 17563266 | 2026-11-04 | \["62012", "63120"] | Romford | RM3 9DE | London | 1 |
| WHITT PROPERTIES LTD | 17563265 | 2026-11-04 | \["68209"] | Hinckley | LE10 0TR | East Midlands | 1 |

One full company record, exactly as a real run returned it (long text and lists shortened here):

```json
{
  "company_number": "17562770",
  "company_name": "G & E TECH SOLUTIONS LTD",
  "incorporation_date": "2026-11-04",
  "company_status": "active",
  "company_type": "ltd",
  "company_type_description": "Private limited company",
  "company_subtype": null,
  "sic_codes": [
    "62090"
  ],
  "sic_descriptions": [
    "Other information technology service activities"
  ],
  "industry": "Information and communication",
  "address_line_1": "869 High Road",
  "address_line_2": null,
  "locality": "London",
  "county": null,
  "postal_code": "N12 8QA",
  "country": "United Kingdom",
  "postcode_area": "N",
  "uk_region": "London",
  "officers": [
    {
      "name": "BOXER, Thomas Kenneth Panayiotis",
      "role": "Director",
      "role_code": "director",
      "appointed_on": "2026-11-04",
      "is_corporate": false,
      "occupation": null,
      "birth_month": 7,
      "birth_year": 1991,
      "nationality": "British",
      "country_of_residence": "England",
      "address": "869 High Road, London, N12 8QA, United Kingdom",
      "appointments_url": "https://find-and-update.company-information.service.gov.uk/officers/CAbUZuhmf0mydpGCjfVAtDxOqBs/appointments"
    }
  ],
  "officers_count": 1,
  "corporate_psc": [
    {
      "name": "G & E Spitia Investments Ltd",
      "kind": "corporate",
      "natures_of_control": [
        "ownership-of-shares-75-to-100-percent",
        "voting-rights-75-to-100-percent",
        "right-to-appoint-and-remove-directors"
      ],
      "notified_on": "2026-11-04",
      "legal_form": "Limited",
      "legal_authority": "Companies Act",
      "registration_number": "16453491",
      "place_registered": "England",
      "country_registered": "England"
    }
  ],
  "individual_psc": [],
  "individual_psc_count": 0,
  "website": null,
  "contacts": null,
  "company_url": "https://find-and-update.company-information.service.gov.uk/company/17562770",
  "source_url": "https://api.company-information.service.gov.uk/company/17562770",
  "scraped_at": "2026-11-05T00:06:50Z"
}
```

### Use cases

- Accountants, bookkeepers and payroll firms reaching new limited companies in their town in their first weeks
- Business banks, insurers, web designers and telecoms selling to companies that just started trading
- Agencies and B2B SaaS teams building a daily list of new companies in their target SIC codes
- Analysts tracking new company formation by industry, region and company type

### Use-case recipes

#### New limited companies in your town

For accountants, bookkeepers and payroll firms. Set the postcode areas you serve, keep private limited companies, turn on 'Only new companies since last run' and schedule it daily. Use company_name, company_number, incorporation_date and sic_descriptions to pick the right offer; check the registered office before writing to it, as it is often an agent's address.

```json
{
  "daysBack": 1,
  "postcodeAreas": [
    "M",
    "SK"
  ],
  "companyTypes": [
    "ltd"
  ],
  "incremental": true,
  "maxResults": 200
}
```

#### New tech companies with a website

For agencies and B2B SaaS teams. Pick SIC prefixes 62 and 63, the regions you sell into and a week's window, and turn on 'Find the company website'. Rows with a website can go straight into Contact Details Scraper's domains input for emails and phones; expect few sites in a company's first days.

```json
{
  "daysBack": 7,
  "sicCodes": [
    "62",
    "63"
  ],
  "regions": [
    "london",
    "south-east"
  ],
  "findWebsite": true,
  "maxResults": 50
}
```

#### Spot new subsidiaries

For analysts and sellers who target groups rather than start-ups. Turn on 'Add corporate owners' and switch off directors to save a request per company. Keep the rows where corporate_psc is not empty; registration_number and country_registered identify the parent, and natures_of_control says how much it holds.

```json
{
  "daysBack": 3,
  "includeOfficers": false,
  "includeCorporatePsc": true,
  "maxResults": 100
}
```

#### Hospitality openings by area

For suppliers, insurers and analysts following new pubs, cafes and hotels. Pick the hospitality section and a region, look back a week and skip directors. Count rows by postcode_area and sic_descriptions to see where new businesses are opening.

```json
{
  "daysBack": 7,
  "industries": [
    "hospitality"
  ],
  "regions": [
    "scotland"
  ],
  "includeOfficers": false,
  "maxResults": 100
}
```

### Input

| Field | Type | What it does | Default |
|---|---|---|---|
| `daysBack` (Incorporated in the last N days) | integer | Companies incorporated today (UTC) and on the N days before. | 1 |
| `maxResults` (Max companies) | integer | Stop after this many companies, newest first. | 200 |
| `sicCodes` (SIC codes) | array | Keep companies with at least one SIC code starting with one of these (2 to 5 digits). |  |
| `industries` (Industries (SIC sections)) | array | Keep companies with a SIC code in one of these sections. |  |
| `regions` (UK regions) | array | Keep companies whose registered office postcode is in one of these regions (by postcode area). |  |
| `postcodeAreas` (Postcode areas or districts) | array | Keep companies whose registered office postcode starts with one of these: an area ('M' = Manchester, not ME), a district... |  |

All 17 fields, with examples: see the **Input** tab.

### Use with AI agents (MCP)

MCP (Model Context Protocol) is the open standard that lets AI assistants such as Claude, ChatGPT and Cursor call outside tools. Apify's hosted MCP server at `https://mcp.apify.com/?tools=aurelix/companies-house-scraper` gives your assistant this Actor only: it fills in the input from your request, runs it and reads the companies back, at the same per-result price as a run started by hand.

#### Example prompts

- "Find software and IT companies incorporated in London in the last 7 days, with their SIC codes, registered office postcode and directors' roles, and give me a table"
- "List new restaurants and cafes registered at Companies House in Manchester and Leeds postcodes this week, leaving out dormant companies"
- "Which UK companies set up in the last 3 days are owned by another company? Show the parent company name, its registration number, its country and the nature of control"

#### Claude Desktop and claude.ai

**Settings > Connectors > Add custom connector**, name it Apify, paste `https://mcp.apify.com/?tools=aurelix/companies-house-scraper`, keep the detected OAuth settings, select **Add** and sign in to Apify.

#### Claude Code

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=aurelix/companies-house-scraper"
```

#### Cursor and VS Code

Add this to `~/.cursor/mcp.json` (Cursor); in VS Code's `.vscode/mcp.json` put the same entry under `"servers"` with `"type": "http"`. Sign in to Apify when asked.

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com/?tools=aurelix/companies-house-scraper"
    }
  }
}
```

#### ChatGPT

Turn on **Developer mode**, open **Settings > Apps & Connectors > Create**, paste the URL above as the MCP server URL, choose **OAuth** and authorize Apify.

Clients without sign-in send `Authorization: Bearer <YOUR_APIFY_TOKEN>` instead. No Apify account? This Actor supports Apify's agentic payments: an agent can pay per run with a prepaid, spend-capped token, bought with x402 stablecoin payments.

#### n8n AI agent

Give an **AI Agent** node an **MCP Client Tool** with the endpoint `https://mcp.apify.com/?tools=aurelix/companies-house-scraper` and a Bearer credential holding your Apify token.

### Use it from AI agents (MCP), the API or no-code

#### Copy this to your AI assistant

```text
Use the Apify Actor aurelix/companies-house-scraper (Companies House Scraper) through Apify's MCP server or API. Main input: daysBack (Incorporated in the last N days); maxResults (Max companies). Example input: {"daysBack": 7, "sicCodes": ["62", "63"], "regions": ["london", "south-east"], "companyTypes": ["ltd"], "includeCorporatePsc": true, "incremental": true, "maxResults": 500}. Each result is one company with fields such as company_number, company_name, incorporation_date, company_status, company_type, company_type_description, company_subtype, sic_codes. It costs $2.00 per 1,000 companies on Apify's free plan plus a $0.005 start fee per run, and needs no login.
```

MCP server URL for this Actor: `https://mcp.apify.com/?tools=aurelix/companies-house-scraper` (setup for each client in the section above).

#### API

Start a run and read the dataset with Apify's REST API or the Python and JavaScript clients:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("aurelix/companies-house-scraper").call(run_input={'daysBack': 7, 'sicCodes': ['62', '63'], 'regions': ['london', 'south-east'], 'companyTypes': ['ltd'], 'includeCorporatePsc': True, 'incremental': True, 'maxResults': 500})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

#### No-code: schedule it in 3 clicks

Send the results to Google Sheets, Zapier, Make, n8n, Slack or any webhook URL.

1. Fill in the input, then click **Save as a new task**.
2. In the task, click **Schedule** and pick daily or weekly (Apify Schedules).
3. Turn on **Only new companies since last run** so each run returns only what is new, and paste a Slack or webhook URL into **Slack webhook URL** / **Webhook URL** to get a digest of the new items (count plus the top 10) after every run.

Prefer n8n or Make? Ask in the **Issues** tab and we will share a ready-made workflow for it.

### FAQ

#### Can I scrape Companies House without login?

Yes. You need no Companies House account: runs use our API key by default, and for big or frequent runs you can paste your own free key. You only need a free Apify account to run it.

#### Is there a Companies House API?

You can use this Actor as one. Start it with Apify's REST API or the Python and JavaScript clients and read the results as JSON (see the code above), or call it from an AI agent through MCP.

#### How much does it cost to scrape Companies House?

About $2.01 for 1,000 companies on Apify's free plan and $1.51 on paid plans, start fee included. The free $5 monthly credit covers about 2,400 companies.

#### Can I export Companies House data to Excel or Google Sheets?

Yes. Download the results as Excel, CSV, JSON, XML or HTML from the run's **Storage** tab, or send them to Google Sheets with Apify's Google Sheets integration or the API.

#### Is it legal to scrape Companies House?

It reads only public data any logged-out visitor can see: the UK company register published by Companies House under the Companies Act 2006, through the official Companies House API within its published rate limit, and, when you turn it on, the public pages of the company's own website with robots.txt obeyed. It never logs in and never solves CAPTCHAs. Officers and owners are returned as the register shows them publicly: birth month and year (never the day), nationality, country of residence and service address. To have a record removed, open an issue on this Actor's Issues tab. You are responsible for using the data lawfully, incl. UK GDPR and PECR; this is not legal advice.

#### What is charged?

One company-result ($2 per 1,000 on the free plan, $1.50 on paid plans) per company returned, with its directors and corporate owners included. With 'Add website contacts' on, also one contact-result ($10 per 1,000) per company whose website gave at least one email, phone, social link or named person. Plus a $0.005 start fee per run.

#### Do I need a Companies House API key?

No. Runs use our key by default. The API allows 600 requests per 5 minutes per key, shared by everyone on that key, so for big or frequent runs create your own free key (Companies House account, Developer Hub, create an application, create a REST API key: about 2 minutes) and paste it into 'Your Companies House API key'. It is stored as a secret input.

#### How fast is it?

The day's list costs one request per 5,000 companies, so filters are free. Each returned company with directors costs one more request (two with corporate owners), at up to 2 requests a second: a cloud run returned 200 companies with directors in 111 seconds. If the key is busy, the run stops early with what it has and says so.

#### How fresh is it?

The Actor reads the live register. Companies House adds a company on the day it is incorporated; schedule a daily run with 'Incorporated in the last N days' = 1 and 'Only new companies since last run' to catch late additions without repeats.

#### Why do so few new companies have a website?

Most companies have no website in their first weeks, and the register has no website field. A website is returned only when the company name works as a domain and the site shows the company number or registered postcode, so it is right rather than plentiful: in a 150-company cloud run (companies 1 to 3 days old), none had a confirmable website yet; matching domains that belonged to other businesses were rejected. Contacts are charged only when found.

#### What happens when a run finds nothing or stops early?

You pay only for companies returned, plus the start fee per run; filtering is free because the day's list costs one request per 5,000 companies. If the API key is busy, a run waits at most 30 seconds plus 2 seconds per company saved, then stops, keeps every company it saved and ends SUCCEEDED with a 'stopped early' status. If the API stops answering, the run stops at the first failing call and keeps what it has; it fails only when nothing could be listed, or when the key is rejected before anything was saved.

#### How are duplicates handled?

Each row is one company, keyed by company_number, and each company appears once per run. With 'Only new companies since last run' on, companies returned by an earlier run with the same filters are skipped and not charged, and each is remembered for 120 days after it was last seen. Companies dropped by your filters are not remembered, so loosening the filters later returns them.

#### What happens when a run reaches Max companies?

Days are read from today backwards and, within a day, newest company number first. Companies the run never reached are not remembered, so with 'Only new companies since last run' on the next run picks them up. Raise 'Max companies' if your daily feed keeps hitting the limit.

#### Can I change filters on a daily feed without getting repeats?

The 'new since last run' memory is named after the filters (SIC codes, industries, regions, postcodes, company types and the dormant switch), so changing one of them starts a fresh memory. To keep one memory across filter changes, set 'Incremental state name'. Changing days back, Max companies, or the directors, owners and website switches keeps the same memory.

#### What do the SIC and industry fields mean?

sic_codes are the codes the company registered, and sic_descriptions gives the official Companies House wording for each. industry is the SIC section of the first code that maps to one, for example Information and communication for 62012. The SIC filter keeps a company when any of its codes starts with one of your prefixes.

#### Why is a director or owner missing?

Only current officers are returned, up to 100 per company; resigned officers and names on our removal list are left out. Individual owners are listed in individual_psc (super-secure entries, which the register hides, are only counted). If a lookup fails, the field stays empty and the status message counts the failed lookups.

#### Does it use proxies?

No. It reads the official Companies House API with an API key, one request at a time at least 0.5 seconds apart, and slows down when the key's remaining allowance is low. It never rotates keys or IPs to get around the limit. Company websites are read directly with robots.txt obeyed.

#### Which companies does it cover?

Every company that Companies House lists as incorporated on each day of the window, across England, Wales, Scotland and Northern Ireland and of every type unless you pick types. Older companies and dissolved companies are not covered, and dormant companies are dropped unless you switch that off.

### Lawful use

- B2B use only: the data is the public UK company register plus business contact details companies publish on their own websites.
- No spam: contact companies only with relevant, individual business messages, identify yourself, and honour every opt-out at once.
- You are responsible for complying with the laws that apply to you, including UK GDPR, the Data Protection Act 2018 and PECR (UK rules on marketing emails and calls).
- Officers and owners are returned as the public register shows them (birth month and year only, never the day; the service address the register publishes). Data is returned as shown publicly on the source; anyone can ask for removal by opening an issue in this Actor's Issues tab (see Removal requests).

### Removal requests

Anyone can ask for their name, email or domain to be removed: open an issue in this Actor's **Issues tab** with the name, email or domain. Requests are honoured within **7 days**: the entry is added to the suppression list that every Aurelix contact Actor checks, so it is dropped from all future runs.

### Limits (stated honestly)

- New incorporations only (up to 30 days back); for one company by name or number, or for old companies, use a lookup Actor.
- Registered office is the company's statutory address; for small companies it is often an accountant, a formation agent or a director's home.
- Region comes from the postcode area, and some areas straddle borders (the outer London areas BR, CR, DA, EN, HA, IG, KT, RM, SM, TW, UB, WD, and CH, SY, TD, DG, HP); use postcode districts for precise targeting.
- Directors are current officers only; resigned officers are left out. Birth dates are month and year only, as the register shows them.
- Speed is capped by Companies House at 600 requests per 5 minutes per key, shared by all runs on our key; big runs should use your own free key.
- Website match only when the company name works as a .co.uk, .com, .uk, .io or .ai domain and the site shows the company number or postcode; most brand-new companies get none. In the first cloud test (150 companies 1 to 3 days old) none had one yet.
- Days are UTC incorporation dates; companies are read newest company number first within each day.

### Works great with

- **Then: [Contact Page Scraper](https://apify.com/aurelix/contact-details-scraper)**: put the `website` column into its `domains` input for emails, phones and social links of every page it finds
- **Then: [Decision Maker Finder](https://apify.com/aurelix/decision-maker-finder)**: put the `website` column into its `domains` input for founders and managers named on each company's team pages

### Related Aurelix tools

Public Aurelix Actors, grouped by the data they collect. All are pay-per-result and need no login.

#### Leads and company data

- **[Contact Page Scraper](https://apify.com/aurelix/contact-details-scraper)**: Published company emails, phones, addresses, social pages and team members from a list of company websites.
- **[Decision Maker Finder](https://apify.com/aurelix/decision-maker-finder)**: Founders, CEOs, VPs and department heads from company team pages, with title, seniority and function.
- **[Newly Funded Companies Hiring](https://apify.com/aurelix/funded-companies-hiring)**: Companies that just raised money (SEC Form D), with their open roles and business contacts, as a new-only monitor.
- **[Google Maps Phone Scraper](https://apify.com/aurelix/google-maps-scraper)**: Local business lists from Google Maps: phones, websites, ratings, hours, coordinates; optional website emails and socials.
- **[Recently Funded Companies API](https://apify.com/aurelix/recently-funded-companies)**: US companies that just filed an SEC Form D: amount raised, industry, state, executives, confirmed website.
- **[Tech Stack API](https://apify.com/aurelix/tech-stack-detector)**: CMS, e-commerce platform, analytics, ad pixels, chat, CDN and email provider for each domain you enter.

#### Jobs and hiring data

- **[Job Bank Canada Scraper API](https://apify.com/aurelix/job-bank-canada-scraper)**: Official Job Bank Canada postings by month: NOC and NAICS codes, wages, hours and location.
- **[Greenhouse Jobs Scraper](https://apify.com/aurelix/greenhouse-jobs-scraper)**: Live jobs from a company's Greenhouse, Lever, Ashby or SmartRecruiters board, with salary and Canadian province tags.
- **[LinkedIn Jobs Country Filter Scraper](https://apify.com/aurelix/linkedin-jobs)**: Public LinkedIn job postings by keyword and country: title, company, location, seniority, job type, salary text, description.
- **[Multiple Job Boards Scraper](https://apify.com/aurelix/multi-job-board-scraper)**: LinkedIn, about 50 company career sites, Remote OK and We Work Remotely jobs in one deduplicated list.
- **[Remote Job Board Scraper API](https://apify.com/aurelix/remote-jobs-scraper)**: Remote OK and We Work Remotely jobs in one deduplicated list with salary, regions and tags.

#### E-commerce and product data

- **[AliExpress Scraper API](https://apify.com/aurelix/aliexpress-product-search)**: AliExpress search results by keyword: price, discount, rating, units sold, ship-from country and sponsored flag.
- **[Amazon Best Sellers & Amazon New Releases](https://apify.com/aurelix/amazon-best-sellers)**: Amazon Best Sellers and New Releases top 100 on 10 marketplaces: rank, ASIN, price, rating, rank change.
- **[Best Buy Canada Scraper API](https://apify.com/aurelix/best-buy-canada-scraper)**: Best Buy Canada search results: CAD price, sale savings, rating, reviews and seller, plus optional UPC and specs.
- **[Shopify Product Export Scraper](https://apify.com/aurelix/shopify-products-scraper)**: Every public product of any Shopify store with variants, SKUs, prices, barcodes, stock counts and collections.
- **[Shopify Best Sellers Tracker](https://apify.com/aurelix/shopify-best-sellers-tracker)**: Competitor Shopify stores' best-sellers, new products, price changes, stock-outs and restocks since your last run, plus catalogue summary.

#### Ad intelligence

- **[Competitor Watch](https://apify.com/aurelix/competitor-watch)**: One report per competitor with only what is new: Meta and TikTok ads, page changes, Shopify products and prices, jobs.
- **[Facebook Ad Library Search & API](https://apify.com/aurelix/facebook-ad-library-scraper)**: Facebook and Instagram business ads from the Meta Ad Library: copy, creatives, landing pages, dates, optional EU reach.
- **[TikTok Ads Library API](https://apify.com/aurelix/tiktok-ads-library-scraper)**: TikTok Ads Library ads for Europe, UK, Switzerland and Turkey with targeting, reach, ad text and landing pages.

#### Canada and government data

- **[Canada Building Permits](https://apify.com/aurelix/canada-building-permits-scraper)**: Building permits and development applications from 7 Canadian cities: address, type, status, dates, value, applicant, contractor and Toronto planner contact.
- **[Government Tenders Scraper](https://apify.com/aurelix/government-tenders-scraper)**: Open tenders from SAM.gov, CanadaBuys and EU TED in one table: buyer, codes, value, deadline, contact and link.
- **[USPTO Trademark API](https://apify.com/aurelix/uspto-trademark-search)**: US trademark search and watch from USPTO: mark, owner or number lookups, new filings, owner, attorney, goods.

#### AI, content and SEO

- **[Google Trends by Region](https://apify.com/aurelix/google-trends-scraper)**: Google Trends interest over time, by region and rising queries for any number of keywords, plus trending searches.
- **[Google Autocomplete API](https://apify.com/aurelix/google-autocomplete-scraper)**: Expands seed keywords into hundreds of real Google and YouTube autocomplete phrases, tagged by search intent.
- **[PDF Table Extraction & PDF to Markdown OCR](https://apify.com/aurelix/pdf-to-markdown)**: Turns linked PDF and Word files into Markdown per page, with tables as JSON rows, RAG chunks and OCR.
- **[Broken Link Crawler & SEO Audit](https://apify.com/aurelix/seo-audit-crawler)**: Audits a whole site: one row per page with SEO checks and broken links, plus a ranked issues summary.
- **[Website to Markdown API](https://apify.com/aurelix/website-to-markdown)**: Crawls a site and returns one row of clean main-content Markdown per page, with title, headings and links.
- **[YouTube Transcript Scraper](https://apify.com/aurelix/youtube-transcript-scraper)**: Returns YouTube video transcripts as text, timed segments and AI chunks, from videos, channels, playlists or searches.

#### More data tools

- **[Agoda API (Unofficial)](https://apify.com/aurelix/agoda-reviews-scraper)**: Scrape Agoda guest reviews at $0.50 per 1,000 with this unofficial Agoda API, cheaper than the leading tools: Agoda and...
- **[Tennis Betting Odds Scraper](https://apify.com/aurelix/tennis-odds-scraper)**: Tennis results and upcoming matches with opening and closing odds per bookmaker and implied probabilities.

### Recent changes

- **0.1**: Officers now carry occupation, birth month and year, nationality, country of residence, service address and their Companies House appointments link; individual owners (PSCs) are listed in individual_psc with the same register details.

The full history is on the **Changelog** tab.

### Tested daily

An automated health check runs this Actor every day on a fixed input and checks that at least 4 companies come back with `company_number`, `company_name`, `incorporation_date`, `company_type`, `sic_codes`, `company_url` filled in; a failed check alerts the maintainer straight away.

### Your feedback

Missing a field, found a bug or need another filter? Open an issue on the **Issues** tab; we aim to answer within a day. If this Actor saved you time, a short review helps other people find it.

# Changelog

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

# Actor input Schema

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

Companies incorporated today (UTC) and on the N days before. Example: 1 for a daily feed (today and yesterday), 7 for a weekly one. At most 30. About 2,000 to 4,000 UK companies are incorporated per working day.

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

Stop after this many companies, newest first. Example: 500. Each company with directors takes one Companies House request, about 2 per second on one API key.

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

Keep companies with at least one SIC code starting with one of these (2 to 5 digits). Example: \['62', '56101'] for IT services plus licensed restaurants. Empty = all.

## `industries` (type: `array`):

Keep companies with a SIC code in one of these sections. Example: \['construction', 'hospitality']. Empty = all.

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

Keep companies whose registered office postcode is in one of these regions (by postcode area). Example: \['london', 'north-west']. Empty = all.

## `postcodeAreas` (type: `array`):

Keep companies whose registered office postcode starts with one of these: an area ('M' = Manchester, not ME), a district ('EC1', 'SW1A') or a full postcode. Example: \['M', 'EC1', 'LS1']. Empty = all.

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

Keep only these company types. Example: \['ltd', 'llp']. Empty = all.

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

Drop companies registered with SIC 99999 (Dormant Company), which are not trading. Example: false to keep them.

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

Add each company's current directors, secretaries and LLP members as the register lists them: name, role, appointment date, occupation, birth month/year, nationality, residence and service address. One extra Companies House request per company. Example: false for company rows only, about twice as fast.

## `includeCorporatePsc` (type: `boolean`):

Add persons with significant control: companies and legal entities (name, registration number, nature of control) and individual owners as the register shows them (name, nature of control, birth month/year, nationality, address). One extra request per company. Example: true to see which new companies are subsidiaries.

## `findWebsite` (type: `boolean`):

The register has no website field. Try the company name as a domain (.co.uk, .com, .uk, .io, .ai) and keep it only when the site shows the company number or registered postcode. Free; most brand-new companies have no site yet. Example: true.

## `enrichContacts` (type: `boolean`):

For each company with a confirmed website, read up to 5 pages (home, contact, about, team; robots.txt obeyed) and add business emails, phones, social links and named people with titles. Charged as a contact-result only when something is found. Example: true.

## `incremental` (type: `boolean`):

Return only companies not returned by a previous run with the same filters; repeats are skipped and not charged. Schedule daily with 'Incorporated in the last N days' = 1 or 2 for a new-companies feed.

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

Leave empty to use our shared key. Paste your own free key (developer.company-information.service.gov.uk, about 2 minutes) for big or frequent runs: the 600-requests-per-5-minutes limit is per key. Example: 1a2b3c4d-...

## `slackWebhookUrl` (type: `string`):

Post a short digest (count + top 10) to this Slack incoming webhook after each run that found something. Example: https://hooks.slack.com/services/T000/B000/XXXX

## `webhookUrl` (type: `string`):

POST the same digest as JSON to this URL (Zapier, Make, n8n). Example: https://hooks.zapier.com/hooks/catch/123/abc

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

Name for the 'new since last run' memory, e.g. 'london-tech-feed'. Leave empty to derive it from the filters.

## Actor input object example

```json
{
  "daysBack": 1,
  "maxResults": 10,
  "sicCodes": [],
  "industries": [],
  "regions": [],
  "postcodeAreas": [],
  "companyTypes": [],
  "excludeDormant": true,
  "includeOfficers": true,
  "includeCorporatePsc": false,
  "findWebsite": false,
  "enrichContacts": false,
  "incremental": false
}
```

# Actor output Schema

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

All newly incorporated companies found in this run, one item per company.

# 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": 1,
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("aurelix/companies-house-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 = {
    "daysBack": 1,
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("aurelix/companies-house-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 '{
  "daysBack": 1,
  "maxResults": 10
}' |
apify call aurelix/companies-house-scraper --silent --output-dataset

```

## MCP server setup

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