# PropertyGuru Scraper | Singapore Malaysia Real Estate API (`lentic_clockss/propertyguru-sg-scraper`) Actor

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

- **URL**: https://apify.com/lentic\_clockss/propertyguru-sg-scraper.md
- **Developed by:** [kane liu](https://apify.com/lentic_clockss) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 2 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### What does PropertyGuru Scraper do?

**PropertyGuru Scraper** extracts Southeast Asia real estate listings from [PropertyGuru Singapore](https://www.propertyguru.com.sg/), [PropertyGuru Malaysia](https://www.propertyguru.com.my/), and [CommercialGuru](https://www.commercialguru.com.sg/). 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 point | Description |
|---|---|
| Listing ID & URL | Stable listing ID and canonical PropertyGuru / CommercialGuru link |
| Market | `SG`, `MY`, or `CG` (+ currency `SGD` / `MYR`) |
| Channel | `BUY` (sale) or `RENT` |
| Category / type | e.g. `condo`, `hdb`, `landed-house`, `room`, `office` |
| Title & project | Headline / project name when shown |
| Price | Amount + formatted price / PSF when available |
| Size & rooms | Floor area (sqft), bedrooms, bathrooms, floor level |
| Location | Address, district, MRT / locality hints when present |
| Tenure & year | Freehold / leasehold and built year when present |
| Agent | Agent name, ID, agency, rating when shown |
| Media | Photo gallery URLs |
| Source layer | `srp`, `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

- [99.co Scraper](https://apify.com/lentic_clockss/ninetynine-co-sg-scraper)
- [Dot Property Scraper](https://apify.com/lentic_clockss/dot-property-th-scraper)
- [Bayut Scraper](https://apify.com/lentic_clockss/bayut-uae-scraper)
- [Property Finder Scraper](https://apify.com/lentic_clockss/property-finder-uae-scraper)
- [realestate.com.au Scraper](https://apify.com/lentic_clockss/realestate-com-au-scraper)
- [Zillow & Zumper Scraper](https://apify.com/lentic_clockss/us-real-estate-scraper)
- [Realtor.com Scraper](https://apify.com/lentic_clockss/realtor-com-scraper)
- [Rightmove Scraper](https://apify.com/lentic_clockss/rightmove-property-scraper)
- [Idealista Scraper](https://apify.com/lentic_clockss/idealista-scraper)
- [ImmoScout24 Scraper](https://apify.com/lentic_clockss/immobilienscout24-scraper)
- [Funda Scraper](https://apify.com/lentic_clockss/funda-scraper)
- [Otodom Scraper](https://apify.com/lentic_clockss/otodom-scraper)

#### Prefer another specialized scraper?

**Jobs & Freelance**

- [LinkedIn Jobs Scraper](https://apify.com/lentic_clockss/linkedin-jobs-scraper)
- [Indeed Jobs Scraper](https://apify.com/lentic_clockss/indeed-jobs-scraper)
- [Upwork Jobs Scraper](https://apify.com/lentic_clockss/upwork-jobs-scraper)
- [Glassdoor Scraper](https://apify.com/lentic_clockss/glassdoor-scraper)
- [Fiverr Gigs Scraper](https://apify.com/lentic_clockss/fiverr-programming-tech-gigs-scraper)
- [Bayt Jobs Scraper](https://apify.com/lentic_clockss/bayt-scraper)

**E-commerce**

- [Walmart Product Scraper](https://apify.com/lentic_clockss/walmart-scraper)
- [Amazon Search Scraper](https://apify.com/lentic_clockss/amazon-search-results-collector)
- [Shopee Search Scraper](https://apify.com/lentic_clockss/shopee-search-scraper)
- [Etsy Scraper](https://apify.com/lentic_clockss/etsy-scraper)
- [SHEIN Product Scraper](https://apify.com/lentic_clockss/shein-scraper)
- [Temu Product Scraper](https://apify.com/lentic_clockss/temu-scraper)
- [Target Product Scraper](https://apify.com/lentic_clockss/target-scraper)
- [Allegro Scraper](https://apify.com/lentic_clockss/allegro-scraper)

**Travel & Stays**

- [Booking.com Hotels Scraper](https://apify.com/lentic_clockss/booking-hotels-scraper)
- [Airbnb Listings Scraper](https://apify.com/lentic_clockss/airbnb-listings-scraper)
- [Expedia Scraper](https://apify.com/lentic_clockss/expedia-scraper)
- [TripAdvisor Scraper](https://apify.com/lentic_clockss/tripadvisor-scraper)

**Social & Content**

- [YouTube Research Scraper](https://apify.com/lentic_clockss/youtube-research-scraper)
- [TikTok Scraper](https://apify.com/lentic_clockss/tiktok-scraper)
- [Reddit Scraper](https://apify.com/lentic_clockss/reddit-scraper)
- [YouTube Shorts Scraper](https://apify.com/lentic_clockss/youtube-shorts-scraper)

**Ads Intelligence**

- [Facebook Ad Library Scraper](https://apify.com/lentic_clockss/facebook-ad-library-scraper)
- [TikTok Ads Scraper](https://apify.com/lentic_clockss/tiktok-ads-top-ads-actor)

**Local & Maps**

- [Google Maps Scraper](https://apify.com/lentic_clockss/google-maps-scraper)

**General Tools**

- [Stealth Web Scraper](https://apify.com/lentic_clockss/stealth-web-scraper)
- [Email Risk Validator](https://apify.com/lentic_clockss/email-risk-validator)
- [Phone Number Intelligence](https://apify.com/lentic_clockss/phone-number-intelligence)

→ See the full catalog in [Related Actors](#related-actors) below, or browse [apify.com/lentic\_clockss](https://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

| Code | Site | Typical proxy |
|---|---|---|
| `SG` | [propertyguru.com.sg](https://www.propertyguru.com.sg/) | RESIDENTIAL + SG |
| `MY` | [propertyguru.com.my](https://www.propertyguru.com.my/) | RESIDENTIAL + MY |
| `CG` | [commercialguru.com.sg](https://www.commercialguru.com.sg/) | RESIDENTIAL + SG |

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

#### Property categories

| Market | Categories |
|---|---|
| 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

```json
{
  "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

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

#### Example input — CommercialGuru offices for sale

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

#### Example input — PropertyGuru search URL

```json
{
  "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:

| Event | Price |
|---|---|
| **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:

| Field | Purpose |
|---|---|
| `startUrls` | PropertyGuru / CommercialGuru search or listing URLs |
| `market` / `markets` | `SG`, `MY`, `CG`, or `all` |
| `location` | Area hint when building URLs (`orchard`, `kuala-lumpur`, …) |
| `channel` | `BUY` or `RENT` |
| `propertyType` / `propertyTypes` | Category, multi-select, or bundle (`all`, `landed`, …) |
| `maxItems` / `maxPages` | Caps (fair-shared across categories) |
| `scrapeDetails` | Enrich each card from the listing detail page |
| `requestDelayMillis` | Delay between navigations |
| `proxyConfiguration` | Prefer 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.

```json
{
  "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"
}
```

### Is it legal to scrape PropertyGuru?

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.

### Related Actors

All **77** public Actors from \[[lentic\_clockss](https://apify.com/lentic_clockss)]. Click a name to open the Store detail page.

#### Jobs & Freelance

- [LinkedIn Jobs Scraper](https://apify.com/lentic_clockss/linkedin-jobs-scraper)
- [Bayt Jobs Scraper](https://apify.com/lentic_clockss/bayt-scraper)
- [Fiverr Gigs Scraper](https://apify.com/lentic_clockss/fiverr-programming-tech-gigs-scraper)
- [Freelancer.com Scraper](https://apify.com/lentic_clockss/freelancer-scraper)
- [Glassdoor Scraper](https://apify.com/lentic_clockss/glassdoor-scraper)
- [Himalayas Jobs Scraper](https://apify.com/lentic_clockss/himalayas-jobs-scraper)
- [Indeed Jobs Scraper](https://apify.com/lentic_clockss/indeed-jobs-scraper)
- [Jobicy Remote Jobs Scraper](https://apify.com/lentic_clockss/jobicy-remote-jobs-scraper)
- [RemoteOK Jobs Scraper](https://apify.com/lentic_clockss/remoteok-all-jobs-scraper)
- [SEEK Jobs Scraper](https://apify.com/lentic_clockss/seek-scraper)
- [Upwork Jobs Scraper](https://apify.com/lentic_clockss/upwork-jobs-scraper)

#### Real Estate

- [Zillow & Zumper Scraper](https://apify.com/lentic_clockss/us-real-estate-scraper)
- [Realtor.com Scraper](https://apify.com/lentic_clockss/realtor-com-scraper)
- [99.co Scraper](https://apify.com/lentic_clockss/ninetynine-co-sg-scraper)
- [Realtor.com Agents Scraper](https://apify.com/lentic_clockss/realtor-com-agents-scraper)
- [Apartments.com Rental Scraper](https://apify.com/lentic_clockss/apartments-com-rental-scraper)
- [Bayut Scraper](https://apify.com/lentic_clockss/bayut-uae-scraper)
- [Craigslist Housing Scraper](https://apify.com/lentic_clockss/craigslist-housing-scraper)
- [Daft.ie Scraper](https://apify.com/lentic_clockss/daft-property-scraper)
- [Dot Property Scraper](https://apify.com/lentic_clockss/dot-property-th-scraper)
- [FINN.no Scraper](https://apify.com/lentic_clockss/finn-scraper)
- [Funda Scraper](https://apify.com/lentic_clockss/funda-scraper)
- [Hepsiemlak Scraper](https://apify.com/lentic_clockss/hepsiemlak-scraper)
- [Idealista Scraper](https://apify.com/lentic_clockss/idealista-scraper)
- [Immobiliare.it Scraper](https://apify.com/lentic_clockss/immobiliare-property-scraper)
- [ImmoScout24 Scraper](https://apify.com/lentic_clockss/immobilienscout24-scraper)
- [Naver Land Scraper](https://apify.com/lentic_clockss/naver-land-scraper)
- [OpenSooq Scraper](https://apify.com/lentic_clockss/opensooq-real-estate-scraper)
- [Otodom Scraper](https://apify.com/lentic_clockss/otodom-scraper)
- [Property Finder Scraper](https://apify.com/lentic_clockss/property-finder-uae-scraper)
- [PropertyGuru Scraper](https://apify.com/lentic_clockss/propertyguru-sg-scraper)
- [realestate.com.au Scraper](https://apify.com/lentic_clockss/realestate-com-au-scraper)
- [Realtor.ca Scraper](https://apify.com/lentic_clockss/realtor-ca-scraper)
- [Rightmove Scraper](https://apify.com/lentic_clockss/rightmove-property-scraper)
- [SeLoger Scraper](https://apify.com/lentic_clockss/seloger-property-scraper)
- [SUUMO Scraper](https://apify.com/lentic_clockss/suumo-property-scraper)
- [Zillow Group Scraper](https://apify.com/lentic_clockss/zillow-group-scraper)

#### E-commerce

- [Shopee Search Scraper](https://apify.com/lentic_clockss/shopee-search-scraper)
- [E-commerce Scraper](https://apify.com/lentic_clockss/ecommerce-scraper)
- [1688 Global Product Search Scraper](https://apify.com/lentic_clockss/1688-global-scraper)
- [Allegro Scraper](https://apify.com/lentic_clockss/allegro-scraper)
- [Amazon Search Scraper](https://apify.com/lentic_clockss/amazon-search-results-collector)
- [ASOS Product Scraper](https://apify.com/lentic_clockss/asos-scraper)
- [Cdiscount Product Scraper](https://apify.com/lentic_clockss/cdiscount-scraper)
- [Costco Product Scraper](https://apify.com/lentic_clockss/costco-scraper)
- [Coupang Product Scraper](https://apify.com/lentic_clockss/coupang-scraper)
- [Etsy Scraper](https://apify.com/lentic_clockss/etsy-scraper)
- [Lazada Scraper](https://apify.com/lentic_clockss/lazada-ph-search-results-collector)
- [MercadoLibre Scraper](https://apify.com/lentic_clockss/mercadolibre-scraper)
- [Mercari Japan Scraper](https://apify.com/lentic_clockss/mercari-scraper)
- [Rakuten Japan Scraper](https://apify.com/lentic_clockss/rakuten-scraper)
- [SHEIN Product Scraper](https://apify.com/lentic_clockss/shein-scraper)
- [Target Product Scraper](https://apify.com/lentic_clockss/target-scraper)
- [Temu Product Scraper](https://apify.com/lentic_clockss/temu-scraper)
- [Walmart Product Scraper](https://apify.com/lentic_clockss/walmart-scraper)

#### Travel & Stays

- [Booking.com & Airbnb Scraper](https://apify.com/lentic_clockss/booking-airbnb-scraper)
- [Agoda Scraper](https://apify.com/lentic_clockss/agoda-scraper)
- [Airbnb Listings Scraper](https://apify.com/lentic_clockss/airbnb-listings-scraper)
- [Booking.com Hotels Scraper](https://apify.com/lentic_clockss/booking-hotels-scraper)
- [Despegar Scraper](https://apify.com/lentic_clockss/despegar-scraper)
- [Expedia Scraper](https://apify.com/lentic_clockss/expedia-scraper)
- [Traveloka Scraper](https://apify.com/lentic_clockss/traveloka-scraper)
- [Travelstart Flights Scraper](https://apify.com/lentic_clockss/travelstart-scraper)
- [Trip.com Scraper](https://apify.com/lentic_clockss/trip-com-scraper)
- [TripAdvisor Scraper](https://apify.com/lentic_clockss/tripadvisor-scraper)

#### Social & Content

- [TikTok Scraper](https://apify.com/lentic_clockss/tiktok-scraper)
- [Reddit Scraper](https://apify.com/lentic_clockss/reddit-scraper)
- [YouTube Shorts Scraper](https://apify.com/lentic_clockss/youtube-shorts-scraper)
- [YouTube Research Scraper](https://apify.com/lentic_clockss/youtube-research-scraper)
- [Hacker News Scraper](https://apify.com/lentic_clockss/hacker-news-scraper)

#### Ads Intelligence

- [Facebook Ad Library Scraper](https://apify.com/lentic_clockss/facebook-ad-library-scraper)
- [Google Ads Transparency VN](https://apify.com/lentic_clockss/google-ads-transparency-center-vn)
- [TikTok Ads Scraper](https://apify.com/lentic_clockss/tiktok-ads-top-ads-actor)

#### Local & Maps

- [Google Maps Scraper](https://apify.com/lentic_clockss/google-maps-scraper)

#### General Tools

- [Stealth Web Scraper](https://apify.com/lentic_clockss/stealth-web-scraper)
- [Email Risk Validator](https://apify.com/lentic_clockss/email-risk-validator)
- [Phone Number Intelligence](https://apify.com/lentic_clockss/phone-number-intelligence)

→ Browse the full profile: [apify.com/lentic\_clockss](https://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.

# Actor input Schema

## `startUrls` (type: `array`):

PropertyGuru SG/MY or CommercialGuru search/listing URLs. Overrides market-built searches when provided.

## `market` (type: `string`):

Primary market: SG (Singapore), MY (Malaysia), CG (CommercialGuru SG), or all.

## `markets` (type: `array`):

Optional multi-select. When set, overrides single market (except startUrls).

## `location` (type: `string`):

Area / city hint when building search URLs (e.g. singapore, orchard, kuala-lumpur, penang). Empty uses market default.

## `channel` (type: `string`):

BUY (for sale) or RENT (for rent).

## `propertyType` (type: `string`):

Single category or bundle. Ignored when propertyTypes is non-empty. Use all for market primary nav categories.

## `propertyTypes` (type: `array`):

Multi-select categories / bundles. Takes precedence over propertyType when non-empty.

## `districtCode` (type: `string`):

Optional district filter appended as district\_code query param (e.g. D09).

## `minPrice` (type: `integer`):

Optional minimum price filter (minprice query param).

## `maxPrice` (type: `integer`):

Optional maximum price filter (maxprice query param). Must be >= minPrice when both set.

## `bedrooms` (type: `integer`):

Optional bedroom count filter (beds query param).

## `maxItems` (type: `integer`):

Maximum listing records to emit (fair-shared across markets/categories).

## `maxPages` (type: `integer`):

Maximum search-result pages to crawl per start URL.

## `scrapeDetails` (type: `boolean`):

When true, open each listing LDP and merge overview/location fields from **NEXT\_DATA**.

## `requestDelayMillis` (type: `integer`):

Delay before each navigation to reduce challenge rate.

## `proxyConfiguration` (type: `object`):

Use Apify RESIDENTIAL proxies. Country defaults to market (SG or MY) when omitted.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.propertyguru.com.sg/condo-for-sale?market=residential"
    }
  ],
  "market": "SG",
  "channel": "BUY",
  "propertyType": "all",
  "maxItems": 20,
  "maxPages": 1,
  "scrapeDetails": false,
  "requestDelayMillis": 2000,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `listings` (type: `string`):

Normalized PropertyGuru listing records from SRP and optional LDP enrichment.

## `runSummary` (type: `string`):

Counts, engine, warnings, and timestamps for the run.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://www.propertyguru.com.sg/condo-for-sale?market=residential"
        }
    ],
    "location": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("lentic_clockss/propertyguru-sg-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [{ "url": "https://www.propertyguru.com.sg/condo-for-sale?market=residential" }],
    "location": "",
}

# Run the Actor and wait for it to finish
run = client.actor("lentic_clockss/propertyguru-sg-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.propertyguru.com.sg/condo-for-sale?market=residential"
    }
  ],
  "location": ""
}' |
apify call lentic_clockss/propertyguru-sg-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=lentic_clockss/propertyguru-sg-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/No7OrEWdpT43xiXsS/builds/deuksSOuZvsJBdxSi/openapi.json
