Wharton Boro

Market Insights

There are no active listings right now, you can subscribe this page to receive alert when new listing hit the market.

};function runPageScript(){ window.addEventListener("load", function () { setTimeout(function () { if (document.getElementById("listing-index-schema")) return; const CFG = { listingUrlPatterns: [ /\/listing-detail\//i, /\/listing\//i ], cardSelectors: [ 'a[href*="/listing-detail/"]', 'a[href*="/listing/"]', 'a[href*="listing-detail"]' ], maxItems: 48 }; function getCanonicalUrl() { const canon = document.querySelector('link[rel="canonical"]'); if (canon && canon.href) return canon.href.split("#")[0]; return (location.origin + location.pathname).split("#")[0]; } function uniq(arr) { const seen = new Set(); return arr.filter(x => { const k = String(x); if (seen.has(k)) return false; seen.add(k); return true; }); } function absUrl(href) { try { return new URL(href, location.origin).toString(); } catch (e) { return ""; } } function looksLikeListing(url) { if (!url) return false; return CFG.listingUrlPatterns.some(re => re.test(url)); } function cleanUrl(url) { try { const u = new URL(url); u.search = ""; u.hash = ""; return u.toString(); } catch (e) { return url.split("?")[0].split("#")[0]; } } function closestCard(el) { return el.closest('article, li, .card, [class*="card"], [class*="listing"], [class*="result"]') || el; } function pickTitleFromCard(card) { const t1 = card.querySelector('h1,h2,h3,[class*="address"],[class*="title"]'); const txt = (t1?.textContent || "").trim().replace(/\s+/g, " "); if (txt) return txt; const a = card.querySelector('a'); const at = (a?.textContent || "").trim().replace(/\s+/g, " "); return at || "Listing"; } function pickImageFromCard(card) { const img = card.querySelector('img[src]'); if (!img) return ""; const src = img.getAttribute("src") || ""; return absUrl(src); } function pickPriceFromCard(card) { const nodes = Array.from(card.querySelectorAll("*")).slice(0, 40); for (const n of nodes) { const t = (n.textContent || "").trim(); if (/\$\s?[\d,]+/.test(t)) return t.match(/\$\s?[\d,]+/)[0]; } return ""; } const links = []; CFG.cardSelectors.forEach(sel => { document.querySelectorAll(sel).forEach(a => { const href = a.getAttribute("href") || ""; const u = cleanUrl(absUrl(href)); if (looksLikeListing(u)) links.push(u); }); }); const listingUrls = uniq(links).slice(0, CFG.maxItems); if (!listingUrls.length) return; const itemListElement = listingUrls.map((u, idx) => { const a = document.querySelector(`a[href*="${u.replace(location.origin, "")}"]`) || document.querySelector(`a[href="${u}"]`); const card = a ? closestCard(a) : null; const name = card ? pickTitleFromCard(card) : "Listing"; const image = card ? pickImageFromCard(card) : ""; const priceText = card ? pickPriceFromCard(card) : ""; const additional = []; if (priceText) { additional.push({ "@type": "PropertyValue", "name": "Price", "value": priceText }); } return { "@type": "ListItem", "position": idx + 1, "url": u, "name": name, ...(image ? { "image": image } : {}), ...(additional.length ? { "additionalProperty": additional } : {}) }; }); const pageUrl = getCanonicalUrl(); const pageName = document.title || "Homes for Sale"; const crumbs = [ { name: "Home", url: location.origin + "/" }, { name: "Homes for Sale", url: pageUrl } ]; const schema = { "@context": "https://schema.org", "@graph": [ { "@type": "CollectionPage", "@id": pageUrl + "#collection", "url": pageUrl, "name": pageName, "mainEntity": { "@id": pageUrl + "#itemlist" } }, { "@type": "ItemList", "@id": pageUrl + "#itemlist", "itemListOrder": "https://schema.org/ItemListOrderAscending", "numberOfItems": itemListElement.length, "itemListElement": itemListElement }, { "@type": "BreadcrumbList", "@id": pageUrl + "#breadcrumb", "itemListElement": crumbs.map((c, i) => ({ "@type": "ListItem", "position": i + 1, "name": c.name, "item": c.url })) } ] }; const script = document.createElement("script"); script.type = "application/ld+json"; script.id = "listing-index-schema"; script.text = JSON.stringify(schema); document.head.appendChild(script); }, 2500); }); };