91³Ô¹ÏÍø

Watch CBS News

Travelers opting for rail again as Amtrak expands options

In the post-pandemic world, while many travelers have been obsessed with airlines, ground stops, cancellations and delays, Amtrak's ridership is bouncing back — more than doubling in the Northeast corridor, and 88% across the country. At the same time, Amtrak was strengthening its long-haul services, with trains like the Empire Builder, the Zephyr, the Sunset Limited and the Southern Crescent, the Southwest Chief and the Coast Starlight, to name a few.

And while we don't yet have true high-speed rail yet in this country — and may never have it — there are some improvements in the service. And why don't we have high-speed rail? Because Amtrak doesn't own its tracks. The freight lines do, and they have no interest in high-speed rail. 

That may also explain why Amtrak doesn't exactly own a great on-time service record — because their trains often have to pull over to a siding to let a 100-car-long freight train lumber through. 

At the same time, Congress has never properly funded Amtrak to allow it to grow and upgrade and to be able to reinvest profits in its product.

In some cases, Amtrak has brought back the dining cars. But even more important, Amtrak has announced a major upgrade to its fleet, with the new "Amtrak Airo" trains — with more spacious interiors and modernized amenities will be rolling out across the U.S. in about three years. The cars will feature more table seating, better legroom and more room for all your electronic devices.

Until then, there's some good news. Amtrak doesn't promote it very well, and most passengers don't know about it, but Amtrak actually sells a USA rail pass. For just $499, you get to travel Amtrak for 30 days and up to 10 rides. It's a great deal — and children under 12 ride for $250.

And with new high-speed routes launching in several European countries in the past few months — Spain, in particular, has new options for travelers as — train travel in Europe is an increasingly attractive option.

The Eurail Pass has never been a better deal. It now enables rail travel in 33 European countries, an expansion from the initial 13 countries, with prices starting at $218. One Eurail pass for $473 gives you two months of train travel.

One caveat: you must buy your Eurail pass in conjunction with your roundtrip airline ticket from the U.S. to Europe. You can't purchase it once you get there. And you can even get a Eurail pass that's valid for three months.

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