PropertyGuru Scraper
Pricing
from $1.00 / 1,000 results
PropertyGuru Scraper
Extract detailed real estate data from PropertyGuru, Southeast Asia's leading property portal. Scrape listings, prices, and market trends efficiently for your analysis. For seamless performance and reliability, residential proxies are highly recommended.
Pricing
from $1.00 / 1,000 results
Rating
5.0
(2)
Developer
Shahid Irfan
Maintained by CommunityActor stats
0
Bookmarked
60
Total users
7
Monthly active users
7 days ago
Last modified
Categories
Share
PropertyGuru Listings Scraper
Extract structured property listing data from PropertyGuru Malaysia and PropertyGuru Singapore in a fast, reliable format. Use Malaysia or Singapore PropertyGuru URLs to collect pricing, address context, room counts, tenure, agent metadata, image sets, and listing freshness at scale for research, monitoring, and analytics workflows.
Features
- Malaysia and Singapore coverage — Collect listings from
propertyguru.com.myandpropertyguru.com.sg - Fast listing collection — Collect hundreds of records quickly with stable pagination support
- Full listing coverage — Get pricing, specs, recency, codes, agent details, and project references
- Residential proxy ready — Uses Apify residential proxies for smoother multi-page extraction and fewer block events
- Multiple images per property — Export both a primary image and full
image_urlsarrays - Clean output quality — Duplicate and empty records are filtered before dataset export
- Flexible start URLs — Use a root domain, a standard results page, or a filtered search URL
Use Cases
Market Research
Track asking prices, listing volume, and property mix across Malaysia or Singapore. Build weekly or monthly snapshots to monitor direction and momentum.
Investment Screening
Create comparable datasets to shortlist properties by price, size, and location context. Review listing freshness and agent information for faster lead qualification.
Lead Generation
Collect active listings and source URLs to power outreach workflows. Keep records structured for CRM imports and scoring.
Portfolio Monitoring
Watch listing changes around areas where you own or plan to buy. Use recurring runs to spot shifts in supply and pricing.
Real Estate Analytics
Feed BI dashboards with normalized listing data, image coverage metrics, and pagination-based crawl history for reporting.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startUrl | String | No | — | PropertyGuru Malaysia or PropertyGuru Singapore root URL, sale listings URL, property URL, or filtered search URL to start from |
results_wanted | Integer | No | 20 | Maximum number of properties to collect |
max_pages | Integer | No | 10 | Maximum number of result pages to process |
proxyConfiguration | Object | No | {"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]} | Recommended proxy settings. Residential proxies are strongly recommended to reduce blocking and improve multi-page reliability. |
Output Data
Each dataset item can include:
| Field | Type | Description |
|---|---|---|
listing_id | Integer | Unique listing identifier |
external_id | String | External listing reference |
title | String | Listing title |
url | String | Listing detail URL |
price | String | Formatted price text |
price_value | Number | Numeric price value |
currency | String | Currency code |
price_per_area | String | Price per area text |
location | String | Address or area text |
bedrooms | String | Bedroom count |
bathrooms | String | Bathroom count |
size | String | Property size text |
property_type | String | Property type |
listing_type_code | String | Listing type code from the source |
tenure | String | Tenure type |
tenure_code | String | Raw tenure code from the source |
build_year | String | Build year |
listing_type | String | Listing category |
listing_status | String | Listing status code |
listed_by | String | Listing source label |
is_verified | Boolean | Verification status |
is_official_listing | Boolean | Official listing flag |
is_developer_listing | Boolean | Developer listing flag |
is_developer_unit_listing | Boolean | Developer unit flag |
is_prioritized | Boolean | Priority placement flag |
posted_on | String | Posted date text |
recency | String | Listing recency label |
availability | String | Availability text when provided |
description | String | Listing description |
image_url | String | Primary image URL |
image_urls | Array | All available image URLs |
image_count | Integer | Total image count detected |
agent_name | String | Agent name |
agent_company | String | Agency or company name |
agent_id | Integer | Agent identifier |
agent_agency_id | Integer | Agency identifier |
agent_is_verified | Boolean | Agent verification flag |
agent_profile_url | String | Agent profile URL |
agent_license | String | Agent license text |
project_id | Integer | Related project identifier |
property_type_group | String | High-level property group |
project_type_code | String | Project type code |
area_text | String | Area name text |
area_code | String | Area code |
district | String | District name |
district_code | String | District code |
region | String | Region name |
region_code | String | Region code |
viewed_label | String | Viewed label text |
account_type_code | String | Account type code |
cross_listing_type | String | Cross-listing type |
listing_features | Array | Structured feature blocks from the listing card |
search_origin | String | Source PropertyGuru domain |
search_url | String | Search URL used for that record |
search_page | Integer | Result page number where record was collected |
Usage Examples
Quick Start
Use defaults and collect up to 20 properties. The schema already defaults the proxy to Apify residential proxies, which is the recommended setup for smooth runs.
{"results_wanted": 20}
Higher Volume Collection
Collect larger batches across more pages.
{"results_wanted": 300,"max_pages": 15}
Custom Search URL
Start from a specific PropertyGuru Malaysia results page.
{"startUrl": "https://www.propertyguru.com.my/property-for-sale?listingType=sale&isCommercial=false&locale=en&freetext=Kuala+Lumpur","results_wanted": 200,"max_pages": 10}
Singapore Root Domain Start
Start from a root PropertyGuru domain and let the actor normalize it to sale listings automatically.
{"startUrl": "https://www.propertyguru.com.sg/","results_wanted": 40,"max_pages": 2}
Singapore Filtered Search URL
Start from a filtered PropertyGuru Singapore sale results URL.
{"startUrl": "https://www.propertyguru.com.sg/property-for-sale?listingType=sale&market=residential&freetext=Jurong+East","results_wanted": 60,"max_pages": 3}
Sample Output
{"listing_id": 501016902,"external_id": "501016902","title": "Hillview Green","url": "https://www.propertyguru.com.sg/listing/for-sale-hillview-green-23177314","price": "S$ 2,580,000","price_value": 2580000,"currency": "SGD","price_per_area": "S$ 1,724.60 psf","location": "67 Hume Avenue","bedrooms": "3","bathrooms": "3","size": "1496 sqft","property_type": "Condominium","listing_type_code": "SALE","property_type_group": "Residential","tenure": "999-year Leasehold","tenure_code": "L999","build_year": "1998","listing_type": "For Sale","listing_status": "ACT","listed_by": "Listed by","is_verified": false,"is_official_listing": true,"is_developer_listing": false,"is_developer_unit_listing": false,"is_prioritized": false,"posted_on": "7 Jun 2026","recency": "Listed on Jun 07, 2026 (2m ago)","description": "Rare Ground floor unit at Hillview Green, corner","image_url": "https://sg1-cdn.pgimgs.com/listing/23177314/UPHO.150473566.V800/Hillview-Green-Clementi-Park-Upper-Bukit-Timah-Singapore.jpg","image_urls": ["https://sg1-cdn.pgimgs.com/listing/23177314/UPHO.150473566.V800/Hillview-Green-Clementi-Park-Upper-Bukit-Timah-Singapore.jpg","https://sg1-cdn.pgimgs.com/listing/23177314/UPHO.124570156.V800/Hillview-Green-Clementi-Park-Upper-Bukit-Timah-Singapore.jpg"],"image_count": 17,"agent_name": "Heng Heng","agent_id": 6414,"agent_agency_id": 4618,"agent_is_verified": false,"agent_profile_url": "https://www.propertyguru.com.sg/agent/heng-heng-6414","agent_license": "R014221F","project_id": 367,"district": "Clementi Park / Upper Bukit Timah","district_code": "D21","region": "Newton / Bt. Timah (D11, 21)","region_code": "C","viewed_label": "Viewed","account_type_code": "NORMAL","cross_listing_type": "ORIGINAL","listing_features": [{"id": "listing-card-v2-bedrooms","text": "3"},{"id": "listing-card-v2-bathrooms","text": "3"}],"search_origin": "https://www.propertyguru.com.sg","search_url": "https://www.propertyguru.com.sg/property-for-sale","search_page": 1}
Tips for Best Results
Use Working Search URLs
- Use a valid PropertyGuru Malaysia or PropertyGuru Singapore URL in
startUrl - Root domains,
property-for-salepages, and filtered listing URLs are all supported - Prefer focused searches for cleaner datasets
- Re-run periodically for fresh market snapshots
Tune Volume Controls
- Start with
results_wanted: 20for quick validation - Increase
max_pagesfor deeper coverage - Balance speed and volume based on your workflow
Keep Proxy Enabled
- Keep
useApifyProxyenabled for stable runs - Keep
apifyProxyGroupsset to["RESIDENTIAL"]to reduce blocking on PropertyGuru - Use repeated scheduled runs for consistency
- If a run returns fewer records than expected, rerun with the same input
Proxy Configuration
Recommended default:
{"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Residential proxies are the recommended default for this actor. PropertyGuru can block or throttle non-residential traffic, especially on longer or multi-page runs.
Integrations
Connect your data with:
- Google Sheets — Share and analyze listing data with teams
- Airtable — Build searchable listing databases
- Slack — Send alerts from scheduled runs
- Webhooks — Deliver records to custom systems
- Make — Automate enrichment and routing workflows
- Zapier — Trigger downstream actions from fresh datasets
Export Formats
- JSON — For APIs and custom processing
- CSV — For spreadsheet workflows
- Excel — For reporting and presentations
- XML — For legacy system integrations
Frequently Asked Questions
How many listings can this scraper collect?
It can collect large batches depending on available pages and your input limits. Use results_wanted and max_pages to control output size.
Do I need to provide startUrl?
No. If startUrl is not provided, the actor starts from a default PropertyGuru sale listings page. You can also pass a Malaysia or Singapore root domain, a property-for-sale URL, or another PropertyGuru listing/search URL and the actor will normalize it automatically.
Can I collect data from multiple pages?
Yes. The actor automatically processes multiple pages up to max_pages.
Which proxy setup should I use?
Use Apify Proxy with the RESIDENTIAL group. That is the recommended configuration in the input schema and is the most reliable option for avoiding blocking on PropertyGuru.
Why are some fields missing on certain records?
Some listings do not expose every field publicly. The actor saves all available fields and skips empty values.
Does output include multiple photos per property?
Yes. Use image_urls for full photo sets and image_count for total image volume.
Is duplicate data filtered?
Yes. Duplicate records are filtered by stable listing keys before export.
Can I automate daily runs?
Yes. Use Apify schedules and connect outputs to integrations such as webhooks, Make, or Zapier.
Is this suitable for commercial analytics?
Yes. Output is structured for market analysis, reporting, lead workflows, and BI pipelines.
Support
For issues or feature requests, contact support through the Apify Console.
Resources
Legal Notice
This actor is designed for legitimate data collection purposes. Users are responsible for ensuring compliance with PropertyGuru terms of service and applicable laws. Use data responsibly and respect rate limits.