NZX APInzx.com ↗
Access daily OHLC prices, trading volume, company listings, and instrument details for NZX-listed stocks via a structured JSON API.
What is the NZX API?
The NZX API provides access to New Zealand Exchange market data across 3 endpoints, covering daily OHLC price and volume history, a full company directory, and per-instrument details. The get_daily_price_volume endpoint returns up to 2 years of trading day records — including open, high, low, close, volume, value, and trade count — for any NZX-listed ticker code such as AIR, FPH, or FBU.
curl -X GET 'https://api.parse.bot/scraper/7392557d-d880-428c-a870-0c3c60653fd3/get_daily_price_volume?code=AIR' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace nzx-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: NZX SDK — list companies, fetch price/volume data, inspect instruments."""
from parse_apis.nzx_daily_price_volume_api import NZX, InstrumentNotFound
client = NZX()
# List all NZX-listed companies (bounded iteration).
for company in client.companies.list(limit=5):
print(company.code, company.short_name, company.listing_status)
# Drill into one company's daily price & volume data.
air = client.companies.get(code="AIR")
pv = air.price_volume()
print(pv.name, pv.isin, pv.currency, f"{pv.total_days} trading days")
# Inspect the most recent daily record.
for record in pv.daily_data[:3]:
print(record.date, record.close, record.volume, record.capitalisation)
# Get instrument details for a company.
details = air.instruments()
for inst in details.instruments:
print(inst.isin, inst.name, inst.market_type, inst.shares_issued)
# Typed error handling: attempt to look up a non-existent ticker.
try:
client.companies.get(code="ZZZZZ")
except InstrumentNotFound as exc:
print(f"Not found: {exc.code}")
print("exercised: companies.list / companies.get / price_volume / instruments / InstrumentNotFound")
Get daily price and volume data for an NZX-listed stock. Returns up to 2 years of merged OHLC price data and trading volume/value for every trading day, sorted newest first. Each record includes open, high, low, close, market_price, volume, value, trade_count, on/off market volume, and capitalisation. The code is resolved to an ISIN internally before fetching metrics.
| Param | Type | Description |
|---|---|---|
| coderequired | string | NZX stock ticker code (e.g. MHJ, AIR, FPH, FBU) |
{
"type": "object",
"fields": {
"code": "string - Stock ticker code",
"isin": "string - International Securities Identification Number",
"name": "string - Full instrument name",
"period": "string - Data period (2Y)",
"currency": "string - Currency code (e.g. NZD)",
"daily_data": "array - Daily records sorted newest first, each with date, open, high, low, close, market_price, volume, value, trade_count, on_market_volume, off_market_volume, capitalisation",
"total_days": "integer - Number of trading days returned"
},
"sample": {
"data": {
"code": "AIR",
"isin": "NZAIRE0001S2",
"name": "Air New Zealand Limited (NS) Ordinary Shares",
"period": "2Y",
"currency": "NZD",
"daily_data": [
{
"low": null,
"date": "2026-06-10",
"high": null,
"open": null,
"close": null,
"value": 0,
"volume": 0,
"trade_count": 0,
"market_price": 0.425,
"capitalisation": 1374263864.025,
"on_market_volume": 0,
"off_market_volume": 0
},
{
"low": 0.425,
"date": "2026-06-09",
"high": 0.435,
"open": 0.435,
"close": 0.425,
"value": 200722.53,
"volume": 465782,
"trade_count": 254,
"market_price": 0.425,
"capitalisation": 1374263864.025,
"on_market_volume": 449996,
"off_market_volume": 15786
}
],
"total_days": 502
},
"status": "success"
}
}About the NZX API
Daily Price and Volume History
The get_daily_price_volume endpoint accepts an NZX ticker code (e.g. MHJ, AIR, FPH) and returns a daily_data array sorted newest first. Each record includes date, open, high, low, close, market_price, volume, value, trade_count, and on_ma. The response also carries top-level fields: isin, name, currency, period (fixed at 2Y), and total_days — the number of trading days in the returned dataset.
Company Directory
The list_companies endpoint requires no inputs and returns every NZX-listed company as an array. Each company object includes code, short_name, registered_name, listing_status, and first_listed. The total field gives the count of companies in the response. Results are sorted alphabetically by ticker code, making it straightforward to iterate over the full exchange.
Instrument Details
The get_instrument_details endpoint takes a ticker code and returns an instruments array. Each instrument record includes isin, code, name, security_class, market_type, category, currency_code, shares_issued, and first_listed. A single ticker can map to multiple instrument entries where different security classes exist for the same issuer.
Coverage and Data Currency
All data covers instruments listed on the NZX. Price history extends back up to two years from the current date. The currency field in both price and instrument responses is typically NZD, though some instruments may carry different designations.
The NZX API is a managed, monitored endpoint for nzx.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when nzx.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official nzx.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a historical price chart for any NZX stock using up to 2 years of daily OHLC data from
get_daily_price_volume. - Screen NZX-listed companies by
listing_statususing the full directory fromlist_companies. - Calculate daily trading volume trends and value turnover for NZX equities using
volumeandvaluefields. - Enrich a portfolio tracker with
isin,shares_issued, andsecurity_classfromget_instrument_details. - Identify newly listed companies on the NZX by sorting the
first_listedfield returned bylist_companies. - Cross-reference NZX instruments with global securities databases using the
isinfield. - Monitor average trade size per session by dividing
valuebytrade_countin the daily records.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does NZX provide an official developer API?+
What does `get_daily_price_volume` return beyond OHLC prices?+
volume (shares traded), value (dollar value of trades), trade_count (number of individual transactions), market_price, and on_ma in addition to the standard open, high, low, and close fields. The response also includes the instrument's isin, name, and currency at the top level.Can I retrieve intraday price data or real-time quotes through this API?+
Does the API cover NZX derivatives, bonds, or funds — or only equities?+
get_instrument_details returns for a given code. Dedicated coverage of NZX-listed bonds or derivatives is not currently guaranteed. You can fork this API on Parse and revise it to add endpoints targeting those instrument categories.Is there pagination for `list_companies`?+
list_companies endpoint returns all listed companies in a single response along with a total count. There are no pagination parameters — the full directory is delivered at once.