# UK Overdue Accounts Leads (Companies House) (`best_actors/uk-overdue-accounts-leads`) Actor

UK companies that have missed, or are about to miss, their accounts or confirmation statement deadline, with director, website and email details. Built for accountants and bookkeepers. Pay only for leads delivered.

- **URL**: https://apify.com/best_actors/uk-overdue-accounts-leads.md
- **Developed by:** [Lewis O'Rorke](https://apify.com/best_actors) (community)
- **Categories:** Lead generation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$20.00 / 1,000 leads

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 Overdue Accounts Leads (Companies House)

**Find UK limited companies that have missed their accounts deadline, or are
about to, with the director's name, a website check and email addresses.
Built for accountants and bookkeepers who want clients that need help now.**

Every UK company must file accounts with Companies House each year, and its
first accounts are due 21 months after it registers. Thousands miss the
deadline every month. A company with overdue accounts is already facing late
filing penalties (from £150, rising to £1,500 and doubling if late two years
running), and is very likely to want an accountant this week. This Actor finds
those companies from the official register, in the area and industries you
choose.

***

### At a glance

| | |
|---|---|
| **You give it** | Overdue or due-soon, plus optional towns, postcode areas or industries |
| **You get** | One row per company with late (or nearly late) accounts: deadline, days overdue, director and contact leads |
| **Price** | $0.02 per lead (you only pay for results) |
| **Data source** | Companies House (official UK register), read live |
| **Best for** | Accountants and bookkeepers looking for clients who need help now |

***

### Who it is for

- **Accountants and bookkeepers** looking for new clients with an urgent need
- **Company secretarial and formation services**
- **Business lenders and insurers** spotting companies falling behind on admin
- **Researchers** tracking compliance by area or sector

***

### What you get for each company

| Field | What it means |
|---|---|
| `status`, `reasons` | Why it is a lead: `accounts_overdue`, `confirmation_statement_overdue` or `accounts_due_soon` |
| `accounts_next_due` | The accounts deadline |
| `accounts_days_overdue` / `accounts_days_until_due` | How late it is, or how long is left |
| `first_accounts_not_yet_filed` | True if the company has never filed accounts. First-time filers need the most help |
| `last_accounts_type` | What it last filed (micro-entity, full...), a guide to its size |
| `confirmation_statement_next_due`, `confirmation_statement_overdue` | The annual confirmation statement, another filing companies often miss |
| `company_name`, `company_number`, `incorporated_on`, `sic_codes`, `industry` | The company |
| `address`, `locality`, `postcode` | Registered office |
| `director_name`, `other_officers` | Who to contact, in normal "First Last" order |
| `website_found`, `website_url` | Whether an obvious website exists |
| `email_domain_active`, `email_provider`, `emails_found`, `email_guesses` | Email details: real addresses found on websites, and likely addresses (unverified) |
| `director_other_active_companies`, `director_other_company_website` | The director's other businesses, often the best route to an email |
| `companies_house_url`, `google_search_url`, `linkedin_director_search_url` | One-click links |

Every overdue flag comes straight from Companies House's own record, the same
one shown as "Accounts overdue" on the company's public page.

***

### How to use it (step by step)

#### 1. Choose what to find

- **Overdue now** (default): companies that have already missed their accounts
  deadline, plus, if you leave it ticked, those late with their confirmation statement.
- **Accounts due soon**: companies whose accounts deadline is within the next
  N days (default 60). Contact them before they're late.
- **Both**.

#### 2. Choose where and who

- **Town or city** is the fastest way to target an area, e.g. `Bristol`.
- **Postcode areas or districts**: `M14` is fast; a whole area like `M` works
  but takes longer.
- **Country**, **Industries** and **Extra SIC codes** narrow it further.

#### 3. Click Start

Leads appear in the Output tab as each one is confirmed. A town-level run
usually finds its first leads within a minute or two. Export to Excel, CSV or
JSON, or send them to Google Sheets, a CRM or your email tool.

#### 4. (Optional) Run it every week

Create a schedule (for example every Monday at 08:00). Each week you get the
companies that have just gone overdue in your area.

***

### Ready-made examples

**Overdue companies in Manchester**

```json
{ "mode": "overdue", "locality": "Manchester", "maxLeads": 50 }
```

**Accounts due in the next 30 days, Bristol trades**

```json
{ "mode": "due_soon", "dueWithinDays": 30, "locality": "Bristol", "industries": ["trades"], "maxLeads": 50 }
```

**Overdue restaurants and cafes anywhere in Scotland**

```json
{ "mode": "overdue", "country": "Scotland", "sicCodes": ["56101", "56102", "56103"], "maxLeads": 100 }
```

**Include older companies (later-year accounts), Leeds**

```json
{ "mode": "overdue", "locality": "Leeds", "incorporatedFromMonthsAgo": 72, "maxLeads": 100 }
```

***

### How it works

1. First accounts fall due 21 months after a company registers, so by default
   the Actor looks at companies registered 21.5 to 36 months ago (overdue mode),
   or just under 21 months ago (due-soon mode).
2. It reads those companies from the official Companies House API, filtered by
   your area and industries, and skips shells, holding companies, dormant
   companies and anything with insolvency history.
3. For each one it reads the company's full record to check its real deadlines.
4. Matches are enriched with director, website and email details and delivered.

***

### Sample output

One row from a real run, trimmed to the main fields. Names and contact details here are made-up examples. Every field is described above.

```json
{
  "company_name": "EXAMPLE MEDICAL LTD",
  "company_number": "12345678",
  "locality": "Birmingham",
  "postcode": "B12 0UP",
  "director_name": "Sam Patel",
  "accounts_next_due": "2026-10-16",
  "accounts_overdue": true,
  "accounts_days_overdue": 16,
  "first_accounts_not_yet_filed": true,
  "email_domain": "examplemedical.co.uk",
  "companies_house_url": "https://find-and-update.company-information.service.gov.uk/company/12345678"
}
```

***

### One-click examples

Open one of these ready-made tasks, check the inputs, and click **Start**. Each is a good starting point you can change.

- [Overdue accounts: Manchester companies](https://apify.com/best_actors/uk-overdue-accounts-leads/overdue-accounts-manchester)
- [Overdue accounts: London companies](https://apify.com/best_actors/uk-overdue-accounts-leads/overdue-accounts-london)
- [Overdue accounts: Birmingham companies](https://apify.com/best_actors/uk-overdue-accounts-leads/overdue-accounts-birmingham)
- [Overdue accounts: Leeds companies](https://apify.com/best_actors/uk-overdue-accounts-leads/overdue-accounts-leeds)
- [Accounts due in 60 days: Bristol](https://apify.com/best_actors/uk-overdue-accounts-leads/accounts-due-soon-bristol)
- [Accounts due in 60 days: Glasgow](https://apify.com/best_actors/uk-overdue-accounts-leads/accounts-due-soon-glasgow)
- [Overdue accounts: Scottish restaurants and cafes](https://apify.com/best_actors/uk-overdue-accounts-leads/overdue-accounts-scotland-hospitality)
- [Overdue accounts: UK builders and trades](https://apify.com/best_actors/uk-overdue-accounts-leads/overdue-accounts-uk-trades)
- [Overdue accounts: companies in Wales](https://apify.com/best_actors/uk-overdue-accounts-leads/overdue-accounts-wales)
- [Overdue accounts: UK online shops](https://apify.com/best_actors/uk-overdue-accounts-leads/overdue-accounts-uk-ecommerce)

***

### Pricing

| Event | Price |
|---|---|
| Lead | $0.02 |

For example, 100 leads cost $2.00.

You pay **per lead delivered**. You are never charged for companies that are
up to date, companies outside your filters, or a search that finds nothing.
Set a maximum cost per run and the Actor stops cleanly when it's reached.

No Companies House account or API key needed. A field for your own key is
there for very large or frequent runs.

Works with AI agents, including x402 pay-per-call payments.

***

### Honest limits

- **By default it targets first accounts** (companies 21 to 36 months old),
  where missed deadlines are most common. Raise "Incorporated up to N months
  ago" to include older companies; those runs check more records per lead.
- **Overdue status is as recorded by Companies House.** A company that filed
  today may still show as overdue until the register updates.
- **Email guesses are unverified.** Check `email_domain_active`, and prefer
  `emails_found`.
- **Companies House does not publish director emails or phone numbers.**

***

### Using the data properly

This is public register data. Contacting limited companies about business
services is generally allowed in the UK under legitimate interest, provided you
say who you are, offer a clear opt-out and honour it. Be helpful rather than
alarming: a late-filing reminder with an offer of help works better than a
penalty warning.

***

### FAQ

**Why do so many leads have never filed accounts?**
Missing the first deadline is the most common mistake: many new directors don't
know accounts are due 21 months after registering.

**Can I find companies with accounts due next month instead?**
Yes, choose "Accounts due soon" and set the number of days.

**Something is wrong or missing.**
Open an issue on the Issues tab with your run link.

# Actor input Schema

## `mode` (type: `string`):

Overdue: companies that have missed their accounts deadline (and, optionally, their confirmation statement). Due soon: companies whose accounts deadline is coming up.

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

For 'Accounts due soon': how many days ahead to look.

## `includeConfirmationStatement` (type: `boolean`):

Include companies that are late filing their annual confirmation statement, another sign they need help with their admin.

## `locality` (type: `string`):

Registered office town, e.g. Bristol. Fastest way to target an area.

## `postcodePrefixes` (type: `array`):

Postcode areas or districts, e.g. M, SK, BS1. A single district (M14) is fast; whole areas (M) work but are slower.

## `country` (type: `string`):

Optional.

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

Leave empty for all trading industries. Shells, holding companies and property vehicles are always left out.

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

Specific SIC codes, e.g. 43220 for plumbers. Combined with the industries above.

## `maxLeads` (type: `integer`):

The run stops once this many leads are delivered. You pay per lead.

## `incorporatedFromMonthsAgo` (type: `number`):

Optional. Oldest companies to check, in months since incorporation. Default: 36 for overdue, 21 for due soon. Raise it to include older companies with later-year accounts.

## `incorporatedToMonthsAgo` (type: `number`):

Optional. Newest companies to check. Default: 21.5 for overdue (first accounts fall due at 21 months).

## `maxCompaniesChecked` (type: `integer`):

Safety cap on how many company records are read in one run.

## `checkWebsite` (type: `boolean`):

Tries the obvious domains for the company name (.co.uk, .com, .uk...).

## `findDirectorOtherCompanies` (type: `boolean`):

Counts the director's other active companies and finds a website for one of them. Often the best route to an email address.

## `findEmails` (type: `boolean`):

Checks whether the company's domain receives email, scrapes addresses from any website found, and lists likely addresses from the director's name. Guesses are unverified.

## `companiesHouseApiKey` (type: `string`):

Optional. A free key from developer.company-information.service.gov.uk gives you your own rate limit, so large runs go faster.

## Actor input object example

```json
{
  "mode": "overdue",
  "dueWithinDays": 60,
  "includeConfirmationStatement": true,
  "locality": "Manchester",
  "industries": [
    "trades"
  ],
  "sicCodes": [],
  "maxLeads": 50,
  "maxCompaniesChecked": 3000,
  "checkWebsite": true,
  "findDirectorOtherCompanies": true,
  "findEmails": true
}
```

# Actor output Schema

## `leads` (type: `string`):

No description

## `all` (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 = {
    "locality": "Manchester",
    "industries": [
        "trades"
    ],
    "sicCodes": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("best_actors/uk-overdue-accounts-leads").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 = {
    "locality": "Manchester",
    "industries": ["trades"],
    "sicCodes": [],
}

# Run the Actor and wait for it to finish
run = client.actor("best_actors/uk-overdue-accounts-leads").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 '{
  "locality": "Manchester",
  "industries": [
    "trades"
  ],
  "sicCodes": []
}' |
apify call best_actors/uk-overdue-accounts-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,best_actors/uk-overdue-accounts-leads"
        }
    }
}
```

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/GF9OuuJ8AGNBrQxaW/builds/Mkfb5JAig2aVoJBiT/openapi.json
