Real Estate [com.au & co.nz] $0.9πŸ’° Search By URLs and Keywords avatar

Real Estate [com.au & co.nz] $0.9πŸ’° Search By URLs and Keywords

Pricing

from $0.90 / 1,000 results

Go to Apify Store
Real Estate [com.au & co.nz] $0.9πŸ’° Search By URLs and Keywords

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

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

52

Total users

35

Monthly active users

20 hours ago

Last modified

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 country column. πŸ›°οΈ Direct API access β€” not HTML scraping β€” so payloads are stable and complete. πŸ’° $0.90 per 1,000 listings. Proxies via Apify; no compute charges.

Real Estate AU + NZ Scraper - How It Works


✨ 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.au and realestate.co.nz β€” every other scraper is one or the other.
  • πŸ›°οΈ Official JSON APIs. Hits services.realestate.com.au and platform.realestate.co.nz directly. 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. originalSearchUrl and apiRequestUrl per row β€” auditable and reproducible.

🎯 Use cases

TeamWhat they build
Real-estate analystsPrice-trend dashboards by suburb, days-on-market, listing-volume tracking
Lead-gen / agenciesAgent + agency contact lists with phone, email, profile URL
Investment researchersCross-market AU vs NZ comparison datasets, yield/rent analysis
ISPs / broadband salesNZ fibre coverage and plan-availability research per address
Saved-search monitorsAlerts on new or changed listings for a tracked search URL
Auction prepAU auction-time URLs scraped before each Friday
Data warehousesSchema-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

  1. You provide AU and/or NZ URLs in startUrls β€” or use searchByFilters to skip URL building.
  2. The actor detects each URL's country and type (search vs single-listing) and routes accordingly.
  3. AU search: services.realestate.com.au β†’ listings/search/byUrl β†’ paginate via _links.next β†’ listings/withIds per listing.
  4. 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.
  5. 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 patternBehavior
/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 patternBehavior
/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 segmentSingle-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 sold channel via filter mode (not exposed by the platform)
  • Any host outside *.realestate.com.au and *.realestate.co.nz

AU URL examples

  • https://www.realestate.com.au/buy/between-0-125000-in-melbourne+-+northern+region,+vic/list-1?source=refinement
  • https://www.realestate.com.au/rent/property-unit+apartment-villa-in-sydney+cbd,+nsw/list-1?maxBeds=3&source=refinement
  • https://www.realestate.com.au/sold/property-land-between-0-50000-in-adelaide+-+greater+region,+sa/list-1?source=refinement
  • https://www.realestate.com.au/property-unit-vic-macleod-150434352

NZ URL examples

  • https://www.realestate.co.nz/residential/sale/auckland/auckland-city/blockhouse-bay
  • https://www.realestate.co.nz/residential/rent/wellington/wellington-city
  • https://www.realestate.co.nz/43004474/residential/sale/42-bolton-street-blockhouse-bay

βš™οΈ Input parameters

ParameterTypeRequiredDefaultDescription
startUrlsarray*β€”AU/NZ search or property URLs. URL mode wins over searchByFilters.
searchByFiltersobject*β€”Single shared filter (country, channel, cityOrRegion, district, suburb).
flattenOutputbooleanNotrueWhen true, rows include flat columns and the raw API payload. When false, just the raw payload.
maxItemsintegerNo10000Maximum listings per listing-search URL. Direct property URLs always fetch one.
maxConcurrencyintegerNo100Maximum concurrent requests.
minConcurrencyintegerNo1Minimum concurrent requests.
maxRequestRetriesintegerNo100Retries per failed request (covers HTTP 429 / 5xx).
proxyobjectNoApify residentialApify 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

FieldTypeDescription
sourcestringrealestate_detail (AU) or realestate_nz_listing (NZ)
countrystringAU or NZ
listingIdstringListing id used in the API
titlestringMarketing headline
propertyTypestringe.g. unit, house, House, Land
statusstringChannel label (AU) / listing-status (NZ)
channelstringbuy, rent, or sold
descriptionstringPlain-text description
featuredbooleanFeatured / showcased flag
productDepthstringREA tier (AU); empty for NZ
scrapedAtstringISO timestamp when row was pushed
urlstringPublic listing URL
url_slugstringPath slug

Address

FieldTypeDescription
addressstringStreet line
suburbstringSuburb
postcodestringPostcode
statestringState (AU) / region (NZ)
latitude / longitudenumber|nullCoordinates if available

Property

FieldTypeDescription
bedrooms / bathrooms / carSpacesnumber|nullFrom features.general
propertyFeaturesobjectFeature strings grouped by section
landSize / landSizeUnitnumber / stringWhen available
inspectionsarrayOpen-home / inspection schedule
statementOfInformationstring|nullPDF URL (AU only)
constructionStatusstringnew / established / empty

Pricing

FieldTypeDescription
pricestringDisplay string (e.g. $900 per week, Negotiation)
Inside listing.priceobjectStructured { display, … }

Tier flags (AU parity)

FieldTypeDescription
isSold / isBuy / isRent / isProjectbooleanChannel flags
tier_signature / tier_midtier / tier_standardbooleanREA tier flags
tier_isClassicProject / tier_isSignatureProject / tier_isProjectbooleanProject flags
isExactMatch / isSurroundingMatchnullReserved (search-context only)

Agency

FieldTypeDescription
agencyName, agencyPhone, agencyEmail, agencyWebsitestringOffice contact
agencyAddressstringSingle-line address
agencyAddress_streetAddress / _suburb / _state / _postcode / _rawstring / objectSplit address
agencyProfileUrl, agencyLogostring|nullProfile + logo URLs

Agents

FieldTypeDescription
agents[]arrayEach: agentId, name, jobTitle, phoneNumber, emails[], powerProfile, profileUrl, image
listerobjectFirst element of agents (NZ convenience)

πŸ”’ On the free tier, emails are masked as j***@example.com.

Images

FieldTypeDescription
images[]arrayAbsolute photo URLs (800Γ—600 webp on AU CDN; mediaserver.realestate.co.nz/...crop.800x600.jpg on NZ)

NZ fibre / broadband (NZ only)

FieldTypeDescription
hasOntbooleanONT (fibre terminator) installed at the address
currentConnectionstring|nullCurrent connection tier
standardInstallbooleanStandard install eligibility
ontUpgradeLink / standardInstallLinkstringChorus help URLs
fibreProductCountintegerNumber of plans
fibreProducts[]arrayEach: id, name, upSpeedMbps, downSpeedMbps, priceCents, available, requiresOntUpgrade
fibreStatusCodeintegerHTTP status of fibre call (0 if request failed)
fibreApiRequestUrlstringExact …/listing-fibre URL

Provenance / metadata

FieldTypeDescription
originalSearchUrlstring|nullPublic search URL that started this branch
apiRequestUrlstringExact API request URL for the row
statusCodeintegerHTTP status of the listing fetch
flattenOutputbooleanEcho of the input flag

Raw payloads

FieldTypeDescription
listingobjectFull API listing object (AU withIds.results[0]; NZ compat shape)
withIdsResponseobjectAU: full { totalResultsCount, results } envelope
nzListingResponseobjectNZ: full JSON:API body for GET /search/v1/listings/{id}
listingFibreResponseobject|nullNZ: full JSON:API body for fibre call (when HTTP 200)
rawResponseobjectNZ: alias of nzListingResponse (compatibility)

πŸ’» Integrations

Python

from apify_client import ApifyClient
client = 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

MetricValue
Throughput (AU search β†’ detail)~30–80 listings/min with residential proxy
ConcurrencyConfigurable up to maxConcurrency: 100
Search-page hard capREALESTATE_MAX_SEARCH_PAGES (default 500) per chain
Retry policyExponential backoff on 408 / 425 / 429 / 5xx
Proxy supportApify residential or custom proxyUrls (recommended)

πŸ’‘ Tips for best results

  1. Test with maxItems: 10 first. Verify the output schema matches your downstream pipeline before running large jobs.
  2. Narrow your AU search URLs. REA's auction-times URLs cap at ~80 pages; use a tighter region or filter so important results aren't past the cap.
  3. Use residential proxies in production. REA may rate-limit aggressive patterns; the default Apify residential group works well.
  4. Prefer URL mode for reproducibility. searchByFilters builds one URL each run β€” the URL itself is the source of truth, easier to share and re-run.
  5. Keep flattenOutput: true unless you only want raw payloads. The flat columns make CSV usable without writing a custom flattener.
  6. Consume JSON, not CSV, for nested payloads. listing / withIdsResponse / nzListingResponse are dropped from CSV.
  7. Set maxItems to 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


πŸ” Explore more scrapers

Browse other scrapers from this author or the full Apify Store.