# UK Companies House Scraper — Company Profiles, No API Key (`fabrikit/uk-companies-house-scraper`) Actor

UK Companies House scraper without an API key: search by name, SIC code, status, type, address or incorporation date and get company number, status, registered office, SIC, accounts and confirmation due dates, previous names. Optional filing history.

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

## Pricing

from $1.95 / 1,000 company scrapeds

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 Companies House Scraper — Company Profiles, No API Key

Search the **public UK Companies House register** and export clean company records without registering for an API key. Find companies by name, SIC code, status, type, registered-office address or incorporation / dissolution date, or look up specific company numbers.

Each record has: company number, name, status, type, jurisdiction, incorporation and dissolution dates, registered office address and postcode, SIC codes with descriptions, next accounts and confirmation-statement due dates, last accounts / statement dates, previous names, and direct links to the company page. Optionally add the **filing history** list (date, form type, title, document link).

**Companies only.** The Actor does not collect officers, directors or persons with significant control (PSC), and leaves out filing-history entries that name individuals.

### Input examples

New software companies incorporated in 2026:

```json
{ "sicCodes": ["62012"], "status": "active", "incorporatedFrom": "2026-01-01", "maxItems": 500 }
```

Fuzzy name search (also matches previous names):

```json
{ "query": "tesco", "status": "all", "maxItems": 50 }
```

Specific companies with their latest filings:

```json
{ "companyNumbers": ["00445790", "SC083026"], "includeFilingHistory": true, "maxFilingsPerCompany": 20 }
```

Fast list only (20 companies per request, no profile page):

```json
{ "companyType": "llp", "status": "active", "addressIncludes": "Manchester", "includeProfile": false, "maxItems": 2000 }
```

### Output example

```json
{
  "companyNumber": "00445790", "name": "TESCO PLC", "status": "Active", "type": "Public limited Company",
  "jurisdiction": "England & Wales", "incorporationDate": "1947-11-27",
  "registeredOffice": "Tesco House, Shire Park, Kestrel Way, Welwyn Garden City, United Kingdom, AL7 1GA", "postcode": "AL7 1GA",
  "sicCodes": [{ "code": "47110", "description": "Retail sale in non-specialised stores with food, beverages or tobacco predominating" }],
  "accountsNextDue": "2027-08-26", "confirmationNextDue": "2027-07-02",
  "previousNames": [{ "name": "TESCO STORES (HOLDINGS) LIMITED", "from": "1947-11-27", "to": "1981-12-14" }],
  "companyUrl": "https://find-and-update.company-information.service.gov.uk/company/00445790"
}
```

### Pricing (pay per event)

| Event | Charged per |
|---|---|
| `company-result` | company record saved |
| `filing-history` (add-on) | company that gets its filing history attached |

Plus the standard tiny Actor start event. A max-charge limit stops the run cleanly. See the Pricing tab for current prices; paid Apify plans get lower rates.

### FAQ

**Is it legal / allowed?** It reads the public website at a gentle pace (2 pages per second) and only returns company-level data published under the Open Government Licence. No login, no CAPTCHA bypass.

**How fast is it?** With full profiles about 100 companies per minute. With `includeProfile` off, the list data (name, status, type, address, SIC, incorporation date) comes 20 companies per request, so thousands per minute.

**More than 10,000 results?** The site returns at most 10,000 per query. The Actor automatically splits large searches by incorporation date, so you can export whole segments.

**Why no officers or PSC?** They are personal data about individuals; this Actor is for company data only.

**Use cases:** B2B lead lists of newly incorporated companies, compliance calendars (accounts / confirmation deadlines), market maps by SIC code and region, enriching CRM records.

***

### En español

Extrae datos públicos de empresas del registro del Reino Unido (Companies House) sin API key: busca por nombre, código SIC, estado, tipo, dirección o fecha de constitución y obtén número, estado, domicilio social, SIC, fechas límite de cuentas y confirmación, nombres anteriores y, opcionalmente, el historial de presentaciones. Solo datos de empresas: no se recogen directores ni personas con control significativo. Consulta la pestaña Pricing para ver los precios actuales; los planes de pago de Apify tienen tarifas más bajas.

# Actor input Schema

## `query` (type: `string`):

Search text. With no other filter and status "Any" it runs the site's fuzzy name search (also matches previous names, up to 1,000 results); otherwise it is used as a 'name includes' filter.

## `companyNumbers` (type: `array`):

Look up specific companies, e.g. 00445790, SC083026, OC301540. When set, search filters are ignored.

## `status` (type: `string`):

Company status filter.

## `companyType` (type: `string`):

Optional company type, e.g. ltd (private limited), plc, llp, limited-partnership, private-unlimited, royal-charter, charitable-incorporated-organisation, oversea-company. Empty = any.

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

5-digit UK SIC 2007 codes, e.g. 62012 (software), 47110 (retail), 68209 (letting). Each code is searched separately.

## `addressIncludes` (type: `string`):

Town, postcode or street fragment, e.g. SW1A or Manchester.

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

Exclude companies whose name contains this word.

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

YYYY-MM-DD

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

YYYY-MM-DD

## `dissolvedFrom` (type: `string`):

YYYY-MM-DD (use with status dissolved)

## `dissolvedTo` (type: `string`):

YYYY-MM-DD

## `includeProfile` (type: `boolean`):

Open each company's overview page to get accounts / confirmation-statement due dates and previous names (1 request per company, about 2 companies per second). Off = fast list data only (20 companies per request).

## `includeFilingHistory` (type: `boolean`):

Attach the company's filing history list (date, type, title, document link). Entries that name individuals (officer appointments, persons with significant control) are left out. Charged as the filing-history add-on.

## `maxFilingsPerCompany` (type: `integer`):

Newest first.

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

Total companies saved (each is charged). Default run is 50.

## `maxRequests` (type: `integer`):

Safety cap on page requests.

## `proxyConfiguration` (type: `object`):

The Actor requests at most 2 pages per second. Proxy is a fallback if Companies House throttles the IP (residential UK after repeated blocks).

## Actor input object example

```json
{
  "status": "active",
  "sicCodes": [
    "62012"
  ],
  "incorporatedFrom": "2026-01-01",
  "includeProfile": true,
  "includeFilingHistory": false,
  "maxFilingsPerCompany": 20,
  "maxItems": 50,
  "maxRequests": 20000,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

All companies collected during the run

# 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 = {
    "query": "",
    "sicCodes": [
        "62012"
    ],
    "incorporatedFrom": "2026-01-01",
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("fabrikit/uk-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 = {
    "query": "",
    "sicCodes": ["62012"],
    "incorporatedFrom": "2026-01-01",
    "maxItems": 50,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("fabrikit/uk-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 '{
  "query": "",
  "sicCodes": [
    "62012"
  ],
  "incorporatedFrom": "2026-01-01",
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call fabrikit/uk-companies-house-scraper --silent --output-dataset

```

## MCP server setup

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