Real Estate [com.au & co.nz] $0.9π° Search By URLs and Keywords
Pricing
from $0.90 / 1,000 results
Real Estate [com.au & co.nz] $0.9π° Search By URLs and Keywords
π° Only $0.9π° Realestate.com.au listings from official services APIs. Input: buy/rent/sold list URLs or direct property pages. Output: one row per listing with flat columns (title, price, agents, images, address) plus full listing and withIdsResponse; includes originalSearchUrl and apiRequestUrl.
Pricing
from $0.90 / 1,000 results
Rating
5.0
(1)
Developer
Muhamed Didovic
Actor stats
0
Bookmarked
52
Total users
35
Monthly active users
20 hours ago
Last modified
Categories
Share
realestate.com.au + realestate.co.nz Listings
Turn Australian and New Zealand real estate listings into structured data you can actually use. One actor, two countries, official JSON APIs β pull pin-perfect property rows with flat columns and the raw API payload. NZ rows include broadband / fibre data per address.
π¦πΊπ³πΏ Two markets, one dataset. Filter with the
countrycolumn. π°οΈ Direct API access β not HTML scraping β so payloads are stable and complete. π° $0.90 per 1,000 listings. Proxies via Apify; no compute charges.

β¨ Why use this scraper?
Tired of AU-only scrapers? Of HTML scrapers that break every time the website changes? Of paying for fields you don't get?
- π¦πΊπ³πΏ AU and NZ in one run.
realestate.com.auandrealestate.co.nzβ every other scraper is one or the other. - π°οΈ Official JSON APIs. Hits
services.realestate.com.auandplatform.realestate.co.nzdirectly. Stable shapes, complete fields. - π‘ NZ broadband intel. Every NZ row includes the fibre plans available at that address (speed, monthly price, ONT status).
- π¦ Flat columns + raw payload on every row. Spreadsheet-friendly columns plus the full API envelope (
withIdsResponse/nzListingResponse) so future schema changes don't lose data. - π Filter mode. No URL? Pick country / channel / region / district / suburb and the actor builds the search URL for you.
- π§ Provenance built-in.
originalSearchUrlandapiRequestUrlper row β auditable and reproducible.
π― Use cases
| Team | What they build |
|---|---|
| Real-estate analysts | Price-trend dashboards by suburb, days-on-market, listing-volume tracking |
| Lead-gen / agencies | Agent + agency contact lists with phone, email, profile URL |
| Investment researchers | Cross-market AU vs NZ comparison datasets, yield/rent analysis |
| ISPs / broadband sales | NZ fibre coverage and plan-availability research per address |
| Saved-search monitors | Alerts on new or changed listings for a tracked search URL |
| Auction prep | AU auction-time URLs scraped before each Friday |
| Data warehouses | Schema-stable archives via the raw withIdsResponse / nzListingResponse |
π° Pricing & free tier
- Cost: $0.90 per 1,000 listings. No minimums, proxies included, no compute charges.
- Free tier (try before you buy):
- Up to 5 listings per run.
- Emails are partially masked (e.g.
j***@example.com). - Apify platform credits also apply β free Apify accounts have a monthly compute budget that effectively caps how often you can run.
Upgrade to a paid Apify plan to remove the per-run cap and reveal full emails.
ποΈ How it works
- You provide AU and/or NZ URLs in
startUrlsβ or usesearchByFiltersto skip URL building. - The actor detects each URL's country and type (search vs single-listing) and routes accordingly.
- AU search:
services.realestate.com.auβlistings/search/byUrlβ paginate via_links.nextβlistings/withIdsper listing. - NZ search: load search HTML once for suburb IDs β
platform.realestate.co.nz/search/v1/listingsβ for each listing:listings/{id}+listings/{id}/listing-fibre. - Each listing becomes one dataset row with flat columns and the raw API payload. CSV and JSON files are written to the actor run for download.
π₯ Supported inputs
AU (www.realestate.com.au)
| URL pattern | Behavior |
|---|---|
/buy/..., /rent/..., /sold/... list pages (e.g. β¦/list-1?β¦) | Search β paginate β fetch each listing |
/property-β¦-{id} or /property-id-{numeric} | Single-listing fetch (one withIds call) |
/buy/in-β¦/auction-times-1?β¦ | Search (auctions). Site-side cap of ~80 pages β narrow your URL |
NZ (www.realestate.co.nz)
| URL pattern | Behavior |
|---|---|
/residential/sale/β¦, /residential/rent/β¦ | Search β paginate β fetch each listing + fibre |
/rural/..., /commercial/... (where supported by the mapper) | Same as residential |
| Listing URL with numeric ID as first path segment | Single-listing fetch (listings/{id} + listings/{id}/listing-fibre) |
Unsupported
https://www.realestate.com.au/agent/...β agent profile URLs (not parsed)https://www.realestate.com.au/find-agent/...β find-agent URLs (skipped)- NZ
soldchannel via filter mode (not exposed by the platform) - Any host outside
*.realestate.com.auand*.realestate.co.nz
AU URL examples
https://www.realestate.com.au/buy/between-0-125000-in-melbourne+-+northern+region,+vic/list-1?source=refinementhttps://www.realestate.com.au/rent/property-unit+apartment-villa-in-sydney+cbd,+nsw/list-1?maxBeds=3&source=refinementhttps://www.realestate.com.au/sold/property-land-between-0-50000-in-adelaide+-+greater+region,+sa/list-1?source=refinementhttps://www.realestate.com.au/property-unit-vic-macleod-150434352
NZ URL examples
https://www.realestate.co.nz/residential/sale/auckland/auckland-city/blockhouse-bayhttps://www.realestate.co.nz/residential/rent/wellington/wellington-cityhttps://www.realestate.co.nz/43004474/residential/sale/42-bolton-street-blockhouse-bay
βοΈ Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startUrls | array | * | β | AU/NZ search or property URLs. URL mode wins over searchByFilters. |
searchByFilters | object | * | β | Single shared filter (country, channel, cityOrRegion, district, suburb). |
flattenOutput | boolean | No | true | When true, rows include flat columns and the raw API payload. When false, just the raw payload. |
maxItems | integer | No | 10000 | Maximum listings per listing-search URL. Direct property URLs always fetch one. |
maxConcurrency | integer | No | 100 | Maximum concurrent requests. |
minConcurrency | integer | No | 1 | Minimum concurrent requests. |
maxRequestRetries | integer | No | 100 | Retries per failed request (covers HTTP 429 / 5xx). |
proxy | object | No | Apify residential | Apify proxy or custom proxyUrls. Recommended for production. |
* Provide either startUrls or searchByFilters. URL mode wins if both are set.
π Examples
Mixed AU + NZ URLs
{"startUrls": ["https://www.realestate.co.nz/residential/sale/auckland/auckland-city/blockhouse-bay","https://www.realestate.com.au/buy/in-melbourne+-+northern+region,+vic/list-1?source=refinement"],"maxItems": 100}
NZ filter mode (no URL needed)
{"searchByFilters": {"country": "NZ","channel": "buy","cityOrRegion": "Auckland","district": "Auckland City","suburb": "Blockhouse Bay"},"flattenOutput": true,"maxItems": 100}
Single AU property (one row)
{"startUrls": ["https://www.realestate.com.au/property-unit-vic-macleod-150434352"]}
AU sold listings, narrow region, residential proxy
{"startUrls": ["https://www.realestate.com.au/sold/property-land-between-0-50000-in-adelaide+-+greater+region,+sa/list-1?source=refinement"],"maxItems": 500,"proxy": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
AU rent, raw API payload only (no flat columns)
{"startUrls": ["https://www.realestate.com.au/rent/property-unit+apartment-villa-in-sydney+cbd,+nsw/list-1?maxBeds=3&source=refinement"],"maxItems": 200,"flattenOutput": false}
π Output overview
Each dataset row is one listing, regardless of whether the start URL was a search or a single property page.
source: "realestate_detail"+country: "AU"β Australian listings.source: "realestate_nz_listing"+country: "NZ"β New Zealand listings.
When flattenOutput: true (default), rows include flat spreadsheet-style columns plus the full raw API payload (withIdsResponse for AU; nzListingResponse and optional listingFibreResponse for NZ). When false, just the raw payload + minimal identifiers.
CSV is written from the union of top-level keys; nested payloads survive in JSON only β prefer JSON for complete data.
π¦ Output samples
AU sample (realestate_detail, trimmed)
{"source": "realestate_detail","country": "AU","listingId": "441571884","title": "1 BEDROOM APARTMENT DARLING HARBOUR VIEW @HAYMARKET","propertyType": "unit","price": "$900 per week","address": "Address available on request","suburb": "Sydney","postcode": "2000","state": "NSW","bedrooms": 1,"bathrooms": 1,"carSpaces": 0,"channel": "rent","url": "https://www.realestate.com.au/property-unit-nsw-sydney-441571884","agencyName": "Bondi Beach International Agency","agencyPhone": "02 412468335","agencyEmail": "rosio@bbiagency.com.au","agents": [{ "agentId": "2362406", "name": "Rosio Flynn", "phoneNumber": "0412468335", "emails": ["rosio@bbiagency.com.au"] }],"scrapedAt": "2026-04-04T22:10:04.036Z","originalSearchUrl": "https://www.realestate.com.au/rent/property-unit+apartment-villa-in-sydney+cbd,+nsw/list-1?maxBeds=3&source=refinement","apiRequestUrl": "https://services.realestate.com.au/services/listings/withIds?id=441571884","withIdsResponse": "...full API envelope...","listing": "...full API listing object..."}
NZ sample (realestate_nz_listing, trimmed)
{"source": "realestate_nz_listing","country": "NZ","listingId": "43004474","title": "Four Homes, Endless Possibilities","propertyType": "House","price": "Negotiation","address": "42 Bolton Street","suburb": "Blockhouse Bay","postcode": "0600","state": "Auckland","bedrooms": 9,"bathrooms": 5,"carSpaces": 2,"channel": "buy","url": "https://www.realestate.co.nz/43004474/residential/sale/42-bolton-street-blockhouse-bay","agencyName": "Anne Duncan Real Estate Ltd - Ray White Mt Albert","agents": [{ "agentId": "6111", "name": "Anne Duncan", "phoneNumber": "021 996 426", "emails": ["anne.duncan@raywhite.com"] }],"fibreProductCount": 6,"fibreProducts": [{ "name": "Fibre Starter 100", "upSpeedMbps": 100, "priceCents": 6000, "available": false }],"scrapedAt": "2026-04-11T19:42:12.941Z","apiRequestUrl": "https://platform.realestate.co.nz/search/v1/listings/43004474","fibreApiRequestUrl": "https://platform.realestate.co.nz/search/v1/listings/43004474/listing-fibre","nzListingResponse": "...full JSON:API document...","listingFibreResponse": "...full fibre JSON:API document..."}
ποΈ Output fields
Fields are grouped by category. Both AU and NZ rows share most top-level field names so unioned CSV columns work across countries.
Core
| Field | Type | Description |
|---|---|---|
source | string | realestate_detail (AU) or realestate_nz_listing (NZ) |
country | string | AU or NZ |
listingId | string | Listing id used in the API |
title | string | Marketing headline |
propertyType | string | e.g. unit, house, House, Land |
status | string | Channel label (AU) / listing-status (NZ) |
channel | string | buy, rent, or sold |
description | string | Plain-text description |
featured | boolean | Featured / showcased flag |
productDepth | string | REA tier (AU); empty for NZ |
scrapedAt | string | ISO timestamp when row was pushed |
url | string | Public listing URL |
url_slug | string | Path slug |
Address
| Field | Type | Description |
|---|---|---|
address | string | Street line |
suburb | string | Suburb |
postcode | string | Postcode |
state | string | State (AU) / region (NZ) |
latitude / longitude | number|null | Coordinates if available |
Property
| Field | Type | Description |
|---|---|---|
bedrooms / bathrooms / carSpaces | number|null | From features.general |
propertyFeatures | object | Feature strings grouped by section |
landSize / landSizeUnit | number / string | When available |
inspections | array | Open-home / inspection schedule |
statementOfInformation | string|null | PDF URL (AU only) |
constructionStatus | string | new / established / empty |
Pricing
| Field | Type | Description |
|---|---|---|
price | string | Display string (e.g. $900 per week, Negotiation) |
Inside listing.price | object | Structured { display, β¦ } |
Tier flags (AU parity)
| Field | Type | Description |
|---|---|---|
isSold / isBuy / isRent / isProject | boolean | Channel flags |
tier_signature / tier_midtier / tier_standard | boolean | REA tier flags |
tier_isClassicProject / tier_isSignatureProject / tier_isProject | boolean | Project flags |
isExactMatch / isSurroundingMatch | null | Reserved (search-context only) |
Agency
| Field | Type | Description |
|---|---|---|
agencyName, agencyPhone, agencyEmail, agencyWebsite | string | Office contact |
agencyAddress | string | Single-line address |
agencyAddress_streetAddress / _suburb / _state / _postcode / _raw | string / object | Split address |
agencyProfileUrl, agencyLogo | string|null | Profile + logo URLs |
Agents
| Field | Type | Description |
|---|---|---|
agents[] | array | Each: agentId, name, jobTitle, phoneNumber, emails[], powerProfile, profileUrl, image |
lister | object | First element of agents (NZ convenience) |
π On the free tier,
emailsare masked asj***@example.com.
Images
| Field | Type | Description |
|---|---|---|
images[] | array | Absolute photo URLs (800Γ600 webp on AU CDN; mediaserver.realestate.co.nz/...crop.800x600.jpg on NZ) |
NZ fibre / broadband (NZ only)
| Field | Type | Description |
|---|---|---|
hasOnt | boolean | ONT (fibre terminator) installed at the address |
currentConnection | string|null | Current connection tier |
standardInstall | boolean | Standard install eligibility |
ontUpgradeLink / standardInstallLink | string | Chorus help URLs |
fibreProductCount | integer | Number of plans |
fibreProducts[] | array | Each: id, name, upSpeedMbps, downSpeedMbps, priceCents, available, requiresOntUpgrade |
fibreStatusCode | integer | HTTP status of fibre call (0 if request failed) |
fibreApiRequestUrl | string | Exact β¦/listing-fibre URL |
Provenance / metadata
| Field | Type | Description |
|---|---|---|
originalSearchUrl | string|null | Public search URL that started this branch |
apiRequestUrl | string | Exact API request URL for the row |
statusCode | integer | HTTP status of the listing fetch |
flattenOutput | boolean | Echo of the input flag |
Raw payloads
| Field | Type | Description |
|---|---|---|
listing | object | Full API listing object (AU withIds.results[0]; NZ compat shape) |
withIdsResponse | object | AU: full { totalResultsCount, results } envelope |
nzListingResponse | object | NZ: full JSON:API body for GET /search/v1/listings/{id} |
listingFibreResponse | object|null | NZ: full JSON:API body for fibre call (when HTTP 200) |
rawResponse | object | NZ: alias of nzListingResponse (compatibility) |
π» Integrations
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("memo23/realestate-au-listings").call(run_input={"startUrls": ["https://www.realestate.co.nz/residential/sale/auckland/auckland-city/blockhouse-bay"],"maxItems": 50,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item['country']} {item['listingId']}: {item['title']}")print(f" {item['address']}, {item['suburb']} β {item['price']}")
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('memo23/realestate-au-listings').call({startUrls: ['https://www.realestate.com.au/buy/in-melbourne+-+northern+region,+vic/list-1?source=refinement',],maxItems: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach((row) => {console.log(`${row.country} ${row.listingId}: ${row.title}`);console.log(` ${row.address}, ${row.suburb} β ${row.price}`);});
π Performance
| Metric | Value |
|---|---|
| Throughput (AU search β detail) | ~30β80 listings/min with residential proxy |
| Concurrency | Configurable up to maxConcurrency: 100 |
| Search-page hard cap | REALESTATE_MAX_SEARCH_PAGES (default 500) per chain |
| Retry policy | Exponential backoff on 408 / 425 / 429 / 5xx |
| Proxy support | Apify residential or custom proxyUrls (recommended) |
π‘ Tips for best results
- Test with
maxItems: 10first. Verify the output schema matches your downstream pipeline before running large jobs. - Narrow your AU search URLs. REA's
auction-timesURLs cap at ~80 pages; use a tighter region or filter so important results aren't past the cap. - Use residential proxies in production. REA may rate-limit aggressive patterns; the default Apify residential group works well.
- Prefer URL mode for reproducibility.
searchByFiltersbuilds one URL each run β the URL itself is the source of truth, easier to share and re-run. - Keep
flattenOutput: trueunless you only want raw payloads. The flat columns make CSV usable without writing a custom flattener. - Consume JSON, not CSV, for nested payloads.
listing/withIdsResponse/nzListingResponseare dropped from CSV. - Set
maxItemsto what you actually need. It caps charges (and dataset rows) β no point pulling 5,000 listings if you're sampling 100.
β FAQ
Can I scrape both AU and NZ listings in one run?
Yes. Provide a mix of realestate.com.au and realestate.co.nz URLs in startUrls and the actor routes each one to the right pipeline. The country column lets you split the dataset afterwards.
Are emails always returned?
Paying users get full emails. Free-tier users get masked emails (j***@example.com) so you can still distinguish senders by domain. Some agency/agent records simply don't expose an email β those come back as empty regardless of plan.
What's listingFibreResponse for?
NZ-only. For each NZ listing, the actor calls GET /search/v1/listings/{id}/listing-fibre to retrieve the broadband / fibre plans available at that address. If the call fails, fibre fields are dropped but the property row is still saved.
Why does my CSV row have empty listing / withIdsResponse columns?
CSV doesn't represent nested objects well. Use the JSON export (data.json) for full payloads.
Does it support realestate.com.au /agent/ profile URLs?
No. Listing search and direct property URLs only. /agent/... and /find-agent/... are skipped with a log warning.
What about pin.it-style short URLs or non-realestate.com.au mirrors?
Not supported. Hosts must be *.realestate.com.au (AU) or *.realestate.co.nz (NZ).
Can I use searchByFilters for NZ sold listings?
No β NZ sold is not exposed by the platform API. AU sold is supported via filters or URLs.
Does the actor handle pagination?
Yes. AU paginates via _links.next; NZ via page[offset] / page[limit]. Both honor REALESTATE_MAX_SEARCH_PAGES (default 500) as a safety cap.
What's the difference between listing and withIdsResponse (AU)?
withIdsResponse is the full API envelope ({ totalResultsCount, results }). listing is results[0] β the same object, hoisted for convenience.
Are there auction-time URLs?
Yes β AU auction-times URLs are supported. The website caps these at ~80 pages, so use a narrow region or filter.
β οΈ Disclaimer
This actor is independent and is not affiliated with, endorsed by, or sponsored by REA Group, realestate.com.au Pty Ltd, or Realestate.co.nz Ltd. All trademarks are property of their respective owners. Listings may include personal data (emails, phone numbers) β handle in accordance with your privacy obligations.
π Support
- Issues / feature requests: use the Issues tab on this actor in Apify.
- Custom scrapers, integrations, or full datasets: muhamed.didovic@gmail.com
- Author: muhamed-didovic.github.io
π Explore more scrapers
Browse other scrapers from this author or the full Apify Store.