PropertyGuru Singapore Scraper
Pricing
from $5.00 / 1,000 results
PropertyGuru Singapore Scraper
Scrape sale and rental listings from propertyguru.com.sg — price, size, bedrooms, location, agent contact, photos, MRT distances, and more. Returns clean structured JSON / CSV / Excel.
Pricing
from $5.00 / 1,000 results
Rating
0.0
(0)
Developer
Always Prime
Maintained by CommunityActor stats
1
Bookmarked
9
Total users
5
Monthly active users
7 days ago
Last modified
Categories
Share
🏠 PropertyGuru Singapore Scraper
Get every public listing on propertyguru.com.sg as clean structured data — price, size, bedrooms, location, agent contact, photos, MRT distances, descriptions, more. Returns JSON, CSV, or Excel.
⚡️ ~0.7 s per listing, 256 MB RAM, no browser. Built on PropertyGuru's own
__NEXT_DATA__payload — same data the site renders to itself.
✨ Why this scraper
- 🎯 Every monetizable field — price, PSF, bedrooms, floor & land area, tenure, district, lat/lon, agent name + CEA license + mobile, agency, 19+ photos, floor plans, MRT walk times, full description.
- 🚀 Fast and cheap — pure HTTP with browser TLS fingerprinting. 5× the throughput of a Playwright-based scraper at 1/8th the memory.
- 🔁 Incremental friendly — pass a
sincetimestamp and the actor skips listings posted before it, so daily refresh runs only pay for what's new. - 🧩 No glue code needed — push the output straight into BigQuery, Postgres, Notion, Make, n8n, Sheets — every field is typed and the dataset table view is pre-configured.
🚀 Quick start
- Click Try for free above.
- Pick
searchType: saleorrent, optionally narrow by district / price / bedrooms. - Hit Start.
- Download as JSON, CSV, or Excel from the Output tab.
That's it. No accounts, no proxies, no anti-bot tinkering.
🎛️ Input
| Field | Type | What it does |
|---|---|---|
searchType | sale | rent | Choose properties for sale or for rent. Default: sale. |
freetext | string | Search by project / street / area name (e.g. "Tanjong Pagar"). |
districts | string list | Restrict to specific SG districts (D09, D10, …). |
propertyTypeCodes | string list | Restrict by type — APT, CONDO, HDB, SEMI, TERR, BUNG, EXEC, LAND. |
minPrice / maxPrice | int | Price bounds in SGD. For rentals, monthly rent. |
bedrooms | string list | Bedroom counts to include ("2", "3"; use "0" for studio). |
sortBy | enum | default (relevance), price_low, price_high. |
since | datetime | Only listings posted after this moment — for incremental refreshes. |
scrapeDetails | bool | Off = URL-only mode (~10× cheaper, fast diff runs). On (default) = full record. |
maxItems | int | Cap on records. 0 = unlimited. Default: 50. |
concurrency | int | Parallel detail fetches. Default: 5. Max: 25. |
startUrls | URL list | Advanced override: feed your own already-built PG search URLs. |
📦 Sample output (one listing)
{"url": "https://www.propertyguru.com.sg/listing/for-sale-the-lakeshore-500140099","id": "500140099","scraped_at": "2026-05-15T08:34:46+00:00","listingType": "SALE","propertyType": "Condominium","propertyTypeCode": "CONDO","propertyTypeGroup": "N","title": "The Lakeshore","headline": "Lakeshore 3-Bedroom · Pool View · Vacant","description": "Spacious 1,109 sqft 3-bedroom unit with unobstructed pool views...","price": 1688000,"pricePretty": "S$ 1,688,000","currency": "SGD","bedrooms": 3,"bathrooms": 2,"floorArea": 1109,"floorAreaPsf": 1522.09,"landArea": null,"landAreaPsf": null,"tenure": "L99","tenureText": "99-year Leasehold","isVerified": true,"qualityScore": 98,"statusCode": "ACT","datePosted": "2026-05-13T09:21:04","dateCreated": "2026-04-22T11:08:30","dateExpires": "2026-07-21T23:59:59","address": {"streetName": "Lakeshore Drive","fullAddress": "1 Lakeshore Drive","postcode": "648292","districtCode": "D22","districtText": "Boon Lay / Jurong / Tuas","lat": 1.3411,"lon": 103.7129},"agent": {"id": 88012,"name": "Keith Low","license": "R047251D","mobile": "+6593690168","jobTitle": "Senior Marketing Director","profileUrl": "https://www.propertyguru.com.sg/agent/keith-low-88012","avatar": "https://sg1-cdn.pgimgs.com/agent/88012/APHO.../V120B.png"},"agency": {"id": 4619,"name": "ERA REALTY NETWORK PTE LTD","license": "L3002382K"},"images": [{"src": "https://sg1-cdn.pgimgs.com/listing/500140099/.../V800/...jpg","caption": "Living Room"}],"floorPlans": [],"virtualTours": [],"mainImage": "https://sg1-cdn.pgimgs.com/listing/500140099/.../V800/...jpg","poiMrt": [{"name": "EW27 Boon Lay MRT Station", "distanceKm": 0.41,"walkingDistanceKm": 0.45, "walkingDurationMins": 6}],"poiSchool": []}
💼 Use cases
| Who | What they do with it |
|---|---|
| 🏢 Investors & buyers | Build a daily refresh feed of new listings in target districts; flag underpriced units by PSF percentile. |
| 🤝 Property agents | Track competitor listings, monitor agent activity, scout co-broking opportunities. |
| 🏗️ PropTech & analytics | Power dashboards, AVMs (automated valuation models), heat maps, market reports. |
| 🧠 ML / data science | Train pricing models, location-embedding models, agent-fraud classifiers on real SG transaction data. |
| 📊 Market research | Quarterly reports on price/PSF trends by district, by property type, by tenure. |
💡 Tips & tricks
- Daily refresh: set
sinceto yesterday's date — the actor short-circuits at the search page and you only pay for genuinely new listings. - Index mode:
scrapeDetails: falsereturns just URLs + IDs — perfect for diff-only runs to detect what's been added or de-listed. - Pricing buckets: run 3 separate runs with different
minPrice/maxPricewindows in parallel for faster total scrape times. - Districts D09 / D10 / D11 (Orchard, Tanglin, Newton) account for ~40% of all luxury SG sale listings — narrow there for premium segments.
❓ FAQ
How fresh is the data? Live. Each request hits PropertyGuru's production servers at the moment of your run.
Will my dataset have duplicates? No. The actor de-dupes by listing ID at queue time and again at push time.
What about listings posted in multiple districts? PropertyGuru issues one ID per listing — you'll see it exactly once.
Can I scrape rentals too? Yes — set searchType: rent. All the same fields populate (price = monthly rent).
Will big runs fail halfway? No. The actor tracks a failure budget (>30% failed → stop and report) so a broken site never quietly drains your CU.
What happens if PropertyGuru changes its layout? The actor's parser runs against captured HTML fixtures in CI — site redesigns surface as test failures within hours, not weeks of silently broken data.
🛟 Support
Found a bug or missing field? Open an issue or message the actor maintainer from the Apify Store page. Bug reports with the run ID get fastest turnaround.