Skip to content

The free IndexProp SG dataset

Everything on this site is a derived statistic over public sources, and the derivations are free to reuse. The sources are not all under the same licence, so this page states them separately rather than granting one permission over all four.

The current build holds 983,157 HDB resale registrations from January 1990 to July 2026, and 135,166 private sale caveats lodged between August 2021 and August 2026, across 55districts and 4,239 named roads that resolve to one of them by search. Every published figure uses a stated window inside those spans, never the whole of them, and the most recent month of each register is still filling.

The four registers

Figures from different registers are never averaged together. Each records a different event, over a different window, under a different licence.

  • HDB resale registrations: resale flats, 1990 to the present, from Data.gov.sg. Singapore Open Data Licence 1.0.
  • HDB renting-out approvals: approved subletting of whole flats, from Data.gov.sg. Singapore Open Data Licence 1.0.
  • URA private sale caveats: caveats lodged on private residential sales, rolling five years, from the URA Data Service. URA terms.
  • URA private lease contracts: rental contracts for private residential property, from the URA Data Service. URA terms.

The endpoints

No key, no rate card, no registration. Every file is UTF-8 JSON and immutable per build.

The source columns, and what this site does with them

The HDB resale register carries eleven columns, and every figure on this site traces to them:

  • month: the registration month. Sets the window every figure states, and the anchor the build is dated by.
  • town: HDB’s administrative town. Used as an alias layer for search; the page geography comes from the Master Plan boundaries instead.
  • flat_type: 1-room to Executive and Multi-generation. The unit of every headline, cut and yield match; figures are never blended across types without saying so.
  • block and street_name: the address grain HDB publishes. Blocks place transactions into the Master Plan polygons; street names resolve a search to the page that publishes the road’s figures.
  • storey_range: the floor band, for example 10 TO 12. The basis of the price-by-floor section.
  • floor_area_sqm: the flat’s area. The denominator of every price per square foot.
  • flat_model: HDB’s design classification. Kept in the data; used for tie-breaking and detail, not for headline cuts.
  • lease_commence_date and remaining_lease: the lease figures. The published remaining lease is used where it exists (2015 onwards); the commencement year covers the rows before it.
  • resale_price: the transacted price as registered. The numerator of everything.

The URA registers reach this site as derived statistics only, so their column detail matters mainly for what it forbids: sale caveats carry exact floor areas (strata) and are the basis of the private rates, while lease contracts report floor area as a band, which is why no rental rate is ever computed here from contract data and URA’s own published rate is quoted instead.

The original sources

If you want the raw HDB transactions rather than these aggregates, go straight to the source: HDB Resale Flat Prices on Data.gov.sg, five datasets covering 1990 to the present, with a bulk CSV download and a REST API. The private data comes from the URA Property Market Information service, which requires a free access key and serves caveats and lease contracts directly.

Licence and attribution

The two HDB registers are published under the Singapore Open Data Licence version 1.0, which permits use, modification and redistribution including commercially, with attribution. What IndexProp SG derives from them carries the same terms.

The two URA registers are different, and the difference is worth reading before you reuse anything. URA’s terms permit publication of derived statistics (medians, counts, rates, ranges), which is what this site publishes and what the JSON endpoints contain. They do not permit redistribution of the underlying caveats and lease contracts, so those records are not published here in any form, and the derived figures should be attributed to the URA Data Service rather than presented as open data.

The geography is a third case. Where a street sits, and where a block sits, is worked out from OpenStreetMap road centrelines and addressed buildings, combined with URA Master Plan 2019 boundaries and HDB building data from Data.gov.sg. OpenStreetMap is published under the Open Database Licence 1.0, which is a share-alike licence.

Two things here are derived from it closely enough that IndexProp SG treats them as derivative databases and offers them under ODbL 1.0 as well, rather than asking anyone to work out whether they qualify: the street-to-area lookup that resolves a road name to the page publishing its figures, and the street rows inside the search index at /data/search-index.json. Reuse either with attribution to OpenStreetMap contributors and share your own derivations on the same terms. The price statistics are not affected by this: they come from the HDB and URA registers, and their licences are the two paragraphs above.

A citation you can paste

Plain text

IndexProp SG, "HDB and private property prices in Singapore", dataset version 2026-07,
https://indexprop.com/sg. Contains information from the HDB Resale Flat Prices and
Renting Out of Flats datasets accessed from Data.gov.sg and made available under
the Singapore Open Data Licence version 1.0, and derived statistics from the
Urban Redevelopment Authority Data Service.