---
name: domain-group-property-valuation
title: Value an Australian property with Domain
description: Resolve a free-text Australian address to a Domain property id, then pull the sale price
  estimate, the rental estimate, and the supporting sales and listing history for that property.
api: openapi/domain-group-properties-api-openapi.yml
apis:
- openapi/domain-group-properties-api-openapi.yml
- openapi/domain-group-addresslocators-api-openapi.yml
- openapi/domain-group-propertyavm-api-openapi.yml
operations:
- Properties_Suggest
- AddressLocators_Get
- Properties_Get
- Properties_GetPriceEstimate
- Properties_GetRentalEstimate
- property_sales_history_get
- property_listing_history_get
- PropertyAvm_Get
- PropertyAvm_ReportGet
scopes:
- api_properties_read
- api_addresslocators_read
- api_avm_read
generated: '2026-10-21'
method: generated
source: openapi/ per-API documents + https://developer.domain.com.au/docs/latest
---

# Value an Australian property with Domain

Domain identifies every property with its own opaque property id. Nothing in the
valuation surface accepts a raw address, so the first move is always address →
property id.

## Before you start

- Base URL: `https://api.domain.com.au/` (sandbox: `https://api.domain.com.au/sandbox/`).
- Auth: either the `x-api-key` header, or an OAuth 2.0 bearer token from
  `https://auth.domain.com.au/v1/connect/token`. Client Credentials is enough —
  none of these operations need user context.
- Required scopes: `api_properties_read`, `api_addresslocators_read`,
  `api_avm_read`. Price Estimation, Rental AVM and Property Enrichment are
  **separate API packages** that must be added to your portal project and
  negotiated with an account manager; the two packages granted on signup
  (Agents & Listings, Properties & Locations) do not include them.
- Cache the access token until its expiry — token requests are capped at
  3000/hour and the SLA guarantee is conditional on doing this.

## Steps

1. **Resolve the address.** Call `Properties_Suggest`
   (`GET /v1/properties/_suggest`) with the free-text address. It returns
   candidate properties with their Domain ids. For a stricter address-component
   match use `AddressLocators_Get` (`GET /v1/addressLocators`) instead.
   If several candidates come back, disambiguate on the returned address fields
   before continuing — never guess.

2. **Confirm the property.** Call `Properties_Get`
   (`GET /v1/properties/{id}`) with the chosen id and check the returned address
   matches what the user asked for.

3. **Sale price estimate.** Call `Properties_GetPriceEstimate`
   (`GET /v1/properties/{propertyId}/priceEstimate`). The response carries a
   lower / mid / upper price band, a confidence indicator, and estimate history.
   **Always report the band and the confidence together** — a mid-point quoted
   alone misrepresents the model.

4. **Rental estimate.** Call `Properties_GetRentalEstimate`
   (`GET /v1/properties/{propertyId}/rentalEstimate`) for the rental AVM.

5. **Full AVM (if licensed).** `PropertyAvm_Get` (`GET /v1/avm/{propertyId}`)
   and `PropertyAvm_ReportGet` (`GET /v1/avmReport/{propertyId}`) return the
   richer automated valuation and its report form.

6. **Ground the number in history.** `property_sales_history_get`
   (`GET /v1/properties/salesHistory`) and `property_listing_history_get`
   (`GET /v1/properties/listingHistory`) give the prior transactions and
   campaigns for the property. An estimate with no history behind it is a weak
   answer.

## Rules

- **Attribution is mandatory.** Domain data is licensed under the Domain Group
  API Terms and Conditions and the Attribution and Usage Policies. Do not
  present an estimate as your own valuation.
- **These are model outputs, not appraisals.** Carry Domain's confidence
  indicator through to the user; never round it away.
- **403 with `X-Domain-Security-Reason`** almost always means the package is not
  on your project plan or the token is missing `api_avm_read` /
  `api_properties_read`. Read that header before retrying anything.
- **429**: honour `Retry-After` (seconds) and check `X-Quota-Exceeded` to see
  whether you hit the per-minute or per-day limit. Daily quotas reset at 10am AEST.
- See `conventions/domain-group-conventions.yml` and
  `errors/domain-group-problem-types.yml` for the full envelope.
