NZ Post Tracking API & MCP
Query live NZ Post (nzpost, including CourierPost parcels) package status and scan history in a single synchronous GET request or MCP tool call. lastscanned auto-detects UPU S10 numbers ending in NZ in Pass 1; other NZ Post number shapes need ?carrier=nzpost.
Overview & Quick Facts
| Property | Value |
|---|---|
Carrier slug (?carrier=) | nzpost |
| Brand & service aliases | NZ Post, New Zealand Post, CourierPost |
| Category | National post and parcel carrier (New Zealand) |
| Single-package REST endpoint | GET https://api.lastscanned.com/v1/track/{trackingNumber} (add ?carrier=nzpost for non-S10 numbers) |
| Batch REST endpoint | GET https://api.lastscanned.com/v1/track?numbers=EE123456785NZ,EE123456799NZ |
MCP server (https://mcp.lastscanned.com) | track_package, track_packages, list_carriers (claude mcp add --transport http lastscanned https://mcp.lastscanned.com) |
| Authentication & pricing | Authorization: Bearer lsk_live_... · 1 free keyless lookup/day per IP · Free tier (5 unique numbers/day, $0) · Pro ($4.99/mo for 1,000 unique numbers, unlimited re-polls, $0.015/extra) · HTTP 402 Stripe MPP ($0.50 for 25-number lsk_pack_ key or $0.02/number in USDC on Tempo) |
Tracking Number Formats & Auto-Detection
| Pass | Rule / Regex | Check Digit | Examples |
|---|---|---|---|
Pass 1 (matches) | /^[A-Z]{2}\d{9}NZ$/ | UPU S10 mod 11 | EE123456785NZ |
Pass 2 (mayMatch) | None | — | — |
Explicit (?carrier=nzpost) | Domestic and inbound numbers that other carriers also use, such as 20-digit numbers starting 00 | — | 00792019188064003181 |
Pass ?carrier=nzpost for any number that is not an S10 ending NZ.
Synchronous GET Request & Normalized JSON Response
curl
curl -s "https://api.lastscanned.com/v1/track/EE123456785NZ" \
-H "Authorization: Bearer $LASTSCANNED_API_KEY"JavaScript / TypeScript (fetch)
const res = await fetch("https://api.lastscanned.com/v1/track/00792019188064003181?carrier=nzpost", {
headers: { Authorization: `Bearer ${process.env.LASTSCANNED_API_KEY}` },
});
const pkg = await res.json();
console.log(pkg.status, pkg.events[0]);MCP track_package tool call
{
"tool": "track_package",
"arguments": {
"tracking_number": "EE123456785NZ"
}
}Normalized TrackingResult JSON response
{
"carrier": "nzpost",
"trackingNumber": "EE123456785NZ",
"status": "in_transit",
"statusDescription": "Your item has arrived in New Zealand",
"service": null,
"deliveredAt": null,
"deliveredAtLocal": null,
"signedBy": null,
"destination": null,
"events": [
{
"timestamp": "2026-10-26T19:17:13Z",
"localTime": "2026-10-27T08:17:13",
"status": "in_transit",
"description": "Your item has arrived in New Zealand",
"location": "Auckland Processing Centre",
"code": "591"
}
]
}Status Notes
- Time zones: NZ Post reports scan times as UTC instants.
timestampis that UTC time andlocalTimeis the same moment on the New Zealand wall clock (Pacific/Auckland), as the NZ Post tracking page shows it. - Status codes: Delivered, delivery-attempted, out-for-delivery and held-for-collection scans are recognised by NZ Post's own event codes (
code); other scans are classified from their wording. Attempted deliveries and parcels held for collection are reported asexception. - Signature:
signedByis filled from the delivery scan when NZ Post records a signer's name.
Related Resources
- Live browser lookup tool: Track an NZ Post package live on lastscanned.com/lookup/nzpost
- Carrier hub: All supported carriers
- Regex & check digits: Tracking number formats & auto-detection
- AI support workflows: WISMO AI agents & synchronous tracking
Korea Post (EMS, International Mail) Tracking API & MCP
Track Korea Post (ePOST) EMS, registered and parcel numbers (S10 numbers ending KR) via synchronous REST GET or MCP. Normalized JSON status and scan history, no carrier credentials required.
DPD UK Tracking API & MCP
Track DPD UK parcels (Follow my parcel, 14-digit labels and 10-digit parcel numbers) via synchronous REST GET or MCP. Normalized JSON status and scan history, no carrier credentials required.