1. An apparatus for providing a travel route, comprising: a processor; and a memory communicatively coupled to the processor, the memory having stored therein computer-executable instructions configured to implement components comprising: a receiver component configured to receive a request for directions between an origination point and a destination point; and an analysis component configured to identify a journey between the origination and destination points, the journey comprising a route and a start time of travel along the route, the analysis component configured to: identify, by a search, a plurality of candidate journeys between the origination point and the destination point, the search being based at least in part on contextual information, calculate a plurality of expected durations corresponding to the plurality of candidate journeys, an expected duration of a candidate journey depending on a route of the journey, on a start time of the journey, and on at least a portion of the contextual information, and select the journey from the plurality of candidate journeys based on the plurality of expected durations; the analysis component at least configured to predict one or more characteristics of traffic flow at one or more road segments at one or more future times based at least in part on the contextual information to calculate the plurality of expected durations, including being configured to predict a time at which traffic flow on a road segment will return to a free-flowing state after being in a jammed state.