URA Singapore Property Data Scraper
Pricing
from $2.00 / 1,000 output rows
URA Singapore Property Data Scraper
Fetches project summaries, sale transaction history, and rental history from URA's PMI Mobile property data service, by project name, street, district, or full island-wide crawl.
Pricing
from $2.00 / 1,000 output rows
Rating
0.0
(0)
Developer
R.L.
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
11 days ago
Last modified
Categories
Share
What does URA Singapore Property Data Scraper do?
This Actor pulls live private residential property market data straight from the same backend that powers URA's official PMI Mobile app — project sale price/rental summaries, unit-level sale transaction history, and quarterly rental statistics — for any project in Singapore, any street, an entire URA planning district, or the whole island at once. Run it manually, on a schedule, or trigger it from the Apify API to keep a property-market dataset continuously up to date.
Why use URA Singapore Property Data Scraper?
- Market research & investment analysis — track price/rental trends for specific projects or districts over time.
- Portfolio monitoring — watch transaction and rental activity for buildings you own or manage.
- Real estate proptech & data products — feed structured Singapore property data into dashboards, models, or apps without maintaining your own scraper.
- Comparative analysis — pull an entire district's worth of projects in one run to compare price/rental performance.
How to use URA Singapore Property Data Scraper
- Click Try for free or set up input in the Input tab.
- Pick a lookup mode --
projectNames,streetNames, anddistrictsare all searchable dropdowns pre-populated from URA's own project index, so there's no free-text typing or guessing exact names:- Specific projects — pick one or more from the
projectNamesdropdown (e.g. "THE SAIL @ MARINA BAY"). - Specific streets — pick one or more from the
streetNamesdropdown. - A district — pick one or more from the
districtsdropdown to fetch every known project in those districts. - Free-text search — type into
searchQueryto reproduce the app's own search box (case-insensitive substring match against project and street names, e.g. "sail" finds "THE SAIL @ MARINA BAY", "RIVERSAILS", "VERSAILLES"). Combine withdistrictsto scope it. - The whole index — set
crawlAlltotrueto fetch all ~3,200 projects island-wide (usemaxProjectsto cap this for a first test run).
- Specific projects — pick one or more from the
- Choose which data types to include: project summary, transaction history, rental history.
- Run the Actor and download results from the Dataset tab, or read them via the Apify API/CLI.
Input
| Field | Type | Description |
|---|---|---|
projectNames | array of strings | Exact/near-exact project names to fetch directly |
streetNames | array of strings | Street names to fetch directly (best-effort) |
searchQuery | string | Free-text substring search over project/street names, same as the app's search box |
districts | array of strings | URA district codes (01–28) to browse via the bundled project index |
crawlAll | boolean | Fetch every project in the bundled index |
maxProjects | integer | Cap on resolved projects/streets actually fetched (0 = no cap) |
includeProjectSummary | boolean | Fetch project-level summary |
includeTransactions | boolean | Fetch sale transaction history |
includeRentals | boolean | Fetch rental history |
transactionMonths / rentalQuarters | integer | How far back to request (URA caps actual results at the project's available history) |
concurrency | integer | Parallel project fetches |
requestDelayMs | integer | Pause between calls per project |
Example input:
{"districts": ["09", "10"],"includeProjectSummary": true,"includeTransactions": true,"includeRentals": true,"maxProjects": 100}
Output
Each dataset item is one record — a project summary, a single sale transaction, or a single quarter of rental stats — tagged with dataType and the project/street/district it belongs to.
{"dataType": "transaction","projectName": "THE SAIL @ MARINA BAY","streetName": null,"districtCode": "01","districtName": "Raffles Place, Cecil, Marina, People's Park","floorRange": "01 to 05","areaSqft": 883.0,"areaSqm": 82.05,"price": 1608000.0,"refPeriod": "JUL 2026","unitPricePsf": 1822.0,"unitPricePsm": 19611.87}
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
Data fields
URA reports area and price rates in imperial units (sqft, PSF) only -- this Actor derives the metric equivalents (sqm, PSM) itself using 1 sqm = 10.7639 sqft, so every row carries both.
| Field | Applies to | Description |
|---|---|---|
projectName, streetName, districtCode, districtName | all | Project/location context |
lastTransactedRefPeriod, lastTransactedValuePsf, lastTransactedValuePsm | projectSummary | Most recent transacted price rate and period |
lastRentalRefPeriod, lastRentalValuePsf, lastRentalValuePsm | projectSummary | Most recent median rental rate/month and period |
marketSegment, tenure, propertyType | projectSummary | Segment (CCR/RCR/OCR), tenure, property type code |
floorRange, areaSqft, areaSqm, price, unitPricePsf, unitPricePsm, refPeriod | transaction | Per-unit sale record |
medianPsfPerMonth, medianPsmPerMonth, p25PsfPerMonth, p25PsmPerMonth, p75PsfPerMonth, p75PsmPerMonth, refPeriod | rental | Quarterly rental price distribution |
How much does it cost to scrape URA property data?
This Actor makes lightweight SOAP calls, not browser rendering, so it's cheap to run on Apify's compute-unit pricing. A single project lookup (summary + full transaction + rental history) typically completes in a few seconds. Fetching a whole district (dozens to low hundreds of projects) or the full island-wide index (~3,200 projects) scales roughly linearly — use maxProjects and the default polite concurrency/requestDelayMs settings to keep runs predictable in both cost and load on URA's servers.
Tips
- Start with a
maxProjectscap when exploringdistrictsorcrawlAllmode. - Project names must match URA's own naming closely — check
data.gov.sg's URA Property Transaction dataset or the PMI app if a lookup returns nothing. - Keep
concurrencymodest (default 5) — this is a public government service, not a bulk API.
FAQ, disclaimers, and support
This Actor calls a public, unauthenticated web service used by URA's own PMI Mobile app to serve property market data to the public. It performs read-only queries and does not require credentials. Data accuracy and availability depend entirely on URA; this Actor does not modify, cache-poison, or resell URA data beyond what the source service already returns.
The bundled project name/street/district index is a static snapshot (dated 2014) used only to resolve which projects exist for district/island-wide browsing — all price, rental, and transaction data returned for each project is fetched live at run time. Very recently launched projects that are not yet in this static index may not surface via districts/crawlAll mode; use projectNames directly for those.
Found a bug or have a feature request? Use the Issues tab on this Actor's page.