Demand forecasting lies at the heart of any revenue management system. It aims to estimate the quantity of a product or service that will be purchased in the future. In this paper, we perform railway demand forecasting for a major European railroad company by taking various contributing parameters into account. To have multipurpose results, the current problem is explored in two different aggregation levels. At the high level, the problem is defined as prediction of the total number of bookings for all trains departing on a specific departure date and within a certain time range. Moreover, in a more disaggregated level, the prediction models aim to compute the total number of bookings within each booking period for all trains leaving in a specific time range of a certain departure date. Using state-of-the-art machine learning methods and various heuristic feature construction techniques, remarkable results with high forecast accuracy and reasonable computational complexity are achieved in both aggregation levels. This paper aims to contribute to the application of ML techniques in RM by introducing new heuristic feature engineering techniques, exploring the importance of accurate clustering, and implementing state-of-the-art machine learning methods in the context of railway industry.