RealestateCo NZ $1๐ฐ Powerful Filters + Deep Search
Pricing
from $1.00 / 1,000 results
RealestateCo NZ $1๐ฐ Powerful Filters + Deep Search
From $1/1K. Search and extract all real estate properties for sale, rent, and sold across New Zealand from realestate.co.nz.
Pricing
from $1.00 / 1,000 results
Rating
5.0
(1)
Developer
Abot API
Maintained by CommunityActor stats
1
Bookmarked
18
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
realestate.co.nz Scraper
Search and extract all property listings for sale, rent, and sold across New Zealand from realestate.co.nz. Collect property prices, full addresses, agent and office contacts, photos, floor plans, school zones, GPS coordinates, auction details, sales history, and estimated values, all in structured, ready-to-use format.
What does realestate.co.nz Scraper do?
This actor searches realestate.co.nz and collects property listing data including:
- For Sale: residential properties currently on the market
- New Builds: new construction properties only
- For Rent: rental listings with weekly/monthly prices
- Sold: historical sales with sale prices, council valuations, estimated values, and building age
For sale/rent/new builds listings, you get the full address, price (including auction/tender/BEO details), bedrooms, bathrooms, garages, land and floor area, property images, floor plans, listing agent contacts, office info, GPS coordinates, in-zone schools, open home times, and more.
For sold properties, you get the address, sale history (prices, dates, methods), council evaluations, estimated current value, building age, and property features.
Why use this scraper?
- Lightning fast: extracts ~20 listings per page load with no individual property page visits needed
- Structured data: prices parsed into numeric values, addresses split into components (region/district/suburb), coordinates included
- Flexible search: region-wide, district-level, or suburb-level searches
- Rich data: agents, offices, schools, open homes, floor plans, and auction details all included from search pages
- Resumable: automatically saves progress and resumes from checkpoint on failure
Quick Start
Scrape for-sale properties in Auckland:
{"mode": "location","locations": [{ "region": "Auckland" }],"listingType": "buy","maxListings": 50,"maxPages": 3}
Scrape a specific suburb:
{"mode": "location","locations": [{ "region": "Auckland", "district": "Manukau City", "suburb": "Papatoetoe" }],"listingType": "buy","maxListings": 100,"maxPages": 5}
Scrape multiple regions at once:
{"mode": "location","locations": [{ "region": "Auckland" },{ "region": "Wellington" },{ "region": "Canterbury" }],"listingType": "buy","maxListings": 200,"maxPages": 5}
Scrape new builds in Canterbury:
{"mode": "location","locations": [{ "region": "Canterbury" }],"listingType": "new_builds","maxListings": 50,"maxPages": 3}
Scrape rental listings in Wellington:
{"mode": "location","locations": [{ "region": "Wellington" }],"listingType": "rent","maxListings": 50,"maxPages": 3}
Scrape sold properties in Auckland:
{"mode": "location","locations": [{ "region": "Auckland" }],"listingType": "sold","maxListings": 50,"maxPages": 3}
Scrape from a direct URL:
{"mode": "url","urls": ["https://www.realestate.co.nz/residential/sale/auckland?by=latest"],"maxListings": 50}
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | String | location | Search mode: location or url |
locations | Array | [{"region":"Auckland"}] | Locations to search (location mode only) |
urls | Array | - | Direct search page URLs (url mode only, no pagination) |
listingType | String | buy | Listing type: buy, new_builds, rent, or sold |
propertyTypes | Array | (all) | Filter: house, apartment, townhouse, unit, section, lifestyle_property, etc. |
priceMin | Integer | - | Minimum price (NZD) |
priceMax | Integer | - | Maximum price (NZD) |
bedroomsMin | Integer | - | Minimum bedrooms |
bathroomsMin | Integer | - | Minimum bathrooms |
sort | String | latest | Sort order: latest, price-asc, price-desc, default |
maxListings | Integer | 25 | Stop after this many listings |
maxPages | Integer | 2 | Max search pages per location (location mode only, 20 results/page) |
outputFormat | Array | ["json"] | Export formats: json, csv |
proxyConfiguration | Object | - | Proxy settings (Apify proxy or custom) |
resumeFromCheckpoint | Boolean | true | Resume the SAME run after a migration/abort interruption |
resumeFromRunId | String | - | Continue ONE interrupted crawl from a previous run/dataset id |
incrementalMode | Boolean | false | Remember this search across scheduled runs; flag NEW/UPDATED/UNCHANGED/REAPPEARED/EXPIRED |
stateKey | String | (auto) | Optional label for the incremental baseline (see below) |
emitUnchanged | Boolean | false | Also output UNCHANGED listings (bills extra rows) |
emitExpired | Boolean | false | Also output EXPIRED listings after a complete scan (bills extra rows) |
Resume and recurring updates
Three related but distinct controls โ pick the one that matches what you're doing:
-
resumeFromCheckpoint(default on) โ continues the same run after a platform migration or a manual Resurrect. Nothing to configure; it just works. -
resumeFromRunIdโ paste a previous run ID (or its dataset ID) to continue one specific interrupted crawl. Listing ids already collected in that run are skipped, so this run only adds new ones. -
incrementalModeโ turn on when you run this same search on a schedule (e.g. daily) and only want to know what's new or changed. The actor remembers the search itself in a key-value store keyed bystateKey(or an auto-derived hash of your search settings if you leave it blank) โ no run id to paste. Every output row gets:changeType:NEW|UPDATED|UNCHANGED|REAPPEARED|EXPIREDchangedFields: which fields differ from the last tracked snapshot (empty unlessUPDATED)firstSeenAt/lastSeenAt: ISO timestamps
A different combination of location/filters/sort/urls automatically gets its own baseline โ you never need to worry about two different searches mixing state, unless you deliberately set the same
stateKeyon both.By default,
UNCHANGEDlistings are suppressed (not output, not billed) andEXPIREDlistings are never emitted. Turn onemitUnchangedand/oremitExpiredto see them too โ both bill extraapify-default-dataset-itemrows, since every pushed row is charged.EXPIREDis only emitted after a run that scans the full tracked search with nomaxListings/maxPagescap hit, no block, and no resume in play โ a partial run never marks a still-live listing as gone.resumeFromRunIdandincrementalModecan be combined once, to bootstrap a monitoring baseline from an existing dataset โ after that, run withincrementalModealone.
With incrementalMode off (the default), output is byte-identical to before this feature existed โ no changeType, same charges.
Location Flexibility
Each location uses Region (required), District (optional), and Suburb (optional). You can add multiple locations to search them all in one run.
| Location | Scope | ~Results |
|---|---|---|
Region: Auckland | All of Auckland | ~15,000 |
Region: Wellington | All of Wellington | ~2,500 |
Region: Auckland, District: Manukau City, Suburb: Papatoetoe | Single suburb | ~460 |
Region: Canterbury | All of Canterbury | ~4,500 |
Available Regions
Auckland, Bay of Plenty, Canterbury, Central North Island, Central Otago / Lakes District, Coromandel, Gisborne, Hawkes Bay, Manawatu / Whanganui, Marlborough, Nelson & Bays, Northland, Otago, Pacific Islands, Southland, Taranaki, Waikato, Wairarapa, Wellington, West Coast.
Send results into your apps (MCP connectors)
Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape โ the Apify dataset is never changed.
What gets written to the connector: a condensed, human-readable summary of each record โ not the full JSON. Each item becomes one entry with a title (the listing's name / address) and its key fields flattened to plain text (price, beds/baths, agent, URL, โฆ). Nested objects are collapsed to their main value (e.g. an address object โ its full-address text) and long lists are trimmed to the first few names. The complete, full-fidelity record always stays in the Apify dataset โ the connector copy is a readable digest for browsing in your app.
- Notion โ one page per item (title + a summary body), created under the page you set in
notionParentPageUrl. - Linear / Airtable / other โ one record/issue per item with the same title + fields.
How to enable:
- Authorize a connector once under Apify โ Settings โ Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
- For Notion, also set
notionParentPageUrlto the page where items should be created.
The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip โ the export only runs when a connector is selected.
Output
Each listing in the dataset contains:
{"id": "12345678","listingUrl": "https://www.realestate.co.nz/12345678/residential/sale/10-example-street-khandallah","listingNo": "ABC123XYZ","address": {"full": "10 Example Street, Khandallah, Wellington City, Wellington","displayAddress": "10 Example Street, Khandallah","streetNumber": "10","streetName": "Example Street","suburb": "Khandallah","district": "Wellington City","region": "Wellington","postcode": "6035","country": "New Zealand","countryCode": "NZ"},"price": {"display": "Buyer Enquiry Over $850,000","value": 850000,"currency": "NZD","priceType": "enquiry_over","priceCode": 11},"features": {"bedrooms": 3,"bathrooms": 2,"totalBathrooms": 2,"garages": 1,"landSizeInSqm": 350,"floorAreaInSqm": 130},"propertyType": "house","sourcePropertyType": "House","listingType": "buy","listingCategoryCode": "res_sale","status": "active","heading": "Charming Family Home with Views","images": [{"url": "https://images.realestate.co.nz/listings/12345678/abc123.crop.140x178.jpg","thumbnailUrl": "https://images.realestate.co.nz/listings/12345678/abc123.crop.70x89.jpg","id": 100000001,"order": 1}],"floorPlans": [{"url": "https://example.com/floorplan.jpg","type": "floorplan"}],"agents": [{"id": "100001","firstName": "Jane","lastName": "Smith","name": "Jane Smith","phone": "027 123 4567","email": "jane@example.co.nz","listingCount": 15}],"office": {"id": "5001","name": "Example Realty Ltd (Licensed: REAA 2008)","colloquialName": "Example Realty","phone": "04 123 4567","email": "info@example.co.nz","brandColour": "#1a2b3c"},"location": {"lat": -41.25,"lon": 174.78},"schools": [{"name": "Sample Primary School","inZone": true,"distance": "0.5km"}],"openHomes": [],"auctionDate": "2026-03-15T12:00:00+13:00","auctionLocation": "On site","publishedDate": "2026-02-26T17:55:27+13:00","isFeatured": false,"isNewConstruction": false,"source": {"portal": "realestate.co.nz","scrapedAt": "2026-02-26T05:30:00.000Z"}}
Sold Property Output
Sold properties return a different data structure with sales history and valuations:
{"id": "abc12345","listingUrl": "https://www.realestate.co.nz/...","address": {"full": "5/22 Sample Avenue, Takapuna, North Shore City, Auckland","displayAddress": "5/22 Sample Avenue","suburb": "Takapuna","district": "North Shore City","region": "Auckland"},"features": {"bedrooms": 3,"bathrooms": 1,"garages": 1},"propertyType": "townhouse","listingType": "sold","status": "sold","buildingAge": 1985,"latestSale": {"salePriceDisplay": "$820,000","netSalePrice": 820000,"saleDate": "2024-06-15","saleMethod": "P - Private Treaty(Neg.)","sellDays": 90},"salesHistory": ["..."],"estimatedValue": {"valueLow": 780000,"valueMid": 810000,"valueHigh": 850000,"confidenceRating": 4,"estimatedDate": "2026-02-01"},"councilEvaluations": [{"capitalValue": 790000,"landValue": 420000,"improvementsValue": 370000,"currentValuationDate": "2024-05-01"}],"location": { "lat": -36.79, "lon": 174.77 },"source": { "portal": "realestate.co.nz", "scrapedAt": "..." }}