PropertyGuru SE Asia Real Estate Scraper avatar

PropertyGuru SE Asia Real Estate Scraper

Pricing

Pay per event

Go to Apify Store
PropertyGuru SE Asia Real Estate Scraper

PropertyGuru SE Asia Real Estate Scraper

Scrape PropertyGuru and DDproperty listings across Singapore and Thailand. Extract sale and rental properties with price, address, geo coordinates, bedrooms, bathrooms, floor area, agent name, license number, phone, and image URLs.

Pricing

Pay per event

Rating

0.0

(0)

Developer

BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

PropertyGuru Scraper — Singapore + Thailand Real Estate Listings (DDproperty)

Scrape property listings from PropertyGuru (Singapore) and DDproperty (Thailand) in one run. This is a PropertyGuru API alternative and DDproperty Thailand scraper for exporting Singapore and Bangkok real estate data — sale and rental listings — to JSON, CSV, or Excel. Returns sale and rental listings with price, address, geo coordinates, bedrooms, bathrooms, floor area, agent name, license number, phone, and image URLs — all flattened into a single unified record schema across both countries.


PropertyGuru SE Asia Property Scraper Features

  • Covers two PropertyGuru-Group portals: PropertyGuru Singapore and DDproperty Thailand.
  • Handles both sale and rental listings via a single listingType toggle.
  • Optional regionPath slug narrows the search to a specific city, district, or MRT station.
  • Returns a unified record schema across both portals — same field names, same types, regardless of brand.
  • Extracts agent contact details including the CEA license number (Singapore) where the listing publishes it.
  • Geo coordinates (latitude / longitude) when the listing exposes them, useful for mapping pipelines.
  • Image URLs come back as a flat array per listing — no rehosting, no transformation.

Who Uses This Singapore + Thailand Real Estate Data?

  • Real estate agents tracking competitor inventory and price movements across SG / TH.
  • Foreign investors sourcing residential and commercial deals in Singapore and Bangkok.
  • PropTech and analytics teams building cross-country price models on the dominant SE Asia portal network.
  • Banks and mortgage desks running portfolio pricing against current listed comparables.
  • Researchers studying SE Asian real estate trends without scraping each brand separately.

How PropertyGuru SE Asia Property Scraper Works

  1. Pick a brand (PropertyGuru SG or DDproperty TH), a listing type (sale or rent), and an optional region path.
  2. The scraper solves the Cloudflare challenge once per run using a residential proxy in the brand's country.
  3. It then walks the listing pages, parses the embedded __NEXT_DATA__ Apollo cache, and emits one record per listing.
  4. Pagination continues until maxItems is reached or the listing pool runs out.

Input

{
"brand": "PROPERTYGURU_SG",
"listingType": "SALE",
"regionPath": "",
"maxItems": 15,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "SG"
}
}
FieldTypeDefaultDescription
brandstringPROPERTYGURU_SGWhich portal to scrape: PROPERTYGURU_SG (Singapore) or DDPROPERTY_TH (Thailand).
listingTypestringSALESALE or RENT.
regionPathstring""Optional URL slug to narrow the search. Examples: in-singapore, in-bangkok. Leave blank for nationwide.
maxItemsinteger15Max listings to scrape. The portal returns ~20 listings per page; deep paging is capped at 50 pages per query.
proxyConfigurationobjectRESIDENTIALResidential proxy required (Cloudflare blocks datacenter IPs). Country is inferred from the brand if unspecified.

Example: Bangkok Rentals

{
"brand": "DDPROPERTY_TH",
"listingType": "RENT",
"regionPath": "in-bangkok",
"maxItems": 50,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "TH"
}
}

PropertyGuru SE Asia Property Scraper Output Fields

{
"listing_id": "24123456",
"brand": "PROPERTYGURU_SG",
"country": "SG",
"listing_type": "SALE",
"url": "https://www.propertyguru.com.sg/listing/24123456",
"title": "Marina One Residences — 2 Bed Premium Floor",
"description": "Marina Bay condo with full sea view...",
"property_type": "Condominium",
"price": 2850000,
"currency": "SGD",
"price_psf": 3120,
"bedrooms": 2,
"bathrooms": 2,
"floor_area_sqft": 915,
"land_area_sqft": null,
"tenure": "99-year Leasehold",
"completion_year": 2017,
"project_name": "Marina One Residences",
"address": "21 Marina Way",
"district": "Marina Bay",
"city": "Singapore",
"region": "Central Region",
"latitude": 1.2779,
"longitude": 103.8581,
"agent_name": "Tan Wei Ming",
"agent_license": "R012345A",
"agent_phone": "+65 9123 4567",
"agent_agency": "PropNex Realty",
"image_urls": [
"https://sg2-cdn-pgimgs.com/listing/24123456/N-12345/x.jpg",
"https://sg2-cdn-pgimgs.com/listing/24123456/N-12346/x.jpg"
],
"posted_at": "2026-04-15T08:30:00Z",
"scraped_at": "2026-04-30T12:55:53Z"
}
FieldTypeDescription
listing_idstringUnique listing identifier from the portal backend.
brandstringPROPERTYGURU_SG or DDPROPERTY_TH.
countrystringTwo-letter country code (SG or TH).
listing_typestringSALE or RENT.
urlstringListing detail page URL.
titlestringListing headline.
descriptionstringListing description, truncated to 2,000 characters.
property_typestringProperty type (e.g. Condominium, Landed, HDB, Apartment, Shophouse, Terrace).
pricenumberSale price, or monthly rent, in local currency.
currencystringCurrency code (SGD or THB).
price_psfnumberPrice per square foot, when published by the listing.
bedroomsintegerNumber of bedrooms.
bathroomsintegerNumber of bathrooms.
floor_area_sqftnumberFloor area in square feet (converted from sqm when needed).
land_area_sqftnumberLand area in square feet, landed properties only.
tenurestringFreehold, 99-year Leasehold, 999-year Leasehold, etc.
completion_yearintegerYear the project was or will be completed (TOP).
project_namestringDevelopment or project name.
addressstringListing address (street + district).
districtstringDistrict or neighborhood name.
citystringCity name.
regionstringRegion or state name.
latitudenumberLatitude in decimal degrees.
longitudenumberLongitude in decimal degrees.
agent_namestringListing agent name.
agent_licensestringAgent license number (CEA in Singapore; no scheme in Thailand).
agent_phonestringAgent phone number.
agent_agencystringAgency or brokerage name.
image_urlsstring[]Array of image URLs.
posted_atstringDate the listing was first published (ISO 8601, when available).
scraped_atstringTimestamp when this record was scraped (ISO 8601).

FAQ

Does PropertyGuru SE Asia Property Scraper cover iProperty Malaysia?

Not in this version. iProperty MY uses a second layer of bot protection on top of Cloudflare that needs a different bypass strategy. It's on the roadmap for a future release. For now, this actor covers PropertyGuru Singapore and DDproperty Thailand — the two portals where the listing data is reachable through the same approach.

What's the difference between PropertyGuru and DDproperty?

Both are PropertyGuru-Group brands and run the same backend. PropertyGuru is the Singapore portal; DDproperty is the Thailand portal. The actor returns identical record shapes for both, so a downstream pipeline can mix and match without per-country branching.

Why does it require a residential proxy?

PropertyGuru-Group portals sit behind Cloudflare's managed challenge. Datacenter IPs are blocked outright. Residential proxy in the brand's country is the only reliable path, and the actor pins to the right country automatically.

How fast does it run?

About 5 records per second once the Cloudflare challenge is solved. The challenge takes 15-60 seconds depending on residential proxy session quality. A 100-record run typically finishes in well under two minutes. A 1,000-record run is paced — both for politeness and to dodge rate limits.

Why can't I get more than 1,000 results per query?

PropertyGuru caps deep pagination at 50 pages (about 1,000 listings) per filtered query. Use the regionPath input to narrow the search by city or district to surface more inventory beyond that ceiling.

Is there a PropertyGuru API to download Singapore property listings?

PropertyGuru does not offer a public listings API. This actor is the practical alternative: it reads the same data the site renders and exports Singapore (PropertyGuru) and Thailand (DDproperty) listings to JSON, CSV, or Excel, with price, address, geo coordinates, agent contact, and CEA license number in each record.

Can I get full agent license metadata or MRT distance?

The current build returns whatever the listing card publishes, which is enough for most use cases. Per-listing detail-page fetches and transit-distance enrichment are planned for a v2 release. File an issue if you need them sooner.


Need More Features?

If you need iProperty Malaysia, batdongsan Vietnam, rumah123 Indonesia, or extra fields like full agent licensing or transit-distance enrichment, open an issue and we'll prioritize it.

Why Use PropertyGuru SE Asia Property Scraper?

  • One actor, two countries — Singapore and Thailand listings land in the same dataset with the same field names. No reconciliation needed downstream.
  • Cloudflare handled — the actor solves the managed challenge automatically. You don't think about it.
  • Card-level extraction is fast — pulls full listing data straight from the embedded Next.js Apollo cache, no per-listing detail page fetches required for the published fields.
  • Stable schema across brands — PropertyGuru Group runs both portals on the same backend, so the data shape is the same on either side of the border.