# Financial Adviser Register New Zealand — FSPR Check (`malekh/financial-adviser-register-new-zealand-fspr`) Actor

Look up a person or firm on New Zealand's Financial Service Providers Register: which categories of financial service they are registered for, split into current and previous, licence status where recorded, and the dispute resolution scheme covering them.

- **URL**: https://apify.com/malekh/financial-adviser-register-new-zealand-fspr.md
- **Developed by:** [Malek H](https://apify.com/malekh) (community)
- **Categories:** Business, Automation
- **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

## Financial Adviser Register New Zealand — FSPR Check

Look up any person or company on **New Zealand's Financial Service Providers
Register (FSPR)** and get back what the register actually says about them: the
**categories of financial service they are registered to provide**, whether each
one is current or historical, the **licence status and licensing authority**
where the register records one, and the **dispute resolution scheme** that covers
them.

Built for pre-employment screening, adviser onboarding, AML/CFT due diligence and
counterparty checks on New Zealand financial advisers, sharebrokers, insurance
brokers, accountants, mortgage advisers and financial advice providers.

Data comes live from the **New Zealand Companies Office (MBIE)** public register
at run time. Nothing is cached between runs.

***

### What you get that a name search does not

A companies-register lookup can tell you a name exists. The two fields that make
this an FSPR check are:

**1. The registered service categories.** What this provider is actually
registered to do — "Financial advice service (including financial advisers)",
"Client money or property service", "Custodial service — retail service",
"Employer or principal of a financial adviser" — each with its start date, and
each labelled `current` or `previous`. A service a firm gave up in 2021 is not
reported as one it offers today.

**2. The dispute resolution scheme.** Scheme name, membership number, effective
date, address and website — FSCL, IFSO, FDRS or FSCL's equivalents. This is where
a complaint about the provider goes, and confirming a provider has one is a
statutory requirement for retail financial services in New Zealand.

For **individual advisers** the scheme reaches them through the financial advice
provider they are engaged by, so this Actor reads the engagement chain too and
reports the FAP by name and FSP number. Tools that read only the record-level
field report "no dispute resolution scheme" for every natural person on the
register.

***

### Input

```json
{
  "names": [
    { "referenceId": "ADV-001", "name": "Adam Smith" },
    { "referenceId": "FIRM-002", "name": "Arrowsmith Financial Services" }
  ],
  "searchOperator": "Contains",
  "includeFinancialServices": true,
  "maxDetailedMatches": 10
}
```

`names` also accepts plain strings (`["Adam Smith", "Acme Advisers Ltd"]`), or
objects with `firstName` + `lastName`, or `organisationName`. Any extra fields
you include — such as `referenceId` — are echoed back on the result so it
reconciles with your ATS, CRM or onboarding system.

| Field | Default | What it does |
|---|---|---|
| `names` | required | People or firms to look up. Up to 200 per run. |
| `searchOperator` | `Contains` | `Contains`, `StartsWith` or `Equals`. `Equals` for an exact registered name; `Contains` for the widest recall. |
| `includeFinancialServices` | `true` | Open each match and read its service categories and dispute resolution scheme. Turn off for a fast name-and-status-only sweep. |
| `maxDetailedMatches` | `10` | How many matches per name to open. Matches beyond this are still returned with name, FSP number, status and dates. |

**On searching people:** the register stores one name string per provider and
matches against it, so a surname is the widest recall-safe query. If you supply
`firstName` + `lastName` this Actor searches the **surname** — sending
"First Last" would miss a record filed as "Last, First".

***

### Output

One dataset item per name, whether or not it matched.

```json
{
  "referenceId": "ADV-001",
  "nameSearched": "Adam Smith",
  "verdict": "REGISTERED",
  "currentlyRegistered": true,
  "totalResults": 1,
  "matchCount": 1,
  "requiresManualVerification": true,
  "matches": [
    {
      "fspNumber": "FSP1004669",
      "name": "Adam SMITH",
      "providerType": "Individual",
      "tradingNames": ["My Mortgage"],
      "address": "316 Hooker Road, Rd 3, Hamilton, 3283, New Zealand",
      "registrationStatus": "Registered",
      "isCurrentlyRegistered": true,
      "registrationDate": "10-Jan-2023",
      "deregistrationDate": null,
      "annualConfirmationFilingMonth": "March, last filed on 16-Mar-2026",
      "currentServiceCount": 1,
      "financialServices": [
        {
          "section": "current",
          "service": "Financial advice service (including financial advisers)",
          "additionalInformation": "Financial adviser",
          "startDate": "10-Jan-2023",
          "endDate": null,
          "status": null,
          "licensingAuthority": null,
          "engagements": [
            {
              "provider": "MY MORTGAGE LIMITED (FSP768771) (NZBN: 9429033275208)",
              "engagementStartDate": "24-Apr-2023",
              "engagementEndDate": null,
              "disputeResolutionScheme": {
                "scheme": "Financial Services Complaints Limited (FSCL) – a Financial Ombudsman Service",
                "membershipNumber": "3949",
                "effectiveDate": "24-Apr-2023",
                "website": "https://fscl.org.nz/"
              }
            }
          ]
        }
      ],
      "disputeResolutionSchemes": [ { "scheme": "…", "membershipNumber": "3949" } ]
    }
  ],
  "guidance": "…"
}
```

#### Verdicts

| Verdict | Meaning |
|---|---|
| `REGISTERED` | At least one match is currently registered on the FSPR. |
| `REGISTERED_HISTORICAL` | Matches exist but all are deregistered. Check `deregistrationDate`. |
| `NO_MATCH` | No entry on the register under this name. |
| `UNCHECKED` | The name could not be read, or the register could not answer for it. **Not** the same as "not registered" — and never charged for. |

`UNCHECKED` exists because the expensive failure for a screening tool is
returning "nothing found" when the truth is "nothing was looked at". Those two
answers are never conflated here, and you are never billed for the second one.

***

### What this check does and does not cover

**It covers** the FSPR: who is registered to provide financial services in New
Zealand, which services, since when, under which dispute resolution scheme, and
— where the register records it — which licence and which licensing authority.

**It does not cover:**

- **Employees advising under an employer's registration.** An individual can
  give financial advice under a registered financial advice provider without
  appearing on the FSPR themselves. If a person returns `NO_MATCH`, check the
  employing firm too. The `guidance` field says so on every no-match result.
- **The full FMA licence position.** The FSPR records a licence where one has
  been noted against a service (`status`, `licensingAuthority`), but the
  Financial Markets Authority's own register is authoritative on licensing.
- **Identity.** The FSPR holds no date of birth, so a name match is not proof
  that this is your person. Confirm against the FSP number. Every match sets
  `requiresManualVerification: true`.
- **Other registers.** Not the NZ Companies Register, not the Insolvency
  Register, not the disqualified-directors register, not the Personal Property
  Securities Register.

***

### Reliability

The register is a form-driven application with no public API, and its
characteristic failure is a quiet one: post a step to the wrong place and it
answers `HTTP 200` with an empty page rather than an error. For a screening tool
that is the worst possible failure, because an empty page looks exactly like good
news.

So, before any of your names are touched, each run walks the whole
search → open record → read services path against a known control record and
checks it got back what it asked for. **If that fails the run stops and you are
charged nothing.** Per name, a result is only reported once rows have actually
been read; anything else is reported `UNCHECKED` and is not billed.

***

### Pricing

| Event | Price | When |
|---|---|---|
| Screening run | $0.10 | Once per run, **after** the register has passed its integrity check. A run that aborts on an unreachable or changed register costs you nothing. |
| Name checked | $0.35 | Per name actually answered. Names that could not be read or could not be checked are free. |

Platform usage costs are included — the prices above are what you pay.

For comparison, per-name New Zealand FSPR checks are sold by employment
screening vendors at around **AU$42 per name**, delivered manually.

***

### Source and legal basis

Financial Service Providers Register, New Zealand Companies Office / Ministry of
Business, Innovation and Employment. The register is public and searchable by
anyone without an account; registration and the register's publication are
required by the Financial Service Providers (Registration and Dispute Resolution)
Act 2008, precisely so that these facts can be checked. This Actor reads only the
public search interface, at human-scale request rates, and honours the site's
`robots.txt`.

# Actor input Schema

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

Each entry is a name as a string, or an object with `name` (or firstName + lastName, or organisationName). Any extra fields, such as your own referenceId, are echoed back with the result so it reconciles with your ATS, CRM or onboarding system. Up to 200 names per run. Note: the register stores one name string per provider, so if you supply firstName + lastName the SURNAME is searched — sending 'First Last' would miss a record filed as 'Last, First'.

## `searchOperator` (type: `string`):

Contains is the register's own default and gives the widest recall — it is what you want for screening. Equals matches only an exact registered name, which is useful when you already hold the provider's registered name and want a single row back.

## `includeFinancialServices` (type: `boolean`):

On by default, and it is the reason to use this Actor: it opens each match and reads the CATEGORIES of financial service the provider is registered for, whether each is current or previous, the licence status and licensing authority where recorded, and the dispute resolution scheme covering them. Turn it off for a fast name-and-status-only sweep across many names.

## `maxDetailedMatches` (type: `integer`):

How many matches per name to open and read in full. Matches beyond this limit are still returned with name, FSP number, registration status and dates — they are simply not expanded. Raise it if you are searching a common surname and need every match detailed.

## Actor input object example

```json
{
  "names": [
    {
      "referenceId": "ADV-001",
      "name": "Adam Smith"
    },
    {
      "referenceId": "FIRM-002",
      "name": "Arrowsmith Financial Services"
    }
  ],
  "searchOperator": "Contains",
  "includeFinancialServices": true,
  "maxDetailedMatches": 10
}
```

# 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": "ADV-001",
            "name": "Adam Smith"
        },
        {
            "referenceId": "FIRM-002",
            "name": "Arrowsmith Financial Services"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("malekh/financial-adviser-register-new-zealand-fspr").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": "ADV-001",
            "name": "Adam Smith",
        },
        {
            "referenceId": "FIRM-002",
            "name": "Arrowsmith Financial Services",
        },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("malekh/financial-adviser-register-new-zealand-fspr").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": "ADV-001",
      "name": "Adam Smith"
    },
    {
      "referenceId": "FIRM-002",
      "name": "Arrowsmith Financial Services"
    }
  ]
}' |
apify call malekh/financial-adviser-register-new-zealand-fspr --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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