realestate APIrealestate.com.au ↗
Access Australian property listings for sale and rent, detailed property data, and nearby school information from realestate.com.au via a simple REST API.
What is the realestate API?
This API exposes 3 endpoints covering property search, listing details, and nearby schools from realestate.com.au — Australia's largest property marketplace. The search endpoint returns paginated listing arrays including price, bedrooms, bathrooms, parking, and address across any Australian suburb, postcode, or city. The get_property_details endpoint adds media, inspection times, and the full property description HTML for a single listing.
curl -X GET 'https://api.parse.bot/scraper/16eea48f-8e4a-4bcc-b631-3cd9a0152e60/search?page=1&purpose=buy&location=melbourne' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace realestate-com-au-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.realestate_com_au_api import RealEstate, ListingSummary, Listing, SchoolResult, School, Purpose
client = RealEstate()
# Search for rental properties in Melbourne
for summary in client.listings.search(location="melbourne", purpose=Purpose.RENT, limit=5):
print(summary.address, summary.price, summary.bedrooms, summary.bathrooms)
# Get full details for a specific listing
listing = client.listings.get(property_id="149037324")
print(listing.address, listing.price, listing.description, listing.listing_company)
# Navigate from summary to full detail
for summary in client.listings.search(location="sydney", purpose=Purpose.BUY, limit=1):
detail = summary.details()
print(detail.address, detail.price, detail.property_type, detail.listing_company)
# Find nearby schools
result = client.schools.nearby(lat=-37.8136, lon=144.9631)
for school in result.all:
print(school.name, school.sector, school.school_type, school.distance.value, school.distance.unit)
Search for property listings for sale or rent. Returns paginated results with property summaries. Supports location-based search by suburb, city, postcode, or state. Each page returns up to ~25 listings. The total count reflects server-side matches for the location and purpose.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination |
| purpose | string | Listing type: 'buy' or 'rent' |
| locationrequired | string | Suburb, city, postcode, or state to search in (e.g. 'melbourne', 'sydney', '2000') |
{
"type": "object",
"fields": {
"total": "integer total number of matching listings",
"listings": "array of property listing summaries"
},
"sample": {
"data": {
"total": 3851,
"listings": [
{
"id": "149037324",
"url": "https://www.realestate.com.au/property-149037324",
"price": "Contact Agent",
"state": "Vic",
"suburb": "Melbourne",
"address": "1202/60 A'beckett Street, Melbourne, Vic 3000",
"parking": 1,
"bedrooms": 1,
"postcode": "3000",
"bathrooms": 1,
"property_type": "Apartment",
"short_address": "1202/60 A'beckett Street"
}
]
},
"status": "success"
}
}About the realestate API
Search Listings
The search endpoint accepts a required location parameter (suburb, city, postcode, or state — e.g. 'sydney' or '2000') and an optional purpose parameter set to either 'buy' or 'rent'. Results are paginated via the page parameter. Each listing object in the returned listings array includes id, address, price, property_type, bedrooms, bathrooms, parking, and a direct url to the listing page. The total field reports the full count of matching listings across all pages.
Property Details
Passing a property_id (the numeric ID from a search result) to get_property_details returns the full record for that listing. The media object contains arrays for images, floorplans, and videos. Additional fields include description (raw HTML), inspections (an array of scheduled viewing times), parking, bedrooms, bathrooms, price, address, and the canonical url. This endpoint is the right place to pull inspection schedules or floor plan availability for a specific property.
Nearby Schools
The get_nearby_schools endpoint takes lat and lon coordinates and returns up to 5 schools per category. The response contains three arrays: all (all school types regardless of level), primary (primary and combined schools), and secondary (secondary schools). Coordinates for a property can typically be derived from the property's address returned by the other endpoints.
The realestate API is a managed, monitored endpoint for realestate.com.au — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when realestate.com.au changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official realestate.com.au API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Aggregate for-sale and rental listings across multiple Sydney or Melbourne suburbs into a single feed
- Pull inspection schedules from
get_property_detailsto build a property viewing calendar - Display floor plans and property images by consuming the
mediaobject from the details endpoint - Filter listings by bedroom and bathroom count after fetching paginated
searchresults - Show nearby primary and secondary schools on a property detail page using
get_nearby_schools - Compare listing prices across postcodes by running multiple
searchcalls with differentlocationvalues - Build a rental search tool by setting
purposeto'rent'and iterating pages with thepageparameter
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does realestate.com.au have an official developer API?+
What does the `search` endpoint return, and how do I page through results?+
total integer and a listings array. Each listing carries id, address, price, property_type, bedrooms, bathrooms, parking, and url. Use the page parameter to step through results — combine it with total to determine how many pages exist for a given query.Are sold/historical listings or property valuation estimates available?+
purpose: 'buy' or 'rent') plus school proximity data. It does not return sold history, auction results, or automated valuation estimates. You can fork this API on Parse and revise it to add an endpoint targeting sold listing data.How many schools does `get_nearby_schools` return, and what data comes back for each school?+
all, primary, and secondary. The primary array covers primary and combined schools; secondary covers secondary schools. The endpoint requires explicit latitude and longitude coordinates — there is no address-to-school lookup built in.Does the API return agent or agency contact details for a listing?+
get_property_details endpoint references the listing company but does not expose individual agent phone numbers or email addresses as discrete fields. You can fork this API on Parse and revise it to surface agent contact fields if that data appears on the listing page.