Singapore property data, without the spreadsheet archaeology.
PropertyGuru lists nearly every condo, HDB flat and landed house for sale or rent in Singapore — but its search pages render client-side behind aggressive bot detection, so "just fetch the HTML" returns empty divs. This actor drives a real browser through a residential proxy, waits for the results to paint, then reads the structured listing JSON the site embeds for itself.
Point it at a listing type and an area:
{
"listingType": "sale",
"query": "orchard",
"maxItems": 50
}
One row per listing:
{
"portal": "propertyguru",
"district": "D09",
"district_name": "Orchard / River Valley",
"property_type": "CONDO",
"price": 2599999,
"bedrooms": 3,
"bathrooms": 2,
"size_sqft": 764,
"tenure": "Freehold"
}
Where it earns its keep
PSF benchmarking per district: the standard Singapore comparison metric, computed across whole areas instead of cherry-picked listings. Investment screening: filter by tenure (freehold vs leasehold), bedroom count and floor size at scale. Rental-yield estimates: pair sale prices from this actor with rental asks from a second run. Market monitoring: schedule runs on a search and track which listings appear and disappear.
The honest limits: PropertyGuru hard-blocks datacenter IPs, so residential proxies with a Singapore exit are required — the actor defaults to Apify's RESIDENTIAL group pinned to SG. Prices are asking prices at run time, not transaction records; schedule runs if you want movement over time.
Try it: sg property scraper on Apify — PropertyGuru listings as typed rows.