PropertyGuru Scraper | Singapore Malaysia Real Estate API avatar

PropertyGuru Scraper | Singapore Malaysia Real Estate API

Pricing

from $2.50 / 1,000 results

Go to Apify Store
PropertyGuru Scraper | Singapore Malaysia Real Estate API

PropertyGuru Scraper | Singapore Malaysia Real Estate API

Scrape PropertyGuru Singapore & Malaysia plus CommercialGuru — HDB, condo, landed, rooms, office & retail for sale or rent. Prices, agents & images — PropertyGuru API alternative.

Pricing

from $2.50 / 1,000 results

Rating

0.0

(0)

Developer

kane liu

kane liu

Maintained by Community

Actor stats

1

Bookmarked

7

Total users

3

Monthly active users

2 days ago

Last modified

Share


Need a dedicated scraper for one website?

This Actor is the general tool for protected public pages. If you already have one specific site and a field list, a dedicated scraper is faster and more stable: listing + detail, your export format, delivered to your Apify account or as a standalone runnable client.

I confirm the tier before you pay. The clock starts after that confirmation.

Start here: Submit a custom scraper request

Starter $50Dedicated $100Hard target $200–999
Site1 simple anti-bot public site1 medium anti-bot public siteCloudflare / aggressive anti-bot / custom parser
ScopeFull listing + detail fieldsListing + detail + pagination, your field listAgreed fields, repeatable runs
DeliveryCSV/JSON · Apify Actor or standalone runnable client (script/CLI)Same, plus a sample run and short instructionsFeasibility first, then build
Time24 hours after we confirm the URL is in scope48 hours after confirmationQuoted after feasibility
Fixes30 days for small public-layout changes30 daysScoped in the quote

Hard-target sites are not a 100% uptime promise. You get a dedicated parser that can be re-run on the agreed fields. If the URL is not feasible, you get a refund or pay an assessment fee only — you will know before the build starts.

Not in Starter/Dedicated: login-walled data, native APK / Windows installer / full web apps, or two-year maintenance. Those are a separate quote.


What does PropertyGuru Scraper do?

PropertyGuru Scraper extracts Southeast Asia real estate listings from PropertyGuru Singapore, PropertyGuru Malaysia, and CommercialGuru. Cover HDB, condo, apartment, landed, room rentals, plus commercial office, retail, industrial, warehouse, and land — for sale and rent.

Pick a market (SG / MY / CG), choose property types, or paste search/listing URLs, then download structured results as JSON, CSV, Excel, or HTML.

This Actor is a practical PropertyGuru API alternative. Acquisition runs through a managed Cloud Run worker, while the Actor handles Apify input, residential proxy handoff, datasets, and exports for proptech, research, and CRM pipelines.

What can this PropertyGuru scraper extract?

Data pointDescription
Listing ID & URLStable listing ID and canonical PropertyGuru / CommercialGuru link
MarketSG, MY, or CG (+ currency SGD / MYR)
ChannelBUY (sale) or RENT
Category / typee.g. condo, hdb, landed-house, room, office
Title & projectHeadline / project name when shown
PriceAmount + formatted price / PSF when available
Size & roomsFloor area (sqft), bedrooms, bathrooms, floor level
LocationAddress, district, MRT / locality hints when present
Tenure & yearFreehold / leasehold and built year when present
AgentAgent name, ID, agency, rating when shown
MediaPhoto gallery URLs
Source layersrp, ldp, or srp+ldp

Why scrape PropertyGuru?

  • Singapore & Malaysia market research — track asking prices and inventory for HDB, condo, and landed homes
  • Commercial intelligence — pull CommercialGuru office, retail, and industrial listings
  • Investment & proptech — feed CRM, pricing models, or dashboards with fresh sale/rent data
  • Lead generation — collect public agent names from active listings
  • Export & automation — pull PropertyGuru property data into Sheets, warehouses, or your own API

More Actors like this

Looking for another property portal, or a scraper outside real estate? Use a specialized Actor when one exists — structured fields, better coverage, usually lower cost. Use this Actor for PropertyGuru Singapore / Malaysia and CommercialGuru sale / rent listings.

Similar real estate Actors

Prefer another specialized scraper?

Jobs & Freelance

E-commerce

Travel & Stays

Social & Content

Ads Intelligence

Local & Maps

General Tools

→ See the full catalog in Related Actors below, or browse apify.com/lentic_clockss.


How to scrape PropertyGuru

  1. Open PropertyGuru Scraper in Apify Console.
  2. Set market (SG / MY / CG), channel (BUY or RENT), and property type(s), or paste PropertyGuru / CommercialGuru start URLs.
  3. Choose max listings / max pages and whether to open detail pages.
  4. Keep Apify Proxy → RESIDENTIAL enabled (country defaults to SG or MY by market).
  5. Click Start, then export results from the Dataset tab.

Markets covered

CodeSiteTypical proxy
SGpropertyguru.com.sgRESIDENTIAL + SG
MYpropertyguru.com.myRESIDENTIAL + MY
CGcommercialguru.com.sgRESIDENTIAL + SG

Not included: sister brands on different platforms — DDproperty (Thailand), Rumah123 (Indonesia), Batdongsan (Vietnam).

Property categories

MarketCategories
Singapore (SG)hdb, condo, apartment, landed-house, terraced-house, semi-detached-house, bungalow, executive-condo, good-class-bungalow, cluster-house, room (RENT)
Malaysia (MY)condo, apartment, terrace-house, semi-detached-house, bungalow, townhouse, room (RENT)
CommercialGuru (CG)office, retail, industrial, warehouse, land
  • propertyType — single category or bundle
  • propertyTypes — multi-select; overrides propertyType when non-empty
  • Bundles: all (primary nav), residential, commercial, landed (expands to landed subtypes)

Example input — scrape Singapore condos, HDB, and landed for sale

{
"market": "SG",
"channel": "BUY",
"propertyTypes": ["condo", "hdb", "landed-house"],
"maxItems": 30,
"maxPages": 1,
"scrapeDetails": false,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "SG"
}
}

Example input — scrape Malaysia condo rentals

{
"market": "MY",
"channel": "RENT",
"propertyType": "condo",
"maxItems": 20,
"maxPages": 1,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "MY"
}
}

Example input — CommercialGuru offices for sale

{
"market": "CG",
"channel": "BUY",
"propertyType": "office",
"maxItems": 20,
"maxPages": 1
}

Example input — PropertyGuru search URL

{
"startUrls": [
{
"url": "https://www.propertyguru.com.sg/condo-for-sale?market=residential"
}
],
"maxItems": 15,
"maxPages": 1
}

Supported URL patterns

  • Singapore sale/rent: https://www.propertyguru.com.sg/property-for-sale, /condo-for-sale, /hdb-for-rent, …
  • Room rental: https://www.propertyguru.com.sg/property-for-rent/room-rental
  • Malaysia: https://www.propertyguru.com.my/condo-for-sale, /apartment-for-rent, …
  • CommercialGuru: https://www.commercialguru.com.sg/office-for-sale, /retail-for-sale, …
  • Detail: /listing/…-{id} (SG/CG) or /property-listing/…-{id} (MY)
  • Pagination: ?page=2

How much does it cost to scrape PropertyGuru?

This Actor uses Pay per event pricing. You pay for:

EventPrice
Actor Start (apify-actor-start)$0.005 per start (scaled by run memory: one event per GB, minimum one)
result (apify-default-dataset-item)$2.50 / 1,000 results ($0.0025 per listing in the default dataset)

Platform usage (compute, residential proxy, etc.) is also billed to the user on top of event charges.

Example (illustrative): 1 start + 1,000 listings ≈ $0.005 + $2.50 in event fees, plus platform usage for the run.

Tip: set a max total charge on the run if you want a hard spending cap. Start with maxItems 5–20 while validating fields and proxy.

Input

Open the Input tab for the full schema. Main fields:

FieldPurpose
startUrlsPropertyGuru / CommercialGuru search or listing URLs
market / marketsSG, MY, CG, or all
locationArea hint when building URLs (orchard, kuala-lumpur, …)
channelBUY or RENT
propertyType / propertyTypesCategory, multi-select, or bundle (all, landed, …)
maxItems / maxPagesCaps (fair-shared across categories)
scrapeDetailsEnrich each card from the listing detail page
requestDelayMillisDelay between navigations
proxyConfigurationPrefer Apify RESIDENTIAL; country matched to market when omitted

Output example

You can download the dataset extracted by PropertyGuru Scraper in JSON, HTML, CSV, or Excel.

{
"id": "25475433",
"url": "https://www.propertyguru.com.sg/listing/for-sale-tembusu-grand-25475433",
"source": "propertyguru",
"sourceLayer": "srp",
"market": "SG",
"marketplace": "sg",
"currency": "SGD",
"channel": "BUY",
"category": "condo",
"propertyType": "condo",
"title": "Tembusu Grand",
"address": "94 Jalan Tembusu",
"price": 7888000,
"bedrooms": 5,
"bathrooms": 4,
"floorAreaSqft": 2691,
"agentName": "Ryan Lee KK 李嘉杰",
"scrapedAt": "2026-07-18T13:26:49.709759+00:00"
}

Lead & contact fields (detail pages)

When scrapeDetails is enabled, each listing detail page (LDP) is enriched with structured lead / contact fields following the mission lead-output schema. These fields appear alongside the listing fields above and are exposed in the Dataset overview view.

FieldTypeMeaning
phones[{value, type, e164?}]Agent mobile / phone numbers. On PropertyGuru the agent mobile is already visible in the page hydration data (__NEXT_DATA__contactAgentData.contactAgentCard.agentInfoProps.agent.mobile), so no click-reveal is needed. Sample: +6593394336 (SG), +60102227014 (MY).
emails[{value, type}]Agent contact emails. Gate-locked on PropertyGuru — agent email is not exposed on public listing pages; it is only reachable via the "Send Enquiry" lead form. Returned as an empty array with leadAbsences.emails = "闸门锁".
address{street, unit, locality, region, postalCode, country, full}Property address parsed from JSON-LD schemaUpliftMarkup PostalAddress. unit = 门牌 (unit/apartment number, often null for landed / commercial). full = assembled single-line address. Sample: 38 Middle Road, Beach Road / Bugis / Rochor, City & South West (D01-08), 188947.
geo{lat, lng}Listing coordinates from JSON-LD GeoCoordinates. Supplement to the address, not a replacement. Sample: lat=1.297275, lng=103.855819.
person{name, role?}Listing agent / salesperson. name from listingData.agent.name; role from jobTitle when present (e.g. "Associate Group Director"). Sample: Tristan Tan.
org{name, id?}Agency / brokerage. name from contactAgentData.contactAgentCard.agency.name. Sample: PROPNEX REALTY PTE. LTD.
web{website, socials[]}Agent-level website and social links. Not available at the agent level on PropertyGuru (platform-level socials in schemaMarkup.organization.sameAs are not per-agent). Returned as null with leadAbsences.web = "本站无".
leadSourceenumWhere the lead was captured: search (SRP card), detail (LDP page), entity (agent profile), contact (contact surface), reveal-xhr (click-reveal XHR). PropertyGuru leads come from detail.
leadRevealenumHow the lead was revealed: visible (already in page data), click (click-reveal, no login), xhr (XHR after click), gated (login / OTP wall), image (image-only), absent. PropertyGuru phones are visible (hydration); emails are gated.
leadAbsencesobject/mapPer-field absence reason for any lead key that is empty / null. Values: 本站无 (site does not provide), 闸门锁 (login / OTP / form gate), 未验证 (not tested this mission). Sample: {"emails": "闸门锁", "web": "本站无"}.

SRP-only items (when scrapeDetails is off) contain listing fields but no lead keys — leadSource is absent and the item is a list-card, not a lead-qualified record. For lead generation, keep scrapeDetails enabled.

Reveal cost

PropertyGuru lead extraction is low-cost in run time and proxy:

  • Phone numbers are already visible in the Next.js hydration data (__NEXT_DATA__) on the detail page. No click-reveal, no XHR, no OTP is needed — the worker parses the hydration JSON directly. The on-page "View Phone Number" button triggers an OTP gate, but the same number is present in the page source, so the worker does not use that button.
  • Addresses and geo are parsed from JSON-LD schemaUpliftMarkup in the same detail-page HTML — no extra request.
  • Person and org come from the same hydration data — no extra request.
  • Emails are gate-locked (lead form) and are not extracted; no click or form submission is attempted.
  • Net effect: enabling scrapeDetails adds one detail-page navigation per listing (the LDP GET). There is no additional click-reveal round-trip, no XHR-after-click, and no proxy escalation beyond the residential SG/MY session already required for Cloudflare. Run time scales linearly with the number of detail pages; proxy cost is unchanged.

Honest limitations

The following leads are not available on PropertyGuru public listing pages, and this Actor does not fake them:

LeadStatusReason
Agent emailGate-locked (闸门锁)Agent email is not exposed on public LDP pages. It is only reachable via the "Send Enquiry" lead form, which requires submitting a contact form (out of scope — this Actor does not submit forms). leadAbsences.emails = "闸门锁".
Agent website / socialsNot on site (本站无)PropertyGuru does not show per-agent website or social profile links. Platform-level socials (Facebook/Instagram/YouTube/LinkedIn in schemaMarkup.organization.sameAs) belong to PropertyGuru the company, not to the listing agent. leadAbsences.web = "本站无".
Agent profile page leads (MY / CG)Not verified (未验证)The agent profile surface was opened for SG but not verified for MY / CG during this mission. Agent profile pages do not add contact data beyond what the LDP already provides (no additional phone/email), so they are not used as a lead source.
SRP card leadsNot availableSearch result page (SRP) cards show agent name and profile link but no phone, email, or address. Lead-qualified items require scrapeDetails (LDP).

Our scrapers are ethical and do not extract private user data that is not shown on public listing pages. They only extract what PropertyGuru / CommercialGuru has chosen to display publicly. You should still comply with site terms, applicable Singapore / Malaysia and international laws (including personal-data rules for agent contacts), and only scrape when you have a legitimate purpose. If unsure, consult your lawyers.

FAQ

How do I scrape PropertyGuru Singapore condos for sale?

Set market to SG, channel to BUY, and propertyType to condo. Keep RESIDENTIAL + SG proxy enabled.

How do I scrape PropertyGuru Malaysia rentals?

Set market to MY, channel to RENT, and choose condo or apartment. Use apifyProxyCountry: "MY".

How do I scrape HDB listings?

Use market: "SG" and propertyType: "hdb" (sale or rent). HDB is Singapore-only.

How do I scrape PropertyGuru room rentals?

Set channel to RENT and propertyType to room. The Actor uses /property-for-rent/room-rental.

How do I scrape CommercialGuru offices or shops?

Set market to CG and propertyType to office, retail, industrial, warehouse, or land.

Do I need a PropertyGuru API key?

No. This Actor scrapes the public PropertyGuru / CommercialGuru websites and returns structured property data — useful when you need a PropertyGuru data API without an official partnership.

Can I export PropertyGuru listings to Google Sheets or Excel?

Yes. Download the Dataset as Excel/CSV, or use Apify integrations and the Dataset API to push results into Sheets, webhooks, or your backend.

Why is a residential proxy required?

PropertyGuru and CommercialGuru use Cloudflare / DataDome. Plain HTTP often returns 403. Cloud runs should use Apify RESIDENTIAL with country SG or MY.

What if a PropertyGuru scrape returns zero results?

Confirm market / category URL, keep the matching residential proxy on, try a smaller maxItems, and inspect Key-Value Store ERROR_SUMMARY / OUTPUT / DEBUG_* records.

Tips for better PropertyGuru scraping

  • Prefer propertyTypes for multi-category runs; use landed to expand landed subtypes.
  • Enable scrapeDetails when you need richer LDP fields (description, amenities, coords).
  • Keep requestDelayMillis around 1500–2500 for stable sessions.
  • Start with small maxItems to validate price / category tags before scaling.
  • Match proxy country to market (SG vs MY) for higher success rates.

All 77 public Actors from [lentic_clockss]. Click a name to open the Store detail page.

Jobs & Freelance

Real Estate

E-commerce

Travel & Stays

Social & Content

Ads Intelligence

Local & Maps

General Tools

→ Browse the full profile: apify.com/lentic_clockss

Support

Questions or feature requests? Open an issue on the Actor page or contact the developer through Apify. Feedback on additional filters, districts, or export formats is welcome.