91³Ô¹ÏÍø

Watch CBS News

Lighthouse north of Boston offers dinner at the top and an incredible view

NEWBURYPORT - In Newburyport, Massachusetts the local lighthouse isn't on the shore or on some remote cliff or island.

The Newburyport Rear Range Lighthouse, about an hour north of Boston, is actually downtown, at 61 ½ Water Street.

"This goes back to 1873, in downtown Newburyport. It's a range light, which is a little bit different than your normal lighthouse," said Jay Hyland. He's the president of , which owns and maintains this one.

ihh.jpg
The Newburyport Rear Range Lighthouse CBS Boston

What is a range lighthouse?

He told WBZ-TV range lighthouses work in pairs, with a taller one and a shorter one. When aligned, the two lights help sailors and anyone at sea navigate tricky waters. It's also why the lighthouses are on shore.

It's expensive to maintain an abandoned lighthouse tower, but the society has found an ingenious way to raise money.

Pick a Newburyport restaurant

They've partnered with six local restaurants to create an unforgettable dining experience. The lantern room has been remodeled and can comfortably seat a party of four, but more intimately, a party of two.

"It tends to be a place for special occasions. It's really famous for wedding proposals," Hyland said.

The experience begins with the cottage-cute front door on Water Street. Guests then climb 55 stairs to reach the lantern room. Hyland recommends women not wear high heels, especially considering the ladder climb at the end of the ascension.

ihh2.jpg
The dining area at the top of The Newburyport Rear Range Lighthouse. CBS Boston

How much for a reservation?

It's $350 to reserve the space for two or $700 for four. That's not cheap, but you get four-and-a-half hour blocks for breakfast and lunch, and five-and-a-half hours for dinner.

"It's just an awesome view. You get great food and all that privacy" Hyland told WBZ.

To top it off, you can go out on the catwalk, where the views are simply magnificent.

To learn more and to book a reservation, click .

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=296763317a51cab90faa73f1bb146d5c'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });