Server definition
- Hash
- sha256:8f8e2dfaa483f68a391370d25501cdb67e52746d97c9226d4d4bbb017249d918
- What it is
- What a remote MCP server returned when asked what it offers: 173 tools
The blob, as servednamed by its sha256
{
"instructions": "Microburbs Australian property data.\n\nSuburb tools are keyed by the exact ABS Suburb and Locality (SAL) name, e.g.\n`Burwood (NSW)` — many suburbs carry a state suffix. Given free text or a bare\nname, call `geocode_suburb` first and use the `area_name` it returns. Those\ntools do not guess a state or correct typos; `geocode_suburb` is typo-tolerant\nand is where a name gets resolved.\n\nProperty tools are keyed by GNAF id — resolve an address with `geocode_address`.\n\nTo rank or shortlist suburbs on numeric criteria (growth, yield, price), use\n`suburbs_finder_search` rather than fetching suburbs one at a time.\n\nWITHOUT A KEY (the free sandbox), `geocode_suburb` still works — resolving a\nsuburb name is free nationwide, so start there as usual. What is limited is the\nDATA: only these nine suburbs answer, one per state and territory.\n\n Bondi · Belmont North · St Kilda (Vic.) · Fortitude Valley · Subiaco ·\n Unley · Sandy Bay · Kambah · Nightcliff\n\nPass the name exactly as written — the suffix is part of it, so\n`St Kilda (Vic.)`, not `St Kilda`. Any other suburb returns 403 naming that\nlist rather than data. `geocode_address` is billed and also returns 403, so\nproperty tools need one of the sample GNAF ids documented at\nhttps://www.microburbs.com.au/developers/mcp — or a key from\nhttps://www.microburbs.com.au/developers/keys for the whole country.\n",
"tools": [
{
"description": "Discover which statistical fields exist. Free (0c). Fuzzy, token-based\nmatching covers table topics and clean column labels as well as terse field\ncodes. Common natural-language plurals and Census synonyms are handled, so\nthe verbatim `query=couples with children` discovers the exact 2021 ABS\nfamily-composition count fields rather than substituting the broader\n`census_family_households` metric. Use the returned field code(s) with the\npriced `/area-stats/SAL/{suburb}/values` route. ~17k fields available.\n\n**Free.**",
"inputSchema": {
"properties": {
"limit": {
"default": 50,
"description": "Max fields to return.",
"maximum": 500,
"minimum": 1,
"type": "integer"
},
"query": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Fuzzy search over ABS field names/codes, table topics and column labels (e.g. 'total population', 'couple family children', 'tenure owned outright', or 'median rent'). Omit to list.",
"examples": [
"couple family children"
]
}
},
"required": [],
"type": "object"
},
"name": "area_stats_fields",
"outputSchema": null
},
{
"description": "List the regions that exist at a level — every suburb, LGA, postcode, etc.\nFree (0c). Use it to discover the exact region names to pass to /values.\n\n**Free.**",
"inputSchema": {
"properties": {
"limit": {
"default": 100,
"description": "Max regions to return.",
"maximum": 1000,
"minimum": 1,
"type": "integer"
},
"query": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Filter by region name (substring, case-insensitive). Omit to list.",
"examples": [
"lake"
]
},
"region_level": {
"description": "Region level: SAL (suburb), SA1, SA2, SA3, SA4, LGA, POA, GCCSA, STE, AUS.",
"examples": [
"SAL"
],
"type": "string"
}
},
"required": [
"region_level"
],
"type": "object"
},
"name": "area_stats_regions",
"outputSchema": null
},
{
"description": "Statistical field values for one region. Pass `fields` — 1 to 5 field\ncodes (from /fields) — to fetch.\n\nAt SAL level, `mode=sa1` switches from the suburb-aggregate value to a\nper-SA1 breakdown — every SA1 that falls inside the suburb, each with its\nown values.\n\n**Price: 3¢ per call.**",
"inputSchema": {
"properties": {
"fields": {
"description": "Comma-separated field codes (from /fields). Required, 1-5 per call.",
"examples": [
"Median_age_persons"
],
"type": "string"
},
"mode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "SAL only: 'sa1' returns values for every SA1 in the suburb, instead of the suburb aggregate."
},
"region": {
"description": "Region name (case-insensitive). For SA1, the SA1 code (SA1s are unnamed).",
"examples": [
"Belmont North"
],
"type": "string"
},
"region_level": {
"description": "Region level: SAL (suburb), SA1, SA2, SA3, SA4, LGA, POA, GCCSA, STE, AUS.",
"examples": [
"SAL"
],
"type": "string"
}
},
"required": [
"region_level",
"region",
"fields"
],
"type": "object"
},
"name": "area_stats_values",
"outputSchema": null
},
{
"description": "Resolve a freeform address string to candidate G-NAF identifiers.\n\nUse this before calling any ``/v1/properties/{gnaf_id}/...`` route —\nthose endpoints require a GNAF in the path. Returns up to 10\ncandidates, ranked by Meilisearch score.\n\n**Price: 1¢ per call.**",
"inputSchema": {
"properties": {
"address": {
"description": "Freeform address string.",
"examples": [
"27 Arlington Street, Belmont North NSW"
],
"minLength": 2,
"type": "string"
}
},
"required": [
"address"
],
"type": "object"
},
"name": "geocode_address",
"outputSchema": null
},
{
"description": "Autocomplete a partial suburb search string against the ABS SAL\nlist. Use this before calling ``/v1/suburbs/{name}/...`` — those\nendpoints require a canonical SAL name in the path.\n\n**Free.**",
"inputSchema": {
"properties": {
"q": {
"description": "Partial suburb name.",
"minLength": 1,
"type": "string"
},
"state": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Optional state filter (NSW, VIC, ...)."
}
},
"required": [
"q"
],
"type": "object"
},
"name": "geocode_suburb",
"outputSchema": null
},
{
"description": "All Australian LGAs. Optional `?state=` filter (e.g. 'NSW').\nReturns `{lga, state}` per row. Flat cost.\n\n**Price: 3¢ per call.**",
"inputSchema": {
"properties": {
"state": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Filter by state / territory (NSW, VIC, ...). Optional — ~540 LGAs nationally."
}
},
"required": [],
"type": "object"
},
"name": "lga_list",
"outputSchema": null
},
{
"description": "LGA's parent chain — state + GCCSA. LGAs aren't strictly nested\nin SA4 so the upward chain stops there.\n\n**Price: 3¢ per call.**",
"inputSchema": {
"properties": {
"lga_name": {
"type": "string"
}
},
"required": [
"lga_name"
],
"type": "object"
},
"name": "lga_profile",
"outputSchema": null
},
{
"description": "Mesh-block codes inside a suburb. ``sal`` is required for now —\nnationwide / by-LGA / by-SA3 listings will land later when there's\na story for the large payloads (a single LGA can hit a few\nthousand mesh blocks).\n\n**Price: 3¢ per call.**",
"inputSchema": {
"properties": {
"sal": {
"description": "Required. Suburb (SAL) to list mesh blocks for.",
"type": "string"
}
},
"required": [
"sal"
],
"type": "object"
},
"name": "mbs_list",
"outputSchema": null
},
{
"description": "The mesh block's upward ABS chain — SA1, SA2/3/4, GCCSA, state —\nplus the parallel admin chain (LGA, suburb (SAL), postcode).\n\n**Price: 3¢ per call.**",
"inputSchema": {
"properties": {
"mb_code": {
"type": "string"
}
},
"required": [
"mb_code"
],
"type": "object"
},
"name": "mbs_profile",
"outputSchema": null
},
{
"description": "Return key identity and the authoritative Autumn credit balance.\n\n**Free.**",
"inputSchema": {
"properties": {},
"required": [],
"type": "object"
},
"name": "me",
"outputSchema": null
},
{
"description": "Returns immediately if the API is up. No authentication required and not metered — safe to poll from a load balancer, uptime monitor, or status dashboard without affecting your usage.\n\n**Free.**",
"inputSchema": {
"properties": {},
"required": [],
"type": "object"
},
"name": "ping",
"outputSchema": null
},
{
"description": "Curated amenities (supermarkets, green spaces, restaurants/cafes)\nwithin `radius_m` of the property, bucketed and nearest-first.\n\n**Price: 10¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
},
"radius_m": {
"default": 1000,
"description": "Search radius in metres (100–5000, default 1000).",
"maximum": 5000,
"minimum": 100,
"type": "integer"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_amenities_nearby",
"outputSchema": null
},
{
"description": "**Price: 23¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_basics_all",
"outputSchema": null
},
{
"description": "Bathroom count from the latest matching listing.\n\n**Price: 5¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_basics_bath_count",
"outputSchema": null
},
{
"description": "Bedroom count from the latest matching listing.\n\n**Price: 5¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_basics_bed_count",
"outputSchema": null
},
{
"description": "Dwelling type (house, unit, townhouse, ...).\n\n**Price: 5¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_basics_dwelling_type",
"outputSchema": null
},
{
"description": "Parcel land area in square metres from the cadastral feed.\n\n**Price: 3¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_basics_land_area_sqm",
"outputSchema": null
},
{
"description": "Parking-space count from the latest matching listing.\n\n**Price: 5¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_basics_parking_count",
"outputSchema": null
},
{
"description": "**Price: 74¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_comparables_all",
"outputSchema": null
},
{
"description": "Top comparable sales used to triangulate the subject property's value.\n\n**Price: 60¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_comparables_cma_comp_set",
"outputSchema": null
},
{
"description": "Single best comparable from the CMA set (highest dist_score).\n\n**Price: 10¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_comparables_cma_single_comp",
"outputSchema": null
},
{
"description": "Recent comparable sales in a small radius around the subject parcel.\n\n**Price: 4¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_comparables_recent_sales_nearby",
"outputSchema": null
},
{
"description": "Mesh-block polygons within 1 km of the property (GeoJSON), each with\navg annual growth, investor counts, modal street and median sold price.\n\n**Price: 30¢ per call.**",
"inputSchema": {
"properties": {
"geojson": {
"default": true,
"description": "When false, geometry is dropped — every Feature keeps its per-mesh-block stats but its `geometry` is null. Use it for the stats surface without the polygons (default true — response unchanged).",
"type": "boolean"
},
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_context_mesh_blocks",
"outputSchema": null
},
{
"description": "Currently for-sale listings within `radius_km` of the property\n(newest first, max 30) with AVM and rent-yield comparison.\n\n**Price: 20¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
},
"radius_km": {
"default": 1,
"description": "Search radius in km (0.1-5).",
"maximum": 5,
"minimum": 0.1,
"type": "number"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_context_nearby_for_sale",
"outputSchema": null
},
{
"description": "The subject's bedroom band (bed count from listing history) and the\nsuburb's 10-year price series for that band.\n\n**Price: 15¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_context_street_bedroom_series",
"outputSchema": null
},
{
"description": "**Price: 8¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_development_all",
"outputSchema": null
},
{
"description": "Primary zoning at the property's point — code (R2, B4, ...) when\nthe council ships one, plus the human-readable name and the\nbroader category.\n\n**Price: 3¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_development_zoning_code",
"outputSchema": null
},
{
"description": "Development overlays intersecting the property's parcel.\n\n**Price: 5¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_development_zoning_overlays",
"outputSchema": null
},
{
"description": "**Price: 80¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_history_all",
"outputSchema": null
},
{
"description": "Adjoining-parcel neighbours, enriched with address + property\ntype + bed/bath/garage from the latest matching listing.\n\n**Price: 30¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_neighbours",
"outputSchema": null
},
{
"description": "Resolve a GNAF to its full ABS Statistical Geography Standard\nhierarchy (Mesh Block → SA1 → SA2 → SA3 → SA4 → GCCSA → State) plus\nthe parallel admin chain (LGA, suburb (SAL), postcode). Call this\nonce to get every ABS key the rest of the data layers index on.\n\n**Price: 3¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_profile",
"outputSchema": null
},
{
"description": "All For Rent records, most-recent first.\n\n**Price: 30¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_rent_history",
"outputSchema": null
},
{
"description": "Most-recent For Rent record.\n\n**Price: 10¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_rent_history_latest",
"outputSchema": null
},
{
"description": "Every property-level risk overlay in one call. Flat 30¢ — may grow\nwithout increasing the bundle price as new overlays are added.\n\nWith ``?geojson=true`` each risk that has a polygon overlay also carries\nits 1km-radius-clipped `geojson` FeatureCollection + `geojson_meta`.\n\n**Price: 48¢ per call.**",
"inputSchema": {
"properties": {
"geojson": {
"default": false,
"description": "When true, add a `geojson` FeatureCollection of the hazard polygons clipped to a 1km-radius circle around the property, plus `geojson_meta` (default false — response unchanged).",
"type": "boolean"
},
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_risks_all",
"outputSchema": null
},
{
"description": "Bushfire-prone-area overlays within 1 km. Read `on_property` — a returned\nrow means \"found nearby\", not \"this property is in a bushfire zone\".\n\n**Price: 15¢ per call.**",
"inputSchema": {
"properties": {
"geojson": {
"default": false,
"description": "When true, add a `geojson` FeatureCollection of the hazard polygons clipped to a 1km-radius circle around the property, plus `geojson_meta` (default false — response unchanged).",
"type": "boolean"
},
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_risks_bushfire",
"outputSchema": null
},
{
"description": "Environmental-risk overlay (contamination, salinity, ...).\n\n**Price: 3¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_risks_environment",
"outputSchema": null
},
{
"description": "Coastal / soil erosion overlays within 1 km. Read `on_property` — a\nreturned row means \"found nearby\", not \"this property is eroding\".\n\n**Price: 3¢ per call.**",
"inputSchema": {
"properties": {
"geojson": {
"default": false,
"description": "When true, add a `geojson` FeatureCollection of the hazard polygons clipped to a 1km-radius circle around the property, plus `geojson_meta` (default false — response unchanged).",
"type": "boolean"
},
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_risks_erosion",
"outputSchema": null
},
{
"description": "Modelled flood overlays within 1 km. Read `on_property` — a returned row\nmeans \"found nearby\", not \"this property floods\".\n\n**Price: 10¢ per call.**",
"inputSchema": {
"properties": {
"geojson": {
"default": false,
"description": "When true, add a `geojson` FeatureCollection of the hazard polygons clipped to a 1km-radius circle around the property, plus `geojson_meta` (default false — response unchanged).",
"type": "boolean"
},
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_risks_flood",
"outputSchema": null
},
{
"description": "Heritage-listing overlays within 1 km. Read `on_property` — a returned row\nmeans \"found nearby\", not \"this property is heritage-listed\".\n\n**Price: 3¢ per call.**",
"inputSchema": {
"properties": {
"geojson": {
"default": false,
"description": "When true, add a `geojson` FeatureCollection of the hazard polygons clipped to a 1km-radius circle around the property, plus `geojson_meta` (default false — response unchanged).",
"type": "boolean"
},
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_risks_heritage",
"outputSchema": null
},
{
"description": "Recorded historical flood extents within 1 km. Read `on_property` — a\nreturned row means \"found nearby\", not \"this property flooded\".\n\n**Price: 3¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_risks_historical_flood",
"outputSchema": null
},
{
"description": "High-voltage power-line easement near the parcel.\n\n**Price: 2¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_risks_hv_power_line",
"outputSchema": null
},
{
"description": "Landslide-risk overlays within 1 km. Read `on_property` — a returned row\nmeans \"found nearby\", not \"this property is at landslide risk\".\n\n**Price: 3¢ per call.**",
"inputSchema": {
"properties": {
"geojson": {
"default": false,
"description": "When true, add a `geojson` FeatureCollection of the hazard polygons clipped to a 1km-radius circle around the property, plus `geojson_meta` (default false — response unchanged).",
"type": "boolean"
},
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_risks_landslide",
"outputSchema": null
},
{
"description": "Mobile-coverage black-spot overlay near the parcel.\n\n**Price: 2¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_risks_mobile_black_spot",
"outputSchema": null
},
{
"description": "Public-housing concentration overlay near the parcel.\n\n**Price: 4¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_risks_public_housing",
"outputSchema": null
},
{
"description": "All Sold + For Sale records, most-recent first.\n\n**Price: 30¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_sale_history",
"outputSchema": null
},
{
"description": "Most-recent Sold or For Sale record.\n\n**Price: 10¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_sale_history_latest",
"outputSchema": null
},
{
"description": "**Price: 105¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_schools_all",
"outputSchema": null
},
{
"description": "Schools within ~5km of the property, with rank + student counts.\n\n**Price: 5¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_schools_nearby",
"outputSchema": null
},
{
"description": "Schools within ~5km of the property, ranked by NAPLAN / socioeconomic score.\n\n**Price: 100¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_schools_ranking",
"outputSchema": null
},
{
"description": "The property's own street: current median price, 2/4/8-year price\nforecasts, realised growth, sale/rental turnover, renter share and\nhouses/units on the street — plus the suburb-wide medians to judge it\nagainst and the street's rank on 4-year forecast growth.\n\n404s when the street has no forecast row rather than falling back to\nsuburb-wide figures, which would answer a different question.\n\n**Price: 20¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_street_profile",
"outputSchema": null
},
{
"description": "Latest sold/rent dates and likely-owner-status signal per nearby property.\n\n**Price: 20¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_surroundings_listing_history_signals",
"outputSchema": null
},
{
"description": "Cadastral parcel polygons (GeoJSON) for properties around the subject.\n\n**Price: 25¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_surroundings_parcels",
"outputSchema": null
},
{
"description": "Every GNAF property within 200 m of the subject, with lat/lng and mesh block.\n\n**Price: 15¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_surroundings_properties",
"outputSchema": null
},
{
"description": "Properties around the subject flagged by the public-housing classifier.\n\n**Price: 15¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_surroundings_public_housing",
"outputSchema": null
},
{
"description": "ABS Census 2021 tenure shares for each mesh block around the subject.\n\n**Price: 15¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_surroundings_tenure",
"outputSchema": null
},
{
"description": "Nearest train / tram / bus / ferry stop to the property, per mode,\nwith distance. Widen `radius_m` for the nearest station beyond 1km.\n\n**Price: 5¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
},
"radius_m": {
"default": 1000,
"description": "Search radius in metres (100–5000, default 1000).",
"maximum": 5000,
"minimum": 100,
"type": "integer"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_transport_nearby",
"outputSchema": null
},
{
"description": "Quoting accuracy of the property's current listing agency —\ncohort, median guide-vs-sold deviation, underquote rate and its 5\nmost-recent tracked sales. Only while the property is listed for\nsale with a tracked agency.\n\n**Price: 50¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_valuation_agent_quoting",
"outputSchema": null
},
{
"description": "**Price: 10¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_valuation_all",
"outputSchema": null
},
{
"description": "Microburbs ML AVM for a single GNAF — point estimate, 80% range,\nplus a confidence score (0–100) derived from the interval width.\n\n**Price: 10¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_valuation_avm",
"outputSchema": null
},
{
"description": "Council land valuations for the parcel — val_2021..val_2025 series\nwith YoY change and $/sqm, plus lot area and zoning description.\n\n**Price: 15¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_valuation_land_values",
"outputSchema": null
},
{
"description": "Negative-gearing stat at the finest available level: per-property\ncashflow scenarios (80% + 105% LVR), falling back to mesh-block then\nsuburb investor-exposure.\n\n**Price: 20¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_valuation_negative_gearing",
"outputSchema": null
},
{
"description": "Modelled property value over time (monthly for the last year,\nannual before that). Houses only — units have no series.\n\n**Price: 30¢ per call.**",
"inputSchema": {
"properties": {
"gnaf_id": {
"type": "string"
}
},
"required": [
"gnaf_id"
],
"type": "object"
},
"name": "properties_valuation_value_series",
"outputSchema": null
},
{
"description": "All Australian SA4s. Optional `?state=` filter. Returns\n`{sa4, state}` per row. Flat cost.\n\n**Price: 3¢ per call.**",
"inputSchema": {
"properties": {
"state": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Filter by state / territory. Optional — ~110 SA4s nationally."
}
},
"required": [],
"type": "object"
},
"name": "sa4_list",
"outputSchema": null
},
{
"description": "SA4's parent chain — GCCSA + state.\n\n**Price: 3¢ per call.**",
"inputSchema": {
"properties": {
"sa4_name": {
"type": "string"
}
},
"required": [
"sa4_name"
],
"type": "object"
},
"name": "sa4_profile",
"outputSchema": null
},
{
"description": "Per-crime-type rates (predicted incidents per 100,000 residents\nper year) for the suburb vs national medians.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_crime_breakdown",
"outputSchema": null
},
{
"description": "Total crime rate for every mesh block in the suburb, keyed by ABS\nmesh-block code. Values are predicted incidents per 100,000 residents\nper year (see the payload's `unit` / `definition` keys).",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_crime_by_mesh_block",
"outputSchema": null
},
{
"description": "Suburb and national total-crime medians (predicted incidents per\n100,000 residents per year) with a vs-national verdict.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_crime_summary",
"outputSchema": null
},
{
"description": "Population by age bracket and gender.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_demographics_age",
"outputSchema": null
},
{
"description": "Age + income — bundle",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_demographics_all",
"outputSchema": null
},
{
"description": "The dominant ancestry (and its share) in each of the suburb's\nmicroburbs, plus suburb-level ancestry shares. Pilot coverage.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_demographics_ancestry_map",
"outputSchema": null
},
{
"description": "ABN industry-mix pattern (Diverse / Professional-services-heavy /\nMining-exposed / Low-commercial residential) plus the POI categories\nunusually common in the suburb, with named examples.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_demographics_business",
"outputSchema": null
},
{
"description": "How the suburb ranks inside its SA4 region and against its touching\nneighbours on renter share, welfare dependency, overseas-born parents\nand public housing.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_demographics_cohorts",
"outputSchema": null
},
{
"description": "Suburb cultural-integration composite (0-100) with national\npercentile and tier, plus the per-microburb scores behind it.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_demographics_cultural_integration",
"outputSchema": null
},
{
"description": "Household income breakdown by bracket.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_demographics_income",
"outputSchema": null
},
{
"description": "Median weekly household income for every microburb in the suburb,\nplus the suburb median, national percentile and highest/lowest pockets.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_demographics_income_map",
"outputSchema": null
},
{
"description": "Total suburb population is `current_population` (ABS Census 2021),\nalongside suburb census points (2011/2016/2021) and the LGA's yearly\npopulation series with a 10-year modelled projection tail. Use this route\nfor questions such as \"what is the total population of Clarkson?",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_demographics_population_history",
"outputSchema": null
},
{
"description": "Share of residents attending Catholic / Independent schools —\nsuburb rollup plus the per-microburb shares behind it.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_demographics_private_school",
"outputSchema": null
},
{
"description": "Single-parent-family share for the suburb against the pinned\nnational median, with the associated capital-growth impact.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_demographics_single_parents",
"outputSchema": null
},
{
"description": "Explicit total owner-occupation rate plus owned-outright / mortgaged /\nrenting / public-housing shares — a suburb rollup and the per-microburb\ndownscaled Census shares. `owner_occupied_pct` is the requested headline;\nit equals owned outright plus mortgaged and is null if either is absent.\n`census_year` makes the 2021 reference period explicit.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_demographics_tenure",
"outputSchema": null
},
{
"description": "Welfare-dependency and public-housing shares with the suburb's\nunderclass tier (High / Mid / Low) and the capital-growth impact\nassociated with that tier. Regional and neighbour ranks for the same\ntwo metrics are served by `/demographics/cohorts`.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_demographics_underclass_drag",
"outputSchema": null
},
{
"description": "Labour-force-weighted unemployment rate for the suburb against the\npinned national median, plus the per-microburb shares behind it.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_demographics_unemployment",
"outputSchema": null
},
{
"description": "Projected first-preference shares per party, aggregated across the\nsuburb's microburbs (booth-derived model — not an actual vote).",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_demographics_voting",
"outputSchema": null
},
{
"description": "DA count + DA list — bundle",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_development_all",
"outputSchema": null
},
{
"description": "Recent development applications (up to 100, newest first) with category counts.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_development_applications",
"outputSchema": null
},
{
"description": "Height-of-building and floor-space-ratio control polygons with band summaries.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_development_building_controls",
"outputSchema": null
},
{
"description": "Satellite-detected construction change per mesh block plus a suburb rollup.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_development_construction_activity",
"outputSchema": null
},
{
"description": "Council capex / project-pipeline signals extracted from the LGA's meeting\nminutes — each with stage, dollar value, location and time horizon — plus a\nrollup of the total pipeline in dollars.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_development_council_intelligence",
"outputSchema": null
},
{
"description": "Average annual residential council rate for the suburb's LGA.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_development_council_rates",
"outputSchema": null
},
{
"description": "Count of recent development applications in the suburb.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_development_da_count",
"outputSchema": null
},
{
"description": "Recent development applications lodged in the suburb.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_development_da_list",
"outputSchema": null
},
{
"description": "Dwellings and people per km², plus the land area and counts behind them.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_development_density",
"outputSchema": null
},
{
"description": "Dwelling-mix scalars — apartment share and average lot size.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_development_profile",
"outputSchema": null
},
{
"description": "New dwellings (last 24 months) split units vs houses per mesh block plus a rollup.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_development_supply",
"outputSchema": null
},
{
"description": "Zoning polygons clipped to the suburb, with per-class and parent-group area shares.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_development_zoning_map",
"outputSchema": null
},
{
"description": "All ethnicity — bundle",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_ethnicity_all",
"outputSchema": null
},
{
"description": "Ancestry breakdown from the ABS census.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_ethnicity_ancestry",
"outputSchema": null
},
{
"description": "Country-of-birth breakdown from the ABS census.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_ethnicity_birthplace",
"outputSchema": null
},
{
"description": "How many suburbs match the filter, without paying per row. 5c.\n\nUse this to size a result before searching: /search is capped at 25 rows\nper call, so `total` here tells you how many `offset` pages you need.\n\n**Price: 5¢ per call.**",
"inputSchema": {
"properties": {
"filter": {
"description": "Range filter `fieldKey:min..max` (repeatable). Valid fieldKeys: medianHousePrice, grossYield, medianRent, growthForecast4yr, growth10yrCagr, growth3yrCagr, rentGrowth3yr, soldAtLossPct, daysOnMarket, vacancyRate, unitMedianPrice, unitGrossYield, unitMedianRent, unitGrowthForecast4yr, unitGrowth10yrCagr, unitGrowth3yrCagr, unitRentGrowth3yr, unitSoldAtLossPct, unitDaysOnMarket, unitVacancyRate, stockOnMarket, monthsOfInventory, landValuePerSqm, lifestyleScore, safetyScore, hipScore, affluenceScore, renters, distanceCbdKm, publicHousingPct, overseasBornPct, welfareReliancePct, unemploymentPct, singleParentsPct, familyHouseholdsPct, privateSchoolPct, medianIncomeWeekly, communityDepthIndex, premiumRenovationIndex, homeOfficeIndex, tranquilityIndex, innovationEconomyIndex, alternativeLivingIndex, investorConcentration, negativeGearingExposure, mortgageStress. Apartment/unit metrics are the `unit`-prefixed keys (unitMedianPrice, unitGrossYield, unitMedianRent, …); the unprefixed market keys are houses. Unit data only exists where a suburb has a real unit market — coverage runs ~13-54% of suburbs depending on the field, so a unit filter implicitly excludes house-only suburbs.",
"items": {
"type": "string"
},
"type": "array"
},
"property_type": {
"default": "house",
"description": "Legacy flag: 'unit' re-points the ten unprefixed house-market keys (medianHousePrice, grossYield, ...) at their unit column. It does NOT affect the explicit `unit`-prefixed keys, which are always units. Prefer the `unit` keys — they are visible in /fields and can be mixed with house keys in one query.",
"type": "string"
},
"regions": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Comma-separated EXACT SA4 region names — call GET /v1/suburbs/finder/regions for the list. A metro name like `Melbourne` alone will NOT match."
},
"states": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Comma-separated states (names or abbreviations), e.g. `VIC`."
}
},
"required": [],
"type": "object"
},
"name": "suburbs_finder_count",
"outputSchema": null
},
{
"description": "Every field you can filter / sort on, with its label and unit. 0c.\n\nHouses and units are separate keys: the `unit`-prefixed ones\n(`unitMedianPrice`, `unitGrossYield`, `unitMedianRent`, …) are the\napartment market, the unprefixed market keys are houses, and both can be\nfiltered in the same query. Unit fields are NOT nationally populated — they\nonly exist where a suburb has a unit market (roughly 13-54% of suburbs\ndepending on the field), so a suburb with no unit market simply won't match\na unit filter.\n\n**Free.**",
"inputSchema": {
"properties": {},
"required": [],
"type": "object"
},
"name": "suburbs_finder_fields",
"outputSchema": null
},
{
"description": "SA4 regions grouped by state — the values accepted by `states` /\n`regions` on search. 0c.\n\n**Free.**",
"inputSchema": {
"properties": {},
"required": [],
"type": "object"
},
"name": "suburbs_finder_regions",
"outputSchema": null
},
{
"description": "Boolean-AND range filter over suburb metrics, single-column sort,\npaginated. Every row carries its `rank` — position in the ranked result\n(1 = top of the sort, out of `meta.total`). When sorting by a median or a\ngrowth, the actual value is also shown for the first 5 and last 5 rows of\nthe page; for any other suburb's number, call the per-field endpoint\n(market/*, forecast/*).\n\n**Paging:** a page is capped at 25 rows. A bigger `limit` is clamped, not\nrejected — so always read `meta`: `total` is the full match count,\n`has_more` says whether rows remain, and `next_offset` is the `offset` to\npass for the next page. A \"top 50\" needs two calls, each charged.\n\nFlat 30c.\n\n**Price: 30¢ per call.**",
"inputSchema": {
"properties": {
"filter": {
"description": "Range filter `fieldKey:min..max` (repeatable). Open-ended `min..` / `..max`. Valid fieldKeys: medianHousePrice, grossYield, medianRent, growthForecast4yr, growth10yrCagr, growth3yrCagr, rentGrowth3yr, soldAtLossPct, daysOnMarket, vacancyRate, unitMedianPrice, unitGrossYield, unitMedianRent, unitGrowthForecast4yr, unitGrowth10yrCagr, unitGrowth3yrCagr, unitRentGrowth3yr, unitSoldAtLossPct, unitDaysOnMarket, unitVacancyRate, stockOnMarket, monthsOfInventory, landValuePerSqm, lifestyleScore, safetyScore, hipScore, affluenceScore, renters, distanceCbdKm, publicHousingPct, overseasBornPct, welfareReliancePct, unemploymentPct, singleParentsPct, familyHouseholdsPct, privateSchoolPct, medianIncomeWeekly, communityDepthIndex, premiumRenovationIndex, homeOfficeIndex, tranquilityIndex, innovationEconomyIndex, alternativeLivingIndex, investorConcentration, negativeGearingExposure, mortgageStress. Apartment/unit metrics are the `unit`-prefixed keys (unitMedianPrice, unitGrossYield, unitMedianRent, …); the unprefixed market keys are houses. Unit data only exists where a suburb has a real unit market — coverage runs ~13-54% of suburbs depending on the field, so a unit filter implicitly excludes house-only suburbs.",
"items": {
"type": "string"
},
"type": "array"
},
"limit": {
"default": 25,
"description": "Page size. Hard cap 25 — a larger value is clamped, NOT an error, and `meta.requested_limit` says so. For more than 25 results, page with `offset`.",
"type": "integer"
},
"offset": {
"default": 0,
"description": "Row offset — page through results more than 25 deep. `meta.next_offset` gives the value for the next page.",
"type": "integer"
},
"property_type": {
"default": "house",
"description": "Legacy flag: 'unit' re-points the ten unprefixed house-market keys (medianHousePrice, grossYield, ...) at their unit column. It does NOT affect the explicit `unit`-prefixed keys, which are always units. Prefer the `unit` keys — they are visible in /fields and can be mixed with house keys in one query.",
"type": "string"
},
"regions": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Comma-separated EXACT SA4 region names — call GET /v1/suburbs/finder/regions for the list. e.g. `Melbourne - Inner`, `Melbourne - West`. A metro name like `Melbourne` alone will NOT match; an unknown value 422s with the closest real names."
},
"sort": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Sort field. Prefix '-' for descending (highest first), e.g. `-growth10yrCagr`. Must be one of the field keys (see enum). Works on its own — you do NOT need a filter on the field you sort by; to rank without a threshold, pass `sort` and no filter. Only when `sort` is omitted does it default to the first filter field, desc. Apartment/unit metrics are the `unit`-prefixed keys (unitMedianPrice, unitGrossYield, unitMedianRent, …); the unprefixed market keys are houses. Unit data only exists where a suburb has a real unit market — coverage runs ~13-54% of suburbs depending on the field, so a unit filter implicitly excludes house-only suburbs.",
"enum": [
"medianHousePrice",
"grossYield",
"medianRent",
"growthForecast4yr",
"growth10yrCagr",
"growth3yrCagr",
"rentGrowth3yr",
"soldAtLossPct",
"daysOnMarket",
"vacancyRate",
"unitMedianPrice",
"unitGrossYield",
"unitMedianRent",
"unitGrowthForecast4yr",
"unitGrowth10yrCagr",
"unitGrowth3yrCagr",
"unitRentGrowth3yr",
"unitSoldAtLossPct",
"unitDaysOnMarket",
"unitVacancyRate",
"stockOnMarket",
"monthsOfInventory",
"landValuePerSqm",
"lifestyleScore",
"safetyScore",
"hipScore",
"affluenceScore",
"renters",
"distanceCbdKm",
"publicHousingPct",
"overseasBornPct",
"welfareReliancePct",
"unemploymentPct",
"singleParentsPct",
"familyHouseholdsPct",
"privateSchoolPct",
"medianIncomeWeekly",
"communityDepthIndex",
"premiumRenovationIndex",
"homeOfficeIndex",
"tranquilityIndex",
"innovationEconomyIndex",
"alternativeLivingIndex",
"investorConcentration",
"negativeGearingExposure",
"mortgageStress",
"-medianHousePrice",
"-grossYield",
"-medianRent",
"-growthForecast4yr",
"-growth10yrCagr",
"-growth3yrCagr",
"-rentGrowth3yr",
"-soldAtLossPct",
"-daysOnMarket",
"-vacancyRate",
"-unitMedianPrice",
"-unitGrossYield",
"-unitMedianRent",
"-unitGrowthForecast4yr",
"-unitGrowth10yrCagr",
"-unitGrowth3yrCagr",
"-unitRentGrowth3yr",
"-unitSoldAtLossPct",
"-unitDaysOnMarket",
"-unitVacancyRate",
"-stockOnMarket",
"-monthsOfInventory",
"-landValuePerSqm",
"-lifestyleScore",
"-safetyScore",
"-hipScore",
"-affluenceScore",
"-renters",
"-distanceCbdKm",
"-publicHousingPct",
"-overseasBornPct",
"-welfareReliancePct",
"-unemploymentPct",
"-singleParentsPct",
"-familyHouseholdsPct",
"-privateSchoolPct",
"-medianIncomeWeekly",
"-communityDepthIndex",
"-premiumRenovationIndex",
"-homeOfficeIndex",
"-tranquilityIndex",
"-innovationEconomyIndex",
"-alternativeLivingIndex",
"-investorConcentration",
"-negativeGearingExposure",
"-mortgageStress"
]
},
"states": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Comma-separated states — abbreviation or full name, e.g. `VIC` or `Victoria`. Anything else is a 422 listing the valid values (a city name is not a state — use `regions`)."
}
},
"required": [],
"type": "object"
},
"name": "suburbs_finder_search",
"outputSchema": null
},
{
"description": "1-year sale-price growth forecast (low / most-likely / high).",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_forecast_sale",
"outputSchema": null
},
{
"description": "Nearest neighbouring suburbs with distance in km, closest first.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_hero_neighbours",
"outputSchema": null
},
{
"description": "12-month sale-price growth by property type (house / unit).",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_hero_price_growth_12mo",
"outputSchema": null
},
{
"description": "State, SA3/SA4, postcode, population, dwellings and centroid for the suburb.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_hero_summary",
"outputSchema": null
},
{
"description": "Straight-line distance to the nearest city and to the nearest capital, in km.\n\nBoth, because they answer different questions and are often nowhere near\neach other: Belmont North is 14 km from Newcastle and 108 km from Sydney.\n`nearest_city` is usually what a buyer means by \"how far is town\".\n\nThe top-level `city` / `distance_km` fields are DEPRECATED. They still\ndescribe the CAPITAL, unchanged, so existing callers are unaffected —\nread `capital_city` or `nearest_city` instead.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_lifestyle_cbd",
"outputSchema": null
},
{
"description": "Nearest beach and hospital with straight-line distances (null = none within ~50 km).",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_lifestyle_landmarks",
"outputSchema": null
},
{
"description": "Livability scores (0–100) per dimension, aggregated from mesh-block scores, with the SA4 benchmark.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_lifestyle_livability",
"outputSchema": null
},
{
"description": "All seven livability dimensions — affluence, lifestyle, hip,\nconvenience, family, safety, tranquility — scored 0-100 for every\nmicroburb (mesh block) in the suburb, each with its human band. Averaging\na dimension across the microburbs reproduces the suburb figure at\n``/lifestyle/livability``. Values only; polygons come from\n``/shapes/mesh-blocks``.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_lifestyle_livability_map",
"outputSchema": null
},
{
"description": "One plain-English sentence per livability dimension for the suburb.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_lifestyle_narrative",
"outputSchema": null
},
{
"description": "What the absence of petrol stations, fast food and bottle shops near sold properties was worth.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_lifestyle_poi_impacts",
"outputSchema": null
},
{
"description": "Every named venue / amenity in the suburb as GeoJSON Point features, plus a\nper-category count.\n\nEach point carries `name`, a broad `category` (Restaurant / Cafe, Shopping,\nHealth, Entertainment, Sport & Fitness, Education, …) and a finer `subtype`\n(e.g. `pub`, `bar`, `cafe`, `restaurant`, `gym`, `supermarket`, `school`,\n`pharmacy`). This is the endpoint for \"what / how many <venue type> are in\nthis suburb\" and \"name the pubs / cafes / gyms in X\" — filter or count the\nfeatures on `subtype`, and read real venue names from `name`. The top-level\n`categories` array gives the broad-category counts without walking the list.\n\nUnpaged by default. Big suburbs are big — Sydney is ~3.7 MB of features — so\npass `limit`/`offset` (or narrow with `category`) when you don't need them\nall. `count` and `categories` always describe the whole suburb, so paging\nnever hides the totals. Flat price per call regardless of page size.",
"inputSchema": {
"properties": {
"category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Only this display category (e.g. `Shopping`). Case-insensitive."
},
"limit": {
"anyOf": [
{
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"description": "Features to return (default: all)."
},
"offset": {
"default": 0,
"description": "Feature offset — page with `limit`.",
"minimum": 0,
"type": "integer"
},
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_lifestyle_pois",
"outputSchema": null
},
{
"description": "POI category breakdown, terrain scalars, nearest train/shop and beach/hospital flags.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_lifestyle_summary",
"outputSchema": null
},
{
"description": "List Australian suburbs (SALs). Always returns `{suburb, state}`\nper row so SAL-name collisions across states are unambiguous.\n\nWith no filter you get the first 1000 suburbs alphabetically\n(browser-renderable preview). Pass any of the filters to narrow:\nstate / lga / sa4 / sa3 / postcode / q (name search). Filters\ncombine (AND). Flat cost regardless of how many rows come back.\n\n**Name search (`q`) is typo-tolerant.** It tries an exact match, then\nsubstring, then a fuzzy near-miss, and returns `match`\n(`exact` / `contains` / `fuzzy`) and `score` on every row so you can\nsee which happened.\n\n**Always tell the user which suburb you resolved to, and its state,\nbefore quoting numbers for it.** A fuzzy match is a suggestion, not a\nconfirmation — `rokeby` is one letter from Kokeby in Western Australia\nand Rokeby exists in both Tasmania and Victoria. If more than one\ncandidate is plausible, ask rather than pick.\n\nWhen `q` is combined with `state`, the state is a **preference, not a\nfilter**: in-state candidates rank first, but a suburb of that name in\nanother state is still returned rather than hidden, so a near-miss\nbecomes \"Seaview is in Victoria, not Tasmania\" instead of \"no data\".\nEvery other filter stays a strict AND.\n\n**Free.**",
"inputSchema": {
"properties": {
"lga": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Filter by Local Government Area name."
},
"postcode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Filter by 4-digit postcode (POA)."
},
"q": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Suburb-name search. Matches exactly, then by substring, then by fuzzy near-miss so a typo still resolves ('devenport' -> Devonport). Each row comes back with `match` and `score` saying how it was found."
},
"sa3": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Filter by SA3 name."
},
"sa4": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Filter by SA4 name."
},
"state": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Filter by state / territory (e.g. NSW, VIC, 'New South Wales')."
}
},
"required": [],
"type": "object"
},
"name": "suburbs_list",
"outputSchema": null
},
{
"description": "Current for-sale listings in the suburb, with address, price, beds/baths\nand coordinates per listing.\n\n`total` is the full number on the market (computed before `limit`), so a\ncount is accurate even when the rows are capped. Raise `limit` for more\nlistings; set `verbose=true` for the agent's full description text.",
"inputSchema": {
"properties": {
"limit": {
"default": 30,
"description": "Max listings to return (default 30, max 200). `total` always reports the full match count.",
"type": "integer"
},
"suburb_name": {
"type": "string"
},
"verbose": {
"default": false,
"description": "Include the agent's full ad-copy in `attributes.description`. Off by default — it averages ~1.5 KB per listing.",
"type": "boolean"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_listings_for_sale",
"outputSchema": null
},
{
"description": "Microburbs affordability index for the suburb's postcode area.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_affordability",
"outputSchema": null
},
{
"description": "The eight headline market indicators in one call: median sale price and\nmedian rent (each with its full history), 5-year price growth, gross yield,\ndays on market, and transaction volume.\n\n**This is a core set, not every market endpoint.** The `Suburb - Market`\nfamily has 29 endpoints; this bundles 8 of them, priced sum-of-parts. The\npath is `/market/all` for historical reasons — it is not \"all\". Supply,\nvacancy, growth drivers, affordability, mortgage stress, investor\nconcentration, land values, repeat sales, bedroom stats and the per-mesh-block\nmaps are separate calls, so you only pay for what you ask for.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_all",
"outputSchema": null
},
{
"description": "House/unit price, sales volume, median bath/car/land, and stock mix per bedroom count.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_bedroom_stats",
"outputSchema": null
},
{
"description": "Estimated build-year profile — suburb aggregate + per-mesh-block medians.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_built_year",
"outputSchema": null
},
{
"description": "Same-SA3 comparable-suburb candidates (canonical SAL names).",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_comparable_suburbs",
"outputSchema": null
},
{
"description": "Median days on market for current listings.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_days_on_market",
"outputSchema": null
},
{
"description": "Median days on market across the suburb's greater region (GCCSA) — compare with /market/days-on-market.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_days_on_market_benchmark",
"outputSchema": null
},
{
"description": "Per-indicator capital-growth attribution for the suburb.\n\nEach row pairs the suburb's own value for an indicator with the\ncapital-growth differential our matched studies attribute to it, in\npercentage points. Covers supply & demand pressure, market signals,\nenvironmental risks and demographic composition.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_growth_drivers",
"outputSchema": null
},
{
"description": "Rental (investor) share per mesh block, with a suburb-wide rollup.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_investor_concentration",
"outputSchema": null
},
{
"description": "Suburb land-value medians ($/sqm, lot size, land share of price) + per-mesh-block $/sqm.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_land_values",
"outputSchema": null
},
{
"description": "Median house price for every microburb (mesh block) in the suburb, with\nits modal street name, plus the dearest and cheapest pockets. Values only —\nthe matching polygons come from ``/shapes/mesh-blocks``.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_median_price_map",
"outputSchema": null
},
{
"description": "Latest median weekly rent for the suburb.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_median_rent",
"outputSchema": null
},
{
"description": "Full median weekly-rent observation history for the suburb, including\n2024 and 2025 where the suburb has coverage. Older observations are\ngenerally month-end and recent observations can be weekly; this is not a\nuniformly quarterly series. Values are advertised median AUD per week.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_median_rent_series",
"outputSchema": null
},
{
"description": "Latest median sale price for the suburb.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_median_sale_price",
"outputSchema": null
},
{
"description": "Full median sale-price observation history for the suburb. Well-covered\nsuburbs extend back 20+ years; coverage and observation frequency vary.\nThis is the raw historical series needed to calculate a stated 20-year\nreturn, not a precomputed \"consistent growth\" score or a forecast.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_median_sale_price_series",
"outputSchema": null
},
{
"description": "How many months the current for-sale stock would take to clear at the\nsuburb's current sales rate. Under 2 months is a seller's market.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_months_of_supply",
"outputSchema": null
},
{
"description": "Mortgage-stress score (0-100) for the suburb, with per-mesh-block breakdown.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_mortgage_stress",
"outputSchema": null
},
{
"description": "Past compound sale-price growth over 1 / 3 / 5 / 10 years, by property\ntype (decimal). The 3y / 10y figures are the same ones the Suburb Finder\nranks on.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_price_growth",
"outputSchema": null
},
{
"description": "5-year compound sale-price growth (decimal).",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_price_growth_5y",
"outputSchema": null
},
{
"description": "The last four weekly smart-median observations — house price, unit price\nand house rent — each with its week-on-week percentage change.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_recent_price_movement",
"outputSchema": null
},
{
"description": "Median advertised weekly house rent for every microburb (mesh block) in\nthe suburb, with its modal street name, plus the dearest and cheapest\npockets. Values only — the matching polygons come from\n``/shapes/mesh-blocks``.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_rent_map",
"outputSchema": null
},
{
"description": "Realised resale growth — summary + individual buy/sell pairs (max 500).",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_repeat_sales",
"outputSchema": null
},
{
"description": "Properties currently listed for sale in the suburb, split house/unit,\nwith the suburb's rank among its peers.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_stock_on_market",
"outputSchema": null
},
{
"description": "Median estimated annual strata levy for the suburb.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_strata_levies",
"outputSchema": null
},
{
"description": "For-sale listings per 100 dwellings (90 days) — per mesh block + suburb rollup.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_supply_pressure",
"outputSchema": null
},
{
"description": "Recent sale-transaction count for the suburb.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_transaction_volume",
"outputSchema": null
},
{
"description": "Calibrated rental-vacancy rate for each mesh block in the suburb.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_vacancy_map",
"outputSchema": null
},
{
"description": "Suburb-wide rental vacancy rate by property type, as a decimal fraction\n(0.00842 = 0.84%). Use `/market/vacancy-map` for the per-mesh-block surface.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_vacancy_rate",
"outputSchema": null
},
{
"description": "Full rental-vacancy history by property type, decimal fractions.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_vacancy_rate_series",
"outputSchema": null
},
{
"description": "Gross rental yield for every microburb (mesh block) in the suburb —\nweekly rent x 52 over median price — with both inputs returned so the\nnumber is checkable, plus the best- and worst-yielding pockets. Values\nonly; polygons come from ``/shapes/mesh-blocks``.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_yield_map",
"outputSchema": null
},
{
"description": "Gross rental yield = median rent annualised / median sale price.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_yield_pct",
"outputSchema": null
},
{
"description": "Full gross-rental-yield history by property type, decimal fractions.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_market_yield_pct_series",
"outputSchema": null
},
{
"description": "The suburb's upward ABS admin chain — LGA, SA2/3/4, GCCSA,\nstate, postcode. Use ``/v1/suburbs/list`` to discover canonical\nSAL names (and filter by state / LGA / SA4 / postcode).",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_profile",
"outputSchema": null
},
{
"description": "Bushfire + flood — bundle",
"inputSchema": {
"properties": {
"geojson": {
"default": false,
"description": "When true, each sub-risk additionally carries a `geojson` FeatureCollection clipped to the suburb boundary — one call returns coverage plus every risk shape (default false — response unchanged).",
"type": "boolean"
},
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_risks_all",
"outputSchema": null
},
{
"description": "Share of the suburb AREA covered by bushfire-prone designation.\n\nArea, not properties — and the two differ a lot. Belmont North is 45.72%\nby area but 23.62% by property count, because designated land is not\nevenly built on. If you want \"what share of homes here are affected\",\nwhich is the figure our own reports headline, use\n`GET /v1/suburbs/{suburb_name}/risks/property-hazard-counts` — it returns\na count and pct per hazard against the suburb's actual dwellings.",
"inputSchema": {
"properties": {
"geojson": {
"default": false,
"description": "When true, add a `geojson` FeatureCollection of the bushfire polygons clipped to the suburb boundary (default false — response unchanged).",
"type": "boolean"
},
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_risks_bushfire",
"outputSchema": null
},
{
"description": "Matched-study capital-growth impact (%/yr) for bushfire, flood, contamination, mine subsidence, aircraft noise and surface acid sulfate, scaled by the share of properties affected.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_risks_capital_growth_impact",
"outputSchema": null
},
{
"description": "Counts of contamination points, heritage items and erosion-prone polygons inside the suburb.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_risks_counts",
"outputSchema": null
},
{
"description": "Landslide / storm-tide coverage, EPA notices, landlord-insurance medians and crime benchmark, with per-microburb detail.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_risks_extras",
"outputSchema": null
},
{
"description": "Share of the suburb AREA covered by modelled flood overlays.\n\nArea, not properties. For the share of DWELLINGS affected — the figure our\nown reports headline — use\n`GET /v1/suburbs/{suburb_name}/risks/property-hazard-counts`.\n\nTo answer **where** the flood zone is, pass `geojson=true`. The response\nthen includes the actual modelled flood polygons clipped to the suburb\nboundary, suitable for a street map, plus truncation/simplification\nmetadata. Do not infer street location from `coverage_pct` alone.",
"inputSchema": {
"properties": {
"geojson": {
"default": false,
"description": "When true, add a `geojson` FeatureCollection of the flood polygons clipped to the suburb boundary (default false — response unchanged).",
"type": "boolean"
},
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_risks_flood",
"outputSchema": null
},
{
"description": "Share of the suburb's properties inside a heritage polygon.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_risks_heritage_share",
"outputSchema": null
},
{
"description": "Whether high-voltage transmission lines cross the suburb, how many, and the highest voltage class (overhead lines only).",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_risks_hv_power_lines",
"outputSchema": null
},
{
"description": "Counts and shares of the suburb's properties flagged bushfire / flood / mine-subsidence / contamination / aircraft-noise / acid-sulfate.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_risks_property_hazard_counts",
"outputSchema": null
},
{
"description": "Median / 90th-percentile property gradient and share of steep (>10°) properties.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_risks_slope",
"outputSchema": null
},
{
"description": "Properties sold in the suburb over the last 3 years, with beds/baths/land\nsize, sale price and date, and coordinates.\n\nPaginated: `total` reports how many sales are available for the suburb\n(counted before `limit`/`offset`), so you can page through the full feed.\nFlat price per call regardless of page size.",
"inputSchema": {
"properties": {
"limit": {
"default": 20,
"description": "Sales to return (default 20, max 200).",
"type": "integer"
},
"offset": {
"default": 0,
"description": "Row offset — page through the feed with `limit`.",
"type": "integer"
},
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_sales_recent",
"outputSchema": null
},
{
"description": "Number of sales and median sold price in the suburb over the last 3 years.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_sales_summary",
"outputSchema": null
},
{
"description": "All schools — bundle",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_schools_all",
"outputSchema": null
},
{
"description": "Public-school catchment polygons covering the suburb.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_schools_catchment",
"outputSchema": null
},
{
"description": "Schools serving / near the suburb, with rank + attendance data.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_schools_nearby",
"outputSchema": null
},
{
"description": "Simplified SAL boundary polygon (GeoJSON Feature) plus centroid.",
"inputSchema": {
"properties": {
"geojson": {
"default": true,
"description": "When false, geometry is dropped — every Feature keeps its `properties` but its `geometry` is null. Use it to fetch the counts and per-feature attributes without the coordinates (default true — response unchanged).",
"type": "boolean"
},
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_shapes_boundary",
"outputSchema": null
},
{
"description": "Busy-road line segments clipped to the suburb — the report's road-noise exposure proxy.",
"inputSchema": {
"properties": {
"geojson": {
"default": true,
"description": "When false, geometry is dropped — every Feature keeps its `properties` but its `geometry` is null. Use it to fetch the counts and per-feature attributes without the coordinates (default true — response unchanged).",
"type": "boolean"
},
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_shapes_busy_roads",
"outputSchema": null
},
{
"description": "Registered easement geometries intersecting the suburb (GeoJSON FeatureCollection).",
"inputSchema": {
"properties": {
"geojson": {
"default": true,
"description": "When false, geometry is dropped — every Feature keeps its `properties` but its `geometry` is null. Use it to fetch the counts and per-feature attributes without the coordinates (default true — response unchanged).",
"type": "boolean"
},
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_shapes_easements",
"outputSchema": null
},
{
"description": "Hazard polygons for one layer, clipped to the suburb boundary (empty collection = hazard not present).",
"inputSchema": {
"properties": {
"geojson": {
"default": true,
"description": "When false, geometry is dropped — every Feature keeps its `properties` but its `geometry` is null. Use it to fetch the counts and per-feature attributes without the coordinates (default true — response unchanged).",
"type": "boolean"
},
"layer": {
"description": "Hazard layer to return.",
"enum": [
"bushfire",
"flood",
"heritage",
"erosion",
"landslide",
"acid-sulfate"
],
"examples": [
"flood"
],
"type": "string"
},
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name",
"layer"
],
"type": "object"
},
"name": "suburbs_shapes_hazards",
"outputSchema": null
},
{
"description": "ABS 2021 mesh-block polygons covering the suburb (GeoJSON FeatureCollection, MB code per feature).",
"inputSchema": {
"properties": {
"geojson": {
"default": true,
"description": "When false, geometry is dropped — every Feature keeps its `properties` but its `geometry` is null. Use it to fetch the counts and per-feature attributes without the coordinates (default true — response unchanged).",
"type": "boolean"
},
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_shapes_mesh_blocks",
"outputSchema": null
},
{
"description": "Neighbouring suburbs as a GeoJSON FeatureCollection — each with its boundary polygon and distance in km.",
"inputSchema": {
"properties": {
"geojson": {
"default": true,
"description": "When false, geometry is dropped — every Feature keeps its `properties` but its `geometry` is null. Use it to fetch the counts and per-feature attributes without the coordinates (default true — response unchanged).",
"type": "boolean"
},
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_shapes_neighbours",
"outputSchema": null
},
{
"description": "Precomputed noise colour regions clipped to the suburb, plus cell-centre heat points.",
"inputSchema": {
"properties": {
"geojson": {
"default": true,
"description": "When false, geometry is dropped — every Feature keeps its `properties` but its `geometry` is null. Use it to fetch the counts and per-feature attributes without the coordinates (default true — response unchanged).",
"type": "boolean"
},
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_shapes_noise_heatmap",
"outputSchema": null
},
{
"description": "SA1 polygons in the suburb with their 2021 census public-housing share (only SA1s above 0%).",
"inputSchema": {
"properties": {
"geojson": {
"default": true,
"description": "When false, geometry is dropped — every Feature keeps its `properties` but its `geometry` is null. Use it to fetch the counts and per-feature attributes without the coordinates (default true — response unchanged).",
"type": "boolean"
},
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_shapes_public_housing_sa1",
"outputSchema": null
},
{
"description": "Top-10 suburbs ranked closest by Microburbs' similarity model.",
"inputSchema": {
"properties": {
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_similar",
"outputSchema": null
},
{
"description": "2/4/8-year price forecasts for every street in the suburb, anchored to the real sold median.\n\nUnpaged by default. Large suburbs are large — Point Cook has 943 streets\n(~1.4 MB) — so pass `limit`/`offset` when you don't need the lot. `total`\nreports how many exist. Flat price per call regardless of page size.",
"inputSchema": {
"properties": {
"limit": {
"anyOf": [
{
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"description": "Streets to return (default: all)."
},
"offset": {
"default": 0,
"description": "Street offset — page with `limit`.",
"minimum": 0,
"type": "integer"
},
"suburb_name": {
"type": "string"
}
},
"required": [
"suburb_name"
],
"type": "object"
},
"name": "suburbs_street_forecasts",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:8f8e2dfaa483f68a391370d25501cdb67e52746d97c9226d4d4bbb017249d918 | sha256sum