API docs

Get current New Zealand home loan and term deposit rates programmatically.

Getting an API key

To use the API you need an API key.

  1. Contact Josh to request an API key (e.g. for your product or internal tool).
  2. You will receive a single API key. Store it securely and do not share it or commit it to version control.
  3. Send the key on every request using the X-API-Key header or Authorization: Bearer (see Authentication).
Keep your API key secure

Use environment variables or a secrets manager, not hardcoded values or public repos.

Making a request

Once you have an API key, you can call the API. Replace YOUR_API_KEY with your key.

Shell
curl "https://nzrates.co.nz/api/v1/rates/home-loans?term_months=12,24" \
  --header "X-API-Key: YOUR_API_KEY"

A successful response includes a JSON-formatted data array of rate objects:

JSON
{
  "data": [
    {
      "provider": "ANZ",
      "rate_type": "fixed",
      "term_months": 12,
      "customer_type": "standard",
      "rate": 6.45,
      "source_url": "https://...",
      "scraped_at": "2026-02-26T08:00:00+00:00"
    }
  ]
}

Base URL & versioning

The base URL is https://nzrates.co.nz/api/v1/.

Authentication

Send your API key on every request using one of:

Missing or invalid keys receive 401 with a JSON detail message.

Endpoints

GET /api/v1/rates/home-loans

Returns all current home loan rates (latest observation per provider, rate type, term, and customer type).

Optional query parameters:

  • customer_typespecial or standard
  • rate_typefixed or floating
  • term_months – comma-separated, e.g. 6,12,24

GET /api/v1/rates/term-deposits

Returns all current term deposit rates (latest observation per provider and term).

Optional query parameter:

  • term_months – comma-separated, e.g. 6,12,24

Home loan objects include provider, rate_type, term_months, customer_type, rate, source_url, scraped_at.

Term deposit objects include provider, term_months, rate, source_url, scraped_at.

Be careful using customer_type (relevant to home loan rates)

Use this field with a grain of salt

Rates are scraped from provider sites. “special” vs “standard” is inferred per provider and these terms do not mean the same thing for each lender. For some providers it indicates a discount or special offer. For others it reflects LVR bands or eligibility. Some providers only expose one rates tier which are always returned as standard.

It can be misleading to compare or aggregate by customer_type across providers without understanding each provider’s semantics. Always verify rates with source_url and the lender’s own terms.

Rate limits

Requests are limited per API key (default 120 per minute). When exceeded you receive 429 with a Retry-After header and a JSON detail message.

Next steps

For interactive exploration and full schema details: