Homely.com.au - Buy, Rent, Sold, Agents, Suburbs Reviews
Pricing
from $1.00 / 1,000 results
Homely.com.au - Buy, Rent, Sold, Agents, Suburbs Reviews
Scrape Homely.com.au properties for sale, rent, and sold, plus agent finder, suburb reviews, ratings, and Q&A. Search by suburb or use URLs. Returns 50+ fields, including price, beds, baths, parking, geo, agent contacts, photos, and inspections.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
1
Bookmarked
7
Total users
2
Monthly active users
20 hours ago
Last modified
Categories
Features
Share
Homely.com.au Scraper: Buy, Rent, Sold, Agents & Suburb Reviews
Homely.com.au Scraper turns Homely.com.au, Australia's community-driven property portal, into a clean data API. Get properties for sale, for rent and sold, the agent finder (agents with contact details, plus offices), community suburb reviews and ratings, and suburb Q&A, all from one actor. Search by suburb name, or paste exact Homely links, then export to JSON, CSV or Excel, or pull the results straight into your app through the API.
Why This Scraper?
- Six datasets, one actor. Buy, rent and sold listings, the agent finder (agents and offices), suburb reviews, and community Q&A, all under one input form.
- Two ways to find data. Search by suburb name, or paste exact Homely links; URL mode reads whatever kind of page you paste, from a search-results page to a single listing or agent profile.
- Filters that follow you into URL mode. Price, bedrooms, bathrooms, car spaces, property type, required features and under-offer status narrow a suburb search AND a pasted search-results link.
- Richer records on demand. Turn on full details for a listing agent's email, the full description, council rates and floor plans, or for an agent's job title, website, areas of expertise and performance stats.
- Suburb context on every listing. Attach a suburb's community rating, score, pros/cons and "great for" tags to every property record, with one extra request per suburb, not per listing.
- Built for schedules. Incremental mode returns only new and changed records on recurring runs, and unchanged records are never billed.
- Optional export to your apps. Pipe a summary of every record into Notion, Linear, Airtable or Apify via MCP connectors, on top of the full dataset.
Use Cases
- Buyers and renters: track new listings for sale or rent in a suburb, filtered by price, bedrooms and property type.
- Agencies and PropTech teams: monitor competitor agents and offices, their ratings, listing counts and transaction history.
- Investors and market researchers: follow sold prices and suburb ratings over time to spot trends before they show up elsewhere.
- Content and community sites: pull suburb reviews, pros/cons and community Q&A to build local suburb guides.
- Lead generation: collect agent contact details, including email and mobile, from a suburb's agent finder.
Data You Get
Sample shape: values are illustrative placeholders, not from a live record.
| Field | Example |
|---|---|
mode | "buy" (also "rent", "sold", "agents", "offices", "suburb", "questions") |
id | 13342139 |
url | link to the listing, agent, office, suburb or question page |
title | "3 Bedroom House For Sale" (listing records) |
propertyType | "House" |
price / priceValue | {"display": "$1,450,000", "short": "$1.45M"} / 1450000 |
features | {"bedrooms": 3, "bathrooms": 2, "cars": 1} |
address / location | full street address / {"latitude": -33.891, "longitude": 151.274} |
agents | [{"name": "Jane Smith", "phone": "...", "mobile": "...", "email": "..."}] (email requires full details) |
office | agency or office name, on listing and agent-finder records alike |
images | array of photo URLs |
inspections / auction | upcoming inspection windows / auction date, when scheduled |
rental | {"bond": 2900, "availableOn": "2026-10-01"} (rent listings only) |
soldOn / soldPriceValue | "2026-08-15" / 1380000 (buy and sold listings) |
name / email / mobile / phone | agent contact details (agent-finder records); offices carry name and company but no direct contact fields |
reviewSummary | {"reviewCount": 42, "rating": 4.8} (agent and office records) |
listingSummary / transactions | counts of active listings and past transactions per agent or office |
rating / score | community suburb rating and numeric score (suburb records) |
pros / cons / greatFor | suburb pros, cons and "great for" tags |
reviews | the suburb's full reviews, inline: title, body, rating, helpful count, author |
replyCount / followerCount | engagement counts on a community question |
changeType | NEW, UPDATED, UNCHANGED, REAPPEARED or EXPIRED (Incremental mode only) |
scrapedAt / sourceUrl | when the record was read, and the page it came from |
The dataset has ready-made Console views: Overview, Listings (buy, rent, sold), Agents, Offices, Suburbs, Suburb reviews (one row per review), Questions and Changes (incremental mode).
Turning on full details adds description, councilRates, floorPlans, buildingFeatures and documents to listing records, and jobTitle, websiteUrl, areasOfExpertise, servicedLocations and performance stats to agent records. Suburb records can also carry ranking, whoLivesHere, numberOfFollowers, bestLocations, otherLocations and popularQuestions for that suburb, and a listing record gains a suburbInsights object when suburb insights are switched on.
How to Use
- Pick how you supply input: search by suburb, or paste exact Homely links.
- In search mode, pick what to scrape (buy, rent, sold, agents, offices, suburb or questions), give it a suburb, and set any listing filters or agent sort order.
- Turn on Fetch full details or Add suburb insights for the richer fields, and set Max records to control run size and cost.
- Click Start, then download the dataset as JSON, CSV or Excel, or read it through the API.
Properties for sale in a suburb, filtered:
{"mode": "search","dataset": "buy","location": "Bondi NSW 2026","bedroomsMin": 2,"priceMax": 2000000,"maxItems": 50}
Agent finder with contact details:
{"mode": "search","dataset": "agents","location": "Surry Hills NSW 2010","agentSpecialty": "sale","detail": true,"maxItems": 30}
Suburb reviews and community rating:
{"mode": "search","dataset": "suburb","location": "Bondi NSW 2026"}
Paste a search-results link, still filtered:
{"mode": "url","startUrls": ["https://www.homely.com.au/for-rent/bondi-nsw-2026/real-estate"],"bedroomsMin": 2,"maxItems": 40}
Run it from your code
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("abotapi/homely-com-au-scraper").call(run_input={"mode": "search", "dataset": "buy", "location": "Bondi NSW 2026", "maxItems": 50})for listing in client.dataset(run["defaultDatasetId"]).iterate_items():print(listing["title"], listing["priceValue"])
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('abotapi/homely-com-au-scraper').call({mode: 'search', dataset: 'buy', location: 'Bondi NSW 2026', maxItems: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.
Caps and pagination
Max records stops the whole run once that many records have been pushed (default 20; 0 means the maximum of 100000). Max pages per location additionally caps how many result pages are read per suburb; leave it empty for the hard limit of 400 pages per suburb, also bounded by Max records. Listing filters run after each page is fetched, so a tightly filtered search may need to read several pages to fill Max records.
Resume and recurring updates
- Resume from a previous run (
resumeFromRunId) continues ONE interrupted crawl: paste its run or dataset ID and this run skips every record already collected there, so a large pull can be split across runs without duplicates or double charges. - Incremental mode (
incrementalMode) is for scheduling the SAME search again and again. Each record is classifiedNEW,UPDATED(withchangedFields),UNCHANGED(suppressed and not billed unlessemitUnchangedis on),REAPPEARED, orEXPIRED.REAPPEAREDandEXPIREDonly exist once a prior run has fully scanned this exact search withemitExpiredon and marked a record as no longer found; nothing can reappear before that has happened at least once.EXPIREDrecords are only produced after a run that fully scanned the tracked search, never when Max records capped it or Resume was used, since a partial scan cannot tell "gone" apart from "not reached yet". Every field is compared with the saved copy exceptscrapedAt,sourceUrl,daysOnMarket,daysOnHomely,isNewandsuburbInsights, which stay in the output but never causeUPDATEDor appear inchangedFields; numbers compare by value (25.0 equals 25).ignoreFieldsForChangesadds your own field names or dotted paths (for exampleagents.phone, applied inside lists); changing it never causes a one-time wave ofUPDATEDrows. Records excluded by a link's query filters are never reported asEXPIRED.stateKeynames or deliberately shares a monitoring campaign; leave it empty and the actor derives one automatically from the search, filters and detail settings.
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 and its key fields flattened to plain text. The complete record always stays in the Apify dataset.
- 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.
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | search | search (tell us a suburb) or url (paste Homely links). |
dataset | string | buy | What to scrape in search mode: buy, rent, sold, agents, offices, suburb, or questions. Ignored in URL mode. |
location | string | no default (prefill: Bondi NSW 2026) | Suburb to scrape, e.g. "Bondi NSW 2026" or a Homely slug. |
locationIds | array | no default (prefill: empty list) | Optional pre-resolved numeric Homely location IDs (agent finder can use these directly). |
agentSpecialty | string | any | Filter agents by what they list: any, sale, or rent. |
officeId | integer | no default | List all agents in one specific office by its numeric Homely office ID. |
sort | string | default | Ordering for the Agents / Offices datasets: default, rating, reviews, sales, or listings. Listings are returned in Homely's own order. |
startUrls | array | one example of every supported link shape (see the table below) | Homely URLs to scrape (URL mode). Any mix of the shapes in the table below. |
priceMin | integer | no default | Minimum price (weekly rent for Rent). Applies in search mode and to a pasted search-results URL. |
priceMax | integer | no default | Maximum price (weekly rent for Rent). Applies in search mode and to a pasted search-results URL. |
bedroomsMin | integer | no default | Minimum number of bedrooms. Applies in search mode and to a pasted search-results URL. |
bedroomsMax | integer | no default | Maximum number of bedrooms. Applies in search mode and to a pasted search-results URL. |
bathroomsMin | integer | no default | Minimum number of bathrooms. Applies in search mode and to a pasted search-results URL. |
bathroomsMax | integer | no default | Maximum number of bathrooms. Applies in search mode and to a pasted search-results URL. |
carSpacesMin | integer | no default | Minimum number of car spaces. Applies in search mode and to a pasted search-results URL. |
carSpacesMax | integer | no default | Maximum number of car spaces. Applies in search mode and to a pasted search-results URL. |
propertyTypes | array | no default (prefill: empty list) | Keep only these property types (house, unit, apartment, townhouse, villa, land, and more). Leave empty for all. |
propertyFeatures | array | no default (prefill: empty list) | Keep only listings whose tags include ALL of these. Leave empty to skip. |
isUnderOffer | boolean | no default | If on, keep only listings currently under offer. |
detail | boolean | false | Fetch each record's detail source for extra fields: listing agent email, full description, council rates and floor plans; or agent job title, website, areas of expertise and performance. Adds one request per record. |
includeSuburbInsights | boolean | false | Attach the suburb's community rating, score, pros/cons and "great for" tags to every listing record. Costs one extra request per suburb, not per listing. |
maxItems | integer | 20 | Stop after this many records (at most 100000). 0 = the maximum. |
maxPages | integer | no default | How many result pages to read per location. Leave empty (or 0) for the hard limit of 400 pages per location; also bounded by Max records. |
proxy | object | Apify Proxy (datacenter) | Network connection. The default works on all plans; the first page can take longer while the site's check is cleared. Residential answers fastest. |
resumeFromRunId | string | no default | Continue one interrupted run without returning or charging for records already collected there. |
incrementalMode | boolean | false | Return only new and changed records on scheduled runs of the same search. |
stateKey | string | no default | Name or deliberately share an Incremental mode monitoring campaign. |
ignoreFieldsForChanges | array | [] | Ignore fields when detecting changes (incremental mode only): field names or dotted paths that never cause UPDATED. |
emitUnchanged | boolean | false | Also return (and bill) records that have not changed since the last run. |
emitExpired | boolean | false | Also return (and bill) records that were present before but are no longer found. |
mcpConnectors | array | no default | Optional: send a summary of each record to apps you authorized under Integrations. |
notionParentPageUrl | string | no default | Notion connector only: page under which item pages are created. |
maxNotifyListings | integer | 50 | Cap on items written to each connector per run. Does not affect the dataset. |
URL mode: supported links
URL mode reads every link shape below. Behaviour change: if you switch to URL mode and leave Homely URLs untouched (or omit it from an API call), the run now scrapes one example of each shape (a few more variants than the table rows) instead of nothing; cap it with Max records. A link in any other shape is skipped with a warning in the log and the run is flagged as partial; it is never silently counted as empty.
| Link shape | Example | Result |
|---|---|---|
Buy results (also page-N, the short form without /real-estate, and the bare homely.com.au host) | https://www.homely.com.au/for-sale/bondi-nsw-2026/real-estate | Listings |
| Rent results (also page-N) | https://www.homely.com.au/for-rent/bondi-nsw-2026/real-estate | Listings |
| Sold results (also page-N) | https://www.homely.com.au/sold-properties/bondi-nsw-2026 | Listings |
| Results with query filters | https://www.homely.com.au/for-sale/bondi-nsw-2026/real-estate?priceMin=1000000 | Listings narrowed by the filters in the link (priceMin, priceMax, bedrooms, bathrooms, carSpaces); the site ignores these, so they are applied to the results |
| Suburb profile | https://www.homely.com.au/suburb-profile/bondi-nsw-2026 | Suburb |
| Suburb questions (also page-N) | https://www.homely.com.au/bondi-waverley-sydney-greater-new-south-wales/questions | Questions |
| Listing page | https://www.homely.com.au/homes/11-1a-sandridge-street-bondi-nsw-2026/13687042 | One listing with full details |
Listing page, legacy form (/listings/<id>, or any slug before the id) | https://www.homely.com.au/listings/13687042 | One listing with full details |
| Listing API link | https://api.homely.com.au/v1/listings/13687042 | One listing with full details |
| Agent finder | https://www.homely.com.au/real-estate-agents/bondi-nsw-2026 | Agents in the suburb |
| Agent finder, national | https://www.homely.com.au/real-estate-agents | Agents across Australia (cap it with Max records) |
| Agent profile | https://www.homely.com.au/agent/benl36 | One agent with full details |
| Agency finder | https://www.homely.com.au/real-estate-agencies/bondi-nsw-2026 | Agencies (offices) in the suburb |
Agency properties (also /properties-for-rent) | https://www.homely.com.au/real-estate-agency/lj-hooker-bondi-beach-26374/properties-for-sale | Every page of the agency's listings with full details (up to Max pages and Max records) |
| Agency sold listings | https://www.homely.com.au/real-estate-agency/lj-hooker-bondi-beach-26374/sold-properties | Every page of the agency's sold listings with full details (up to Max pages and Max records) |
A bare listing id link such as /homes/13687042 is not a valid Homely page and is skipped with a warning.
Output Example
Sample shape: values are illustrative placeholders, not from a live record.
{"mode": "buy","id": 13342139,"uri": "/property/3-bed-house-bondi-nsw-2026/13342139","url": "https://www.homely.com.au/property/3-bed-house-bondi-nsw-2026/13342139","title": "3 Bedroom House For Sale","statusType": "forSale","propertyType": "House","isUnderOffer": false,"daysOnMarket": 14,"price": {"display": "$1,450,000","short": "$1.45M"},"priceValue": 1450000,"address": {"streetAddress": "12 Sample Street","suburb": "Bondi","state": "NSW","postcode": "2026"},"location": {"address": "12 Sample Street, Bondi NSW 2026","isHidden": false,"latitude": -33.891,"longitude": 151.274},"features": {"bedrooms": 3,"bathrooms": 2,"cars": 1},"featureTags": ["pool", "air conditioning"],"agents": [{"id": 5001,"name": "Jane Smith","phone": "0282001234","mobile": "0412345678","email": null}],"office": {"name": "Sample Realty Bondi","company": "Sample Realty"},"images": ["https://img.homely.com.au/photo1.jpg","https://img.homely.com.au/photo2.jpg"],"inspections": [{ "startsOn": "2026-10-04T10:00:00+11:00", "endsOn": "2026-10-04T10:30:00+11:00" }],"auction": null,"soldOn": null,"soldPrice": null,"soldPriceValue": null,"sourceUrl": "https://www.homely.com.au/for-sale/bondi-nsw-2026/real-estate","scrapedAt": "2026-09-29T04:00:00+00:00"}
Plan Requirement
The default connection works on every plan, including plans without Apify proxy access. Homely challenges plain datacenter connections on its result pages (measured: the first request is refused with a check page); the actor clears that check on its own, so the first page of a run can take longer than the following ones (seconds on a good connection, up to a couple of minutes when a connection has to be replaced). When the selected connection is refused outright, the actor continues on a backup connection and tells you so in the log. For large or frequent runs, the Residential proxy group answers fastest and needs no check; pick it under Proxy & connection. If no results page can be loaded at all, the run ends with the message "Could not load any results page (the requests failed), so nothing was collected. This is a connection problem, not an empty search. Please try again later." If some pages could not be read, the message is "No records matched, but N request(s) could not be read this run, so this result may be incomplete. Please run the actor again." If a page loads but its data cannot be read, the run ends with "The page loaded but its data could not be read (the site layout may have changed), so nothing was collected. This is not an empty result. Please report it so the extractor can be updated."
FAQ
How much does it cost?
You pay a small run-start fee, plus per record returned, plus a smaller surcharge only for records whose detail source was fetched: every record when Fetch full details is on, plus any single listing or agent page (including a listing API link, or the properties of an agency page) pasted directly in URL mode regardless of that setting. The Pricing tab shows the current rates. Use Max records to cap the cost of any run.
Is it legal to scrape Homely.com.au?
This actor collects only publicly available information from Homely.com.au. You are responsible for how you use scraped data, including any personal data of agents: follow Homely's terms and the laws that apply to you (including GDPR/CCPA where relevant), and get legal advice if you plan commercial redistribution.
Can I get only new or changed records on a schedule?
Yes. Schedule the actor from the Schedules tab against the same search and turn on Incremental mode. Each run then returns only new and updated records; unchanged ones are not billed unless you turn on Emit unchanged. Reappeared and expired records only appear once Emit expired is also on and a run completes a full, uncapped scan.
Do the filters still work when I paste a URL instead of searching?
Yes, for a pasted search-results link (for-sale, for-rent, or sold-properties). Price, bedrooms, bathrooms, car spaces, property type, required features and under-offer status all narrow the listings collected from that link, exactly as they would in search mode. A property-type path such as /houses, /apartments, /units, /townhouses, /land, /block-of-units or /studio-apartments on a pasted for-sale or for-rent link is applied as the property-type filter (combined with the Property types field, only types in both are kept), and the link is read as that type's own results list, so a page number on it (for example /houses/page-2) counts pages of that typed list. They have no effect when the pasted link is a single listing, agent, suburb, or questions page, since there is no result list left to filter.
Why did my run fail instead of returning an empty dataset?
The run fails when nothing could be collected because no page could be read at all (the connection was refused, or a page loaded but its data could not be read). If only some requests fail once a run is underway, the run ends with a partial dataset and a status message explaining why. Try again, or switch Proxy to Residential, if an empty result looks wrong.
Can I use it with AI agents or MCP?
Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.
๐ Want more real estate data?
Pair this actor with these related scrapers from the same team:
| ๐ Domain.com.au Extract enriched Domain.com.au property listings across buy, rent, and sold, with... | ๐ REIWA Scraper Scrape REIWA.com.au across sale, rental, sold, commercial, business and rural properties... |
| ๐ Realestate.co.nz Scraper Scrape Realestate.co.nz property listings across New Zealand. Search properties for sale... | ๐ Real Estate AU Agents Scraper Scrape Australian real estate agent and agency profiles by suburb or profile URLs... |
| ๐ค AU Residential Property Scraper Scrape Australian real estate listings with detailed property information. Extract... | ๐ Property Finder UAE Scraper Scrape PropertyFinder.ae listings at scale. Extract prices, property details, images... |
๐ Browse all abotapi scrapers
๐ฌ Support
- ๐ Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
- ๐ ๏ธ Need another site, extra fields or a private build? Email contact@abotapi.com.
- โญ Enjoying it? A quick review on the actor page helps other users find it.