NZ Address Geocode + Fault Lookup (LINZ/GEM)
Under maintenancePricing
from $0.10 / 1,000 geocode results
NZ Address Geocode + Fault Lookup (LINZ/GEM)
Under maintenanceOne call, JSON out. Geocode messy NZ addresses, attach the nearest active fault, run lists in bulk. Linear LINZ geocoding under the hood, GEM fault lookup attached when you ask for it. No glue code, no manual suburb disambiguation, no licence archaeology.
Pricing
from $0.10 / 1,000 geocode results
Rating
0.0
(0)
Developer
Josh Chamberlin
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
NZ Property & Address Master
Geocode messy NZ addresses and bundle property-level context — including nearest active fault — into a single normalised JSON snapshot.
Public-data Actor for the New Zealand property stack. Single call, JSON out, attribution strings included in every result.
What it does
Three operations:
| Operation | Input | Output |
|---|---|---|
geocode | messy NZ address string | canonical address + lat/lon + territorial authority + confidence |
snapshot | address or parcel_id | geocode + nearest active fault (name, slip type, distance) |
bulk | list of addresses | list of geocodes (fast path, no hazards) |
Geocode quality
The geocoder returns a match_status so you know what you're getting:
exact— input substring of LINZ canonical (capped confidence 0.99)partial— leading number match (capped confidence 0.94)fuzzy— token AND with anchor-gated fallback (capped confidence 0.6)no_match— refuses rather than confidently returns a wrong address
Conservative on purpose: a "no_match" beat a confidently-wrong Napier coords for "327 Bluff Road, Bluff".
Hazards overlay (snapshot only)
For each geocoded property, the Actor computes the haversine distance to the nearest known active fault trace from the GEM Foundation Global Active Faults Database. Returns:
- Fault name (e.g. "Wellington-Hutt Valley 4")
- Catalog ID (e.g.
NZ_291) - Slip type (e.g. "Dextral-Normal")
- Distance in kilometres
- Full CC BY-SA 4.0 attribution strings (Styron & Pagani 2020, Litchfield et al. 2014 NZ component)
Search radius configurable via fault_search_km (default 100 km, max 1000 km). Set include_hazards: false to skip the GEM lookup on a hot path.
Data sources (free + official)
All sources are New Zealand public data with permissive licences:
- LINZ Data Service — Street Address dataset (layer 123113), NZ Property Titles (layer 50804). CC BY 4.0, attribution required. LINZ-API key required as Actor secret.
- GEM Foundation Global Active Faults Database — GeoJSON download, NZ traces from Litchfield et al. 2014. CC BY-SA 4.0, attribution strings included in every output row.
The Actor does not scrape, does not access paywalled data, does not store customer input.
Sample request / response
Input
{"operation": "snapshot","address": "1 Molesworth Street, Wellington, 6011","include_hazards": true,"fault_search_km": 100}
Output (one row)
{"input_address": "1 Molesworth Street, Wellington, 6011","canonical_address": "101 Molesworth Street, Thorndon, Wellington","lat": "-41.2740910167","lon": "174.77771315","match_status": "partial","ta": "Wellington City","region": "Wellington","confidence": "0.73","source": "LINZ","attribution": "Contains data sourced from Land Information New Zealand under Creative Commons Attribution 4.0 International (CC BY 4.0).","nearest_fault_name": "Wellington Hutt Valley 4","nearest_fault_catalog_id": "NZ_291","nearest_fault_slip_type": "Dextral-Normal","nearest_fault_distance_km": "0.057","nearest_fault_source": "GEM Global Active Faults Database (CC BY-SA 4.0)","hazards_attribution_primary": "GEM Foundation Global Active Faults Database (CC BY-SA 4.0), doi:10.1177/8755293020944182","hazards_attribution_nz": "NZ traces: Litchfield et al. 2014, doi:10.1080/00288306.2013.854256"}
Pricing
Per-result via Apify Pay-Per-Event. Head-on price comparison with Google:
| Operation | This Actor | Google direct | Notes |
|---|---|---|---|
| Single geocode | $0.0001 / result ($0.10/1k) | Geocoding API: $5/1k. Address Validation: ~$8–10/1k | 50× below Google's direct API; ~7× below OSM-backed alternatives |
| Address + nearest fault + canonical + attribution | $0.015 / result ($15/1k) | $5 + separate fault lookup = much more | Bundle is the value; one call replaces three |
| Bulk (geocode only) | $0.0005 / result ($0.50/1k) | Maps Batch Geocoding: $10/1k | Bulk skips hazards for cost reasons |
Subscriptions are not offered yet — Apify is retiring the rental model on 2026-10-01 and Apify Pay-Per-Event is now the only path. Re-evaluate after first paid month.
Configuration
Required: LINZ_API_KEY set as a secret environment variable on the Actor. Free at https://data.linz.govt.nz/.
The GEM data is downloaded at Actor startup and cached to /tmp for 14 days. No second API key required.
Local dev
# One-time setupcd actors/nz-property-masterpython3 -m venv .venv && source .venv/bin/activatepip install -e ".[dev]"# Run locally (no Apify infrastructure)cp .env.example .env # fill in LINZ_API_KEYAPIFY_LOCAL=true python -m src.main --input '{"address": "1 Molesworth Street, Wellington, 6011"}'
Tests
source .venv/bin/activatepython -m pytest tests/ -v # 33/33 passing locally
The test suite covers geocoder match classification, anchor extraction, GNS/GEM cache hit/miss expiry, haversine + cross-track distance math, and Pydantic model round-trip.
Compliance
- Public data only — LINZ (CC BY 4.0) + GEM Global Active Faults Database (CC BY-SA 4.0)
- No PII collected, no third-party scraping, no auth-walled data
- Attribution strings included in every output row
- ~10 requests/sec sustained — bulk jobs throttle automatically
Changelog
- 0.10.21 — Hazards overlay (GEM Global Active Faults) wired into
snapshotoperation. Attribution strings included. 33/33 pytest passing. - 0.10.18 — Geocoder fixes: anchor-gated fuzzy,
match_statusfield, conservativeno_match. False-positive regression tests added. - 0.10.17 — Real LINZ WFS integration, three-strategy matcher.
- 0.10.16 — Phase 1 complete: stub
geocode+snapshot+bulkoperations. - 0.11 (planned) — Listing copy finalised (Variant B / Tier B). Pricing tier locked. Ready for Claude Code review of code + plan.