Current Status: This platform currently operates on scraped listing data and parsed NAPIC public reports. Official NAPIC/KPKT live API integration is integration-ready — schema and ingest contracts are in place, pending formalisation of the institutional data partnership.

Data Sources

Source Data Type Update Frequency Last Updated Record Count Status
PropertyGuru Listing price, PSF, unit type, days on market Daily Live
iProperty Listing price, PSF, property type, location Daily Live
EdgeProp Developer news, new launches, project announcements 3× / week Live
NAPIC Public Reports Historical transaction prices, volume, overhang data Monthly (PDF) 2025-Q3 Partial
Google Trends Search interest for township / area keywords Weekly Live
NAPIC API (official) Transaction registry — full national coverage Real-time (pending) Integration-Ready
KPKT Development approval data Real-time (pending) Integration-Ready
JPPH Valuation benchmarks Real-time (pending) Integration-Ready
REHDA Developer supply pipeline data Monthly (pending) Integration-Ready

Demand Score Methodology

The Demand Score is a composite 0–100 index computed nightly. It aggregates four market signals into a single, readable indicator of demand intensity for each district and property type. A score above 70 signals strong demand conditions; below 35 indicates weak or oversupplied conditions.
demand_score = ( absorption_rate_score × 0.40 trends_score × 0.30 price_momentum_score × 0.20 supply_tightness_score × 0.10 ) Where: absorption_rate_score = normalise(absorption_rate, 0%, 20%) → 0–100 trends_score = Google Trends value for area keywords (already 0–100) price_momentum_score = normalise(price_trend_30d, −5%, +10%) → 0–100 supply_tightness_score = 100 − normalise(active_listings, 0, max_listings_in_dataset) → 0–100 normalise(v, min, max) = clamp((v − min) / (max − min) × 100, 0, 100)
Absorption rate is the primary driver (40% weight) — it measures the fraction of active inventory that is delisted each month (proxy for sold / leased). An absorption rate of 8% per month is considered healthy for the Malaysian market; above 12% indicates rapid take-up.

Google Trends (30% weight) serves as a leading indicator — search interest consistently leads physical transactions by 4–8 weeks in Malaysian property markets.

Price momentum (20%) uses the 30-day change in average asking PSF to capture sentiment drift.

Supply tightness (10%) is inversely proportional to active listing count relative to the maximum observed across all districts — a high count indicates oversupply risk.

PSF Calculation

Price per square foot (PSF) is calculated as asking_price / floor_area_sf where floor area is in square feet. All figures are in Malaysian Ringgit (MYR). Asking PSF from listings is distinct from transaction PSF from NAPIC data; both are shown where available. The spread between asking and transaction PSF is a useful negotiation signal.

Geographic Coverage

The MVP covers two primary corridors. Additional corridors can be added by extending the scraper configuration and seeding the relevant area data.

Johor (Iskandar Malaysia): Johor Bahru, Iskandar Puteri, Skudai, Kulai, Pasir Gudang
Klang Valley: Petaling Jaya, Subang Jaya, Cheras, Puchong, Shah Alam