Skip to main contentSkip to main content

Search current listings across a whole state (Pro+ tier)

GET/v1/properties/listings3 credits

Costs 3 credits. Same data as `/v1/suburbs/{state}/{suburb}/listings`, but you give a state instead of one suburb. No address or property_id needed - just state plus whatever filters you care about. Good for "3+ bedroom houses under $900k anywhere in Melbourne" instead of walking suburbs one at a time. `suburb` and `postcode` narrow the search (comma-separated, up to 25 each, ANDed together if you pass both); leave both off and it searches the whole state. Pro+ only - lower plans get 403 before we even look at the other parameters, and the credits are refunded. `geo` is always in the response here, unlike the per-suburb endpoint, since the whole thing already requires Pro+. A state with no suburb/postcode filter can have thousands of rows, so use `cursor` to walk it rather than `offset`. Every row carries a `signals` block: `price_changes` (each asking-price change, oldest first, with `direction`), a `price_change_summary` (number of changes and cuts, first and latest asking price, overall change), and `relisted_at` when the property was withdrawn and advertised again. Filter with `signal=price_drop` or `signal=relisted`.

Parameters

NameInRequiredDescription
statequeryyesTwo-letter state code (VIC, NSW, QLD, WA, SA, TAS, ACT, NT)
suburbquerynoComma-separated suburb names, up to 25. Omit to search the whole state.
postcodequerynoComma-separated 3-4 digit postcodes, up to 25.
property_typequerynoExact match, case-insensitive (House, Apartment, Townhouse, Unit, Villa)
min_bedsquerynoMinimum bedrooms
max_bedsquerynoMaximum bedrooms
min_pricequerynoMinimum asking price (AUD)
max_pricequerynoMaximum asking price (AUD)
min_land_sizequerynoMinimum land size in square metres
max_land_sizequerynoMaximum land size in square metres
min_days_on_marketquerynoMinimum days since added_at. Capped at 365.
max_days_on_marketquerynoMaximum days since added_at. Use e.g. 7 or 14 for recently-listed only. Capped at 365.
modified_sincequerynoISO 8601 timestamp. Only return listings whose record changed at or after it.
limitquerynoPage size (default 10, max 10). Use `cursor` for deeper walks.
cursorquerynoOpaque cursor from a previous response's `pagination.next_cursor`.
offsetquerynoLegacy offset pagination (max 1000). Use `cursor` for a state-wide sweep.
signalquerynoprice_drop (latest asking-price change was a cut) or relisted (withdrawn and advertised again).
signal_daysquerynoWindow for `signal`, in days (default 30 for price_drop, 90 for relisted; max 365).

Example request

curl "https://api.propradar.com.au/v1/properties/listings?state=VIC&suburb=Richmond,South%20Yarra&min_beds=3&max_price=900000" \
  -H "X-API-Key: pr_live_..."

Example response

{ "state": "VIC",
  "listings": [{ "property_id": "8644b8fd",
                 "address": "2/28 Danin Street, Richmond, VIC, 3121",
                 "suburb": "RICHMOND", "postcode": 3121,
                 "bedrooms": 3, "bathrooms": 2, "parking": 1,
                 "property_type": "Townhouse",
                 "asking_price_low": 825000, "asking_price_high": 875000,
                 "land_size": 210, "sale_type": "Auction",
                 "added_at": "2026-05-26T16:36:43.000Z",
                 "geo": { "lat": -37.8197, "lng": 145.0007 } }],
  "pagination": { "next_cursor": "eyJk...", "next_offset": 10, "limit": 10 } }

Get an API key

Every endpoint takes an X-API-Key header. The free tier needs no credit card.

Other endpoints