ADVERTISEMENT

Haunting in the metro

Manila's nightlife turns supernatural with Halloween raves, escapes, and glamorous thrills

Published Oct 24, 2025 02:55 pm
As October fades into its eerie finale, Manila’s nightlife and entertainment scene transforms into a playground for the supernatural, from haunted theaters to neon-drenched raves. Whether one prefers solving ghostly mysteries or dancing under a blood moon, here’s a roundup of activities the youth can dive into this Halloween season.

Mystery Manila’s Terror in the Theater
When: Oct. 7 to Nov. 9
Where: Century City Mall, Makati City
For thrill-seekers who love a good mystery, Terror in the Theater (P499/head) offers an immersive horror escape experience where participants become paranormal investigators. The story unfolds inside a cursed cinema haunted by the ghost of a lead actress who met a tragic (and suspicious) end during filming. Players must uncover the killer’s identity to finally put her spirit to rest. Gather a team of two to seven brave souls and brace for a 30-minute heart-pounding session that kicks off every half-hour.

Solaire Resort’s Fright Night Club
When: Oct. 31 | 9 p.m to 2 a.m.
Where: Solaire Resort and Casino, Parañaque City
Solaire’s Fright Night Club (P2,688 with eight drinks) takes luxury nightlife to the next (after)life. Designed exclusively for adults 18+, the event invites guests to explore a labyrinth of themed bars —from the Macabre Lounge to The Crimson Bar. With beats by DJ Patrick Oliver and Margaux Lauella, expect an intoxicating mix of music, mystery, and midnight magic. A night where sophistication meets spine-chilling thrill.

Rizal Park sa Dilim
When: Oct. 25 | 9 p.m.
Where: Rizal Park Luneta, Manila City
In celebration of Halloween, this special walking tour will be led by renowned historian Dr. Michael Charleston “Xiao” Chua, who will guide participants through fascinating and mysterious accounts of the past, because sometimes the most haunting stories are the ones rooted in truth. This one-night-only experience lets you discover and explore Rizal Park Luneta exclusively after dark! Offering a rare chance to see the park in a whole new light.

Go underground at Incanta’s Cave Rave
When: Oct. 25 | 9 p.m.
Where: Incanta Cave Bar and Restaurant, Quezon City
Before Halloween even hits, Timeless x &Friends x Incanta sets the stage for a rave that’s literally underground. The Cave Rave features back-to-back DJ sets from local and international acts like MDMJ, Zana, We Don’t Care UK, and Eko (SG). The first 50 &Friends VIP ticket holders score free entry, while others can grab presale tickets with a free drink. Expect heavy beats, strobes, and vibes straight from the underworld. Entrances are priced at ₱700 (pre-sale) and ₱1,000 (door).
Whether hunting ghosts or chasing beats, this Halloween promises more than just tricks and treats—it’s a full-blown experience for every kind of thrill-seeker. So grab your squad, plan your costumes, and get ready for a hauntingly good time across the metro.

Related Tags

HALLOWEEN
ADVERTISEMENT
.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1561_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1562_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1563_widget.title }}

{{ articles_filter_1564_widget.title }}

.mb-article-details { position: relative; } .mb-article-details .article-body-preview, .mb-article-details .article-body-summary{ font-size: 17px; line-height: 30px; font-family: "Libre Caslon Text", serif; color: #000; } .mb-article-details .article-body-preview iframe , .mb-article-details .article-body-summary iframe{ width: 100%; margin: auto; } .read-more-background { background: linear-gradient(180deg, color(display-p3 1.000 1.000 1.000 / 0) 13.75%, color(display-p3 1.000 1.000 1.000 / 0.8) 30.79%, color(display-p3 1.000 1.000 1.000) 72.5%); position: absolute; height: 200px; width: 100%; bottom: 0; display: flex; justify-content: center; align-items: center; padding: 0; } .read-more-background a{ color: #000; } .read-more-btn { padding: 17px 45px; font-family: Inter; font-weight: 700; font-size: 18px; line-height: 16px; text-align: center; vertical-align: middle; border: 1px solid black; background-color: white; } .hidden { display: none; }
function initializeAllSwipers() { // Get all hidden inputs with cms_article_id document.querySelectorAll('[id^="cms_article_id_"]').forEach(function (input) { const cmsArticleId = input.value; const articleSelector = '#article-' + cmsArticleId + ' .body_images'; const swiperElement = document.querySelector(articleSelector); if (swiperElement && !swiperElement.classList.contains('swiper-initialized')) { new Swiper(articleSelector, { loop: true, pagination: false, navigation: { nextEl: '#article-' + cmsArticleId + ' .swiper-button-next', prevEl: '#article-' + cmsArticleId + ' .swiper-button-prev', }, }); } }); } setTimeout(initializeAllSwipers, 3000); const intersectionObserver = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { const newUrl = entry.target.getAttribute("data-url"); if (newUrl) { history.pushState(null, null, newUrl); let article = entry.target; // Extract metadata const author = article.querySelector('.author-section').textContent.replace('By', '').trim(); const section = article.querySelector('.section-info ').textContent.replace(' ', ' '); const title = article.querySelector('.article-title h1').textContent; // Parse URL for Chartbeat path format const parsedUrl = new URL(newUrl, window.location.origin); const cleanUrl = parsedUrl.host + parsedUrl.pathname; // Update Chartbeat configuration if (typeof window._sf_async_config !== 'undefined') { window._sf_async_config.path = cleanUrl; window._sf_async_config.sections = section; window._sf_async_config.authors = author; } // Track virtual page view with Chartbeat if (typeof pSUPERFLY !== 'undefined' && typeof pSUPERFLY.virtualPage === 'function') { try { pSUPERFLY.virtualPage({ path: cleanUrl, title: title, sections: section, authors: author }); } catch (error) { console.error('ping error', error); } } // Optional: Update document title if (title && title !== document.title) { document.title = title; } } } }); }, { threshold: 0.1 } ); function showArticleBody(button) { const article = button.closest("article"); const summary = article.querySelector(".article-body-summary"); const body = article.querySelector(".article-body-preview"); const readMoreSection = article.querySelector(".read-more-background"); // Hide summary and read-more section summary.style.display = "none"; readMoreSection.style.display = "none"; // Show the full article body body.classList.remove("hidden"); } document.addEventListener("DOMContentLoaded", () => { let loadCount = 0; // Track how many times articles are loaded const offset = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // Offset values const currentUrl = window.location.pathname.substring(1); let isLoading = false; // Prevent multiple calls if (!currentUrl) { console.log("Current URL is invalid."); return; } const sentinel = document.getElementById("load-more-sentinel"); if (!sentinel) { console.log("Sentinel element not found."); return; } function isSentinelVisible() { const rect = sentinel.getBoundingClientRect(); return ( rect.top < window.innerHeight && rect.bottom >= 0 ); } function onScroll() { if (isLoading) return; if (isSentinelVisible()) { if (loadCount >= offset.length) { console.log("Maximum load attempts reached."); window.removeEventListener("scroll", onScroll); return; } isLoading = true; const currentOffset = offset[loadCount]; window.loadMoreItems().then(() => { let article = document.querySelector('#widget_1690 > div:nth-last-of-type(2) article'); intersectionObserver.observe(article) loadCount++; }).catch(error => { console.error("Error loading more items:", error); }).finally(() => { isLoading = false; }); } } window.addEventListener("scroll", onScroll); });

Sign up by email to receive news.