RealEstate[com.au & co.nz] π°$1π° Search By URLs and Keywords
Pricing
from $1.00 / 1,000 results
RealEstate[com.au & co.nz] π°$1π° Search By URLs and Keywords
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 $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Muhamed Didovic
Actor stats
0
Bookmarked
25
Total users
20
Monthly active users
2 days ago
Last modified
Categories
Share
Overview
Extract structured property listings from Australia and New Zealand:
- Australia β realestate.com.au via
services.realestate.com.au: buy / rent / sold search URLs (or direct property pages),listings/search/byUrl, pagination via_links.next, thenlistings/withIdsper listing. - New Zealand β realestate.co.nz via
platform.realestate.co.nz: residential (and related) search URLs onwww.realestate.co.nz(HTML once for suburb ids), thenGET /search/v1/listingsfor search pages, and two detail calls per listing:GET /search/v1/listings/{id}(full card: title, price, address, photos, agents) andGET /search/v1/listings/{id}/listing-fibre(broadband plans). Fibre failures are non-fatal; the property row is still saved.
The default pipeline uses an internal Impit-based handler (no Cheerio for those requests). Optional CheerioCrawler + Impit remains for AU when REALESTATE_USE_INTERNAL_HANDLER is disabled.
You get one dataset row per listing with country: AU or NZ, flat columns when flattenOutput is true (the default), plus nested payloads (listing + withIdsResponse for AU; listing + nzListingResponse / listingFibreResponse for NZ).
Use it to monitor markets, export price and agency data, or warehouse raw API payloads with traceable originalSearchUrl and request URLs.
Features
-
Multiple entry URLs (all routed automatically):
- Search / list pages:
https://www.realestate.com.au/buy/β¦,/rent/β¦,/sold/β¦β paths likeβ¦/list-1?β¦(andsource=refinementwhen present). First request:search/byUrlwith path + query; next pages:_links.nextβsearch?query=β¦untilmaxItemslistings are queued or there is no next link. - Direct property URL: numeric id path or
property-β¦-{id}β onewithIdscall only.
- Search / list pages:
-
New Zealand (
www.realestate.co.nz):- Search URLs β Paths such as
/residential/sale/β¦,/residential/rent/β¦, rural/commercial variants supported by the mapper. Suburb filters are read from listing HTML (filter[suburbId][]), then the platform listings search API is paginated. - Direct listing URL β Property pages whose first path segment is a listing id (numeric or slug) trigger detail-only requests (same dual
listings/{id}+listing-fibreflow). - Headers β Mobile-style
reconz-appfingerprint by default (User-Agent,x-application,x-device-id). Override withREALESTATE_NZ_CLIENT=browser,REALESTATE_NZ_DEVICE_ID, etc. - Output β NZ rows use
source: "realestate_nz_listing". Flat columns align with the AU export where possible (title,priceas display string,agents,imagesasmediaserver.realestate.co.nzURLs, β¦).listingholds a competitor-friendly shape in places (e.g.listing.price.display, structuredlisting.address).dateSoldis not populated yet;advertisingis absent. Fibre columns (fibreProducts, β¦) appear whenlisting-fibrereturns 200.
- Search URLs β Paths such as
-
Pagination:
- Search pages chained via
_links.next.href(absolute or relative URLs supported). - Safety cap: env
REALESTATE_MAX_SEARCH_PAGES(default 500) per run.
- Search pages chained via
-
Listing IDs:
- Collected from every
tieredResultstier (organic and any sponsored-style rows that use the same card shape), preferringlistingIdon each card.
- Collected from every
-
Output modes (
flattenOutputin input):true(default): flat spreadsheet-style fields plus nested payloads β AU:listing+withIdsResponse; NZ:listing+nzListingResponse(full listing JSON:API) +listingFibreResponsewhen fibre succeeds, andrawResponseas an alias of the main listing body for compatibility.false: AU:listing+withIdsResponsewithout duplicate flat columns. NZ:attributes,rawResponse,nzListingResponse,listingFibreResponse,fibreStatusCode,fibreApiRequestUrl.
-
HTTP client: Crawlee CheerioCrawler with Impit + REA iOS-style headers for
services.realestate.com.au.
How to Use
- Set Up: Apify account and this actor (or run locally with
apify run/npm run start:dev). - Provide Input: Use either website URLs under
startUrls(and optionalextraStartUrls/ttt) or leave all of those empty and setsearchByFiltersfor a single AU/NZ location. If any URL is set, URL mode wins andsearchByFiltersis ignored.startUrlsacceptswww.realestate.com.au(AU) and/orwww.realestate.co.nz(NZ). Optionalurl1,url2, β¦ on the same object (see input schema). - Configure: Set
maxItems(cap on listing detail requests),flattenOutput, concurrency, retries, and proxy (recommended for production). - Run & Export: Download JSON from the dataset for full nested data. CSV export in the actorβs local
data.csvpath unions top-level keys β nestedlisting/withIdsResponseare poor fit for CSV; prefer JSON for complete payloads.
Usage Limitations
Free / non-paying Apify users may be subject to platform limits on dataset items or charges. Paid users typically get higher limits; adjust maxItems to control how many withIds calls run per execution. REA may rate-limit abusive patternsβproxy is recommended. Dataset rows may contain personal data (emails, phones); handle per your privacy policy.
Input Configuration
Example input:
{"startUrls": [{"url": "https://www.realestate.com.au/rent/property-unit+apartment-villa-in-sydney+cbd,+nsw/list-1?maxBeds=3&source=refinement"},{"url": "https://www.realestate.com.au/sold/property-land-between-0-50000-in-adelaide+-+greater+region,+sa/list-1?source=refinement"},{"url": "https://www.realestate.com.au/property-unit-vic-macleod-150434352"}],"flattenOutput": true,"maxItems": 500,"maxConcurrency": 10,"minConcurrency": 1,"maxRequestRetries": 3,"proxy": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
New Zealandβonly example (single search seed; adjust maxItems as needed):
{"startUrls": ["https://www.realestate.co.nz/residential/sale/auckland/auckland-city/blockhouse-bay"],"flattenOutput": true,"maxItems": 100,"maxConcurrency": 10,"proxy": { "useApifyProxy": false }}
Shared filter example (use when startUrls / extraStartUrls / ttt are all empty; one object β one compiled search URL):
{"searchByFilters": {"country": "NZ","channel": "buy","cityOrRegion": "Auckland","district": "Auckland City","suburb": "Blockhouse Bay"},"flattenOutput": true,"maxItems": 100}
Input Fields Explanation
- startUrls (
startUrls): Objects whoseurl,url1,url2, β¦ fields are collected in order. AU:https://www.realestate.com.au/list URLs (buy / rent / sold) or a property URL. NZ:https://www.realestate.co.nz/listing search paths (residential/sale, rent, rural/commercial where supported) or a property URL with listing id in the path. - searchByFilters (
searchByFilters): Optional single object withcountry,channel,cityOrRegion,district, andsuburb. Used only when no start URL is provided (seestartUrls); compiled into one website search URL. (Legacy runs that pass an array still work: only the first element is used, with a console warning.)- AU: best results when
cityOrRegionis a short region / state label such asVIC,NSW, anddistrictis the market label used in REA URLs (for exampleMelbourne - Northern Region). - NZ: use
cityOrRegion= region,district= district / city,suburb= suburb. All three are required for NZ filter rows;soldNZ filters are skipped.
- AU: best results when
- flattenOutput (
flattenOutput): When true (default), AU rows include flat columns andlisting+withIdsResponse. NZ rows include flat columns aligned with AU where possible andlisting,nzListingResponse, optionallistingFibreResponse, fibre plan fields when available. When false, shapes are minimal/nested as described in Output modes above. - maxItems (
maxItems): Maximum number of listings to queue forwithIds(shared across all search pagination). Does not limit search pages except indirectly once the cap is reached. - maxConcurrency / minConcurrency / maxRequestRetries: Crawlee concurrency and retries (Impit may cap effective concurrency when a single proxy URL is shared β see logs).
- proxy (
proxy): Apify proxy or customproxyUrlsfor outbound requests. - Environment:
REALESTATE_MAX_SEARCH_PAGESβ max search API pages per run (default 500). NZ:REALESTATE_NZ_PAGE_LIMIT,REALESTATE_NZ_META_AGGS,REALESTATE_NZ_DEBUG,REALESTATE_NZ_CLIENT,REALESTATE_NZ_DEVICE_IDβ seerealestate-nz-mapper.ts/internal-handler-nz.ts.
Output Structure
The dataset contains one row per listing after detail requests (AU: withIds; NZ: listings/{id} Β± listing-fibre).
realestate_detailβsource: "realestate_detail",country: "AU"β Australian listings.realestate_nz_listingβsource: "realestate_nz_listing",country: "NZ"β New Zealand listings.
Filter with source / country when consuming mixed inputs.
When flattenOutput is false, the same source values apply; top-level shape differs (fewer flat columns).
NZ vs competitor-style fields
NZ flat rows reuse many of the same top-level names as the AU export (title, description, agents, images, channel, propertyType, β¦) so CSV column unions work across countries. Some Australian competitor JSON shapes differ: e.g. top-level price is a string (AU parity); nested listing.price.display matches a { display } style. generalFeatures on the row is represented as bedrooms / bathrooms / carSpaces plus listing.features.general. advertising is not provided; dateSold is null until we parse it from NZ data.
Sample: realestate_nz_listing (NZ β flattenOutput: true)
After a local run, data.json is written from the dataset (see main.ts). If that file is not in the repo, use the same shape as below: it was generated with buildNzPropertyListingFlatRow for listing 43004474 from the live platform.realestate.co.nz APIs (property + fibre). nzListingResponse, listingFibreResponse, rawResponse, and listing are truncated / stubbed in this block; a real export contains the full JSON:API bodies and nested listing object. description is shortened here; the live field is the full plain-text marketing copy.
{"source": "realestate_nz_listing","country": "NZ","listingId": "43004474","title": "Four Homes, Endless Possibilities","propertyType": "House","status": "active","price": "Negotiation","address": "42 Bolton Street","suburb": "Blockhouse Bay","postcode": "0600","state": "Auckland","latitude": -36.9201449,"longitude": 174.6980028,"bedrooms": 9,"bathrooms": 5,"carSpaces": 2,"propertyFeatures": {},"description": "An outstanding and truly unique opportunity awaits in popular Bolton Streetβ¦","featured": true,"constructionStatus": "established","agencyListingId": "MLB61353","modifiedDate": "2026-03-12T12:28:58+13:00","dateSold": null,"signature": true,"productDepth": "","channel": "buy","url_slug": "43004474/residential/sale/42-bolton-street-blockhouse-bay","isSold": false,"isBuy": true,"isRent": false,"isProject": false,"tier_signature": true,"tier_midtier": false,"tier_standard": true,"tier_isClassicProject": false,"tier_isSignatureProject": false,"tier_isProject": false,"isExactMatch": null,"isSurroundingMatch": null,"url": "https://www.realestate.co.nz/43004474/residential/sale/42-bolton-street-blockhouse-bay","inspections": [],"statementOfInformation": null,"agencyName": "Anne Duncan Real Estate Ltd (Licensed: REAA 2008) - Ray White Mt Albert","agencyPhone": "(09) 846 9470","agencyEmail": "mtalbert.nz@raywhite.com","agencyWebsite": "","agencyAddress": "","agencyAddress_streetAddress": "","agencyAddress_suburb": "","agencyAddress_state": "","agencyAddress_postcode": "","agencyAddress_raw": {},"agencyProfileUrl": null,"agencyLogo": "https://mediaserver.realestate.co.nz/per_orgs/6104/bcf30b21eb0a703a94ac421a4a4520e4.crop.105x134.jpg","agents": [{"agentId": "6111","name": "Anne Duncan","jobTitle": "","phoneNumber": "021 996 426","emails": ["anne.duncan@raywhite.com"],"powerProfile": false,"profileUrl": "https://www.realestate.co.nz/agent/anne-duncan/","image": "https://mediaserver.realestate.co.nz/per_orgs/6111/66cc397a7c57d45b4a4b4b4f026fc843.crop.160x160.jpg"}],"images": ["https://mediaserver.realestate.co.nz/listings/43004474/594e1c909577f0a4e0c6f78d7552cd78.crop.800x600.jpg"],"scrapedAt": "2026-04-11T19:42:12.941Z","originalSearchUrl": "https://www.realestate.co.nz/residential/sale/auckland/auckland-city/blockhouse-bay","statusCode": 200,"apiRequestUrl": "https://platform.realestate.co.nz/search/v1/listings/43004474","flattenOutput": true,"nzListingResponse": { "_readme_note": "Omitted: full JSON:API document from GET /search/v1/listings/{id}." },"listingFibreResponse": { "_readme_note": "Omitted: full JSON:API document from GET /search/v1/listings/{id}/listing-fibre." },"fibreStatusCode": 200,"fibreApiRequestUrl": "https://platform.realestate.co.nz/search/v1/listings/43004474/listing-fibre","rawResponse": { "_readme_note": "Omitted: same payload as nzListingResponse (alias for tooling)." },"listing": { "_readme_note": "Omitted: nested compat object β title, price.display, address, features.general, etc." },"landSize": 2344,"landSizeUnit": "SQM","hasOnt": false,"currentConnection": null,"standardInstall": true,"ontUpgradeLink": "https://www.chorus.co.nz/residential/fibre-products/hyperfibre/upgrading","standardInstallLink": "https://www.chorus.co.nz/getting-fibre/installation","fibreProductCount": 6,"fibreProducts": [{"id": "fibre-starter-43004474","name": "Fibre Starter 100","upSpeedMbps": 100,"downSpeedMbps": 20,"priceCents": 6000,"available": false,"requiresOntUpgrade": false}],"lister": {"agentId": "6111","name": "Anne Duncan","jobTitle": "","phoneNumber": "021 996 426","emails": ["anne.duncan@raywhite.com"],"powerProfile": false,"profileUrl": "https://www.realestate.co.nz/agent/anne-duncan/","image": "https://mediaserver.realestate.co.nz/per_orgs/6111/66cc397a7c57d45b4a4b4b4f026fc843.crop.160x160.jpg"}}
NZ sample β field-by-field (every top-level key)
| Field | Meaning |
|---|---|
source | Always "realestate_nz_listing" for NZ listing rows from this actor. |
country | "NZ". |
listingId | Listing id used on platform.realestate.co.nz (GET β¦/listings/{id}). |
title | Marketing headline from attributes.header. |
propertyType | e.g. House from listing-sub-type. |
status | Platform listing-status (e.g. active). |
price | Human-readable price-display string (not { display } at top level; see listing.price). |
address | Street line (number + street name) for spreadsheets. |
suburb | Suburb name. |
postcode | NZ postcode string. |
state | Region (e.g. Auckland) β AU uses state codes; NZ uses region as the column value. |
latitude / longitude | Parsed from address.latitude / address.longitude. |
bedrooms | bedroom-count. |
bathrooms | bathrooms-total-count (fallback bathroom-count). |
carSpaces | Sum of garage + covered + other parking counts when any present. |
propertyFeatures | Map of feature-string arrays; often generalFeatures from attributes.features (empty {} if none). |
description | Full description with HTML stripped to plain text. |
featured | true if is-featured or is-super-featured. |
constructionStatus | new if is-new-construction, else established. |
agencyListingId | Agency reference (listing-no). |
modifiedDate | published-date or created-date from the API. |
dateSold | null until sold-date parsing is implemented. |
signature | true when is-showcased. |
productDepth | Reserved; empty string (no NZ analogue mapped yet). |
channel | buy, rent, or sold (from category + status heuristics). |
url_slug | Path after domain (website-slug without leading slash). |
isSold / isBuy / isRent | Booleans aligned with channel. |
isProject | false for current NZ mapper. |
tier_signature | Mirrors showcase / signature-style flags (is-showcased). |
tier_midtier | Not used on NZ; false. |
tier_standard | true when featured tier applies. |
tier_isClassicProject / tier_isSignatureProject / tier_isProject | AU parity columns; false unless extended. |
isExactMatch / isSurroundingMatch | null (search-context fields; not on detail card). |
url | Public listing URL (website-full-url). |
inspections | Copy of open-homes when present. |
statementOfInformation | null (AU-specific PDF link not mapped for NZ). |
agencyName | Office name from included office resource. |
agencyPhone / agencyEmail | Office contact fields. |
agencyWebsite | Not populated from current JSON:API slice; may be empty. |
agencyAddress / agencyAddress_* / agencyAddress_raw | Flattened office address (often empty if not in payload). |
agencyProfileUrl | null if no profile link extracted. |
agencyLogo | Resolved logo URL on mediaserver.realestate.co.nz. |
agents | Array of agent objects (see below). |
images | Absolute photo URLs (.crop.800x600.jpg on mediaserver). |
scrapedAt | ISO time when the row was pushed. |
originalSearchUrl | NZ www search URL that started this branch. |
statusCode | HTTP status of GET β¦/listings/{id} (e.g. 200). |
apiRequestUrl | Exact listing detail URL (not the public url). |
flattenOutput | true when input had flattening enabled. |
nzListingResponse | Full JSON:API body for GET /search/v1/listings/{id} (omitted in sample). |
listingFibreResponse | Full fibre JSON:API body when fibre HTTP 200; null if fibre failed. |
fibreStatusCode | HTTP status of the fibre request (0 if request failed before response). |
fibreApiRequestUrl | Exact β¦/listing-fibre URL. |
rawResponse | Same as nzListingResponse (compatibility alias). |
listing | Nested object with title, price.display, structured address, features.general { value, type, label } blocks, etc. (omitted in sample). |
landSize / landSizeUnit | Land area land-area and unit (SQM, m2, β¦) when present. |
hasOnt | Fibre: ONT present (has-ont). |
currentConnection | Fibre: current connection tier string or null. |
standardInstall | Fibre: standard-install. |
ontUpgradeLink / standardInstallLink | Chorus / install help URLs. |
fibreProductCount | Number of plans in fibreProducts. |
fibreProducts | Array of plan objects (id, name, speeds, priceCents, available, requiresOntUpgrade). |
lister | First element of agents (convenience). |
NZ β each key inside agents[] / lister
| Key | Meaning |
|---|---|
agentId | Agent resource id from JSON:API. |
name | Display name. |
jobTitle | Empty if not provided by NZ payload. |
phoneNumber | Mobile preferred, else DDI. |
emails | Array of email strings. |
powerProfile | false (AU parity; NZ may not expose equivalent). |
profileUrl | https://www.realestate.co.nz/agent/{slug}/. |
image | Agent photo URL on mediaserver. |
NZ β each key inside fibreProducts[]
| Key | Meaning |
|---|---|
id | JSON:API resource id for the plan. |
name | Retail plan name. |
upSpeedMbps / downSpeedMbps | Advertised sync speeds. |
priceCents | Monthly-style price in cents (ISP plan, not property price). |
available | Whether the plan is offered for this address. |
requiresOntUpgrade | Whether an ONT upgrade is required. |
Sample: realestate_detail (first object in data.json)
The JSON below is based on the first record of a real export. listing, withIdsResponse, and long images arrays are omitted here for size; the on-disk file contains the full nested objects. _readme_note is documentation-only and does not appear in live output.
{"source": "realestate_detail","listingId": "441571884","title": "1 BEDROOM APARTMENT DARLING HABOUR VIEW @HAYMARKET","propertyType": "unit","price": "$900 per week","address": "Address available on request","suburb": "Sydney","postcode": "2000","state": "NSW","latitude": null,"longitude": null,"bedrooms": 1,"bathrooms": 1,"carSpaces": 0,"propertyFeatures": {},"description": "Perfect for Couples or Friends \n\nThis versatile bed can be easily split into twoβ¦","featured": false,"constructionStatus": "","agencyListingId": "32AFEDF4-6156-4C0A-B412-877FC1A360BA","productDepth": "signature","channel": "rent","url_slug": "property-unit-nsw-sydney-441571884","isSold": false,"isBuy": false,"isRent": true,"isProject": false,"tier_signature": true,"tier_midtier": false,"tier_standard": false,"tier_isClassicProject": false,"tier_isSignatureProject": false,"tier_isProject": false,"isExactMatch": null,"isSurroundingMatch": null,"url": "https://www.realestate.com.au/property-unit-nsw-sydney-441571884","inspections": [],"statementOfInformation": null,"agencyName": "Bondi Beach International Agency","agencyPhone": "02 412468335","agencyEmail": "rosio@bbiagency.com.au","agencyWebsite": "","agencyAddress": "Shop 3, 11-21 Flinders Street, Surry Hills, NSW, 2010","agencyAddress_streetAddress": "Shop 3, 11-21 Flinders Street","agencyAddress_suburb": "Surry Hills","agencyAddress_state": "NSW","agencyAddress_postcode": "2010","agencyAddress_raw": {"streetAddress": "Shop 3, 11-21 Flinders Street","suburb": "Surry Hills","state": "NSW","postcode": "2010"},"agencyProfileUrl": "https://www.realestate.com.au/agency/bondi-beach-international-agency-YMPIPK","agencyLogo": "https://i3.au.reastatic.net/160x30/97d210b8fb2e818b4395402385458b66ca52dbb7de4a0b5ebd7e852754042e83/logo.jpg","agents": [{"agentId": "2362406","name": "Rosio Flynn","jobTitle": "Director","phoneNumber": "0412468335","emails": ["rosio@bbiagency.com.au"],"powerProfile": false,"profileUrl": "https://www.realestate.com.au/agent/2362406","image": "https://i3.au.reastatic.net/160x160/22650177724dfe89c0e697c50c8cd6169fb42ee392f826ceb11f98c37c41f18e/main.jpg"}],"images": ["https://i3.au.reastatic.net/800x600-fit,format=webp/c3008b05521617c72ae1dc68fd5f807127821612e628bae00fdec7028c9b4c6f/image.jpg","https://i3.au.reastatic.net/800x600-fit,format=webp/c3cb58b454deba92246fdac094d3fbcb0b75502cdd772f581ce254680ca82d95/image.jpg"],"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","statusCode": 200,"apiRequestUrl": "https://services.realestate.com.au/services/listings/withIds?id=441571884","_readme_note": "Omitted here: full `listing` object, full `withIdsResponse`, and remaining `images` URLs β all present in live dataset when flattenOutput is true."}
Output fields (realestate_detail) β field-by-field
Row identity and request metadata
sourceβ Always"realestate_detail"for listing rows from this actor.listingIdβ REA numeric listing id (string), same id used inwithIds.scrapedAtβ ISO timestamp when the row was pushed to the dataset.originalSearchUrlβ Thewww.realestate.com.auURL from input that started this crawl branch (search/list page or direct property URL);nullif not set.statusCodeβ HTTP status of thewithIdsresponse (200 when OK).apiRequestUrlβ ExactwithIdsrequest URL for this row (includesid=query).
Flat property core (convenience columns)
titleβ Listing headline from the API (same idea as on the website card).propertyTypeβ REA property type string (e.g.unit,house,residential land).priceβ Human-readable display price fromprice.display(e.g.$900 per week,Price on Application).addressβ Street / unit line fromaddress.streetAddress(may be βAddress available on requestβ).suburbβ Suburb (fromaddress.suburboraddress.locality).postcodeβ Postcode (fromaddress.postcodeoraddress.postCode).stateβ State (e.g.NSW,Vic).latitude/longitudeβ Coordinates fromaddress.locationwhen present; elsenull.bedrooms/bathrooms/carSpacesβ Fromfeatures.general(bedrooms,bathrooms,parkingSpaces).propertyFeaturesβ Object grouping feature strings by section frompropertyFeatures[](e.g.indoorFeatures,outdoorFeatures). Empty{}when none.descriptionβ Plain text description (HTML<br/>collapsed to newlines in the flat export).featuredβtruewhen the card is marked featured in the API.constructionStatusβ e.g.establishedwhen provided; may be empty string if absent.agencyListingIdβ Agencyβs internal listing reference (string or UUID-style).productDepthβ REA product tier string for the card (e.g.standard,signature).channelβbuy,rent, orsold(from API).url_slugβprettyUrlslug segment (used in canonical property paths).urlβ Canonical property URL onwww.realestate.com.au(from_links.prettyUrl.hrefwhen available).inspectionsβ Copy ofinspectionsAndAuctionsfrom the API (often[]).statementOfInformationβ URL string for PDF / statement whenstatementOfInformation.hrefexists; elsenull.landSize/landSizeUnitβ Present on land listings whenlandSize.valueexists (e.g.80900,m2); omitted on non-land rows.
Boolean flags (flat)
isSold/isBuy/isRentβ FromisSoldChannel,isBuyChannel,isRentChannel.isProjectβ From APIisProjectwhen present.tier_signature/tier_midtier/tier_standardβ Fromsignature,midtier,standardbooleans on the card.tier_isClassicProject/tier_isSignatureProjectβ FromclassicProject,signatureProject.tier_isProjectβ MirrorsisProjectin the flat mapper.isExactMatch/isSurroundingMatchβnullinwithIdsoutput (those flags apply to search context; not returned on the detail card).
Agency (flat)
agencyNameβ Office name.agencyPhoneβ Phone string.agencyEmailβ Email when provided.agencyWebsiteβ Website URL; may be empty string if missing.agencyAddressβ Single comma-joined office address line.agencyAddress_streetAddress/agencyAddress_suburb/agencyAddress_state/agencyAddress_postcodeβ Split office address parts.agencyAddress_rawβ Object with the same four parts for machine parsing.agencyProfileUrlβ Link to the agency profile on realestate.com.au.agencyLogoβ Resolved logo image URL (default size variant when multiple exist).
Agents (flat array)
agentsβ Array of agent objects (fromlisters/lister). Each element:agentIdβ REA agent id.nameβ Display name.jobTitleβ Role / title.phoneNumberβ Best available phone (mobile or office).emailsβ Array of email strings (often one).powerProfileβ REA power profile flag.profileUrlβ Agent profile URL.imageβ Photo URL (160Γ160 transform on CDN).
Images (flat)
imagesβ Array of absolute photo URLs (800Γ600, webp transform). Hero / main image is prepended whenmainImageexists; duplicates removed.
listing (full API card β nested object)
When flattenOutput is true, listing is the complete first (and only) listing object from withIds results[0] β same schema REA returns for a property card. Top-level keys you will typically see (names only may vary slightly by listing type):
prettyUrlβ Slug path segment for the property.standard/midtier/signatureβ Listing tier flags.listerβ Primary agent object (id,name,email, phones,mainPhoto,_linksto profile).listersβ Array of all agents on the listing (when multiple).featuredβ Featured flag._linksβ HAL-style links:prettyUrl,self(services listing URL),short,contactAgent,calculator,marketInfo, ad / tracking templates, etc. Somehrefvalues are templated ({width},{platform}, β¦).channelβbuy|rent|sold.descriptionβ Raw HTML description (<br/>etc.).showAgencyLogoβ Whether the UI shows agency branding prominently.titleβ Title string.featuresβ Structuredgeneralcounts (bedrooms,bathrooms,parkingSpaces, β¦) and any other feature blocks REA includes.generalFeaturesβ Labelled feature entries (bedrooms,bathrooms, β¦) withlabel,type,value.priceβdisplayand any other price subfields REA returns.propertyTypeβ Type string.productDepthβ Product depth (standard,signature, β¦).calculatorβ Mortgage / rent calculator UI block (title,subtitle,brandingColors,_links.callToAction, β¦).imagesβ Array of{ server, name, uri }(and optional flags likeresize) β not the same as the flatimagesURLs; joinserver+ uri for raw CDN paths.mainImageβ Primary hero image descriptor (server,uri).addressβ Full address object:streetAddress,suburb,locality,postcode,postCode,state,subdivisionCode,location(latitude,longitude),showAddress, etc.classicProject/signatureProjectβ Project-related flags when applicable.agencyβ Full agency object:name,phoneNumber,email,website,address,brandingColors,branded,agencyId,logo(images[],links),_links(agencyProfile, β¦).isSoldChannel/isBuyChannel/isRentChannelβ Channel booleans.agencyListingIdβ Agency listing id.listingIdβ Numeric listing id (string or number in JSON).propertyFeaturesβ Array of{ section, label, features[] }blocks (source for flatpropertyFeatures).inspectionsAndAuctionsβ Inspection / auction schedule entries when present.dateAvailableβ For rent, often{ date, dateDisplay }when provided.landSizeβ For land,{ value, unit, display, β¦ }when present.modifiedDateβ Change metadata when REA sends it.applyOnlineβ Apply-online flag when present.- Other occasional keys β REA may add fields (e.g. project links, eco data); they appear here unchanged.
withIdsResponse (full API envelope)
totalResultsCountβ Number of listings in thiswithIdsresponse (usually 1 for a singleid).resultsβ Array of listing objects; for our actor typically one element, identical in content tolistingwhen both are present.
When flattenOutput is false
Rows include source, listingId, url (request URL), statusCode, originalSearchUrl, scrapedAt, listing (or full body fallback), and withIdsResponse, without the duplicate flat competitor-style fields above.
Benefits
- One row per listing with flat columns for quick filters plus full nested payloads (AU:
withIdsResponse; NZ:nzListingResponse/listingFibreResponse). - Official JSON APIs for listing data (AU services; NZ platform β HTML only once per NZ search seed for suburb ids).
- Pagination β AU via
_links.next; NZ viapage[offset|limit]β both with a hard cap on search pages (REALESTATE_MAX_SEARCH_PAGES). - Traceability:
originalSearchUrl,apiRequestUrl,scrapedAt,country,source.
Why Choose This Actor?
Built for Australian and New Zealand residential (and related) research: realestate.com.au and realestate.co.nz, pagination, and rich listing payloads for analytics, alerts, or CRM enrichment.
Use cases:
- Track new / changed listings for a saved search URL (AU or NZ).
- Export agency + agent + media with coordinates when exposed.
- Store raw JSON (
withIdsResponse/nzListingResponse) for schema changes without losing fields. - NZ: Optional fibre / broadband plan data per listing alongside the property card.
Technical Implementation
Default (internal Impit handler β main.ts + internal-handler.ts):
- URL routing (
realestate-mapper.ts,realestate-nz-mapper.ts,main.ts): AU.com.auvs NZ.co.nzhosts; shared dedupepushedListingIdsacross seeds. - AU (
internal-handler.ts): Search chainbuildSearchByUrlApiUrlβextractListingIdsFromSearchJsonβfetchAndPushDetail(buildWithIdsApiUrl). Flat rows frombuildRealestateFlatListingRow(realestate-flat-export.ts). - NZ (
internal-handler-nz.ts): Search chain loads HTML for suburb ids βbuildNzListingsSearchApiUrlβ ids fromdata[]βPromise.allper listing:buildNzListingFullApiUrl+buildNzListingDetailApiUrl(fibre). Flat rows frombuildNzPropertyListingFlatRow(realestate-nz-listing-flat-export.ts); fibre columns fromappendNzFibreFlatFields(realestate-nz-flat-export.ts).
Optional Cheerio path (REALESTATE_USE_INTERNAL_HANDLER=0):
- CheerioCrawler requests (
main.ts) withuserData(maxItems,flattenOutput,realestateOriginalUrl, β¦). - Search handler (
routes.tsβREALESTATE_SEARCH):tieredResults, enqueueREALESTATE_DETAIL,_links.next,maxItems,REALESTATE_MAX_SEARCH_PAGES. - Detail handler (
routes.tsβREALESTATE_DETAIL):withIdsJSON;buildRealestateFlatListingRow+withIdsResponsewhenflattenOutput.
Explore More Scrapers
If you found this actor useful, check out other scrapers at memo23's Apify profile.
Support
- For issues or feature requests, use the Issues section of this actor on Apify.
- For further assistance, contact the author:
- Author's website: https://muhamed-didovic.github.io/
- Email: muhamed.didovic@gmail.com
Additional Services
- Request customization or a full dataset: muhamed.didovic@gmail.com
- Need other platforms scraped? Contact muhamed.didovic@gmail.com
- For API services of this actor, reach out to muhamed.didovic@gmail.com
- Custom integrations and automation solutions available