fbpx

Where to buy real estate in 2020: Durham, Ont.


.WB18 {
box-sizing: border-box
}

.WB18 * {
box-sizing: inherit
}

.WB18 a {
transition-property: background-color, color;
transition-duration: .2s
}

.grid {
display: block
}

.grid>div {
float: left
}

.grid {
display: flex;
flex-direction: column
}

.hack {
display: flex;
/* stop gap below image */
}

@media (min-width:768px) {
.grid {
flex-direction: row
}

.grid>* {
padding-left: 1em;
padding-right: 1em;
flex-grow: 1
}

.grid>:first-child {
margin-left: 0
}

.grid>:last-child {
margin-right: 0
}

.block {
width: 100%
}
}

.font__display–proxima {
font-family: proxima-nova, “Helvetica Neue”, Helvetica, Arial, sans-serif;
font-family: “Work Sans”, sans-serif;
}

.font__display–jubilat {
font-family: jubilat, Georgia, serif;
font-family: “Work Sans”, sans-serif;
}

.WB18 h1,
.WB18 h2,
.WB18 h3,
.WB18 h4,
.WB18 h5,
.WB18 h6 {
font-family: proxima-nova, “Helvetica Neue”, Helvetica, Arial, sans-serif;
font-family: “Work Sans”, sans-serif;
font-weight: 900
}

.WB18__header–wrap {
margin-bottom: 2em
}

.WB18__header {
display: block;
/* padding: 1em; */
/* text-align: center; */
text-align: right;
/* background-color: #235e63; */
background-color: #91c1c5;
color: #fff;
background-position: center center;
font-family: jubilat, Georgia, serif;
font-family: “Work Sans”, sans-serif;
cursor: pointer;
}

.WB18__header img {
width: 100%;
height: auto;
margin-top: -2.4em; /*offset the year*/
}

.WB18__header span {
display: inline-block;
color: #91c1c6;
transition-property: color;
transition-duration: .2s
}

.WB18__header span.to-animate {
animation-name: tada;
animation-duration: .9s;
animation-delay: 1s
}

.WB18__header:hover span {
color: #dc143c;
color: white;
}

.WB18__header:hover span.label__year {
color: #444
}

@media (min-width:768px) {
.WB18__header {
/* padding: 1em 2em */
}
}

.WB18__headline,
.single-post article h1.WB18__headline {
color: #fff
}

.WB18__header .label__year {
position: relative;
top: -1.4em; /*mobile*/
right: 0em;

line-height: 1em;
padding: .3em .8em .2em;
background-color: #e5eff6;
color: #163335;
font-weight: 900;
box-shadow: 2px 2px 6px rgba(0, 0, 0, .5);
border-radius: 20%/50%
}

@media (min-width:768px) {
.WB18__header .label__year {
font-size: 1.4em;

top: 0.2em; /*desktop*/
right: -2em;

}
}

.WB18__nav {
display: flex;
flex-wrap: wrap;
flex-direction: column;
margin: 0;
background-color: #91c1c5;
}

@media (min-width:768px) {
.WB18__nav {
flex-direction: row;
justify-content: space-between
}

.WB18__nav a,
.WB18__nav button {
flex-grow: 1
}
}

.WB18__nav a,
.WB18__nav button {
padding: 1rem 1.5rem;
border: 0;
/* text-align: left; */
text-align: center;
background-color: #91c1c5;
/* color: #91c1c6; */
color: #163335 !important;
/* font-family: proxima-nova, “Helvetica Neue”, Helvetica, Arial, sans-serif */
font-family: “Work Sans”, sans-serif;
text-decoration: none !important;
}

#WB18__nav–toggler.active,
.WB18__nav a:hover,
.WB18__nav button:hover {
background-color: #1e90ff;
background-color: #235e63;
color: #fff !important;
font-weight: bold;
}

.WB18__nav–home {
order: 1
}

.WB18__nav–top35 {
order: 2
}

.WB18__nav–overview {
order: 3
}

#WB18__nav–toggler {
order: 4
}

.WB18__nav button {
outline: 0
}

.WB18__nav #WB18__nav–toggler {
position: relative;
z-index: 20;
color: #235e63;
}

.WB18__nav #WB18__nav–toggler::after {
display: inline-block;
padding: 0 1rem;
content: ‘ 025BE’;
transition-property: transform;
transition-duration: .2s
}

.WB18__nav #WB18__nav–toggler.active::after {
content: ‘ 025BE’;
transform: rotate(180deg)
}

.WB18__nav–citylist {
position: absolute;
display: flex;
width: 100%;
z-index: 10;
flex-direction: column;
transform: translateX(-999em);
box-shadow: 0 6px 4px rgba(0, 0, 0, .5)
}

.WB18__nav–citylist.active {
transform: translateX(0);
z-index: 20
}

.WB18__nav–citylist a {
background-color: #163335;
color: #91c1c5;
color: white !important;
}

.WB18__nav–citylist a:hover {
background-color: #444;
/* color: #91c1c5; */
color: white;
background-color: #235e63;
}

@media (min-width:768px) {
.WB18__nav–home {
order: 2
}

.WB18__nav–top35 {
order: 3
}

.WB18__nav–overview {
order: 4
}

#WB18__nav–toggler {
order: 1
}
}

@keyframes tada {
from {
-webkit-transform: scale3d(1, 1, 1);
transform: scale3d(1, 1, 1)
}

10%,
20% {
-webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg)
}

30%,
50%,
70%,
90% {
-webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg)
}

40%,
60%,
80% {
-webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg)
}

to {
-webkit-transform: scale3d(1, 1, 1);
transform: scale3d(1, 1, 1)
}
}

2020

<!–

Where to Buy Real Estate Now

–>
Where to Buy Real Estate

!function (e, t) { “object” == typeof exports && “object” == typeof module ? module.exports = t() : “function” == typeof define && define.amd ? define([], t) : “object” == typeof exports ? exports.inView = t() : e.inView = t() }(this, function () { return function (e) { function t(i) { if (n[i]) return n[i].exports; var r = n[i] = { exports: {}, id: i, loaded: !1 }; return e[i].call(r.exports, r, r.exports, t), r.loaded = !0, r.exports } var n = {}; return t.m = e, t.c = n, t.p = “”, t(0) }([function (e, t, n) { “use strict”; function i(e) { return e && e.__esModule ? e : { default: e } } var r = n(2), o = i(r); e.exports = o.default }, function (e, t) { function n(e) { var t = typeof e; return null != e && (“object” == t || “function” == t) } e.exports = n }, function (e, t, n) { “use strict”; function i(e) { return e && e.__esModule ? e : { default: e } } Object.defineProperty(t, “__esModule”, { value: !0 }); var r = n(9), o = i(r), u = n(3), f = i(u), c = n(4), s = function () { if (“undefined” != typeof window) { var e = 100, t = [“scroll”, “resize”, “load”], n = { history: [] }, i = { offset: {}, threshold: 0, test: c.inViewport }, r = (0, o.default)(function () { n.history.forEach(function (e) { n[e].check() }) }, e); t.forEach(function (e) { return addEventListener(e, r) }), window.MutationObserver && addEventListener(“DOMContentLoaded”, function () { new MutationObserver(r).observe(document.body, { attributes: !0, childList: !0, subtree: !0 }) }); var u = function (e) { if (“string” == typeof e) { var t = [].slice.call(document.querySelectorAll(e)); return n.history.indexOf(e) > -1 ? n[e].elements = t : (n[e] = (0, f.default)(t, i), n.history.push(e)), n[e] } }; return u.offset = function (e) { if (void 0 === e) return i.offset; var t = function (e) { return “number” == typeof e }; return [“top”, “right”, “bottom”, “left”].forEach(t(e) ? function (t) { return i.offset[t] = e } : function (n) { return t(e[n]) ? i.offset[n] = e[n] : null }), i.offset }, u.threshold = function (e) { return “number” == typeof e && e >= 0 && e <= 1 ? i.threshold = e : i.threshold }, u.test = function (e) { return "function" == typeof e ? i.test = e : i.test }, u.is = function (e) { return i.test(e, i) }, u.offset(0), u } }; t.default = s() }, function (e, t) { "use strict"; function n(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } Object.defineProperty(t, "__esModule", { value: !0 }); var i = function () { function e(e, t) { for (var n = 0; n -1, o = n && !r, u = !n && r; o && (e.current.push(t), e.emit(“enter”, t)), u && (e.current.splice(i, 1), e.emit(“exit”, t)) }), this } }, { key: “on”, value: function (e, t) { return this.handlers[e].push(t), this } }, { key: “once”, value: function (e, t) { return this.singles[e].unshift(t), this } }, { key: “emit”, value: function (e, t) { for (; this.singles[e].length;)this.singles[e].pop()(t); for (var n = this.handlers[e].length; –n > -1;)this.handlers[e][n](t); return this } }]), e }(); t.default = function (e, t) { return new r(e, t) } }, function (e, t) { “use strict”; function n(e, t) { var n = e.getBoundingClientRect(), i = n.top, r = n.right, o = n.bottom, u = n.left, f = n.width, c = n.height, s = { t: o, r: window.innerWidth – u, b: window.innerHeight – i, l: r }, a = { x: t.threshold * f, y: t.threshold * c }; return s.t > t.offset.top + a.y && s.r > t.offset.right + a.x && s.b > t.offset.bottom + a.y && s.l > t.offset.left + a.x } Object.defineProperty(t, “__esModule”, { value: !0 }), t.inViewport = n }, function (e, t) { (function (t) { var n = “object” == typeof t && t && t.Object === Object && t; e.exports = n }).call(t, function () { return this }()) }, function (e, t, n) { var i = n(5), r = “object” == typeof self && self && self.Object === Object && self, o = i || r || Function(“return this”)(); e.exports = o }, function (e, t, n) { function i(e, t, n) { function i(t) { var n = b, i = g; return b = g = void 0, T = t, x = e.apply(i, n) } function a(e) { return T = e, O = setTimeout(p, t), E ? i(e) : x } function l(e) { var n = e – S, i = e – T, r = t – n; return L ? s(r, w – i) : r } function d(e) { var n = e – S, i = e – T; return void 0 === S || n >= t || n = w } function p() { var e = o(); return d(e) ? h(e) : void (O = setTimeout(p, l(e))) } function h(e) { return O = void 0, _ && b ? i(e) : (b = g = void 0, x) } function v() { void 0 !== O && clearTimeout(O), T = 0, b = S = g = O = void 0 } function y() { return void 0 === O ? x : h(o()) } function m() { var e = o(), n = d(e); if (b = arguments, g = this, S = e, n) { if (void 0 === O) return a(S); if (L) return O = setTimeout(p, t), i(S) } return void 0 === O && (O = setTimeout(p, t)), x } var b, g, w, x, O, S, T = 0, E = !1, L = !1, _ = !0; if (“function” != typeof e) throw new TypeError(f); return t = u(t) || 0, r(n) && (E = !!n.leading, L = “maxWait” in n, w = L ? c(u(n.maxWait) || 0, t) : w, _ = “trailing” in n ? !!n.trailing : _), m.cancel = v, m.flush = y, m } var r = n(1), o = n(8), u = n(10), f = “Expected a function”, c = Math.max, s = Math.min; e.exports = i }, function (e, t, n) { var i = n(6), r = function () { return i.Date.now() }; e.exports = r }, function (e, t, n) { function i(e, t, n) { var i = !0, f = !0; if (“function” != typeof e) throw new TypeError(u); return o(n) && (i = “leading” in n ? !!n.leading : i, f = “trailing” in n ? !!n.trailing : f), r(e, t, { leading: i, maxWait: t, trailing: f }) } var r = n(7), o = n(1), u = “Expected a function”; e.exports = i }, function (e, t) { function n(e) { return e } e.exports = n }]) }), !function (e, t) { if (“function” == typeof define && define.amd) define([“module”, “exports”], t); else if (“undefined” != typeof exports) t(module, exports); else { var n = { exports: {} }; t(n, n.exports), e.fitty = n.exports } }(this, function (e, t) { “use strict”; Object.defineProperty(t, “__esModule”, { value: !0 }); var n = Object.assign || function (e) { for (var t = 1; t 1 && void 0 !== arguments[1] ? arguments[1] : {}; return “string” == typeof e ? t(r(document.querySelectorAll(e)), n) : t([e], n)[0] } if (e) { var r = function (e) { return [].slice.call(e) }, o = { IDLE: 0, DIRTY_CONTENT: 1, DIRTY_LAYOUT: 2, DIRTY: 3 }, u = [], f = null, c = “requestAnimationFrame” in e ? function () { e.cancelAnimationFrame(f), f = e.requestAnimationFrame(function () { a(u.filter(function (e) { return e.dirty })) }) } : function () { }, s = function (e) { return function () { u.forEach(function (t) { t.dirty = e }), c() } }, a = function (e) { e.filter(function (e) { return !e.styleComputed }).forEach(function (e) { e.styleComputed = p(e) }), e.filter(h).forEach(y), e.filter(d).forEach(l), e.forEach(v), e.forEach(m) }, l = function (e) { e.availableWidth = e.element.parentNode.clientWidth, e.currentWidth = e.element.scrollWidth, e.previousFontSize = e.currentFontSize, e.currentFontSize = Math.min(Math.max(e.minSize, e.availableWidth / e.currentWidth * e.previousFontSize), e.maxSize), e.whiteSpace = e.multiLine && e.currentFontSize === e.minSize ? “normal” : “nowrap” }, d = function (e) { return e.dirty !== o.DIRTY_LAYOUT || e.dirty === o.DIRTY_LAYOUT && e.element.parentNode.clientWidth !== e.availableWidth }, p = function (t) { var n = e.getComputedStyle(t.element, null); t.currentFontSize = parseInt(n.getPropertyValue(“font-size”), 10), t.display = n.getPropertyValue(“display”), t.whiteSpace = n.getPropertyValue(“white-space”) }, h = function (e) { var t = !1; return /inline-/.test(e.display) || (t = !0, e.display = “inline-block”), “nowrap” !== e.whiteSpace && (t = !0, e.whiteSpace = “nowrap”), t }, v = function (e) { y(e), e.dirty = o.IDLE }, y = function (e) { e.originalStyle || (e.originalStyle = e.element.getAttribute(“style”) || “”), e.element.style.cssText = e.originalStyle + “;white-space:” + e.whiteSpace + “;display:” + e.display + “;font-size:” + e.currentFontSize + “px” }, m = function (e) { e.element.dispatchEvent(new CustomEvent(“fit”, { detail: { oldValue: e.previousFontSize, newValue: e.currentFontSize, scaleFactor: e.currentFontSize / e.previousFontSize } })) }, b = function (e, t) { return function () { e.dirty = t, c() } }, g = function (e) { e.newbie = !0, e.dirty = !0, u.push(e) }, w = function (e) { return function () { u = u.filter(function (t) { return t.element !== e.element }), e.observeMutations && e.observer.disconnect(), e.element.style.cssText = e.originalStyle } }, x = function (e) { e.observeMutations && (e.observer = new MutationObserver(b(e, o.DIRTY_CONTENT)), e.observer.observe(e.element, e.observeMutations)) }, O = { subtree: !0, childList: !0, characterData: !0 }, S = { minSize: 16, maxSize: 512, multiLine: !0, observeMutations: “MutationObserver” in e && O }, T = null, E = function () { e.clearTimeout(T), T = e.setTimeout(s(o.DIRTY_LAYOUT), i.observeWindowDelay) }, L = [“resize”, “orientationchange”]; return Object.defineProperty(i, “observeWindow”, { set: function (t) { var n = (t ? “add” : “remove”) + “EventListener”; L.forEach(function (t) { e[n](t, E) }) } }), i.observeWindow = !0, i.observeWindowDelay = 100, i.fitAll = s(o.DIRTY), i } }(“undefined” == typeof window ? null : window), e.exports = t.default }), fitty(“.fit”), inView(“.fit”).on(“enter”, function () { fitty(“.fit”) }), function (e) { function t() { e.cityListOpen === !1 ? e.cityListOpen = !0 : e.cityListOpen = !1, e.toggler.classList.toggle(“active”), e.submenu.classList.toggle(“active”) } e.cityListOpen = !1, e.toggler = document.querySelector(“#WB18__nav–toggler”), e.submenu = document.querySelector(“.WB18__nav–citylist”), toggler.addEventListener(“click”, t), e.addEventListener(“keyup”, function (n) { 27 === n.keyCode && e.cityListOpen === !0 && t() }) }(this)

table.city-ranking {
font-family: proxima-nova, Helvetica, Arial, sans-serif
}

table.city-ranking tr td {
font-size: .9em
}

table.city-ranking tr>td:nth-of-type(13) {
color: orange
}

.footable-details td,
.footable-details th,
table.city-ranking tr>td:last-of-type table.footable-details td:last-of-type {
color: #333
}

table.city-ranking th.bar {
width: 100px
}

table.city-ranking span.bar {
display: inline-block;
position: relative;
z-index: 10;
height: 2rem;
width: 100%
}

span.bar>span.bar-inner {
display: block;
height: 2rem;
z-index: 11;
font-size: 1rem;
line-height: 2rem;
padding-left: .5rem;
color: #fff;
font-weight: 900
}

span.bar.value {
background-color: #afeeee
}

span.bar.momentum {
background-color: salmon
}

span.bar.value>span.bar-inner {
background-color: #1e90ff
}

span.bar.momentum>span.bar-inner {
background-color: #dc143c
}

.WB18__legend {
margin: 1em 0;
padding: 1em 1em 6px;
font-size: 1.4rem;
border: solid 1px #ddd;
font-family: proxima-nova, Helvetica, Arial, sans-serif
}

.WB18__legend dt {
font-weight: bold;
}

.WB18__legend p.WB18__legend–explanatory {
font-size: 1.4rem
}

.WB18__legend .hide-on-mobile {
display: none
}

.WB18__legend .hide-on-desktop {
display: inline
}

@media (min-width:768px) {
.WB18__legend .hide-on-mobile {
display: inline
}

.WB18__legend .hide-on-desktop {
display: none
}
}

table.footable-details tbody tr th {
padding: 9px 10px
}

ClickTap column headings to re-rank
cities. ClickTap on any
city name to learn more about it. Search by city or province to filter results.

Rank Area Province Neighbourhood Area average price 2019 Value Momentum Average price vs. area Average price vs. metro
district
Average price vs. greater
city area
1-Year price change 5-Year price change Final star rating
1 Whitby ON Pringle Creek $633,990 64.31 96.81 142.6% 155.1% 71.3% 53.3% 96.9% ★★★★★
2 Whitby ON Port Whitby $633,990 71.76 99.14 190.5% 207.1% 95.2% 69.8% 99.0% ★★★
3 Uxbridge ON Uxbridge $531,426 72.56 97.48 225.6% 205.6% 94.5% 56.4% 99.2% ★★★
4 Scugog ON Port Perry $555,255 53.05 82.37 122.6% 116.8% 53.7% 30.5% 44.9% ★★★★★
5 Whitby ON Downtown Whitby $633,990 66.19 99.22 148.8% 161.8% 74.4% 84.7% 99.5% ★★★
6 Clarington ON Courtice $520,049 49.31 89.61 119.7% 106.8% 49.1% 23.8% 92.1% ★★★★★
7 Whitby ON Brooklin $633,990 57.76 54.75 126.4% 137.5% 63.2% 3.7% 56.2% ★★★★
8 Pickering ON Village East $735,722 42.43 80.36 98.0% 123.7% 56.9% 13.7% 90.8% ★★★★
9 Whitby ON Williamsburg $633,990 49.25 54.41 108.8% 118.3% 54.4% 7.5% 63.6% ★★★★
10 Ajax ON South West $662,883 46.98 77.96 105.0% 119.4% 54.9% 21.8% 66.4% ★★★
11 Scugog ON Blackstock $555,255 53.72 84.15 123.9% 118.0% 54.3% 19.5% 61.8% ★★
12 Pickering ON Rosebank $735,722 69.70 58.82 154.2% 194.6% 89.4% 2.6% 51.5% ★★
13 Pickering ON Bay Ridges $735,722 32.59 58.57 86.1% 108.6% 49.9% 5.3% 64.6% ★★★★
14 Whitby ON Rolling Acres $633,990 49.99 55.20 109.9% 119.5% 54.9% 0.5% 86.2% ★★★★
15 Clarington ON Rural Clarington $520,049 64.38 69.40 160.7% 143.3% 65.9% 6.6% 91.3% ★★
16 Oshawa ON Rural Oshawa $491,044 71.27 73.66 220.3% 185.6% 85.3% 35.9% 16.9% ★★
17 Clarington ON Bowmanville $520,049 20.65 64.40 97.3% 86.8% 39.9% 6.6% 79.0% ★★★★★
18 Ajax ON Central West $662,883 46.77 55.70 104.7% 119.1% 54.7% 8.1% 54.9% ★★★
19 Oshawa ON McLaughlin $491,044 29.73 83.98 108.0% 91.0% 41.8% 20.0% 89.7% ★★★
20 Ajax ON Central East $662,883 44.77 50.74 102.6% 116.6% 53.6% 5.3% 69.5% ★★★
21 Pickering ON Rougemount $735,722 62.57 32.25 128.9% 162.7% 74.8% -3.0% 34.9% ★★★★★
22 Pickering ON Duffin Heights $735,722 43.87 39.71 99.0% 124.9% 57.4% 7.1% 29.2% ★★★★★
23 Clarington ON Newcastle $520,049 24.09 74.94 100.1% 89.3% 41.0% 17.1% 79.7% ★★★★
24 Ajax ON Central $662,883 38.79 65.95 97.2% 110.5% 50.8% 6.1% 67.2% ★★★
25 Pickering ON West Shore $735,722 39.83 60.54 95.3% 120.3% 55.3% 13.4% 38.2% ★★★★
26 Pickering ON Rural Pickering $735,722 67.55 45.19 144.3% 182.0% 83.7% 2.9% 44.6% ★★
27 Ajax ON Northwest Ajax $662,883 50.80 47.30 109.8% 124.8% 57.4% 3.8% 46.9% ★★★
28 Uxbridge ON Rural Uxbridge $531,426 69.87 51.33 195.6% 178.3% 82.0% 11.1% 37.2% ★★
29 Pickering ON Highbush $735,722 53.91 39.03 110.4% 139.3% 64.0% 5.5% 40.5% ★★★★
30 Ajax ON Northeast Ajax $662,883 49.32 50.98 107.4% 122.2% 56.2% 5.4% 46.7% ★★★
31 Oshawa ON Taunton $491,044 52.27 44.76 129.3% 108.9% 50.0% 4.6% 66.2% ★★★★
32 Ajax ON South East $662,883 35.65 54.42 94.5% 107.5% 49.4% 10.4% 52.8% ★★★
33 Whitby ON Lynde Creek $633,990 38.77 62.46 98.3% 106.9% 49.2% 9.1% 66.9% ★★★★
34 Pickering ON Liverpool $735,722 38.18 52.27 93.3% 117.7% 54.1% 6.4% 52.6% ★★★★
35 Whitby ON Rural Whitby $633,990 70.20 49.43 174.2% 189.4% 87.1% 3.3% 7.4% ★★
36 Oshawa ON Windfields $491,044 53.61 37.28 131.6% 110.8% 51.0% -7.6% 57.9% ★★★
37 Brock ON Sunderland $491,448 48.11 60.27 118.9% 100.3% 46.1% 0.5% 88.7% ★★
38 Brock ON Rural Brock $491,448 55.39 59.78 135.4% 114.2% 52.5% -4.3% 89.0% ★★
39 Whitby ON Blue Grass Meadows $633,990 47.07 47.27 106.1% 115.4% 53.0% -2.6% 62.8% ★★★
40 Pickering ON Amberlea $735,722 44.31 58.80 99.3% 125.2% 57.6% 8.8% 58.2% ★★
41 Pickering ON Woodlands $735,722 55.44 23.77 113.1% 142.7% 65.6% -24.9% 23.6% ★★★
42 Pickering ON Dunbarton $735,722 67.70 41.27 144.9% 182.8% 84.0% 1.5% 25.1% ★★
43 Brock ON Beaverton $491,448 12.17 52.36 91.6% 77.2% 35.5% 2.3% 74.6% ★★★★
44 Pickering ON Brock Ridge $735,722 49.13 48.62 104.6% 132.0% 60.7% -1.6% 60.8% ★★★
45 Brock ON Cannington $491,448 19.91 83.33 97.7% 82.3% 37.8% 15.0% 93.1% ★★
46 Oshawa ON Kedron $491,044 59.92 38.53 148.4% 125.0% 57.5% -4.1% 31.3% ★★
47 Oshawa ON Donevan $491,044 13.98 68.36 94.4% 79.5% 36.6% 11.4% 82.6% ★★★
48 Oshawa ON Pinecrest $491,044 27.49 56.30 105.5% 88.9% 40.9% 6.6% 62.6% ★★★
49 Oshawa ON Vanier $491,044 8.05 72.46 84.4% 71.1% 32.7% 15.0% 84.4% ★★
50 Oshawa ON Northglen $491,044 51.08 45.72 127.2% 107.1% 49.2% 3.0% 47.9% ★★
51 Whitby ON Taunton North $633,990 55.11 43.43 119.4% 129.9% 59.7% -2.4% 55.1% ★★
52 Oshawa ON O’Neill $491,044 10.75 75.51 90.1% 75.9% 34.9% 15.9% 86.7% ★★
53 Oshawa ON Eastdale $491,044 23.54 59.97 101.9% 85.8% 39.5% 6.6% 69.7% ★★
54 Oshawa ON Lakeview $491,044 8.83 68.71 85.8% 72.3% 33.2% 11.1% 85.9% ★★
55 Oshawa ON Samac $491,044 24.73 54.68 102.5% 86.4% 39.7% 5.1% 62.1% ★★
56 Pickering ON Rouge Park $735,722 54.06 27.81 110.4% 139.4% 64.1% -5.5% 12.1% ★★
57 Oshawa ON Central $491,044 6.65 60.66 80.9% 68.1% 31.3% 2.1% 75.6% ★★★
58 Clarington ON Orono $520,049 10.65 73.06 87.3% 77.9% 35.8% 20.7% 75.4% ★★
59 Scugog ON Rural Scugog $555,255 48.27 46.61 113.6% 108.2% 49.7% -0.8% 54.1% ★★
60 Oshawa ON Centennial $491,044 32.26 49.69 111.8% 94.1% 43.3% -1.0% 60.0% ★★
61 Oshawa ON Farewell $491,044 10.05 44.80 87.6% 73.8% 33.9% -10.1% 70.0% ★★★
62 Whitby ON Whitby Industrial $633,990 59.90 0 131.2% 142.6% 65.6% 0 0.0% ★★
63 Pickering ON Town Centre $735,722 (22.35) 0 0.0% 0.0% 0.0% 0 0.0% ★★★★
64 Oshawa ON Columbus $491,044 (22.35) 0.21 0.0% 0.0% 0.0% -100.0% 0.0% ★★
65 Oshawa ON Northwood $491,044 (22.35) 0.06 0.0% 0.0% 0.0% 0 0.0% ★★
66 Oshawa ON Raglan $491,044 (22.35) 0.11 0.0% 0.0% 0.0% -100.0% 0.0% ★★
67 Oshawa ON Stevenson $491,044 (22.35) 0 0.0% 0.0% 0.0% 0 0.0% ★★

Value
Measures how affordable the neighbourhood is compared to the surrounding area and the region overall
Momentum
Measures how quickly prices are appreciating in this neighbourhood, with an emphasis on long term
appreciation

<!–

Realtor Grade

–>
<!–

How realtors we surveyed rate this neighbourhood

–>

For more, please see our complete
methodology

function displayAsPercent(value, options, rowData) {
if (value === null) {
return ‘N.A.’;
}
return value.toLocaleString(‘en-CA’) + ‘%’;
}
function displayAsDollar(value, options, rowData) {
if (value === null) {
return ‘N.A.’;
}
return ‘$’ + value.toLocaleString(‘en-CA’);
}
function barValue(value, options, rowData) {
return ‘‘ + value.toLocaleString(‘en-CA’, { minimumFractionDigits: 0, maximumFractionDigits: 0 }) + ‘%‘;
}
function barMomentum(value, options, rowData) {
return ‘‘ + value.toLocaleString(‘en-CA’, { minimumFractionDigits: 0, maximumFractionDigits: 0 }) + ‘%‘;
}
jQuery(document).ready(function () {
jQuery(‘#cityRanking-ik2u3’).footable();
});

Durham’s top three neighbourhoods to buy in 2020:

1. Pringle Creek, Whitby

The top spot goes to the Durham community of Pringle Creek (which is also our No. 1 pick for the Greater Toronto Area this year). Talk to local realtors, and they’ll tell you that this neighbourhood has been a long-sought-after Whitby community. Located south of Taunton Road (and all its commercial and retail amenities) and minutes north of Dundas Street West, the area is centred around Pringle Creek Park.  

Residents of Pringle Creek won’t be surprised that their neighbourhood is so highly ranked. This community is well-established with great access to commercial stores and restaurants, but with enough of a buffer to provide a tranquil spot for residents to enjoy green space within their own neighbourhood. Better still, the community is about five to 10 minutes away from downtown Whitby, giving it a generous boost of civic pride whenever the city hosts local events. 

Buyers will find a great mix of new-builds and resale homes, most of which were built between 1981 and 2000. Houses in this area range in style from modern or contemporary to solid two-storey suburban family homes to sprawling ranchers. About 11% to 15% of Pringle Creek’s residents are tenants, according to Statistics Canada data—a decent share for any buyer looking to purchase a home with a mortgage-payment helping rental suite. 

Prior to the pandemic and market slowdown, homes typically sold within 10 days in Pringle Creek.

Average Single-Family Home Price (2019): $904,076

2. Port Whitby, Whitby

With a border on the shore of Lake Ontario, this Whitby neighbourhood stretches from Highway 401, to the north down to the lake in the south. The western boundary runs along the Whitby Harbour up the southern part of the Iroquois Park eastern border.  

Years ago, this community served as a commercial and light industrial area for businesses that supported the marina. Eventually, other businesses moved into the area, attracted to the larger commercial spaces. But with skyrocketing residential home prices in the GTA, the homes in this area eventually became a good value. As a result, the community is now largely populated by young families and those looking for great starter homes that are priced, on average, slightly less than the Greater Toronto Area average of $1.27-million.

Potential buyers will like the quiet, family-friendly neighbourhoods, most of which are located in the southern part of the community, near the lake, and the northeastern part of the community, close to the Sports Complex (which is located in Iroquois Park). Despite a larger presence of retail space, the incredible draw of this neighbourhood is the significant amount of green space and easy access to waterfront space.  

Prior to the market slowdown, due to the pandemic, homes typically sold within 14 days in Port Whitby.

Average Single-Family Home Price (2019): $1,207,597


Compare mortgage rates on Ratehub.ca* »


3. Uxbridge

Located in the Durham Region, the Town of Uxbridge is just over 60 kilometres northeast of Toronto and situated on the northern slope of the Oak Ridges Moraine, a swath of protected green space that runs 160 kilometres from the Trent River in the east to the Niagara escarpment in the west. This proximity to this protected greenbelt has nicknamed the town (and the surrounding area) as the ‘trail capital’ of the province. 

Like other small towns in the Greater Toronto Area, Uxbridge offers that astonishing mix of small-town charm with access to big city amenities. The town’s downtown is dominated by the quaint public library and ‘main street’ offers artisan coffee shops, boutique gift stores and funky yoga studios in second-floor retail space. 

Prior to the market slowdown, due to the pandemic, homes typically sold within 28 days in Uxbridge, with more than 98% selling for list price or more.

Average Single-Family Home Price (2019): $1,198,926

The post Where to buy real estate in 2020: Durham, Ont. appeared first on MoneySense.



Source link

Leave a Reply

Your email address will not be published. Required fields are marked *

error

Enjoy this blog? Please spread the word :)

RSS46
Follow by Email2k
Facebook200
Twitter125
A note to our visitors

This website has updated its privacy policy in compliance with changes to European Union data protection law, for all members globally. We’ve also updated our Privacy Policy to give you more information about your rights and responsibilities with respect to your privacy and personal information. Please read this to review the updates about which cookies we use and what information we collect on our site. By continuing to use this site, you are agreeing to our updated privacy policy.