KLIA - Kuala Lumpur
D: 00:30 - Seater, AC
KLIA - Kuala Lumpur
D: 22:30 - Seater, AC
KLIA - Kuala Lumpur
D: 20:30 - Seater, AC
KLIA - Kuala Lumpur
D: 18:30 - Seater, AC
KLIA - Kuala Lumpur
D: 17:00 - Seater, AC
KLIA - Kuala Lumpur
D: 15:40 - Seater, AC
KLIA - Kuala Lumpur
D: 14:20 - Seater, AC
KLIA - Kuala Lumpur
D: 13:00 - Seater, AC
KLIA - Kuala Lumpur
D: 11:30 - Seater, AC
KLIA - Kuala Lumpur
D: 09:30 - Seater, AC

Amenities

Why Choose Our Travel

                         ... Read More

Online Bus Ticket Booking

Return Bus Tickets

Customer Support

What Our Clients say

Masamichi

I have been staying in Malaysia more than 8 years but your customer's service is the BEST! I am really impressed and happy to choose SKYBUS even I am forced to cancel my booking at this time BUT I am sure that will choose SKYBUS again.

Adib

Thanks so much for your helped to change my date of travel due to my inconvenience causes. Your fast respond is much Appreciated. Best service and keep it up!

Sun Yuan

Positive customer service experience, able to address my problem and solve it.

Nadia

thanks alot the trip was really pleasent and enjoyable..

Deepak

Fast response time – couple of your staff members calling me back to understand the problem and finding the solution

Testimonial

We in numbers

65000+

Customers

1400+

Daily Riders

80+

Destinations

Quick Links

Top Routes :

Siliguri-img

KL SENTRAL

Kolkata-img

KLIA2

KLIA1

booking-confirm booking-cancel search-results 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/165/logo.jpg'>"); $( "#extra_115" ).insertAfter( $( "#extra_21" ) ); $( "#extra_276" ).insertAfter( $( "#react-app" ) ); </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> $('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> 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"); $(".main-menu li:nth-child(1)").text("Help Center") ); </script>