# Companies House Deadlines: Overdue Accounts & Filings Due (`pikoulas/companies-house-deadlines`) Actor

UK companies with overdue or upcoming Companies House deadlines: accounts and confirmation statements, each checked live, with due dates, days overdue, address, SIC codes and directors. Filter by postcode, town, industry and company type. For accountants, lenders and B2B sales.

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

## Pricing

from $3.00 / 1,000 companies

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

## Companies House Deadlines

Get the UK companies that are late with their Companies House filings, or about to be: overdue
annual accounts and confirmation statements, and the ones due in the next weeks. Each comes with
its due dates, how many days are left or overdue, its status, type, registered office, industry
and, on request, its directors.

- **Every UK company:** the 5.7 million on Companies House's register, searched in one run.
- **Checked live:** each company's deadlines are read off its Companies House page as of today, so
  the ones that have filed since are left out.
- **Overdue or due soon:** accounts, confirmation statements or both; overdue by at least or at
  most so many days, or due within the next so many days.
- **Filters:** postcode area or district, post town, SIC code, company type, accounts type (size),
  incorporation date and proposals to strike off.
- **Directors on request:** the current officers, with role, appointment date and correspondence
  address.

It costs **$3 per 1,000 companies**, plus $0.01 a run for the search of the register.

### What people use it for

- **Accountants and bookkeepers:** companies that have just missed their accounts or statement,
  and new companies facing their first accounts, the clients most in need of one.
- **Company secretarial and formation agents:** confirmation statements due next month, to offer
  the filing before the deadline.
- **Lenders and credit risk:** late filers among applicants and customers; late accounts are one
  of the first signs of trouble.
- **Debt collection and insolvency practitioners:** companies long overdue or proposed for striking
  off, before they are dissolved.
- **B2B sales and data teams:** fresh lists of small companies by area and industry, with the
  directors to address.

### How to find companies with overdue accounts

1. Click **Try for free**; Apify's free plan covers a first run.
2. Pick the **Filings** and **Deadline** (overdue or due soon), and optionally **Postcodes**,
   **SIC codes** or **Accounts types**.
3. Click **Start**, then download the companies as JSON, CSV, Excel or HTML, or read them through
   the API. Schedule it weekly for each week's new late filers.

An input with more options:

```json
{
  "filings": ["accounts"],
  "deadline": ["overdue"],
  "maxDaysOverdue": 60,
  "postcodes": ["M", "SK", "WA14"],
  "sicCodes": ["62", "70229"],
  "companyTypes": ["private-limited"],
  "accountsTypes": ["micro-entity", "total-exemption", "none-filed"],
  "includeDirectors": true,
  "maxResults": 500
}
```

### Output

One item per company (the company and people made up):

```json
{
  "companyName": "EXAMPLE DIGITAL LTD",
  "companyNumber": "12345678",
  "status": "Active",
  "companyType": "Private limited Company",
  "incorporationDate": "2021-06-14",
  "careOf": null,
  "addressLine1": "12 EXAMPLE STREET",
  "addressLine2": null,
  "postTown": "MANCHESTER",
  "county": null,
  "country": "ENGLAND",
  "postcode": "M1 1AA",
  "sicCodes": ["62020"],
  "natureOfBusiness": ["Information technology consultancy activities"],
  "accountsType": "MICRO ENTITY",
  "accountingReferenceDate": "06-30",
  "accountsMadeUpTo": "2025-06-30",
  "accountsDueDate": "2026-03-31",
  "accountsLastMadeUpTo": "2024-06-30",
  "confirmationStatementDate": "2027-06-13",
  "confirmationStatementDueDate": "2027-06-27",
  "confirmationStatementLastMadeUpTo": "2026-06-13",
  "registeredAddress": "12 Example Street, Manchester, England, M1 1AA",
  "outstandingCharges": 0,
  "url": "https://find-and-update.company-information.service.gov.uk/company/12345678",
  "asOf": "2026-09-29",
  "accountsOverdue": true,
  "confirmationStatementOverdue": false,
  "accountsDaysLeft": -182,
  "confirmationStatementDaysLeft": 271,
  "directors": [
    {
      "name": "Jane Example",
      "role": "Director",
      "appointedOn": "2021-06-14",
      "nationality": "British",
      "countryOfResidence": "England",
      "correspondenceAddress": "12 Example Street, Manchester, England, M1 1AA"
    }
  ]
}
```

`accountsDaysLeft` and `confirmationStatementDaysLeft` are negative when overdue. `accountsMadeUpTo`
is the period the next accounts cover, and `accountingReferenceDate` the company's year end
(month-day). `asOf` is the day the deadlines are from: today when checked live, else the date of
Companies House's file. `directors` is there with **Include directors** on.

### Use it as an API

One call runs it and returns the companies as JSON. Apify's Python and JavaScript clients, and its
Make, Zapier and n8n integrations, work the same way.

```bash
curl -X POST "https://api.apify.com/v2/acts/pikoulas~companies-house-deadlines/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"deadline": ["overdue"], "maxDaysOverdue": 30, "towns": ["Leeds"], "maxResults": 100}'
```

AI agents can call it as a tool through Apify's MCP server: `https://mcp.apify.com?tools=pikoulas/companies-house-deadlines`.

### How much does it cost to get companies with overdue accounts?

You pay **$0.003 per company**, $3 per 1,000, and **$0.01 a run** for the search of the 5.7 million
companies. A run of 1,000 companies is about $3.01. `maxResults` caps what a run can cost. Runs that
go through Apify's residential proxy also pay its traffic, $0.0012 per 100 KB; none is needed.
There are no monthly fees.

### Good to know

- **Where it comes from:** Companies House's free company data file, published monthly, for the
  search, and each company's public page for its deadlines as of today. Of the companies overdue
  on the file's date, most have filed within a month, which the live check catches.
- **Speed:** the file is read in company name order and the run stops at **Max results**, so a
  broad search is done in seconds. A narrow one (one town and one industry) reads the whole file,
  under a minute.
- **Accounts types** are the kind of accounts last filed: micro-entity and total exemption are
  the small companies, none filed yet the new ones.
- **Overdue** is Companies House's own flag on the page, and a due date already past.
- **What isn't in it:** registered societies, royal charter bodies and other registers without
  these filings; dissolved companies and those in liquidation or administration.

### FAQ

#### Is it legal to use Companies House data?

Companies House publishes this data for anyone to reuse, under the Open Government Licence, and
it reads only public pages without logging in. Directors' names and addresses are personal data,
protected by the UK GDPR, which limits how you may use them (marketing included); the PECR govern
emails and calls to individuals. If you're unsure, ask a lawyer; Apify's
[Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/) is a good start.

#### Does it give emails or phone numbers?

No: Companies House holds neither. Pair it with an email finder, or with
[Company Leadership Finder](https://apify.com/pikoulas/company-leadership) for a company's team.

#### Something missing or not working?

Open an issue on the **Issues** tab with the input you used.

# Actor input Schema

## `filings` (type: `array`):

The deadlines to look at: annual accounts, confirmation statements, or both (a company matches on either).

## `deadline` (type: `array`):

Filings already overdue, filings due in the next days, or both.

## `dueWithinDays` (type: `integer`):

For due soon: filings due in the next this many days.

## `minDaysOverdue` (type: `integer`):

For overdue: only filings at least this many days late.

## `maxDaysOverdue` (type: `integer`):

For overdue: only filings at most this many days late (30 for companies that just missed theirs).

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

Registered office postcodes, one a line: an area (M, SW), a district (M1, SW1A, EC2) or a full postcode. Empty for all of the UK.

## `towns` (type: `array`):

Registered office post towns, one a line (London, Manchester, Leeds). Empty for all.

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

Industries by SIC code or its start, one a line: 62 for IT, 56101 for restaurants, 41 for building. Empty for all.

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

Empty for all.

## `accountsTypes` (type: `array`):

The kind of accounts the company last filed, which says its size. Empty for all.

## `incorporatedAfter` (type: `string`):

Only companies incorporated on or after this date, YYYY-MM-DD.

## `incorporatedBefore` (type: `string`):

Only companies incorporated on or before this date.

## `includeStrikeOff` (type: `boolean`):

Companies Companies House has given notice of striking off, often for the very filings overdue.

## `checkCurrent` (type: `boolean`):

Read each company's Companies House page for its deadlines as of today; the monthly file is up to a month old and most overdue companies file within weeks. Off is faster, with the file's deadlines.

## `includeDirectors` (type: `boolean`):

The current directors and secretaries of each company, with their role, appointment date and correspondence address.

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

The run stops after this many companies.

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

Not needed: Companies House answers without one. Datacenter IPs cost nothing extra; residential ones are charged per 100 KB fetched (the company data file is always downloaded without a proxy).

## Actor input object example

```json
{
  "filings": [
    "accounts",
    "confirmation-statement"
  ],
  "deadline": [
    "overdue"
  ],
  "dueWithinDays": 30,
  "includeStrikeOff": true,
  "checkCurrent": true,
  "includeDirectors": false,
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

No description

# 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 = {
    "maxResults": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("pikoulas/companies-house-deadlines").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 = { "maxResults": 20 }

# Run the Actor and wait for it to finish
run = client.actor("pikoulas/companies-house-deadlines").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 '{
  "maxResults": 20
}' |
apify call pikoulas/companies-house-deadlines --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,pikoulas/companies-house-deadlines"
        }
    }
}
```

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/y7aVNipGda9YzlD81/builds/d34Z0Ppyx6amZT6YH/openapi.json
