# UK Insolvency Register Search (`wildorigins/uk-insolvency-register-search`) Actor

🏷️ From $0.60 / 1K | Search the Individual Insolvency Register for bankruptcies, IVAs and debt relief orders. Case numbers, dates, courts and insolvency practitioners, with personal identifiers withheld by default.

- **URL**: https://apify.com/wildorigins/uk-insolvency-register-search.md
- **Developed by:** [Wild Origins](https://apify.com/wildorigins) (community)
- **Categories:** News, Automation
- **Stats:** 3 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.60 / 1,000 insolvency records

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 Insolvency Register Search

Search the official UK Individual Insolvency Register for bankruptcies, Individual Voluntary Arrangements, Debt Relief Orders and Bankruptcy Restrictions Orders. Date of birth and last known address are withheld unless you deliberately switch them on.

### 🔍 What does UK Insolvency Register Search do?

It searches the official Individual Insolvency Register at insolvencydirect.bis.gov.uk and returns every matching record as a clean row of data, ready for a credit file, a due diligence pack or your own screening tool.

- Searches by individual name or by sole trader trading name
- Returns the complete insolvency history record: case number, type, status, dates, court and appointed practitioner
- Filters by insolvency type: bankruptcy, IVA, DRO or BRO
- Paginates automatically through result pages
- Withholds date of birth and last known address by default

That last point is the one that matters. Most tools hand you every personal identifier they can find and leave the data protection problem with you. This one starts closed, and you have to make a deliberate choice to open it.

### 📊 What data can I extract from the register?

One row per insolvency record:

| Field | Description |
|---|---|
| **Identity** | |
| `name` | Full name as it appears on the register |
| `honorific` | Mr, Mrs, Miss or Ms |
| `forename` | First name or names |
| `surname` | Last name |
| `gender` | Male or Female |
| `dateOfBirth` | Date of birth. Only present when `includePersonalIdentifiers` is true |
| `alsoKnownAs` | Other names the person is recorded under |
| **Address and trading** | |
| `lastKnownAddress` | Last known address as recorded. Only present when `includePersonalIdentifiers` is true |
| `postcode` | UK postcode |
| `tradingDetails` | Names the person traded under, each with the address recorded against it. Empty for people who did not trade |
| `occupation` | Job or profession if listed |
| **Case** | |
| `insolvencyType` | Bankruptcy, Individual Voluntary Arrangement or Debt Relief Order |
| `caseName` | The case name as the register titles it |
| `caseNumber` | Official case reference number |
| `caseYear` | Year of the case |
| `status` | Current status as the register words it, for example the date a discharge or moratorium ends |
| `caseDescription` | Full case summary, including former addresses |
| **Dates, all ISO 8601** | |
| `orderDate` | Date the order was made |
| `arrangementDate` | Date the IVA was arranged |
| `notificationDate` | Date the case was notified to the register |
| `caseDate` | The date the register records against the case |
| **Court and officials** | |
| `court` | Court that made the order, empty for debt relief orders |
| `insolvencyServiceOffice` | Insolvency Service office handling the case |
| `insolvencyServiceContact` | Named contact at that office |
| `insolvencyServiceAddress` | Address of that office |
| `insolvencyServicePostcode` | Postcode of that office |
| `insolvencyServicePhone` | Telephone number of that office |
| `insolvencyPractitioner` | Appointed practitioner name |
| `insolvencyPractitionerFirm` | Practitioner's firm |
| `insolvencyPractitionerAddress` | Practitioner's address |
| `insolvencyPractitionerPhone` | Practitioner's telephone number |
| **Provenance** | |
| `detailsFetched` | Whether the full case page was read for this entry, rather than the search result alone. A null in a case field means unread when this is false and absent when it is true |
| `personalIdentifiersWithheld` | True when date of birth and last known address were left out because `includePersonalIdentifiers` was false |
| `detailsUrl` | Link to the entry on the register |
| `retrievedAt` | When the row was collected, ISO 8601 |

The Console table shows name, insolvency type, status, case number, order date, court, postcode and the register link. Every field is in the JSON, CSV and Excel exports.

### 💡 Why search the insolvency register?

**Credit and trade credit.** Screen a customer or supplier for insolvency history before extending credit or signing a contract.

**Debt recovery.** Identify bankruptcy filings and insolvency appointments before deciding whether enforcement is worth pursuing.

**Due diligence and AML.** Check directors, partners and beneficial owners against the register as part of onboarding or a deal.

**Early warning.** Monitor key accounts for the first sign of financial distress, rather than finding out from a letter.

### 🚀 How do I use UK Insolvency Register Search?

1. Click **Try for free**.
2. Put the individual's name, or a sole trader's trading name, into `searchName`.
3. Set `searchType` to `all`, or narrow it to bankruptcy, IVA, DRO or BRO.
4. Set `maxResults` to cap the run. Leave `includePersonalIdentifiers` off unless you have a lawful basis for date of birth and address.
5. Click **Start**, then download the results as JSON, CSV or Excel, or pull them from the API.

### ⬇️ Input

```json
{
  "searchName": "Smith John",
  "searchType": "all",
  "maxResults": 50
}
```

| Field | Type | Default | What it does |
|---|---|---|---|
| `searchName` | string | `Smith John` | Individual name or sole trader trading name to search |
| `searchType` | string | `all` | Insolvency type to match, all, bankruptcy, IVA, DRO or BRO |
| `maxResults` | integer | `50` | Hard cap on billable results |
| `includePersonalIdentifiers` | boolean | `false` | Include date of birth and last known address, only with a lawful basis |

### ⬆️ Output

#### Table view

Results arrive as an Entries table you can sort and filter in the Console, with the name, insolvency type, case number, status and order date lined up for scanning.

#### JSON

A typical row:

```json
{
  "name": "Diane Smith",
  "honorific": "Ms",
  "forename": "Diane",
  "surname": "Smith",
  "gender": "Female",
  "dateOfBirth": null,
  "alsoKnownAs": null,
  "occupation": "Unemployed",
  "lastKnownAddress": null,
  "postcode": "WA13 9SZ",
  "tradingDetails": [],
  "insolvencyType": "Debt Relief Order",
  "caseName": "Diane Smith",
  "caseNumber": "DRO7783259",
  "caseYear": "2026",
  "court": null,
  "status": "Currently Subject To Debt Relief Order : Moratorium Period will end on 17/08/2027",
  "caseDescription": "Diane Smith, Unemployed of 3 Paddock Lane, Warburton, Lymm, Greater Manchester, WA13 9SZ, United Kingdom",
  "orderDate": "2026-08-17",
  "arrangementDate": null,
  "notificationDate": null,
  "caseDate": "2026-08-17",
  "insolvencyPractitioner": null,
  "insolvencyPractitionerFirm": null,
  "insolvencyPractitionerAddress": null,
  "insolvencyPractitionerPhone": null,
  "insolvencyServiceOffice": "DRO Team",
  "insolvencyServiceContact": "Enquiry Desk",
  "insolvencyServiceAddress": "Insolvency Service, C/O Met Office, Fitzroy Road, Exeter, United Kingdom",
  "insolvencyServicePostcode": "EX1 3PB",
  "insolvencyServicePhone": "0300 678 0015",
  "detailsFetched": true,
  "personalIdentifiersWithheld": true,
  "detailsUrl": "https://www.insolvencydirect.bis.gov.uk/eiir/case-details/1/false/705115493/711540163/U21pdGg",
  "retrievedAt": "2026-09-04T08:36:54.238Z"
}
```

Download it from the run as JSON, CSV or Excel, or read it straight from the API.

### Personal data and retention

This actor reads the public Individual Insolvency Register. The data is public, but it is still personal data and it is deliberately temporary.

Under the Insolvency (England and Wales) Rules 2016, entries are deleted three months after discharge. The same three month rule applies to IVAs and DROs after completion or termination. A copy you export does not expire by itself, so a retained dataset can outlive the official record.

Date of birth and last known address are therefore withheld by default. Set `includePersonalIdentifiers` to true only if you have a lawful basis for holding them and a retention policy that deletes them when the register does.

Every record carries `25_retrievedAt`. Treat results as a point in time snapshot, not a permanent register. If you keep the output you become the data controller for it and are responsible for your own lawful basis, retention, and subject access handling.

### Insolvency types explained

**Bankruptcy**, court order where an individual's assets are sold to pay creditors. Stays on the register for 3 months after discharge, which is typically 12 months from the order.

**Individual Voluntary Arrangement (IVA)**, formal agreement to repay creditors over time, usually 5 to 6 years. Stays on the register for 3 months after completion.

**Debt Relief Order (DRO)**, for people with debts under £30,000, minimal assets and low income. Lasts 12 months. Stays on the register for 3 months after the end date.

**Bankruptcy Restrictions Order or Undertaking (BRO or BRU)**, additional restrictions for bankrupts who acted improperly. Can last 2 to 15 years.

### Notes on coverage

- Covers England, Wales and Northern Ireland. Scotland has a separate register
- Records remain on the register for 3 months after discharge or completion
- Historic records may not be available
- Name matching is exact, so use the correct spelling
- A typical run for 50 results takes 30 to 60 seconds, and is rate limited to respect government servers

### ⏱️ How long does a run take?

Measured on real runs, so you know what normal looks like and can tell it apart from a run that has stalled.

| Records returned | Typical run time |
|---|---|
| 3 | 15 to 20 seconds |
| 10 | 20 to 25 seconds |
| 30 | 30 to 45 seconds |

The Individual Insolvency Register is a slow search form rather than an API, and it serves results a page at a time, so even a three record search spends most of its time waiting on the register itself. That is why the small end of the table is fifteen seconds rather than one: the fixed cost of getting the first page back dominates, and each further page adds about a second. The first few seconds of any run are the container starting rather than the work.

A common surprise is a run that returns fewer records than `maxResults`. That is the register being exhausted, not a fault: a search for a name with 31 entries stops at 31 however high the cap is set, and says so. A run is never silently stuck either. Each page is logged as it is read, and if a run reaches its time limit it stops early, keeps every record already collected and says how far it got in the status message.

**Set the run timeout to suit the size of the ask.** This Actor's default is 3600 seconds, which is comfortably more than the largest run in the table above (500 entries takes about 2 minutes). You are charged per delivered result rather than per minute, so a generous timeout costs you nothing and a tight one risks losing the run's work. Lower it only if you want a hard ceiling on how long a scheduled run may sit.

### 💰 How much does it cost?

**$0.001 per insolvency record returned**, plus the standard **$0.00005** Apify charges once when a run starts. There is no monthly rental, so you pay only for what a run actually returns.

So a typical search that returns **50 records** costs **$0.05005**. A single name check that matches 3 records costs **$0.00305**, and a wider pull of 500 records costs **$0.50005**. A search that matches nothing costs $0.00005.

Paid Apify plans pay less per record: **$0.00085** on Bronze, **$0.0007** on Silver, **$0.0006** on Gold, **$0.0005** on Platinum and **$0.0004** on Diamond, which is 40 percent of the list price. That 500 record pull is **$0.20005** on Diamond.

Set `maxResults` to cap what a run can cost before it starts. The Apify listing always shows the current rates.

### 🔌 Integrations

Send results straight to Google Sheets, Slack, Airtable, Zapier, Make or your own webhook using [Apify integrations](https://docs.apify.com/platform/integrations). You can also trigger a run whenever something happens in another tool, which is the usual way to wire a register check into an onboarding flow.

### 🔗 Using UK Insolvency Register Search with the Apify API

```bash
curl -X POST "https://api.apify.com/v2/acts/spookyweb~uk-insolvency-register-search/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchName": "Smith John", "searchType": "all", "maxResults": 50}'
```

Or with the Apify client:

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('spookyweb/uk-insolvency-register-search').call({
  searchName: 'Smith John',
  searchType: 'all',
  maxResults: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

Full detail is in the [Apify API reference](https://docs.apify.com/api/v2), and every run is also callable from the [Python](https://docs.apify.com/api/client/python) and [JavaScript](https://docs.apify.com/api/client/js) clients.

### ❓ FAQ

#### What is withheld by default, and why?

Date of birth and last known address. Both are on the public register, and both are the fields that turn a register check into a personal profile. They are off unless you set `includePersonalIdentifiers` to true, so the default output answers the question the register exists to answer, is this person insolvent, without handing you identifiers you may have no lawful basis to hold.

#### What are the three insolvency types?

Bankruptcy, an Individual Voluntary Arrangement and a Debt Relief Order. A fourth entry type, the Bankruptcy Restrictions Order or Undertaking, is not an insolvency in itself, it is an extra restriction placed on someone who has already been made bankrupt and acted improperly. All four are searchable through `searchType`.

#### Can I search a trading name?

Yes. `searchName` matches an individual's name or a sole trader's trading name, so a search on a business name returns the sole trader behind it where the register lists one. The `10_tradingName` field carries it back on the row.

#### How current is the register?

It is live, and it is deliberately short lived. Entries are removed three months after discharge, completion or termination, under the Insolvency (England and Wales) Rules 2016. That means a result is only true at the moment you ran it, which is why every row carries `25_retrievedAt`.

#### What does the status field mean?

`14_status` is the register's own description of where the case stands, for example "Currently Bankrupt", discharged, active or suspended. It is the field to check before acting on a result, because a discharged bankruptcy and a current one mean very different things for a credit decision.

#### Does it cover Scotland?

No. Scotland maintains a separate register, the Register of Insolvencies, which this Actor does not read. Coverage here is England, Wales and Northern Ireland.

### ⚖️ Is it legal to search the insolvency register?

The Individual Insolvency Register is a statutory public register the Insolvency Service is required by law to publish, so anyone can check whether a person is subject to bankruptcy, an IVA or a debt relief order. This Actor reads only that public register, and it never logs in.

It does contain personal data, so this Actor withholds personal identifiers by default and you must switch them on deliberately. If you turn them on, you are the data controller for what you then do with them, and you need a lawful basis under UK GDPR. Use it for the checks the register exists for, such as credit, lending and due diligence.

Data is published under the [Open Government Licence v3.0](https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/), so commercial use is permitted with attribution: *Contains public sector information licensed under the Open Government Licence v3.0.* Apify's [ethical scraping guide](https://blog.apify.com/is-web-scraping-legal/) covers the wider picture.

### 👍 Your feedback

Found a bug, or want a field that is not here yet? Open an issue on the Actor's Issues tab. Requests that make the data more useful get built, and problems get fixed quickly.

### 🔎 You might also like

| Actor | What it does |
|---|---|
| [UK Employment Tribunal Decisions](https://apify.com/spookyweb/uk-employment-tribunal-decisions) | Employment tribunal decisions from GOV.UK, searchable by employer, claim type and date |
| [UK FCA Enforcement Notices](https://apify.com/spookyweb/uk-fca-enforcement-notices) | FCA final, decision and warning notices with firm names and penalty amounts |
| [UK Case Law Search and Monitor](https://apify.com/spookyweb/uk-case-law-search-monitor) | Court judgments and tribunal decisions from Find Case Law, with full text and change monitoring |

# Actor input Schema

## `searchName` (type: `string`):

Individual's surname and forename, or trading name for sole traders. E.g. 'Smith John' or 'ABC Trading'

## `searchType` (type: `string`):

Which register to search. bankruptcy for bankruptcy orders, iva for individual voluntary arrangements, dro for debt relief orders, bro for bankruptcy restrictions, or all to search every register at once.

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

Maximum number of records to return. Default 50, max 500.

## `includePersonalIdentifiers` (type: `boolean`):

Off by default. Date of birth combined with a home address and full name is identity grade personal data. Register entries are also deleted three months after discharge under the Insolvency (England and Wales) Rules 2016, so any copy you keep can outlive the official record. Only enable this if you have a lawful basis and a retention policy.

## Actor input object example

```json
{
  "searchName": "Smith John",
  "searchType": "all",
  "maxResults": 50,
  "includePersonalIdentifiers": false
}
```

# Actor output Schema

## `results` (type: `string`):

One row per item: insolvency register entries.

# 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 = {
    "searchName": "Smith John"
};

// Run the Actor and wait for it to finish
const run = await client.actor("wildorigins/uk-insolvency-register-search").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 = { "searchName": "Smith John" }

# Run the Actor and wait for it to finish
run = client.actor("wildorigins/uk-insolvency-register-search").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 '{
  "searchName": "Smith John"
}' |
apify call wildorigins/uk-insolvency-register-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,wildorigins/uk-insolvency-register-search"
        }
    }
}
```

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/plpt8ninJDNXcMDj3/builds/8jw3wOECbdYYhBrkI/openapi.json
