SRX Singapore Property Scraper
Pricing
from $1.00 / 1,000 result items
SRX Singapore Property Scraper
Scrape HDB property listings from SRX Singapore — sale and rent. Price, PSF, area, MRT, tenure and more.
Pricing
from $1.00 / 1,000 result items
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share

Extract property listings from srx.com.sg at scale, in a clean, consistent structure ready for market analysis, valuation models, lead generation and monitoring. No API key required.
Why this scraper?
🎯 Built for Singapore
A dedicated Singaporean scraper, not a global tool with a country dropdown. Locations, price formats and currency (SGD) are tuned for srx.com.sg.
💶 Structured pricing
Asking price or rent as a clean number in SGD, plus the price exactly as displayed. Price-on-request listings return null, never a guess.
🏠 Property characteristics
Bedrooms, rooms, surface and property type in structured fields, ready for filtering and analysis.
📍 Location fields
Structured address data for every listing, ready for filtering and analysis.
🖼️ Listing photos
Photo URLs for every listing where the source publishes them.
🔁 Repost & change detection
Every record carries isRepost and changeStatus, so daily feeds return genuinely new listings instead of reposted duplicates.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
minPrice | integer | (empty) | Minimum listing price (local currency). Leave empty for no minimum. |
maxPrice | integer | (empty) | Maximum listing price (local currency). Leave empty for no maximum. |
daysOld | integer | (empty) | Only return listings published within the last N days. Leave empty for no recency filter. |
fetchDetails | boolean | false | Visit each listing page for price, area, beds, baths. Slower but much richer data. |
maxItems | integer | 5 | Maximum number of listings to extract. Set to 0 for unlimited. |
startUrls | array | (empty) | Optional list of search-results page URLs. When provided, all filter fields above are ignored. |
categories | array | ["hdb-sale"] | Which listing categories to scrape. |
requestDelayMs | integer | 1500 | Milliseconds to wait between requests. |
Output schema
Every field below is present on every record. Fields the source does not publish for a given listing are returned as null rather than omitted.
| Field | Type | Description |
|---|---|---|
listingId | string | Unique listing ID from the source. |
url | string | Direct link to the listing. |
source | string | Source. |
operationType | string | Operation type. |
propertyType | string | Property type (e.g. apartment, house). |
propertySubType | string | Property subtype as published. |
priceText | string | Price text. |
priceAmount | string | Asking price or rent as a number (null if price on request). |
priceCurrency | string | Currency code of the price. |
pricePerSqftSGD | string | Price per sqft sgd. |
address | string | Full address as displayed. |
postalCode | string | Postal code of the property. |
bedrooms | string | Number of bedrooms (null if not stated). |
bathrooms | string | Number of bathrooms (null if not stated). |
floorAreaSqft | string | Floor area sqft. |
floorAreaSqm | string | Floor area sqm. |
tenure | string | Tenure as published (null if not stated). |
nearestMRTs | array | Nearest mrts. |
descriptionText | string | Description text. |
descriptionMarkdown | string | Description markdown. |
images | array | URLs of listing photos. |
scrapedAt | string | Timestamp when this record was scraped. |
contentHash | string | Stable hash of the listing content, used for repost and change detection. |
Example record
{"listingId": "103386751","url": "https://www.srx.com.sg/listings/103386751/for-sale-pending-road-pending-road","source": "srx.com.sg","operationType": "sale","propertyType": "HDB","propertySubType": null,"priceText": null,"priceAmount": null,"priceCurrency": null,"pricePerSqftSGD": null,"address": null,"postalCode": null,"bedrooms": null,"bathrooms": null,"floorAreaSqft": null,"floorAreaSqm": null,"tenure": null,"nearestMRTs": [],"descriptionText": null,"descriptionMarkdown": null,"images": [],"scrapedAt": "2026-07-03T20:46:20.358Z","contentHash": "ae516ac2ca23df17"}
Examples
Listings in Singapore:
{"maxItems": 100}
Cap the price:
{"maxItems": 100,"maxPrice": 1480000}
Scrape a specific search URL:
{"startUrls": [{"url": "https://www.srx.com.sg/"}],"maxItems": 200}
Daily feed of new listings (run on a schedule):
{"daysOld": 1,"maxItems": 500}
Schedule this input to run once a day in the Apify Scheduler — each run returns only listings added in the last 24 hours.
💰 Pricing
$1 per 1,000 results — you only pay for successfully retrieved listings. Failed retries are never charged.
| Results | Cost |
|---|---|
| 100 | ~$0.1 |
| 1,000 | ~$1 |
| 10,000 | ~$10 |
| 100,000 | ~$100 |
Flat-rate alternatives typically charge $29–$49/month regardless of usage.
Subscription tiers lower the rate further, down to $1 per 1,000 at the highest tier. Use the Max results cap in the input to control your spend exactly.
Performance
| Run size | Typical time |
|---|---|
| 100 results | under 1 minute |
| 1,000 results | 2–4 minutes |
| 10,000 results | 20–35 minutes |
Known limitations
- Some fields (surface, year built, energy label) are only returned when the lister publishes them — expect
nullon a share of records. - Listing photos and agent details vary per listing; the scraper returns what the source publishes and never invents data.
- Very large result sets are bounded by the source's own paging limits.
- Listings can be withdrawn at any time, so a small share of URLs may expire shortly after scraping.
Technical details
- Source: srx.com.sg — Singapore property listings
- Coverage: everything the public search exposes, filterable via the input parameters above
- Retry: automatic retry on network errors with exponential backoff
Need a custom scraper?
Unfenced Group builds Apify actors for any website — for free.
If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.
Get in touch: www.unfencedgroup.nl