# UK Companies House Company Profiles and Filings (`studded_lantana/uk-company-profile`) Actor

Returns UK company data from the official Companies House register as flat JSON: status, type, incorporation date, SIC industry, registered town/postcode, accounts and confirmation deadlines, overdue flags, charges, insolvency and recent filings. Look up by number, name, SIC or date.

- **URL**: https://apify.com/studded_lantana/uk-company-profile.md
- **Developed by:** [amit ashkenazi](https://apify.com/studded_lantana) (community)
- **Categories:** Business, Lead generation
- **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 Companies House Company Profiles, Filings and New Companies

**What it does:** returns UK company data from the official Companies House register as flat JSON records. Look up companies by **company number**, find them by **name**, or list them by **incorporation date, SIC industry code, registered-office town or postcode, status and company type** (for example, every software company incorporated in Manchester last week). Each full profile has the company's status, legal form, incorporation and dissolution dates, SIC codes with their descriptions, registered-office town and postcode, accounts and confirmation-statement dates, overdue flags, charges, insolvency history and previous names. Add recent **filings** to get dates, form types, readable descriptions and a link to each document's PDF.

Why use it: it reads the Companies House public data API, so there is no website scraping to break, and it uses its own API key, so you don't need to register for one. Codes are turned into readable labels (company type, SIC description, filing description), and nested fields are flattened so the results drop straight into a spreadsheet.

### Use cases

- **Find newly incorporated companies.** A daily or weekly list of companies registered in your industry or area, for lead generation, market research or supplier onboarding.
- **Company checks and KYB.** Confirm a supplier or customer exists, is active, and is up to date with its accounts and confirmation statement before you sign or pay.
- **Monitor a portfolio.** Re-run a list of company numbers on a schedule to catch status changes, overdue accounts, new charges, insolvency or a change of name.
- **Enrich a CRM or spreadsheet.** Add the legal name, status, SIC industry, incorporation date and town to a list of company numbers.
- **Feed AI agents and automations.** Plain JSON records with readable labels, ready for Make, Zapier, n8n, Slack alerts or an LLM.

### Input

Look up company numbers (with the 10 most recent filings):

```json
{
  "companyNumbers": ["00445790", "14122311"],
  "filingsPerCompany": 10,
  "filingCategories": ["accounts", "confirmation-statement"]
}
```

List new companies by date and industry:

```json
{
  "incorporatedFrom": "2026-10-01",
  "incorporatedTo": "2026-10-07",
  "sicCodes": ["62012", "62020"],
  "location": "Manchester",
  "companyStatuses": ["active"],
  "companyTypes": ["ltd"],
  "fullProfiles": false,
  "maxItems": 500
}
```

- `companyNumbers`: Companies House numbers, e.g. `00445790` or `SC123456`. Leading zeros may be left out. Always returns full profiles.
- `searchQuery`: company name words. Used alone, it runs the register's name search (best matches first). With any filter below, it matches companies whose name contains these words.
- `incorporatedFrom`, `incorporatedTo`: incorporation date range, `YYYY-MM-DD`.
- `sicCodes`: UK SIC 2007 codes; a company matches if it has any of them.
- `location`: town, city or postcode area of the registered office, e.g. `Leeds` or `LS1`.
- `companyStatuses`: e.g. `active`, `dissolved`, `liquidation`, `administration`. Empty = any.
- `companyTypes`: e.g. `ltd`, `plc`, `llp`. Empty = all.
- `fullProfiles` (default `false`): search results carry name, number, status, type, incorporation date, SIC codes and town/postcode. Turn on to fetch the full profile (accounts, confirmation statement, charges, insolvency, previous names) and filings for each match.
- `filingsPerCompany` (0–100, default 0) and `filingCategories`: recent filings to add to each full profile.
- `maxItems` (default 100): stop after this many companies.

You can combine company numbers and a search in one run; each company is returned once.

### Output

One record per company. A real full profile (fetched 2026-10-14, filings shortened):

```json
{
  "company_number": "00445790",
  "company_name": "TESCO PLC",
  "company_status": "active",
  "company_status_detail": null,
  "company_type": "plc",
  "company_type_label": "Public limited company",
  "subtype": null,
  "jurisdiction": "england-wales",
  "date_of_creation": "1947-11-27",
  "date_of_cessation": null,
  "sic_codes": ["47110"],
  "sic_descriptions": ["Retail sale in non-specialised stores with food, beverages or tobacco predominating"],
  "registered_office": { "locality": "Welwyn Garden City", "region": null, "postal_code": "AL7 1GA", "country": "United Kingdom" },
  "registered_office_is_in_dispute": false,
  "undeliverable_registered_office_address": false,
  "accounts_last_made_up_to": "2026-02-28",
  "accounts_last_type": "group",
  "accounts_next_due": "2027-08-26",
  "accounts_next_made_up_to": "2027-02-26",
  "accounts_overdue": false,
  "accounting_reference_date": "26-02",
  "confirmation_statement_last_made_up_to": "2026-06-18",
  "confirmation_statement_next_due": "2027-07-02",
  "confirmation_statement_overdue": false,
  "has_charges": false,
  "has_insolvency_history": false,
  "has_been_liquidated": false,
  "is_community_interest_company": false,
  "previous_company_names": [
    { "name": "TESCO STORES (HOLDINGS) PUBLIC LIMITED COMPANY", "effective_from": "1981-12-14", "ceased_on": "1983-08-25" },
    { "name": "TESCO STORES (HOLDINGS) LIMITED", "effective_from": "1947-11-27", "ceased_on": "1981-12-14" }
  ],
  "url": "https://find-and-update.company-information.service.gov.uk/company/00445790",
  "source": "profile",
  "filings": [
    {
      "date": "2026-09-16",
      "category": "capital",
      "subcategory": null,
      "form_type": "SH03",
      "description_code": "capital-return-purchase-own-shares",
      "description": "Purchase of own shares.",
      "pages": 4,
      "transaction_id": "MzU0MzY3ODg5MGFkaXF6a2N4",
      "document_url": "https://find-and-update.company-information.service.gov.uk/company/00445790/filing-history/MzU0MzY3ODg5MGFkaXF6a2N4/document?format=pdf&download=0"
    }
  ],
  "filings_total": 8372,
  "fetched_at": "2026-10-14T04:25:03.512Z"
}
```

A search result (without `fullProfiles`) has the same field names but only `company_number`, `company_name`, `company_status`, `company_type`, `company_type_label`, `date_of_creation`, `date_of_cessation`, `sic_codes`, `sic_descriptions`, `registered_office`, `url`, `source: "search"` and `fetched_at`. A real one from a search for software companies incorporated 1–7 October 2026:

```json
{
  "company_number": "17494124",
  "company_name": "GOBI RXSPORT LTD",
  "company_status": "active",
  "company_type": "ltd",
  "company_type_label": "Private limited company",
  "date_of_creation": "2026-10-01",
  "date_of_cessation": null,
  "sic_codes": ["46499", "47640", "47910", "62012"],
  "sic_descriptions": [
    "Wholesale of household goods (other than musical instruments) not elsewhere classified",
    "Retail sale of sports goods, fishing gear, camping goods, boats and bicycles",
    "Retail sale via mail order houses or via Internet",
    "Business and domestic software development"
  ],
  "registered_office": { "locality": "London", "region": null, "postal_code": "WC2H 9JQ", "country": "United Kingdom" },
  "url": "https://find-and-update.company-information.service.gov.uk/company/17494124",
  "source": "search",
  "fetched_at": "2026-10-14T04:26:26.402Z"
}
```

### FAQ

**How do I get Companies House data as JSON or CSV without an API key?**
Run this Actor with company numbers or search filters. It calls the Companies House API with its own key, and results land in an Apify dataset that you can download as JSON, CSV or Excel or read through the Apify API.

**How do I get a list of newly incorporated UK companies?**
Set `incorporatedFrom` and `incorporatedTo` to the days you want, and optionally `sicCodes`, `location` and `companyStatuses: ["active"]`. For a daily feed, schedule the Actor every day with yesterday's date in both fields.

**How do I check whether a UK company's accounts are overdue?**
Look the company up by number. `accounts_overdue` and `confirmation_statement_overdue` are the register's own flags, and `accounts_next_due` is the deadline.

**How do I search companies by SIC code?**
Put the codes in `sicCodes`, e.g. `["62012"]` for business and domestic software development. Each record also returns all of the company's SIC codes with descriptions.

**Can I get a company's filing history and accounts PDFs?**
Set `filingsPerCompany` (up to 100 newest filings) and, if you like, `filingCategories` such as `["accounts"]`. Each filing has a `document_url` that opens the PDF on the Companies House website when a document is available.

**Does it return directors, shareholders or addresses?**
No. It returns company-level data only. Officers and persons with significant control are never requested, the registered office is given as town, region, postcode and country without the street address, and names and addresses inside filing descriptions are replaced with `[name withheld]` / `[address withheld]`. The official register page is linked from every record (`url`).

**Is this an official Companies House product?**
No. It uses the Companies House public data API. Companies House is credited as the source; this Actor is not affiliated with or endorsed by Companies House.

### Pricing

Pay per event:

- **$0.005 per run** (start).
- **$0.003 per company** returned, so $3 per 1,000 companies, with or without filings.

You only pay for companies returned. Company numbers that are not on the register are free and listed in the run log. Set a maximum charge per run in Apify to cap spend.

### Limits

- **Speed and rate limit.** Searches return up to 100 companies per API call (1,560 matches took 13 seconds in a test run). Full profiles need one API call per company (two with filings); 12 profiles with filings took 23 seconds in a test run. The Companies House rate limit (600 requests per 5 minutes) is shared by all users of this Actor; when it is reached, the run waits and continues, and stops early after a few waits.
- A filtered search (dates, SIC, location, status, type) returns at most 10,000 matches; narrow the dates for more. A name search alone returns the register's best matches only.
- Search results don't carry accounts or filing data; use `fullProfiles` for that.
- Name search results don't include SIC codes (`sic_codes` is empty); filtered searches and full profiles do.
- Fields are present only when Companies House holds them; for example, newly incorporated companies have no accounts filed yet, and overseas entities and some company types have no SIC codes.
- Registered offices are returned without street-level lines (see FAQ).
- Data is as current as the Companies House register at the time of the run.
- Source: Companies House public register, via the Companies House API. Code descriptions come from Companies House's published enumerations (Crown copyright, Open Government Licence v3.0). Not affiliated with or endorsed by Companies House.

# Actor input Schema

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

Companies House registration numbers to look up, e.g. "00445790" or "SC123456". Leading zeros may be left out ("445790" works). Each returns the full profile. Leave empty to search instead.

## `searchQuery` (type: `string`):

Find companies by name, e.g. "coffee roasters". Used alone, it runs the register's name search (best matches first). Combined with any filter below, it matches names containing these words. Leave empty to look up company numbers only.

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

Only companies incorporated on or after this date (YYYY-MM-DD), e.g. "2026-10-01". Pair with "Incorporated on or before" to list new companies for a week. Leave empty for no lower bound.

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

Only companies incorporated on or before this date (YYYY-MM-DD), e.g. "2026-10-07". Leave empty for no upper bound.

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

UK SIC 2007 industry codes; matches companies with any of them, e.g. \["62012", "62020"] for software and IT consultancy. Leave empty for all industries.

## `location` (type: `string`):

Town, city or postcode area of the registered office, e.g. "Manchester" or "LS1". Leave empty for anywhere in the UK.

## `companyStatuses` (type: `array`):

Only companies with these statuses, e.g. \["active"]. Leave empty for any status.

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

Only these legal forms, e.g. \["ltd"] for private limited companies. Leave empty for all types.

## `fullProfiles` (type: `boolean`):

Search results include name, number, status, type, incorporation date, SIC codes and town/postcode. Turn on to also get accounts and confirmation-statement dates, overdue flags, charges, insolvency history and previous names (slower: one extra lookup per company). Company-number lookups always return full profiles.

## `filingsPerCompany` (type: `integer`):

How many recent filings (newest first) to include for each full profile, 0-100, e.g. 10. Each filing has date, form type, readable description and a link to the PDF on Companies House. 0 = none.

## `filingCategories` (type: `array`):

Only include filings of these categories, e.g. \["accounts", "confirmation-statement"]. Leave empty for all.

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

Stop after this many companies, e.g. 100. You are charged per company returned.

## Actor input object example

```json
{
  "companyNumbers": [
    "00445790",
    "SC005336"
  ],
  "fullProfiles": false,
  "filingsPerCompany": 0,
  "maxItems": 100
}
```

# Actor output Schema

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

One record per UK company: status, type, incorporation date, SIC codes, registered office town and postcode, accounts and confirmation-statement deadlines, and optionally recent filings.

# 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 = {
    "companyNumbers": [
        "00445790",
        "SC005336"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("studded_lantana/uk-company-profile").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 = { "companyNumbers": [
        "00445790",
        "SC005336",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("studded_lantana/uk-company-profile").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 '{
  "companyNumbers": [
    "00445790",
    "SC005336"
  ]
}' |
apify call studded_lantana/uk-company-profile --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,studded_lantana/uk-company-profile"
        }
    }
}
```

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/F3s2vP0QVWLyeri8Y/builds/97Gic4lR67hxkBUfk/openapi.json
