# New Zealand Bankruptcy Check — Insolvency Register (`malekh/new-zealand-bankruptcy-check-insolvency-register`) Actor

Screen names against New Zealand's official Insolvency Register and Debt Repayment Order Register. Every match is labelled current, discharged or annulled — 188 of the 228 'Smith' entries are discharged — and previous and alternate names are searched in the same lookup at no extra charge.

- **URL**: https://apify.com/malekh/new-zealand-bankruptcy-check-insolvency-register.md
- **Developed by:** [Malek H](https://apify.com/malekh) (community)
- **Categories:** Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.01 / 1,000 results

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/platform/actors/running/actors-in-store#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

## New Zealand Bankruptcy Check — Insolvency Register

A **New Zealand bankruptcy check** that answers the question a name search
cannot: *is this person **currently** bankrupt?*

Give it a list of names. It searches the official **New Zealand Insolvency
Register** and the **Debt Repayment Order (DRO) Register** published by the
Insolvency and Trustee Service (MBIE), matches every name the register holds for
an estate — including **previous and alternate names** — and returns each match
labelled **current**, **discharged** or **annulled**, with the adjudication date,
estate type, estate number and a verdict you can act on.

Built for pre-employment screening, director and trustee vetting, credit and
supplier onboarding, AML/CDD files, and anyone who has been paying per name for
this lookup.

***

### Why a name hit is not an answer

Two things about this register, both measured against the live API on
2026-07-30 rather than assumed:

**1. Most of the register is history.** Of the 228 estates returned for the
surname *Smith*, **188 (82%) are discharged** and only 38 are current. New
Zealand keeps entries after discharge. So a tool that reports "found on the
insolvency register" is right about four times in five — and wrong about the
thing the buyer is actually asking. Status is a first-class field here and the
verdict is computed from it, never from the presence of a row.

**2. The register indexes previous and alternate names, and most tools don't
use it.** 84 of those 228 estates carry alternate names. Estate 843727 is filed
as `SMITH, Harvey` and also holds `Smith, Silexa` — searching the alias alone
finds it. This Actor searches every name you supply plus every alias the
register records, in one lookup, for one charge.

***

### What you get back, per name

| Field | What it is |
|---|---|
| `verdict` | `CURRENTLY_INSOLVENT`, `REGISTER_HISTORY_ONLY`, `STATUS_UNAVAILABLE_VERIFY`, `NO_MATCH`, `NO_NAME_MATCH` or `UNCHECKED` |
| `currentlyInsolvent` | `true` when a matching estate is currently open, `false` when the register answered and nothing is current, and `null` when a match exists whose status the register does not publish — so an unknown can never be read as a clear |
| `undischargedBankrupt` | true only for a **current bankruptcy** — a No Asset Procedure is an insolvency but is **not** a bankruptcy, and the two are kept apart |
| `matches[]` | every matching estate: `estateNumber`, `registerName`, `matchedName`, `matchType`, `alternateNames`, `estateType`, `insolvencyStatus`, `adjudicationDate`, `addressAtAdjudication`, `administeringOffice`, `verifyAt` |
| `matchType` | `name_exact` › `name_strong` › `name_partial` › `surname_only` › `token_only` |
| `guidance` | plain-English reading of the result, including what was **not** covered |
| `register` | the integrity block: newest adjudication date, source age in days, canary count, verified-at |

***

### Input

```json
{
  "names": [
    { "referenceId": "CAND-001", "fullName": "Harvey Smith" },
    { "referenceId": "CAND-002", "firstName": "Alec", "middleName": "Arthur", "lastName": "Smith" },
    { "referenceId": "CAND-003", "fullName": "Ana Jones", "previousNames": ["Ana Wiremu"] }
  ]
}
```

A bare string works too: `{"names": ["Harvey Smith"]}`. Any extra fields you
attach are echoed back on the result so it reconciles with your own system.

`includeSurnameOnlyMatches` (default `false`) additionally lists entries sharing
only the surname. They are labelled `surname_only` and never change the verdict.

***

### How the matching works, and why

The register's search is **word-order sensitive in an undocumented way**:
`harvey smith` returns 194 estates, `smith harvey` returns 19, and
`harvey smith x` returns 228 — the same as `smith` on its own. A screening tool
whose recall depends on which order the buyer typed a name in is not a screening
tool.

So this Actor queries the **surname as a single token** — the widest
recall-safe query the API offers — pages through the entire result set, and
grades every candidate locally against every name and alias you supplied. The
widest possible query, the most common surname in the country, is 228 rows: one
page. The grading code is deterministic and covered by an offline test suite run
against captured live responses.

***

### It fails loudly rather than clearing you by accident

For a screening product, the dangerous output is not an error — it is a
confident **"no record found"** produced by a source that was quietly broken.
That is the answer the buyer was hoping for, and nothing anywhere says a word.

Before a single name is screened, and before anything is charged, the run
verifies:

- **Completeness** — the surname *Smith* must return at least 100 estates
  (228 measured). Below that the index is truncated and every "no match" this
  run would produce could be a false clear.
- **Currency** — the newest adjudication on the register must be within 60 days.
  Measured over the 500 most recent estates spanning 674 days, the longest gap
  between consecutive adjudication dates is 19 days, so 60 is roughly 3×
  the worst observed quiet spell.
- **The DRO register answers** as well as the main one.
- **Pagination integrity** — the rows received must equal the API's own
  `totalItems`, or the run fails rather than under-reporting.

If any of these fail, the run stops with an explanation and you are not
charged. A name that cannot be read or cannot be checked comes back as
`UNCHECKED`, is not charged for, and is explicitly *not* reported as clear.

***

### Limits — read these before you rely on it

- **This register carries no date of birth.** A person can never be *confirmed*
  from it. Every match is a possible match on name, `requiresManualVerification`
  is set, and each result links to the official register page to confirm.
- **It does not cover the Companies Office register of banned or disqualified
  directors.** That is a separate register behind a RealMe login, and the
  Insolvency Register's own search page links out to it.
- **It does not cover** company liquidations, receiverships, the Financial
  Service Providers Register, or any non-New-Zealand insolvency.
- Debt Repayment Order entries publish **no status**, so they are reported as
  status-unavailable and flagged for manual verification. They never count
  towards a clear.
- It reports what the register says. It does not give legal advice, and it does
  not tell you whether someone is eligible for any particular role.

***

### Source and attribution

Source: New Zealand Insolvency and Trustee Service (Ministry of Business,
Innovation and Employment), public Insolvency Register and Debt Repayment Order
Register — <https://www.insolvency.govt.nz/>. A public register, searchable by
anyone, no account required. Not endorsed by MBIE. Every output item carries the
attribution string.

### Pricing

Pay per event. `screening-run` is charged once, **after** the register has been
verified. `name-checked` is charged per name actually screened — every previous
and alternate name for that person is included in the same charge. Platform
usage costs are passed through.

# Actor input Schema

## `names` (type: `array`):

One entry per person. Either a plain string ("Harvey Smith") or an object with fullName, or firstName + lastName + optional middleName. Add previousNames (maiden names, former names, other spellings) and they are searched in the same lookup at no extra charge — the register indexes alternate names, and the paid alternative charges per additional name. Any extra fields, such as your own referenceId, are echoed back with the result so it reconciles with your ATS or onboarding system. Names are matched surname-first against every name the register holds for an estate.

## `includeSurnameOnlyMatches` (type: `boolean`):

Off by default. The New Zealand register carries no date of birth, so a shared surname is a coincidence, not a match, and listing them as results is how a screening report ruins the wrong person's week. Turn this on if you would rather review every entry sharing the surname yourself — they are labelled surname\_only and never change the verdict.

## Actor input object example

```json
{
  "names": [
    {
      "referenceId": "CAND-001",
      "fullName": "Harvey Smith"
    },
    {
      "referenceId": "CAND-002",
      "firstName": "Alec",
      "middleName": "Arthur",
      "lastName": "Smith"
    },
    {
      "referenceId": "CAND-003",
      "fullName": "Ana Jones",
      "previousNames": [
        "Ana Wiremu"
      ]
    }
  ],
  "includeSurnameOnlyMatches": 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 = {
    "names": [
        {
            "referenceId": "CAND-001",
            "fullName": "Harvey Smith"
        },
        {
            "referenceId": "CAND-002",
            "firstName": "Alec",
            "middleName": "Arthur",
            "lastName": "Smith"
        },
        {
            "referenceId": "CAND-003",
            "fullName": "Ana Jones",
            "previousNames": [
                "Ana Wiremu"
            ]
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("malekh/new-zealand-bankruptcy-check-insolvency-register").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 = { "names": [
        {
            "referenceId": "CAND-001",
            "fullName": "Harvey Smith",
        },
        {
            "referenceId": "CAND-002",
            "firstName": "Alec",
            "middleName": "Arthur",
            "lastName": "Smith",
        },
        {
            "referenceId": "CAND-003",
            "fullName": "Ana Jones",
            "previousNames": ["Ana Wiremu"],
        },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("malekh/new-zealand-bankruptcy-check-insolvency-register").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "names": [
    {
      "referenceId": "CAND-001",
      "fullName": "Harvey Smith"
    },
    {
      "referenceId": "CAND-002",
      "firstName": "Alec",
      "middleName": "Arthur",
      "lastName": "Smith"
    },
    {
      "referenceId": "CAND-003",
      "fullName": "Ana Jones",
      "previousNames": [
        "Ana Wiremu"
      ]
    }
  ]
}' |
apify call malekh/new-zealand-bankruptcy-check-insolvency-register --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=malekh/new-zealand-bankruptcy-check-insolvency-register",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/O1vKKObzZxYcpy1SP/builds/WYgHDsk2haRb6LUeW/openapi.json
