About the founder

Chris was born in Kuala Lumpur and raised in Banting, Selangor, spending his childhood at Boh’s Bukit Cheeding Estate in Banting. His life changed rapidly when he was selected for a sponsorship for his secondary and tertiary education in England. He went on to pursue economics at the University of Warwick in England, finishing with an Honours Degree.

When returning back at home base, he joined Boh Plantations – Malaysian prominent tea manufacturer (if you’re in Malaysia, we highly recommend you visit Cameron Highlands where most large Boh Plantations are located – it’s beautiful!). In Boh Plantations Chris went through many positions, from working in the plantation sector, managing Boh’s Singapore Market, until he finally settled as the Head of Marketing.

After 15 years at Boh, he resigned in 2001. This stemmed from a long desire to carve out his own path as an entrepreneur and business leader. While deciding on his next career move, he supplemented his savings by carrying out financial consultancy work. Soon, he came up with an idea to set up shop as a new media owner, opening up a largely untapped market of taxi and bus advertising. While it proved to be lucrative, he decided that he wanted to be a brand owner himself. Hence in 2006, SkyBus was born.

With its new low-cost based business model, Skybus has rapidly changed the transportation industry in Malaysia and very soon won several awards for its outstanding services.

What we stand for :

1.Safety

SkyBus transports thousands of passengers on a daily basis. Safety, therefore, is our main concern. We comply with all SPAD regulations and road safety guidelines, and have installed the latest technology in our buses to ensure your safety, such as speed limit buzzers and GPS tracking.

2.Comfort

Your bus ride to the airport should be comfortable, which is why you will find professional and reliable staff on every SkyBus and you will have extra leg room.

3.Lowest prices

There is no cheaper way to get to klia2 then using SkyBus. By keeping our costs low and our operations effective you save money on your bus ride.

4.Customer Service

We are always making sure our customers are happy, and we respond to support requests within 12 hours. If you have any questions or suggestions you can always email us or call our Customer Support Hotline during office hours.

5.Reliable & Timely

You need to be at the airport in time. We get it! The last thing you need is having to worry about a bus that is late, or stuck in traffic for that matter (we all know KL’s notorious traffic). Which is why SkyBuses follow a strict schedule and we avoid highways whenever there’s a jam to ensure your timely arrival.

Wish you a Happy and Comfortable Journey

booking-confirm virtual-pay-vurl booking-cancel search-results service-details ticket-details thank-you my-page phone-blocking-to-ebooking> 404> 410>

Please Enter Your Details

Success

Thank you, Message has been sent successfully

<script> $('footer .footer-contact h3').html ("<img src='https://ticket-simply-mly-cms.s3.amazonaws.com/uploads/bcc/cms/asset/avatar/170/logo.jpg'>"); </script> <script> $(".main-menu li:nth-child(5)").html("<div class='signinf'><h3><a href='#' ><img src='https://gst-contracts.s3.amazonaws.com/uploads/bcc/cms/asset/avatar/127813/cust1.png'>Sign in</a></h3></div>"); </script> <script> if(! $(".wrapper").hasClass("inner-page")){ $(".wrapper").addClass("emdedded_new"); } </script> <script> $('#extra_21 .count').each(function() { $(this).prop('Counter', 0).animate({ Counter: $(this).text() }, { duration: 10000, easing: 'swing', step: function(now) { if($(this).is(".rating")){ $(this).text(now.toFixed(1)); } else{ $(this).text(parseInt(now)); } } }); }); </script> <script> containerWidth = document.getElementById("container").clientWidth; nextButton = document.getElementById("next-button"); previousButton = document.getElementById("previous-button"); slide = document.getElementById("slide"); firstCardLeftMargin = 10; cardWidthAndRightMargin = 120 + 10; totalWidth = slide.clientWidth; const transformSlide = (val) => { slide.style.transform = `translate(${val}px,0px)`; }; const getCurrentPosition = () => { const stringValue = slide.style.transform; const transformValue = stringValue.substring( stringValue.indexOf("(") + 1, stringValue.lastIndexOf("p") ); return transformValue ? parseInt(transformValue) : 0; }; const getNextPosition = () => { //take current position of the slide const currentPosition = getCurrentPosition(); //last visibile pixel const lastVisiblePixel = containerWidth + -1 * currentPosition; //use the last visible pixel to calculate which card was fully-visible. //This will return a float whose floor will indicate the last fully-visible card. //We will show the next card as the first card after sliding const lastFullyVisibleCard = Math.floor( (lastVisiblePixel - firstCardLeftMargin) / cardWidthAndRightMargin ); //Calculate the distance from slideStart to the lastVisibleCard's end const distanceToNextCard = lastFullyVisibleCard * cardWidthAndRightMargin + firstCardLeftMargin; if (distanceToNextCard + containerWidth > totalWidth) { return totalWidth - containerWidth + firstCardLeftMargin; } return distanceToNextCard - 10; }; const getPreviousPosition = () => { const currentPosition = getCurrentPosition(); //take current position //getting first partially visible card. This will be the last card shown when the button is clicked. const firstPartiallyVisibleCard = Math.floor( (-1 * currentPosition - firstCardLeftMargin) / cardWidthAndRightMargin ); //get distance to card end from slide start const distanceToCardEndFromSlideStart = firstPartiallyVisibleCard * cardWidthAndRightMargin + firstCardLeftMargin; //translateX distance would be total distance - containerwidth const distanceNeeded = distanceToCardEndFromSlideStart - containerWidth; //return calculateDistance only if it is positive if (distanceNeeded > 0) { return -distanceNeeded; } //if needed distance < 0 i.e. card end is closer to start than container width means that this scroll would overshoot the left edge. //return 0 and return the slide to it's initial position return 0; }; nextButton.addEventListener("click", (event) => { transformSlide(-getNextPosition()); }); previousButton.addEventListener("click", (event) => { transformSlide(getPreviousPosition()); }); </script> <script> $("<p class='booking-text'>Book with us</p>").insertBefore(".booking-widget"); </script>