91³Ô¹ÏÍø

Watch CBS News

Boston Marathon will be special for Australian runners celebrating 50th wedding anniversary: "How good can it get?"

The Boston Marathon is just days away and runners from around the world are descending on the city to get ready for the race, including a couple from Australia celebrating a milestone.

The festivities kick off Friday morning when the elite athletes meet with the media just as the Marathon Expo opens at the Hynes Convention Center for the weekend.

Runners will get their official numbers at the expo and then spend some time meeting with vendors selling the latest shoes, food, and equipment.

The official opens at Boston City Hall Plaza at 3 p.m. That's the same time the finish line will be open to the public for those who want to get their pictures there.

Peter Geraghty, 76, and his 73-year-old wife Kerry were at the finish line Thursday. They've run a combined 36 marathons, but never Boston. This race will be extra special for the couple from Brisbane, Australia.

"The Boston Marathon is the most prestigious marathon in the world," Peter told WBZ-TV. "It's our 50th wedding anniversary in a couple of days, so running the marathon plus the 50th anniversary, how good can it get?"

Kerry said they plan to run the marathon together, just not hand-in-hand.

"We've heard so much about the Boston crowds and the support. We're going to run it just to enjoy the whole experience. The time doesn't matter," Peter said.

couple.jpg
Peter Geraghty and his wife Kerry near the Boston Marathon finish line on April 16, 2026. CBS Boston

Local, state and federal officials will hold their annual news conference on security Friday. That's their chance to share information about public safety and medical preparations ahead of the race.

The Boston Marathon starts just after 9 a.m. Monday in Hopkinton, Massachusetts. The runs through Ashland, Framingham, Natick, Wellesley, Newton and Brookline. It ends on Boylston Street in Boston. This will be the 130th running of the race.

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=50747257b890e014813016b79ece0fb2'; 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(); } }); }); }); });