| name | reiwa |
| description | Search and fetch WA property listings from REIWA (Real Estate Institute of Western Australia). Use when the user needs for-sale or sold listings by location/price/type, or full property details (images, features, description, stats). |
| compatibility | Requires Python 3, curl. |
REIWA skill
This skill provides CLI tools to search and fetch property listings from REIWA (Real Estate Institute of Western Australia). Use it to discover locations, list for-sale or sold properties by area/price/type, and fetch full details for specific listings.
Available scripts
scripts/location_search.py - Search locations (suburbs/regions) by term and listing category. Use the returned value as -l / --location in for_sale / sold.
scripts/for_sale.py - Fetch for-sale listings for one or more locations with optional filters (property type, price range, sort).
scripts/sold.py - Same as for_sale but for sold listings. Accepts multiple --location values.
scripts/property_details.py - Fetch full details for one or more listings by slug.
Each script supports --help (or -h). Use it to list all options and defaults.
Output is always JSON-formatted, use jq accordingly.
Location value search
python3 scripts/location_search.py North --category for-sale
Returns: One JSON object per line (JSONL). Each line:
{"group": "Suburb", "name": "North Baandee", "value": "North Baandee"}
{"group": "Suburb", "name": "North Bannister", "value": "North Bannister"}
{"group": "Region", "name": "Perth - North East", "value": "Perth - North East-sub-region"}
The group is typically one of Region, Suburb, Street, Address.
Use the value as --location / -l in for_sale / sold.Address.
Other examples:
python3 scripts/location_search.py Perth | jq -c 'select(.group == "Region") | .value'
python3 scripts/location_search.py Northbridge --category sold | jq -c 'select(.group == "Suburb") | .value'
Properties for sale
python3 scripts/for_sale.py --location "northbridge" --limit 10
Returns: A single JSON object:
{
"total": 42,
"next_page": 2,
"items": [
{
"slug": "12-smith-street-northbridge-1234567",
"listing_id": 1234567,
"listing_no": 6789012,
"listing_status": "Available",
"property_type": "House",
"address": "12 Smith Street, Northbridge",
"suburb": "Northbridge",
"latitude": -31.95,
"longitude": 115.86,
"display_price": "From $950,000",
"bedrooms": 3,
"bathrooms": 2,
"land_area": 450,
"land_area_unit": "m²",
"carspaces": 1,
"property_details_url": "https://reiwa.com.au/12-smith-street-northbridge-1234567/",
"listing_price_type": "Fixed",
"main_image_url": "https://imagecdn.reiwa.com.au/listing/...",
"list_price": 950000
}
]
}
Other examples:
python3 scripts/for_sale.py --location "northbridge" --p House --p Appartment --sort-by listprice
python3 scripts/for_sale.py -l "northbridge" -l "perth" --property-type Unit --max-price 450000
python3 scripts/for_sale.py -l "mount lawley" --property-type Unit --min-beds 2
Any of the item fields may be null. next_page is null when there is no next page, or when --limit was used.
Properties sold
python3 scripts/sold.py --location "perth" --max-price 1000000 --page 1
Returns: A single JSON object:
{
"total": 42,
"next_page": 2,
"items": [
{
"slug": "12-smith-street-northbridge-1234567",
"listing_id": 1234567,
"listing_no": 6789012,
"listing_status": "Available",
"property_type": "House",
"address": "12 Smith Street, Northbridge",
"suburb": "Northbridge",
"latitude": -31.95,
"longitude": 115.86,
"display_price": "From $950,000",
"display_sold_date": "13 Mar 2026",
"bedrooms": 3,
"bathrooms": 2,
"land_area": 450,
"land_area_unit": "m²",
"carspaces": 1,
"property_details_url": "https://reiwa.com.au/12-smith-street-northbridge-1234567/",
"listing_price_type": "Fixed",
"main_image_url": "https://imagecdn.reiwa.com.au/listing/...",
"list_price": 950000
}
]
}
Any of the item fields may be null. next_page is null when there is no next page, or when --limit was used.
Other examples:
python3 scripts/sold.py -l "perth" -l "fremantle" --min-price 500000 --max-price 1000000 --limit 10
python3 scripts/sold.py -l "perth" -p House -p "Townhouse" --limit 5 --max-beds 3
python3 scripts/sold.py -l "perth" -p House --limit 3 --sort-by listprice --sort-asc | jq '.items[] | .display_price'
Property (or properties) details
python3 scripts/property_details.py 12-smith-street-northbridge-1234567
python3 scripts/property_details.py 12-smith-street-northbridge-1234567 88-jones-ave-subiaco-7654321
Returns: One JSON object per line (JSONL). Each line:
{
"listing_id": 1234567,
"listing_no": 6789012,
"listing_category": "ForSale",
"is_sold": true,
"property_category": "Residential",
"property_type": "House",
"address": "1 Dulwich Street, Beckenham",
"suburb": "Beckenham",
"postcode": "6107",
"latitude": -31.95,
"longitude": 115.86,
"full_address": "1 Dulwich Street, Beckenham WA 6107",
"street_address_text": "1 Dulwich Street",
"display_price": "Listed price: From $950,000",
"list_price": 950000,
"listing_price_type": "Fixed",
"bedrooms": 3,
"bathrooms": 2,
"carspaces": 1,
"land_size": "910m²",
"property_details_url": "https://reiwa.com.au/1-dulwich-street-beckenham-1234567/",
"main_image_url": "https://imagecdn.reiwa.com.au/listing/...",
"images": ["https://imagecdn.reiwa.com.au/listing/...", "..."],
"features": "- Air conditioned\n- **Carports**: 1\n- **Floor area**: 119m²",
"headline": "1 Dulwich Street Beckenham",
"headline_address": "1 Dulwich Street, Beckenham WA 6107",
"description": "Step into this stunning...",
"list_date": "2026-01-14T00:00:00+08:00",
"sold_date": "2026-03-13T00:00:00+08:00",
"sold_date_string": "1 Mar 2026",
"stats_total_views": 13442,
"stats_search_result_views": 12976,
"stats_property_page_views": 466
}
Most fields can be null. features is a markdown list. description is markdown-converted from HTML.