Domain.com.au $1.50/1k Scraper — Property + Full Agent Data
Pricing
from $1.50 / 1,000 results
Domain.com.au $1.50/1k Scraper — Property + Full Agent Data
Scrape Domain.com.au rent / sale / sold listings — 66 fields per row incl. coordinates, photos, school catchment, suburb profile + full agent enrichment (mobile, photo, lifetime sales/leasing stats). Pure HTTP via residential proxies, no browser. JSON or CSV out
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
0
Bookmarked
15
Total users
14
Monthly active users
12 hours ago
Last modified
Categories
Share
Domain.com.au — Rent, Sale & Sold Property + Agent Scraper
How it works
All-in-one Domain.com.au scraper — paste any mix of URL kinds in the same input list and the actor auto-classifies each one:
| Input | Row(s) emitted |
|---|---|
Rent listing — /rent/{suburb}-{state}-{postcode}/ | N listing rows — one per property (rowType: "listing"). Paginated automatically via ?page=N (20 results per page). Each row carries the full property record + agency block + per-listing agent array + nearby school catchment (~13 schools) + suburb profile. |
Sale listing — /sale/{suburb}-{state}-{postcode}/ | Same flat-per-property pattern, listingMode: "sale". May include /project/... new-development URLs in CBD areas — those emit a separate placeholder row (rowType: "project"). |
Sold listing — /sold-listings/{suburb}-{state}-{postcode}/ | Same flat-per-property pattern, listingMode: "sold". Capped at 12 months by Domain (older sale history needs property-profile URLs — out of scope for v1). |
Property detail URL — /{slug}-{state}-{postcode}-{listingId} | 1 listing row, no pagination. Useful for refreshing a known listing or scraping bookmarked properties. |
Agent profile URL — /real-estate-agent/{slug}-{agentId}/ | 1 agent row (rowType: "agent") with full contact details, lifetime sales + leasing counts, recent listing IDs, bio. |
Bare query-string filters work too — /rent/sydney-nsw-2000/?bedrooms=2&price=0-700 is supported because the URL passes through unchanged. JSON + CSV.
Listing rows are flat with the agents denormalized into every row. Each property's
agentsEnriched[]array carries every agent's full profile inline (no separate agent rows from listing URLs). Agents are deduped by ID across the run, so 50 listings sharing one agent = 1 agent fetch, not 50.
Pure HTTP. No Playwright, no Puppeteer, no headless Chromium, no third-party services.
Under the hood the actor is built around a tight HTTP recipe with residential proxy routing, automatic retry on transient errors, and structured data parsing from each page's server-rendered state. End-to-end live test: 5/5 properties parsed with full agent enrichment, 0 hard failures, 0 stale rows. Specifically:
- Residential proxy routing — every request is routed through a rotating residential pool. Datacenter IPs aren't used. Defaults to Apify Residential with
country=AU; user can override viainput.proxy. - Auto retry on transient errors — listing pages occasionally return thin or empty bodies. The actor detects that and retries with a fresh session before giving up.
- Structured page parsing — every Domain page ships rich server-rendered state with the full property record, school catchment, suburb profile, agency block, and per-listing agent array. The parser reads that directly — no DOM execution, no client-side script wait, no fragile CSS selectors.
- Agent dedupe cache — each unique agent ID is fetched at most once per run, then merged into every listing that references them.
- Native pagination — page navigation uses Domain's own page counters; the walk stops at
totalPagesormaxItems, whichever comes first.
Input
| Field | Type | Required | Notes |
|---|---|---|---|
startUrls | string[] | yes | Any mix of listing / detail / agent URLs (or bare query-string-filtered URLs). Auto-classified. |
enrichAgent | boolean | no | Default true. Fetches each unique agent profile to populate agentsEnriched[] with full contact details + lifetime stats + bio. Cached by agent ID, so duplicate references across listings share one fetch. Disable for cheaper property-only runs (~40% faster). |
maxItems | integer | no | Safety cap on total dataset rows, not URLs. A rent URL with 935 results emits up to 935 listing rows. Default 200. Free-tier users are capped at 100. |
maxConcurrency | integer | no | Detail pages fetched in parallel. Default 8. Sweet spot 6–10. |
minConcurrency | integer | no | Minimum parallelism. Default 1. |
maxRequestRetries | integer | no | Per-URL retry budget. Transient errors are auto-detected and don't count against this. Default 5. |
proxy | object | no | Default: Apify Residential AU ({ useApifyProxy: true, apifyProxyGroups: ["RESIDENTIAL"], apifyProxyCountry: "AU" }). Override with your own residential pool if desired. |
Example input
{"startUrls": ["https://www.domain.com.au/rent/sydney-nsw-2000/","https://www.domain.com.au/sale/melbourne-vic-3000/?bedrooms=2-any&price=0-800000","https://www.domain.com.au/sold-listings/brisbane-qld-4000/","https://www.domain.com.au/38-bridge-st-sydney-nsw-2000-18121983","https://www.domain.com.au/real-estate-agent/cherie-xue-1487822/"],"enrichAgent": true,"maxItems": 500,"proxy": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "AU" }}
That yields up to 500 rows: rent + sale + sold listings paginated through, 1 direct detail row, and 1 standalone agent row. The agent referenced by the 38 Bridge St listing is deduped against any earlier listing referencing the same agent.
Output schema
Three row shapes, distinguished by the rowType field: listing, agent, project.
rowType: "listing"
{"rowType": "listing","sourceUrl": "https://www.domain.com.au/38-bridge-st-sydney-nsw-2000-18121983","canonicalUrl": "https://www.domain.com.au/38-bridge-st-sydney-nsw-2000-18121983","listingId": 18121983,"listingMode": "rent", // "rent" / "sale" / "sold""listingType": "RESIDENTIAL", // RESIDENTIAL / COMMERCIAL / RURAL / PROJECT"status": "LIVE", // LIVE / LEASED / SOLD / WITHDRAWN"headline": "Furnished CBD studio with city views","description": "...HTML-stripped, line-break-preserving body...","propertyType": "APARTMENT_UNIT_FLAT","propertyTypes": ["APARTMENT_UNIT_FLAT"],"bedrooms": 1,"bathrooms": 1,"carspaces": 0,"landAreaSqm": null,"buildingAreaSqm": null,"isRural": false,"energyEfficiencyRating": null,"structuredFeatures": [{ "category": "Indoor", "name": "Built in wardrobes", "source": "SUGGESTED" }/* up to ~20 features */],"address": {"displayAddress": "38 Bridge St, Sydney NSW 2000","streetNumber": "38","unitNumber": null,"street": "Bridge St","suburb": "Sydney","state": "NSW","postcode": "2000","lat": -33.8632149,"lng": 151.2106999},"priceDisplay": "$800 per week","priceExact": 800,"priceFrom": null,"priceTo": null,"canDisplayPrice": true,"bondAmount": 3200, // rent only — null for sale/sold"dateListed": "2026-05-15T16:03:18+10:00","dateCreated": "2026-05-15T15:42:11","dateUpdated": "2026-05-15T16:03:18","dateAvailable": "2026-05-20T00:00:00","leasedDate": null, // rent only when LEASED"soldDate": null, // sale/sold only"photos": [ /* up to ~30 imgix-hosted CDN URLs */ ],"floorplans": [],"photosCount": 7,"floorplansCount": 0,"hasPhoto": true,"hasFloorplan": false,"virtualTourUrl": null,"matterportUrl": null,"inspections": [{ "openingDateTime": "2026-05-18T10:00:00", "closingDateTime": "2026-05-18T10:30:00" }],"inspectionsCount": 1,"inspectionByAppointmentOnly": false,"auctionDateTime": null, // auction sale listings only"saleMethod": null, // PRIVATE_TREATY / AUCTION / EOI / etc."agency": {"agencyId": 6877,"name": "Sydney Cove Property","phone": "02 92411288","website": "http://www.sydneycoveproperty.com.au","profileUrl": "https://www.domain.com.au/real-estate-agencies/sydneycoveproperty-6877","logoUrl": "https://rimh2.domainstatic.com.au/...","bannerUrl": "https://rimh2.domainstatic.com.au/...","backgroundColour": "#FFFFFf","isArchived": false},"agentNames": ["Cherie Xue", "Robert McFadden"],"agentIds": [1487822, 1951517],"agentsEnriched": [{"agentId": 1487822,"agentIdInternal": "6877-A31464","fullName": "Cherie Xue","jobTitle": "Sales representative","profileTier": "platinum","hasEmail": true,"mobileNumber": null,"landlineNumber": "02 9241 1288","photoUrl": "https://rimh2.domainstatic.com.au/.../contact_1487822.jpeg","agencyId": 6877,"agencyName": "Sydney Cove Property","agencyAddress": "Level 1 / 111 George St, The Rocks NSW 2000","personalWebsiteUrl": "http://sydneycoveproperty.com/agents/.../Cherie-Xue","facebookUrl": "https://www.facebook.com/Sydneycoveproperty","twitterUrl": "https://twitter.com/sydneycove","instagramUrl": "https://www.instagram.com/Sydney_Cove/","linkedInUrl": "","youTubeChannelUrl": "","agentVideoUrl": "https://www.youtube.com/watch?v=...","totalForSale": 0,"totalForRent": 31,"totalSold": 0,"totalLeased": 147,"totalJointLeased": 101,"totalSoldAndAuctioned": 0,"recentListingIds": [18122017, 18121983, 18118956 /* ... */],"bio": "Rui (Cherie) Xue - Licence No: ..."}/* + remaining agents on this listing */],"schoolsCount": 13,"schools": [{"schoolId": "4299","name": "Fort Street Public School","educationLevel": "primary","sector": "Government","gender": "CoEd","yearRange": null,"distance": 612.4,"distanceUnit": "m","rating": null,"inCatchment": true}/* + ~12 more, mix of primary and secondary, government and non-government */],"suburbProfile": {"type": "SUBURB","address": { "suburb": "Sydney", "state": "NSW", "postcode": "2000" },"statistics": { /* median price, days-on-market, demographic highlights, property age distribution */ }},// Denormalised page-info flags (Domain's own digitalData layer)"daysListed": 0,"displayedLabels": "New listing","hasDescription": true,"descriptionHasEmail": false,"descriptionHasPhone": true,"hasSOI": false, // Statement of Information (Victoria-mandated)"hasDisplayPrice": true,"hasVirtualTour": false,"providerAdId": "R2637954", // Third-party feed ID"providerSystem": "alchemy",// Search context — populated when the row came from a listing-URL fan-out.// `null` when the row came from a direct detail URL."searchContext": {"discoveryUrl": "https://www.domain.com.au/rent/sydney-nsw-2000/","resultPosition": 1, // 1-based position within the search page (1..20)"pageNumber": 1,"totalPages": 47,"totalResults": 935, // total result count across all pages"mode": "rent" // rent / sale / sold},"scrapedAt": "2026-05-15T20:39:45.418Z"}
Total fields per listing row: 66 (counting agentsEnriched[] items as one field, not N, and the searchContext block as one field).
rowType: "agent"
Emitted only when an agent profile URL is in startUrls. Standalone agent rows. The same agent data is also denormalized into every listing row's agentsEnriched[], so you don't need to scrape agent URLs separately unless you want flat agent rows.
{"rowType": "agent","sourceUrl": "https://www.domain.com.au/real-estate-agent/cherie-xue-1487822","agentId": 1487822,"agentIdInternal": "6877-A31464","fullName": "Cherie Xue","jobTitle": "Sales representative","profileTier": "platinum", // platinum / gold / silver / standard"hasEmail": true,"mobileNumber": null, // null if agent only lists landline"landlineNumber": "02 9241 1288","photoUrl": "https://rimh2.domainstatic.com.au/.../contact_1487822.jpeg","agencyId": 6877,"agencyName": "Sydney Cove Property","agencyAddress": "Level 1 / 111 George St, The Rocks NSW 2000","personalWebsiteUrl": "http://sydneycoveproperty.com/agents/.../Cherie-Xue","facebookUrl": "https://www.facebook.com/Sydneycoveproperty","twitterUrl": "https://twitter.com/sydneycove","instagramUrl": "https://www.instagram.com/Sydney_Cove/","linkedInUrl": "","youTubeChannelUrl": "","agentVideoUrl": "https://www.youtube.com/watch?v=...",// Lifetime stats from Domain's own ContactStatistics record"totalForSale": 0,"totalForRent": 31,"totalSold": 0,"totalLeased": 147,"totalSoldAndAuctioned": 0,"totalJointSoldAndAuctioned": 0,"totalJointLeased": 101,"totalAuctioned": 0,"recentListingIds": [18122017, 18121983, 18118956, 18118228 /* ... */ ],"bio": "Rui (Cherie) Xue - Licence No: 2 0 3 0 3 4 6 8 Born in the Shandong Province in China, Cherie moved to Australia in 2006...","scrapedAt": "2026-05-15T20:39:45.418Z"}
rowType: "project"
Emitted when Domain serves a /project/{id}/{slug}/ URL inside a listing-search results page (common in CBD sale searches for new-development apartments). v1 emits a placeholder with the source URL; the full project schema (developer, available stock, completion date, price range) is on the v2 roadmap.
{"rowType": "project","sourceUrl": "https://www.domain.com.au/project/1923/380-melbourne-melbourne-vic/","scrapedAt": "2026-05-15T20:39:45.418Z","note": "Project listing — full schema lands in v2. See sourceUrl for the page."}
Pricing
Pay-per-event. The default plan charges per dataset row, with no separate event for the (cached) agent enrichment fetches — those are bundled into the listing row cost.
| Event | When billed | Suggested rate |
|---|---|---|
outputrecord | Every row pushed to the dataset (1 listing = 1 row, 1 agent URL = 1 row, 1 project URL = 1 row) | $1.50 / 1000 rows |
This sits at the premium end of property scrapers (most Domain actors price $0.50–$1.00/1k) because of the 66-field rich row + agent enrichment + school catchment + suburb profile included. If your use case only needs slim 5-field property rows, set enrichAgent: false for ~40% faster runs (price unchanged — same outputrecord event).
Free tier
Non-paying Apify users get capped at 100 items per run. A paying account removes the cap (maxItems still enforced, default 200).
What makes this richer than the competition
We surveyed the Domain.com.au actors on the Apify marketplace (May 2026). Most are running stale code from 2024 and have not kept pace with Domain's modernised site. This actor is a clean-slate build with substantially richer output:
| Capability | Competitor actors | This actor |
|---|---|---|
| Returns reliable data on the live site (May 2026) | hit-and-miss | ✅ Live-tested clean |
| Three modes (rent + sale + sold) in one actor | ❌ (split across separate SKUs) | ✅ |
| URL auto-classification (paste any mix) | ❌ | ✅ |
| Pure HTTP, no headless browser | mixed (some use Puppeteer) | ✅ |
| No paid third-party services | mixed | ✅ |
| Per-listing agent enrichment (mobile, photo, lifetime stats, social, bio) | partial (1 actor surfaces names only) | ✅ |
| Agent dedupe cache — each unique agent fetched once per run | ❌ (others either skip agents or re-fetch per listing) | ✅ |
| School catchment included (~13 schools per listing) | ❌ | ✅ |
| Suburb profile included (median price, demographics, market activity) | ❌ | ✅ |
| Per-listing lat/lng from Domain's own geolocation | partial (some geocode externally) | ✅ |
| Per-row search context (resultPosition, pageNumber, totalResults) | ❌ | ✅ |
| Flat row shape — no nested arrays you have to flatten | mixed | ✅ |
| Auto-paginates with native page counters | partial | ✅ |
| 66 fields per listing row | typical 12–25 | ✅ |
Most older Domain actors emit 12–25 fields per row and don't enrich agents. This actor returns property + agent + school + suburb data in one row, with strict freshness on Domain's current site behaviour.
Notes & limitations
- Site evolution. Domain.com.au occasionally rotates its page structure or anti-bot policy. When that happens, the actor may need a 1-day patch. We monitor live runs and ship updates within 24–48 hours when behaviour shifts.
- Agent emails are gated behind a contact form on Domain. We surface
hasEmail: true|falseso you know who's contactable, but the email itself isn't in the public HTML. Same applies to many agent mobile numbers — Domain hides mobile when the agent didn't opt-in to public display (mobileNumber: null). /sold-listings/caps at 12 months by Domain. Older sale history needs/property-profile/{slug}URLs — out of scope for v1, on the v2 roadmap.- Commercial listings live on
commercialrealestate.com.au(a Domain sibling site) and are out of scope for v1. - New-development
/project/{id}/listings are emitted as placeholder rows (justsourceUrl). The full project schema lands in v2. - Apify free-tier cap at 100 items per run. Upgrade to a paying plan to lift the cap.
- Domain occasionally A/B tests the page structure — we monitor parser drift and patch within 24–48 hours when fields shift.
- No API alternative. Domain Group runs a paid B2B Developer Portal with structured access. If you have enterprise volume and budget, that's the right path. This actor is for ad-hoc lead generation, market analytics, and pricing research — no contract, pay-per-row.
Support
Issues, feature requests, or custom output shapes? Open a ticket on the actor's Apify page or message the maintainer.
⚠️ Disclaimer
This Actor accesses publicly available data on Domain.com.au for legitimate research, market intelligence, and business-analysis purposes. Use of this Actor must comply with Domain.com.au's Terms of Service and all applicable laws including the Australian Privacy Act 1988, GDPR (where the data subject is in the EU), and the Spam Act 2003 (for any subsequent agent outreach). The Actor's authors are not responsible for any misuse. Users must:
- Respect rate limits and avoid overloading Domain.com.au's infrastructure
- Not use scraped data to violate user privacy or terms — agent contact details in particular are subject to the Australian Privacy Principles and may not be used for unsolicited commercial communications without consent
- Use the data in compliance with applicable jurisdictions
- Not republish scraped content in violation of copyright
Domain.com.au is a registered trademark of Domain Holdings Australia Limited (ASX: DHG). This Actor is not affiliated with, endorsed by, or sponsored by Domain Holdings Australia. If you are Domain Holdings Australia and would like to discuss commercial access via the official Domain Group Developer Portal, please contact the maintainer.
We do not store any scraped data; the Actor returns it directly to your Apify dataset for your authorized use.
SEO Keywords
domain.com.au scraper, domain.com.au api, domain.com.au property data, australian real estate scraper, sydney property scraper, melbourne property scraper, brisbane property scraper, perth property scraper, adelaide property scraper, australia rental listings scraper, australia property for sale scraper, australia sold listings scraper, real estate agent data scraper, domain.com.au listings api, australian property market data, australian housing market scraper, real estate api australia, agent enrichment scraper, suburb profile data australia, school catchment data australia, australia auction data scraper, sold property history australia, apify domain.com.au, domain.com.au crawler, residential property data api, australian property comps data