Semua kajian kesProperty / Public Data

Making Malaysia's property data actually usable

The problem

Malaysia's Department of Valuation and Property Services (JPPH) collects detailed records of every property transaction in the country: prices, sizes, locations, tenure types, floor levels. It's arguably the most valuable dataset for anyone buying or selling property in Malaysia.

But there's no public interface. The raw data is locked in massive, messy CSV files. Half a million rows, UTF-16 encoded, tab-separated, riddled with inconsistencies. Unless you know how to wrangle data at scale, this information is effectively invisible.

Property buyers are left guessing. Agents quote prices with no verifiable benchmark. And an entire market operates with less transparency than it should.

What we built

We built JPPH Price Tool, a free, public web app that turns JPPH's raw transaction data into something anyone can use. No spreadsheet skills required.

Data pipeline

The raw JPPH data is a 131MB CSV file: UTF-16 encoded, tab-separated, with nearly half a million rows of property transactions from across Malaysia. We built a Python ETL pipeline that reads the source file, normalises the data, computes price-per-square-foot for every transaction, and loads the results into a hosted database.

Searchable interface

The main feature is search. Type a development name (say "The Westside" or "Sri Penara") and get instant results ranked by transaction volume. Each result shows the district, mukim, property type, transaction count, median price, and median PSF. No login, no paywall.

Scheme detail pages

Click into any of the 28,500+ developments and you get the full picture: median price, median PSF, price range, transaction count, and an interactive price trend chart over time. Every individual transaction is listed in a sortable table: date, price, size, PSF, floor level, tenure.

District exploration

Browse by district to see how different areas compare. Each district page breaks down property types, shows the top schemes by volume, and charts yearly transaction trends.

Side-by-side comparison

Compare up to three developments on a single page, overlaying monthly median price trends and key stats. Useful for narrowing down between similar condos or landed properties.

Fair price estimator

Enter a development name and unit size, and the tool estimates a fair transaction price based on comparable sales. It filters recent transactions within a ±20% size range (and optionally ±3 floor levels), then calculates the median PSF from those comparables. The more data points it finds, the higher the confidence level.

How it works under the hood

The frontend is a React app built with Vite and styled with Tailwind CSS. Charts use Recharts. The backend runs on Vercel Serverless Functions, querying a Turso database (hosted SQLite) with aggressive caching. One-hour TTL for stats, one-minute TTL for search results.

The data processing pipeline is Python, handling the ETL from raw CSV to structured JSON to database import. Area measurements are standardised from square metres to square feet, and all PSF calculations are derived at import time so the frontend never has to compute them.

The results

  • 481,478 property transactions across all of Malaysia, from January 2021 to September 2025
  • 28,541 developments searchable with instant results
  • 130 districts and 1,395 mukims with detailed breakdowns by property type and yearly volume
  • 25 property types from low-cost flats to detached homes to commercial lots
  • Free and open. No login, no paywall, no restrictions

Have a dataset that's trapped in spreadsheets or legacy systems? Get in touch. We can help make it useful.