hafas-m - Interface to the DeutscheBahn/HAFAS online departure monitor


hafas-m [-d date] [-t time] [-m motlist] [-s service | -u url] station


version 3.01


hafas-m is an interface to HAFAS-based departure monitors such as the one available at

It requests all departures at station (optionally filtered by date, time, route and means of transport) and lists them on stdout.


-a, --arrivals

Show arrivals instead of departures, including trains ending at the specified station. Note that this causes the output to display the start instead of the end station.

-d, --date

Date to list departures for. Default: today.

-l, --lang d|e|i|n

Set language used for additional information. Supports deutsch (default), english, italian and dutch (n), depending on the used service.

-L, --ignore-late

Do not display delayed trains.


List known HAFAS installations. A HAFAS service from this list can be querie using --service. Use --url for HAFAS entrypoints not included in the list (and consider notifying me so I can include them in the next release).

-m, --mot motlist

By default, hafas-m shows all modes of transport arriving/departing at the specified station. With motlist, it is possible to either exclude a list of modes, or exclusively show only a select list of modes.

To exclude modes, set motlist to !mot1,!mot2,...

To show them exclusively, set motlist to mot1,mot2,...

The mot types depend on the used service. Use -m help to list them.

This option is not available when the HAFAS entrypoint has been specified via --url.

-s, --service service

Request arrivals/departures using the API provided by service, defaults to DB (Deutsche Bahn). See --list for a list of known services.

-t, --time hh:mm

Time to list departures for. Default: now.

-u, --url url

Request arrivals/departures using the API entry point at url. Note that the language and output selection suffix (e.g. "/dn") must not be included here. Note that --mot will not work when using this opton.

-V, --version

Show version information.


Zero unless things went wrong.




* Class::Accessor(3pm)
* LWP::UserAgent(3pm)
* XML::LibXML(3pm)


The non-default services (anything other than DB) are not well tested.


Copyright (C) 2015-2020 by Daniel Friesel <>


This program is licensed under the same terms as Perl itself.