// Adds dimensions UUID, Author and Topic into GA4
Thursday, December 11, 2025
27.2 C
Singapore

Condo resale prices rose 1% MoM despite fewer units sold in October

SINGAPORE: Condo resale prices rose 1% month-on-month (MoM) and 5.3% year-on-year (YoY) in October 2025, even as fewer units were sold, Singapore Business Review reported, citing a report from 99-SRX.

Property portal 99.co suggested that rising prices and moderating activity meant a market supported by strong demand but becoming more selective.

All regions recorded higher resale prices. Resale prices in the Core Central Region (CCR) rose 0.8%, the Rest of Central Region (RCR) climbed 2.3%, and the Outside Central Region (OCR) edged up 0.2%. Compared with a year earlier, prices in these three regions were up 3.6%, 6.2% and 5%, respectively.

Around 1,069 transactions were recorded in October, down 4.5% from the previous month and 4.7% lower than a year earlier, as well as 1.6% under the five-year average. Most deals were in the OCR at 47.7%, followed by the RCR at 29.4% and the CCR at 22.8%. Sub-sale activity picked up, rising to 6.4% from 5.1% in September.

See also  236 units resold for over a million as HDB resale prices rise 2.3% in Q2

The S$14.5 million unit at Nassim Lodge in the CCR was the month’s highest resale deal. Meanwhile, the highest October deals in the RCR and OCR were a S$5.15 million unit at Aalto and a S$3.58 million unit at Citylife@Tampines, respectively.

The overall median capital gain climbed to S$401,000, up S$42,000 from September. District 10, covering Tanglin, Holland, and Bukit Timah, saw the highest median capital gain of S$754,000, while District 1, including Boat Quay, Raffles Place, and Marina, recorded a median loss of S$54,000. /TISG

Read also: CBD office rents hit five-year high; premium office rents to keep rising through 2027: Savills

Featured image by Depositphotos (for illustration purposes only)

- Advertisement -

Hot this week

Popular Categories

document.addEventListener("DOMContentLoaded", () => { const trigger = document.getElementById("ads-trigger"); if ('IntersectionObserver' in window && trigger) { const observer = new IntersectionObserver((entries, observer) => { entries.forEach(entry => { if (entry.isIntersecting) { lazyLoader(); // You should define lazyLoader() elsewhere or inline here observer.unobserve(entry.target); // Run once } }); }, { rootMargin: '800px', threshold: 0.1 }); observer.observe(trigger); } else { // Fallback setTimeout(lazyLoader, 3000); } });
// //