# Uk Director Idv Checker (`devon_gtme/uk-director-idv-checker`) Actor

Bulk-check whether UK directors and PSCs have verified their identity with Companies House under ECCTA. Paste company numbers and get one row per person: verified, due, or OVERDUE - with deadline, days remaining and the ACSP. For accountants, ACSPs and compliance teams. Free official CH API.

- **URL**: https://apify.com/devon\_gtme/uk-director-idv-checker.md
- **Developed by:** [Devon Kellar](https://apify.com/devon_gtme) (community)
- **Categories:** Lead generation
- **Stats:** 1 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 director rows

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## UK Director Identity Verification (IDV) Checker — Companies House ECCTA

Bulk-check whether UK company **directors and PSCs have verified their identity** with Companies House, as now required by the Economic Crime and Corporate Transparency Act (ECCTA). Paste any list of company numbers — a client book export, a spreadsheet, or the output of our [New Incorporations](https://apify.com/devon_gtme/uk-new-company-incorporations) or [Charges Lookup](https://apify.com/devon_gtme/uk-company-charges-lookup) actors — and get one row per person with a computed status: **verified**, **due in future**, or **OVERDUE**.

### Why this matters — the ECCTA deadline

Identity verification is no longer optional:

- **From 18 November 2025**, all newly appointed directors and PSCs must verify their identity with Companies House (directly via GOV.UK One Login, or through an Authorised Corporate Service Provider — ACSP)
- **Existing directors** must verify by their company's **next confirmation statement** after that date
- The **12-month transition window closes mid-November 2026** — after that, every serving director should be verified
- **Sanctions are real:** acting as an unverified director is a criminal offence, the company and its officers commit an offence too, and Companies House can **block filings** and annotate the public register

The officers and PSC registers now expose per-appointment `identity_verification_details` — this actor reads them at scale and turns them into a clean compliance report.

### What you get

One flat row per director/PSC appointment:

| Field | Example |
|---|---|
| `company_number` | 13969004 |
| `company_name` | ROADWAYS TRANSPORT SERVICES LIMITED |
| `company_status` | active |
| `confirmation_statement_next_due` | 2026-03-23 |
| `person_type` | officer *(or `psc`)* |
| `name` | PANAYI, Andreas Theohari |
| `role` | director *(officer\_role, or PSC `kind`)* |
| `appointed_on` | 2022-03-10 *(PSCs: notified\_on)* |
| `idv_status` | **overdue** *(verified / due\_future / overdue / no\_field)* |
| `idv_due_on` | 2026-03-23 |
| `days_until_due` | -116 *(negative = overdue)* |
| `idv_verified_start` | 2026-06-01 *(verified people only)* |
| `identity_verified_on` | 2025-10-22 |
| `acsp_name` | MICHAEL GEORGE & CO ACSP |
| `aml_bodies` | Institute of Chartered Accountants in England and Wales (ICAEW) |
| `preferred_name` | DAVID HENRY DUNSDON |

`idv_status` is computed against today's date at run time: a past `appointment_verification_statement_due_on` = **overdue**, a future one = **due\_future**, a present `appointment_verification_start_on` = **verified**, and the rare appointment with no IDV data at all = **no\_field**.

### Inputs

| Input | Default | What it does |
|---|---|---|
| `companiesHouseApiKey` | — | Your free Companies House REST API key (stored encrypted) |
| `companyNumbers` | — | Company numbers or full Companies House URLs — numbers are extracted automatically |
| `includePscs` | `true` | Also check persons with significant control |
| `activeOnly` | `true` | Skip resigned officers and ceased PSCs |
| `onlyUnverified` | `false` | Output only people still needing to verify (`due_future` + `overdue`) — instant chase list |

### Who this is for

- **Accountants & ACSPs** — audit your whole client book in one run; find every director who still needs verifying before their confirmation statement lands
- **Company secretarial & compliance teams** — portfolio-wide ECCTA exposure report with exact deadlines and days remaining
- **Formation agents** — confirm verifications completed via your ACSP actually show on the register (`acsp_name` is captured per person)
- **Risk & onboarding teams** — an overdue director is a compliance red flag on any counterparty

### Setup — free API key (2 minutes)

Uses the **official Companies House API**, free:

1. Register at [developer.company-information.service.gov.uk](https://developer.company-information.service.gov.uk/)
2. Create an application → copy the **REST API key**
3. Paste it into the actor's **API Key** input (stored encrypted)

### Typical usage

- **Client book audit:** paste all client company numbers, turn `onlyUnverified` on → a ready-made chase list with deadlines
- **Full register view:** leave `onlyUnverified` off to see verified people too, including which ACSP verified them and under which AML supervisory body
- **Historical view:** turn `activeOnly` off to include resigned/ceased appointments

### Export & integrations

Results land in an Apify dataset — export **CSV, Excel, JSON**, or connect Google Sheets, Make, Zapier, and webhooks via Apify integrations.

### Data source & fair use

Data comes from the official Companies House API and is Crown copyright, available for reuse under the [Companies House policy](https://www.gov.uk/government/organisations/companies-house). This actor is not affiliated with Companies House. It reports register data only — it is not legal advice; confirm obligations and deadlines with Companies House guidance.

***

**Need something more custom?** A standing weekly feed of newly-overdue directors in your sector, alerts on your client book, or a fully managed compliance pipeline — message me via my Apify profile and I'll build it.

# Actor input Schema

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

Your free Companies House API key. Create one in 2 minutes at https://developer.company-information.service.gov.uk/ — register, create an application, copy the REST API key.

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

UK company registration numbers to check, e.g. '13969004' or 'NI686540'. Full Companies House URLs also work (https://find-and-update.company-information.service.gov.uk/company/13969004) — the number is extracted automatically. Paste any list: a client book export, spreadsheet, or the output of another actor.

## `includePscs` (type: `boolean`):

Also check persons with significant control (PSCs), who must verify identity under ECCTA just like directors. Turn off to check officers only.

## `activeOnly` (type: `boolean`):

Skip resigned officers and ceased PSCs — only current appointments carry a verification obligation. Turn off to include historical appointments too.

## `onlyUnverified` (type: `boolean`):

Output only people who still need to verify (status 'due\_future' or 'overdue'). Verified people and appointments with no IDV data are omitted. Ideal for building a chase list.

## Actor input object example

```json
{
  "companyNumbers": [],
  "includePscs": true,
  "activeOnly": true,
  "onlyUnverified": false
}
```

# 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": [],
    "includePscs": true,
    "activeOnly": true,
    "onlyUnverified": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("devon_gtme/uk-director-idv-checker").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": [],
    "includePscs": True,
    "activeOnly": True,
    "onlyUnverified": False,
}

# Run the Actor and wait for it to finish
run = client.actor("devon_gtme/uk-director-idv-checker").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": [],
  "includePscs": true,
  "activeOnly": true,
  "onlyUnverified": false
}' |
apify call devon_gtme/uk-director-idv-checker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,devon_gtme/uk-director-idv-checker"
        }
    }
}

```

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/ivoHLYbLKuGZpVK5A/builds/GEI0wsux7wBQn4iFw/openapi.json
