Property Price Tracker
Loading…
◐
☀
☾
Asking median now
URA transacted median (real sales)
Price Trend — Median S$/sqft by Project
View as table
Date Project Listings Median $psf
Upcoming HDB BTO launches
Loading…
Manage Watchlist
Project 99.co slug Bedrooms
Max price Ground floor
Slug is auto-suggested from the project name (lowercased, spaces → hyphens) but always double-check it against the
real 99.co URL — https://www.99.co/singapore/sale/condos-apartments/the-jovell → slug is the-jovell —
since 99.co doesn't always slugify a name the obvious way. Project name must match how 99.co displays it (used to
reject unrelated "similar listings" cards). Click "Verify before saving" to scrape just this one project right now
and see how many real listings actually match your filters — catches a bad slug or a too-narrow filter immediately instead of
finding out a week later when the scheduled run silently returns nothing. Saved changes otherwise take
effect on the next weekly run (Sun, retried through the day), or trigger one now below to test the full watchlist immediately.
Listings are auto-collected weekly, routed per project to whichever source actually
covers it (see source in targets.json): condos via EdgeProp ,
HDB via 99.co . EdgeProp carries the condos well but lists no HDB resale at
all, and 99.co has been IP-blocked since mid-September — so the HDB target may go stale until
that clears. Collected into the tracked
Google Sheet ,
plus a daily snapshot for trend history. The scrape runs Sunday and is
attempted three times (08:15 / 13:15 / 18:15 SGT): 99.co blocks intermittently, and a
block that clears by lunchtime used to cost the whole week. Each attempt only retries targets that
haven't already landed that day, so on a normal week the later two do nothing at all. The weekly
WhatsApp summary is sent at 19:45, after the last attempt — early enough to be useful, late enough
not to call a week failed that a retry went on to rescue.
Upcoming HDB BTO launches come from HDB's own Flat Portal, refreshed daily, and a
WhatsApp goes out whenever a genuinely new project is announced. Only the next exercise can
be listed — HDB publishes no way to enumerate a full year, and past ballots can only be looked up
one project at a time. HDB also publishes no project names ahead of a launch, only town and flat
types, which is why two projects in the same town look identical here. Prices and unit counts stay
blank until an exercise actually opens, then fill in on their own.
Interpreting the signals: "First tracked today" means this listing has no
earlier snapshot in this tracker — not necessarily newly listed on 99.co. "Tracked" counts days
since we first saw the listing, i.e. a lower bound on how long it's been on the market, not the true listing age.
"Below asking median" compares against other currently-asking listings in the same project — asking prices run
above transacted prices, so also check the separate "Below/Above URA median" signal, which compares against real
transacted prices from URA's own caveat data (last 24 months). Below ~3 transactions in that window the
median is too noisy to tag off of, but the project tile still shows the raw count so you can judge for yourself.
Trend lines only cover the period since this tracker was deployed (2026-07-27) — there is no earlier history to backfill.
Lease left is estimated as (lease term − (current year − built year)); it assumes the lease started
at the built year, which is an approximation, not the actual land lease commencement date. Remaining lease under ~60 years
typically reduces bank loan tenure/quantum, and under ~30 years sharply restricts CPF usage — check with a bank/CPF Board for your exact eligibility.
Est. BSD is Buyer's Stamp Duty only (IRAS residential tiers, effective since 15 Feb 2023) — it excludes ABSD,
which depends on your citizenship/residency status and how many properties you already own.
Est. monthly* is a plain amortization estimate off the assumptions above, not a bank's actual TDSR/MSR-qualified offer.
The smaller +1%/+2% line is a stress test — what the same loan would cost if your rate rose that much after the assumption's rate expires, since a locked-in rate today isn't guaranteed for the full tenure.
Min. Cash (5%) is the one floor that applies to every buyer regardless of CPF balance — MAS requires at least 5% of the purchase
price in cash specifically. It is not a full "total cash to close" figure: the remaining 20% down payment and Est. BSD are frequently
payable via CPF Ordinary Account too, depending on your own OA balance — this tracker has no way to know that, so check with CPF Board/your bank.
Est. Gross Yield uses URA's own real, lodged median rental (last available quarter) against this listing's own asking $psf — it's
gross only, before property tax, maintenance, agent fees, or vacancy, and doesn't require matching unit sizes since $psf ratios cancel the area out.
A project's rental/transaction sample can be small for lower-volume projects — the reference quarter and $psf are shown so you can judge for yourself.
YoY (URA $psf) compares the median transacted $psf of the most recent 12 months against the 12 months before that, both from
URA's own lodged transaction records — a real historical price trend, not a projection of future appreciation. Only shown when both 12-month
windows have at least 3 transactions each; fewer than that and a single caveat can swing the whole result, so it's left blank rather than shown
as a misleadingly precise number.
"At a glance" is a plain-language rollup of the OTHER signals already on this row (URA/HDB median, price cut/increase, gross
yield, YoY trend, lease, market-relative trend, drawdown, MRT distance) into one read — not a new judgment of its own, and not a recommendation
to act. Every reason it's based on is listed directly underneath, so you can see exactly why and decide whether you'd weigh those factors the
same way. A delisted listing shows "n/a" rather than a score, since it's not actually available to act on.
vs market compares a project's own YoY $psf change against the matching broad-market index — URA's private price index
(segmented Core/Rest of/Outside Central Region, using URA's own classification for each project) for private condos, or HDB's overall resale
price index for HDB targets. A positive value means the project is outperforming its market, not just moving in absolute terms.
Worst dip is the largest historical peak-to-trough decline in the project's own quarterly median $psf (within the same cached
transaction window as the YoY figure) — the downside-risk counterpart to the appreciation trend, so "sound investment" isn't judged on upside
alone. Needs at least 4 distinct quarters of data to compute a real peak-then-recovery, not just a straight line.
MRT distance is straight-line distance to the nearest MRT/LRT station exit (via OneMap geocoding + LTA's station exit data) —
walking distance will be longer than this. New supply flags a residential Government Land Sales site awarded within the last 6
years and within 1km — new competing units still building or recently completed nearby, a forward risk to resale prices that a purely historical
chart can't show. Days on market is the median number of days a listing survived before disappearing from daily snapshots
(sold or delisted — no way to tell which apart); a listing only counts once it's been gone at least 10 days, so a scrape outage isn't
misread as a wave of sales. Similar projects you're not tracking surfaces other real projects in the same market segment,
cheapest $psf first, drawn from the same URA transaction data — options this tracker's own fixed watchlist would otherwise hide entirely.
None of this is financial advice.