ADVERTISEMENT

Grab ramps up efforts to meet holiday demand

Published Dec 2, 2025 10:37 pm
Ride-hailing giant Grab Philippines is leveraging its carpooling services and strategic partnerships to alleviate the supply crunch during the holiday period, fueled by increased demand.
Grab said the current traffic congestion is already prolonging trip completion by an average of 20 to 25 percent during peak hours.
This is expected to worsen during the holiday season when demand for ride-hailing services goes up by as much as 36 percent.
The company said this places heavy strain on the overall vehicle supply on the road, severely limiting the number of trips a driver can complete.
“This holiday season will be a challenge, as in previous years. We are facing a slew of macroeconomic factors, from an uptick in holiday demand that challenges the supply of vehicles to the traffic conditions of the metro,” said Grab Philippines Managing Director Ronald Roda in a statement.
“We have been preparing since the start of the year to ensure our services remain accessible enough to help every Filipino make their holiday celebration complete,” he added.
This year, Grab has piloted a carpooling service called “Sabay Sakay” in partnership with the Department of Transportation (DOTr) to bolster its fleet to meet holiday demand.
The shared ride program aims to service passengers in key business districts, starting with the Pasig-Makati and Pasig-BGC corridors.
Grab will use on-ground concierges to consolidate bookings, increasing seat utilization when standard ride availability is low.
This new program complements the "Group Rides" feature, which allows a host to share a link with up to three passengers, enabling them to input their individual pick-up or drop-off points as they depart or arrive together in a single GrabCar.
Grab is also working with New NAIA Infra Corp. (NNIC) to ease pick-up bottlenecks at key terminals in Ninoy Aquino International Airport (NAIA), where historical data show a jump of 30 percent in the fourth quarter.
The company aims to achieve this through the deployment of free airport shuttle rides during critical windows when travellers are finding it difficult to book a Grab ride, specifically between 4:00 PM and 1:00 AM.
Free shuttles will be deployed from NAIA Terminal 3 to One Ayala in Makati across three key weekends—Dec. 5-8, 12-16, and 19-22.
Grab recently improved its 24-hour concierge at NAIA Terminal 3 to support more passengers in booking a GrabCar.
“We have been working to make airport operations more efficient, especially now that the holidays bring in so many travelers. That’s why we appreciate Grab stepping in to help further strengthen our transport options,” NNIC General Manager Angelito Alvarez said.
“The rush can make it harder to get a ride, so having more reliable choices really helps. Little things like this make a big difference when the airport is at its busiest,” he added.
Grab said it will also utilize tech features such as mapping algorithms to generate the most efficient route, improving efficiency out of the existing fleet.
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.