To get to Yogyakarta, you have to reach Yogyakarta Adisucipto International Airport. This can be done by boarding direct flights from Kuala Lumpur, Singapore, Bali and Jakarta. You can choose carriers like Lion Air, Garuda, Air Asia, Silk Air, NAM Air to name a few. The airport is on the outskirts of the city. So, you need to take a cab to reach the city. You can prebook it or catch one from outside the airport which is relatively cheap. Alternatively, you can opt for Transjogja bus stop that will drop you at a central point in the city. You can also choose to board a train from Maguwo train station which is connected to the airport by a tunnel and then drops you in the centre of the city.
The Yogyakarta train station is located at Jalan Malioboro. The economy class trains connect Yogyakarta to Lempuyangan Station while the business class, executive class and air con economy class connect the city of Yogyakarta to almost all the major cities of Java. It is recommended to make the most of the journey by making a morning time reservation as the view from the train is just so beautiful which you will miss if you board the train in the wee hours of the night. Also, book the tickets in advance especially in the month of Ramadan and this can be done online but only in Indonesia. Note that international credit cards are not accepted for making the bookings. Bookings can be done at the station itself too, at Indomaret and Alphamart convenience stores. The trains will connect you to Jakarta, Bandung, Solo, Surabaya, Malang, Probolingo and Banyuwangi.
Giwangan terminal is the main terminal with buses running within the periphery of the city and is located six kilometres to the south of the city centre. It connects Java, Bali and Sumatra. You can choose from executive class, VIP, patas, business class or economy class depending upon what services you are looking for. Entry to the bus terminal is IDR 500.