78,335 properties
0 phones
0 emails
0 for sale
106 results ยท Page 1/3
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

Laguna Madre Yacht Club

Port Isabel, TX ยท 500 South Point Avenue

Marinas
Phone Email
โš“ Marinas

REEL Therapy Charter Services

Port Isabel, TX ยท 208258 North Garcia Street

Marinas
Phone Email
โš“ Marinas

Corpus Christi Marina

Corpus Christi, TX ยท 400A North Shoreline Boulevard

Marinas
Phone Email
โš“ Marinas

Crosswater Yacht Club

Austin, TX ยท 1505 Hurst Creek Road

Marinas
Phone Email
โš“ Marinas

Osprey Fishing Trips

Port Isabel, TX ยท 501 East Maxan Street

Marinas
Phone Email
โš“ Marinas

Osprey Cruises

Port Isabel, TX ยท 501 East Maxan Street

Marinas
Phone Email
โš“ Marinas

Canyon Lake Marina

Canyon Lake, TX ยท 280 Marina

Marinas
Phone Email
โš“ Marinas

Pier 121 Marina

Lewisville, TX ยท 148 E. Hill Park Road

Marinas
Phone Email
โš“ Marinas

Lake Murvaul Park & Marina

Carthage, TX ยท 638 FM 1234

Marinas
Phone Email
โš“ Marinas

Pirate's Landing Fishing Pier

Port Isabel, TX ยท 501 East Maxan Street

Marinas
Phone
โš“ Marinas

George's Fishing Charters

Port Isabel, TX ยท 110 North Garcia Street

Marinas
Phone
โš“ Marinas

Lighthouse Marina

TX

Marinas
Phone Email
โš“ Marinas

Sea Ranch Marina II

Port Isabel, TX ยท 502 South Point Avenue

Marinas
Phone
โš“ Marinas

Southpoint Marina

Port Isabel, TX ยท 50296 South Point Avenue

Marinas
Phone
โš“ Marinas

Cuevas Trawlers, Inc.

Port Isabel, TX ยท 718 South Shore Drive

Marinas
Phone
โš“ Marinas

Jimmy's Marina

Port Isabel, TX ยท 101 Bridge Street

Marinas
Phone
โš“ Marinas

Lincoln Brothers Fishing, LLC

Port Isabel, TX ยท 104 Bridge Street

Marinas
Phone
โš“ Marinas

Big Cypress Marina

Jefferson, TX ยท 1500 Big Cypress Marina Road

Marinas
Phone
โš“ Marinas

Lynn Creek Marina

Grand Prairie, TX ยท 5700 Lake Ridge Parkway

Marinas
Phone
โš“ Marinas

Dolphin Docks

Port Isabel, TX ยท 510 East Queen Isabella Boulevard

Marinas
Phone
โš“ Marinas

Beaumont RV & Marina

Beaumont, TX ยท 560 Marina Street

Marinas
Phone Email
โš“ Marinas

Lake Tyler Marina Resort

Whitehouse, TX ยท 18183 Concession Road

Marinas
Phone Email
โš“ Marinas

Lake Athens Marina

Athens, TX ยท 5401 Marina Drive

Marinas
Phone Email
โš“ Marinas

Cedar Bayou Marina at Lake Texoma

Gordonville, TX ยท 513 Cedar Bayou Boulevard

Marinas
Phone
โš“ Marinas

Clem's Marina

TX ยท 13304 S Padre Island Dr

Marinas
Phone
โš“ Marinas

Black Dragon Cruises

Port Isabel, TX ยท 501 East Maxan Street

Marinas
Phone
โš“ Marinas

Nassau Bay Yacht Club

Nassau Bay, TX ยท 18250 Nassau Bay Drive

Marinas
Phone
โš“ Marinas

Waterpoint Marina

TX

Marinas
Phone
โš“ Marinas

Pleasure Island Marina

TX

Marinas
Phone
โš“ Marinas

Juniper Cove Marina

TX

Marinas
Phone Email
โš“ Marinas

Calypso Cove Marina

TX

Marinas
Phone
โš“ Marinas

Harborlight Marina and Resort

TX

Marinas
Phone
โš“ Marinas

Highport Marina

TX

Marinas
Phone Email
โš“ Marinas

Cedar Mills Marina and Resort

TX

Marinas
Phone
โš“ Marinas

Walnut Creek Resort

TX

Marinas
Phone
โš“ Marinas

Southwinds Marina on the Lake Amistad Campground

Del Rio, TX

Marinas 20 Slips ๐Ÿ’ฐ Valuation on file
Phone Email
โš“ Marinas

Port Isabel Marina & RV Park

Port Isabel, TX

Marinas 100 Slips ๐Ÿ’ฐ Valuation on file
Phone Email
โš“ Marinas

Galveston RV Resort & Marina

Galveston, TX

Marinas 84 Slips ๐Ÿ’ฐ Valuation on file
Phone
โš“ Marinas

Serendipity Bay Resort RV Park & Marina

Palacios, TX

Marinas 162 Slips ๐Ÿ’ฐ Valuation on file
Phone Email
โš“ Marinas

Fin & Feathers Marina and RV Park

Aransas Pass, TX

Marinas 60 Slips ๐Ÿ’ฐ Valuation on file
Phone Email
โš“ Marinas

Beacon RV Park & Marina

Rockport, TX

Marinas 102 Slips ๐Ÿ’ฐ Valuation on file
Phone Email
โš“ Marinas

USA RV Resorts Marina Bay

Kemah, TX

Marinas 239 Slips ๐Ÿ’ฐ Valuation on file
Phone Email
โš“ Marinas

Spring Creek Marina & RV Park

San Angelo, TX

Marinas 83 Slips ๐Ÿ’ฐ Valuation on file
Phone
โš“ Marinas

Concho Park Marina - O.H. Ivie Reservoir

Millersview, TX

Marinas 30 Slips ๐Ÿ’ฐ Valuation on file
Phone Email
โš“ Marinas

Northshore RV Resort & Marina

Onalaska, TX

Marinas 78 Slips ๐Ÿ’ฐ Valuation on file
Phone Email
โš“ Marinas

Waterfront Lodge Marina and RV Park

Onalaska, TX

Marinas 60 Slips ๐Ÿ’ฐ Valuation on file
Phone Email
โš“ Marinas

Marina Village Resort

Trinity, TX

Marinas 270 Slips ๐Ÿ’ฐ Valuation on file
Phone Email
โš“ Marinas

Outback Campground and Marina

Trinity, TX

Marinas 65 Slips ๐Ÿ’ฐ Valuation on file
Phone
โš“ Marinas

Cove Marina & Campground

Huntsville, TX

Marinas 15 Slips ๐Ÿ’ฐ Valuation on file
Phone
โš“ Marinas

Harmon Creek Marina and RV Park

Huntsville, TX

Marinas 17 Slips ๐Ÿ’ฐ Valuation on file
Phone Email
1 / 3 Next โ†’
// 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