78,335 properties
0 phones
0 emails
0 for sale
498 results ยท Page 3/10
All (78,335) Self-Storage (6,623) Mobile Home Parks (7,641) Car Washes (9,819) Laundromats (7,714) RV Parks (22,383) Marinas (5,509) Budget Motels (10,145) Dry Cleaners (8,419)
Map:
โš“ Marinas

McGuinness Marina

Flanders, NY ยท 60 Bay Avenue

Marinas
Phone Email
โš“ Marinas

Bald Eagle Marina

Kendall, NY ยท 1033 Lakeland Beach Road

Marinas
Phone Email
โš“ Marinas

Mayer's Marina

Webster, NY ยท 7 Lake Road

Marinas
Phone Email
โš“ Marinas

Anchor Marina

Cape Vincent, NY ยท 583 Broadway Street

Marinas
Phone Email
โš“ Marinas

Outer Harbour Marina

Toronto, NY ยท 475 Unwin Avenue

Marinas
Phone Email
โš“ Marinas

Mark's Leisure Time Marina

Conesus, NY ยท 5364 East Lake Road

Marinas
Phone Email
โš“ Marinas

Nichols Yacht Yard

Mamaroneck, NY ยท 500 Rushmore Avenue

Marinas
Phone Email
โš“ Marinas

Niagara Sailing Club

Grand Island, NY ยท 3619 East River Road

Marinas
Phone Email
โš“ Marinas

New Suffolk Shipyard at Cutchogue Harbor

Cutchogue, NY ยท 3350 West Creek Avenue

Marinas
Phone
โš“ Marinas

Orient by the Sea

Orient, NY ยท 40200 North Road

Marinas
Phone
โš“ Marinas

Von Dohln Marina

NY ยท 1339 River Road

Marinas
Phone
โš“ Marinas

Halls Boat Corp

NY

Marinas
Phone Email
โš“ Marinas

New Hamburg Yacht Club

NY

Marinas
Phone
โš“ Marinas

Port Picton Harbour Marina

NY

Marinas
Phone
โš“ Marinas

Westhampton Beach Marina

Westhampton Beach, NY ยท 1 Library Avenue

Marinas
Phone
โš“ Marinas

Minneford Marina

NY ยท 150 City Island Avenue

Marinas
Phone
โš“ Marinas

Chautauqua Marina

NY

Marinas
Phone Email
โš“ Marinas

Pier 25 Marina

NY

Marinas
Phone Email
โš“ Marinas

Snug Harbour

NY

Marinas
Phone
โš“ Marinas

C. W. Marine & Powersports

NY

Marinas
Phone
โš“ Marinas

National Yacht Club

Toronto, NY ยท 1 Stadium Road

Marinas
Phone
โš“ Marinas

Safe Harbor Yacht Haven

NY

Marinas
Phone Email
โš“ Marinas

Marion Manor

NY

Marinas
Phone
โš“ Marinas

Swiss Marine Inc

Saranac Lake, NY ยท 24 Duprey Street

Marinas
Phone
โš“ Marinas

Trent Port Marina

Quinte West, NY ยท 15 Creswell Drive

Marinas
Phone
โš“ Marinas

Upper Hudson River Boat Launch

NY

Marinas
Phone
โš“ Marinas

Sacandaga River State Boat Launch

NY

Marinas
Phone
โš“ Marinas

Mattituck Creek Waterway Access Site

NY

Marinas
Phone
โš“ Marinas

Broadalbin Boat Launch

NY

Marinas
Phone
โš“ Marinas

Seneca Lake Boat Launch

NY

Marinas
Phone
โš“ Marinas

Peru Dock Boat Launch

NY

Marinas
Phone
โš“ Marinas

Butterfield Lake Waterway Access

NY

Marinas
Phone
โš“ Marinas

North Pond Sandy Creek Waterway Access

NY

Marinas
Phone
โš“ Marinas

Willsboro Bay Boat Launch

NY

Marinas
Phone
โš“ Marinas

Raquette River Boat Launch aka The Crusher

NY

Marinas
Phone
โš“ Marinas

Port Henry Boat Launch

NY

Marinas
Phone
โš“ Marinas

Westport Boat Launch

NY

Marinas
Phone
โš“ Marinas

Great Sacandaga Lake Boat Launch

NY

Marinas
Phone
โš“ Marinas

Port Douglass Boat Launch

NY

Marinas
Phone
โš“ Marinas

Athens State Boat Launch

NY

Marinas
Phone
โš“ Marinas

Lake Placid and Mirror Lake Boat Launch

NY

Marinas
Phone
โš“ Marinas

Lake Ronkonkoma Boat Launch

NY

Marinas
Phone
โš“ Marinas

Lake Flower Boat Launch

NY

Marinas
Phone
โš“ Marinas

Fourth Lake Boat Launch

NY

Marinas
Phone
โš“ Marinas

Lake Huntington Waterway Access

NY

Marinas
Phone
โš“ Marinas

Davis Park Marina

NY

Marinas
Phone
โš“ Marinas

Atlantic Cove Marina

East Moriches, NY ยท 215 Atlantic Avenue

Marinas
Phone
โš“ Marinas

Swezey's Hart Cove Marina

East Moriches, NY ยท 29 Maple Avenue

Marinas
Phone
โš“ Marinas

Southampton Yacht Club

Southampton, NY ยท 96 Little Neck Road

Marinas
Phone
โš“ Marinas

Loyalist Cove Marina

NY

Marinas
Phone Email
// Heat map modes // mapPoints format: [id, lat, lon, category, valuation, data_score, motivated_score] let heatLayer = null; let circleLayer = null; let currentMode = 'markers'; function clearOverlays() { if (heatLayer) { map.removeLayer(heatLayer); heatLayer = null; } if (circleLayer) { map.removeLayer(circleLayer); circleLayer = null; } } function setMapMode(mode) { currentMode = mode; clearOverlays(); // Update button states document.querySelectorAll('.map-mode-btn').forEach(b => b.classList.remove('active')); document.getElementById('btn-' + mode).classList.add('active'); if (mode === 'markers') { markers.addTo(map); return; } map.removeLayer(markers); if (mode === 'density') { // Pure density heatmap const pts = mapPoints.filter(p => p[1] && p[2]).map(p => [p[1], p[2], 1]); heatLayer = L.heatLayer(pts, {radius: 20, blur: 15, maxZoom: 10, max: 5, gradient: {0.2: '#ffffb2', 0.4: '#fd8d3c', 0.6: '#f03b20', 0.8: '#bd0026', 1: '#800026'} }).addTo(map); } else if (mode === 'valuation') { // Circle markers colored by valuation circleLayer = L.layerGroup(); const maxVal = Math.max(...mapPoints.map(p => p[4]).filter(v => v > 0)) || 1; mapPoints.filter(p => p[1] && p[2] && p[4] > 0).forEach(p => { const ratio = Math.min(p[4] / maxVal, 1); const r = Math.round(ratio * 255); const g = Math.round((1 - ratio) * 200); const color = `rgb(${r}, ${g}, 50)`; const radius = 4 + ratio * 10; L.circleMarker([p[1], p[2]], { radius: radius, fillColor: color, color: '#fff', weight: 1, fillOpacity: 0.7 }).bindPopup(`$${(p[4]/1000).toFixed(0)}K`).addTo(circleLayer); }); circleLayer.addTo(map); } else if (mode === 'quality') { // Circle markers colored by data_score circleLayer = L.layerGroup(); mapPoints.filter(p => p[1] && p[2]).forEach(p => { const score = p[5] || 0; const ratio = score / 10; // Green = high, Red = low const r = Math.round((1 - ratio) * 255); const g = Math.round(ratio * 200); const color = `rgb(${r}, ${g}, 50)`; L.circleMarker([p[1], p[2]], { radius: 3 + ratio * 5, fillColor: color, color: '#fff', weight: 0.5, fillOpacity: 0.6 }).addTo(circleLayer); }); circleLayer.addTo(map); } else if (mode === 'motivated') { // Heat map weighted by motivated score const pts = mapPoints.filter(p => p[1] && p[2] && p[6] > 0).map(p => [p[1], p[2], p[6] / 100]); heatLayer = L.heatLayer(pts, {radius: 25, blur: 20, maxZoom: 10, max: 1, gradient: {0.2: '#fff7bc', 0.4: '#fec44f', 0.6: '#fe9929', 0.8: '#d95f0e', 1: '#993404'} }).addTo(map); } } // ===== Slide-over detail panel ===== const panel = document.getElementById('detailPanel'); const dpBody = document.getElementById('dpBody'); const dpHead = document.getElementById('dpHead'); const dpIcon = document.getElementById('dpIcon'); const MEDIA_GRADIENTS = { self_storage:'#fde68a,#f59e0b', car_wash:'#bfdbfe,#3b82f6', laundromat:'#ddd6fe,#8b5cf6', rv_park:'#fecaca,#ef4444', mobile_home_park:'#a7f3d0,#10b981', marina:'#a5f3fc,#06b6d4', budget_motel:'#fed7aa,#f97316', boat_rv_storage:'#cbd5e1,#64748b', mailbox_pack_ship:'#fbcfe8,#ec4899', dry_cleaner:'#99f6e4,#14b8a6', gas_station:'#fef08a,#eab308' }; function esc(s){ return (s==null?'':String(s)).replace(/[&<>"']/g, c=>({'&':'&','<':'<','>':'>','"':'"',"'":'''}[c])); } function renderDetail(d) { // header gradient by category const g = MEDIA_GRADIENTS[d.category] || '#e2e8f0,#cbd5e1'; dpHead.style.background = `linear-gradient(135deg, ${g.split(',')[0]} 0%, ${g.split(',')[1]} 100%)`; dpIcon.textContent = d.category_icon || '๐Ÿข'; // badges row let badges = ''; if (d.motivated) badges += '๐Ÿ”ฅ MOTIVATED '; if (d.for_sale) badges += 'FOR SALE '; // headline metrics (free) let metrics = ''; if (d.total_units) metrics += `
${esc(d.total_units)}
${esc(d.unit_label)}
`; if (d.year_established) metrics += `
${esc(d.year_established)}
Established
`; if (d.acreage) metrics += `
${esc(d.acreage)}
Acres
`; // financials section (paid) let fin = ''; if (d.paid_locked && d.has_financials) { fin = `

Financials

๐Ÿ”’ Valuation, cap rate & NOI โ€” members only
`; } else if (!d.paid_locked) { let rows = ''; if (d.valuation) rows += `
Est. Valuation${esc(d.valuation)}
`; if (d.asking_price) rows += `
Asking Price${esc(d.asking_price)}
`; if (d.cap_rate) rows += `
Cap Rate${esc(d.cap_rate)}
`; if (d.noi) rows += `
NOI${esc(d.noi)}
`; if (d.annual_revenue) rows += `
Annual Revenue${esc(d.annual_revenue)}
`; if (d.occupancy_rate) rows += `
Occupancy${esc(d.occupancy_rate)}
`; if (rows) fin = `

Financials

${rows}
`; } // contact section let contact = ''; if (d.owner_name) contact += `
Owner${esc(d.owner_name)}
`; if (d.phone) { const ql = d.phone_quality==='owner_direct'?' โœ“ owner':(d.phone_quality==='corporate'?' ยท corp':''); contact += `
Phone${esc(d.phone)}${ql}
`; } if (d.email) contact += `
Email${esc(d.email)}
`; if (d.website) contact += `
Websitevisit โ†—
`; if (contact) contact = `

Contact

${contact}
`; // description let desc = ''; if (d.description) desc = `

About

${esc(d.description.slice(0,320))}${d.description.length>320?'โ€ฆ':''}

`; dpBody.innerHTML = `
${badges}

${esc(d.name)}

${esc(d.category_label)} ยท ${esc(d.city||'')}${d.city?', ':''}${esc(d.state||'')}

${d.address ? `

${esc(d.address)}

`:''}
${metrics ? `

Overview

${metrics}
`:''} ${fin} ${contact} ${desc} View full details โ†’ `; } let activeDetailId = null; function openDetail(ev, id) { if (ev) ev.preventDefault(); activeDetailId = id; panel.classList.add('open','loading'); panel.setAttribute('aria-hidden','false'); // mark active card document.querySelectorAll('.prop-card').forEach(c => c.classList.toggle('active', c.dataset.id == id)); // shareable URL + back-button support const url = new URL(window.location); url.searchParams.set('selected', id); history.pushState({selected: id}, '', url); fetch(`/api/property/${id}/detail`).then(r=>r.json()).then(d => { if (activeDetailId != id) return; // user clicked another card meanwhile if (!d || !d.id) { dpBody.innerHTML = '

Not found.

'; } else renderDetail(d); panel.classList.remove('loading'); }).catch(()=>{ dpBody.innerHTML = '

Could not load.

'; panel.classList.remove('loading'); }); return false; } function closeDetail(push) { activeDetailId = null; panel.classList.remove('open'); panel.setAttribute('aria-hidden','true'); document.querySelectorAll('.prop-card.active').forEach(c => c.classList.remove('active')); if (push !== false) { const url = new URL(window.location); url.searchParams.delete('selected'); history.pushState({}, '', url); } } // back/forward window.addEventListener('popstate', (e) => { const sel = new URL(window.location).searchParams.get('selected'); if (sel) openDetailFromHistory(parseInt(sel)); else closeDetail(false); }); function openDetailFromHistory(id) { activeDetailId = id; panel.classList.add('open','loading'); panel.setAttribute('aria-hidden','false'); document.querySelectorAll('.prop-card').forEach(c => c.classList.toggle('active', c.dataset.id == id)); fetch(`/api/property/${id}/detail`).then(r=>r.json()).then(d => { if (activeDetailId != id) return; if (d && d.id) renderDetail(d); panel.classList.remove('loading'); }); } // Esc closes document.addEventListener('keydown', e => { if (e.key === 'Escape' && panel.classList.contains('open')) closeDetail(); }); // Open on load if ?selected= present (shared URL) (function(){ const sel = new URL(window.location).searchParams.get('selected'); if (sel) openDetailFromHistory(parseInt(sel)); })();
๐Ÿ”’
Unlock owner contacts for 78,335+ businesses
$500/yr Get Access