https://github.com/motis-project/motis
multimodal routing, geocoding, and map tiles
https://github.com/motis-project/motis
gbfs gtfs gtfs-fares gtfs-fares-v2 gtfs-flex gtfs-rt intermodal maas mobility mobility-as-a-service multimodal openapi openstreetmap real-time routing routing-algorithm routing-engine transit transport
Last synced: about 15 hours ago
JSON representation
multimodal routing, geocoding, and map tiles
- Host: GitHub
- URL: https://github.com/motis-project/motis
- Owner: motis-project
- License: mit
- Created: 2020-04-14T16:05:37.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2025-11-16T15:58:57.000Z (about 21 hours ago)
- Last Synced: 2025-11-16T17:27:36.391Z (about 19 hours ago)
- Topics: gbfs, gtfs, gtfs-fares, gtfs-fares-v2, gtfs-flex, gtfs-rt, intermodal, maas, mobility, mobility-as-a-service, multimodal, openapi, openstreetmap, real-time, routing, routing-algorithm, routing-engine, transit, transport
- Language: C++
- Homepage:
- Size: 26.3 MB
- Stars: 399
- Watchers: 21
- Forks: 103
- Open Issues: 74
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-transit - MOTIS - Multi Objective Travel Information System, written in C++ and Java. Can consume schedule timetables in the GTFS or HAFAS format as well as real time information in the GTFS-RT (and RISML, a propriatary format at Deutsche Bahn) as input data. For pedestrian routing (handled by Per Pedes Routing) and car routing (handled by OSRM) OpenStreetMap data is used. (Uncategorized / Uncategorized)
- awesome-transit - MOTIS - Multi Objective Travel Information System, written in C++ and Java. Can consume schedule timetables in the GTFS or HAFAS format as well as real time information in the GTFS-RT (and RISML, a propriatary format at Deutsche Bahn) as input data. For pedestrian routing (handled by Per Pedes Routing) and car routing (handled by OSRM) OpenStreetMap data is used. (Uncategorized / Uncategorized)
README

> [!TIP]
> :sparkles: Join the international MOTIS community at [**motis:matrix.org**](https://matrix.to/#/#motis:matrix.org)
MOTIS stands for **M**odular **O**pen **T**ransportation **I**nformation **S**ystem.
It is an open-source software platform designed to facilitate
efficient planning and routing in multi-modal transportation systems.
Developed to handle *large-scale* transportation data,
MOTIS integrates various modes of transport -
such as walking, cycling, sharing mobility (e-scooters, bike sharing, car
sharing), and public transport -
to provide optimized routing solutions.
MOTIS currently supports the following input formats:
- (One) **OpenStreetMap `osm.pbf`** file for the street network, addresses, indoor-routing, etc.
- (Multiple) **GTFS** (including GTFS Flex and GTFS Fares v2) feeds for static timetables
- (Multiple) **GTFS-RT** feeds for real-time updates (delays, cancellations, track changes, service alerts)
- (Multiple) **GBFS** feeds for sharing mobility
*Working on (funded by [NLnet](https://nlnet.nl/project/MOTIS/))*: NeTEx and SIRI
MOTIS provides an easy-to-use **REST API** (JSON via HTTP) with
an [**OpenAPI specification**](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/motis-project/motis/refs/heads/master/openapi.yaml) ([source](openapi.yaml))
that allows you to generate clients for your favorite programming language. You may also directly use the pre-generated [JS client](https://www.npmjs.com/package/@motis-project/motis-client). Some more available client libraries are listed [over at Transitous](https://transitous.org/api/).
Also checkout [**Transitous**](https://transitous.org), which operates a MOTIS instance with global coverage (as far as available) at [api.transitous.org](https://api.transitous.org).
Please make sure to read the [Usage Policy](https://transitous.org/api/) before integrating this endpoint into your app.
# Features
> [!NOTE]
> :rocket: MOTIS is optimized for **high performance** with **low memory usage**.
>
> This enables _planet-sized_ deployments on affordable hardware.
MOTIS is a swiss army knife for mobility and comes with all features you need for a next generation mobility platform:
- **routing**: one mode walking, bike, car, sharing mobility / combined modes
- **geocoding**: multi-language address and stop name completion with fuzzy string matching and resolution to geo coordinates
- **reverse geocoding**: resolving geo coordinates to the closest address
- **tile server**: background map tiles
MOTIS uses efficient traffic day bitsets that allows efficient loading of **full year timetables**!
Loading one year of timetable doesn't take much more RAM than loading one month.
Features can be turned on and off as needed.
# Quick Start
- Create a folder with the following files.
- Download MOTIS from
the [latest release](https://github.com/motis-project/motis/releases) and
extract the archive.
- Download a OpenStreetMap dataset as `osm.pbf` (e.g.
from [Geofabrik](https://download.geofabrik.de/)) and place it in the folder
- Download one or more GTFS datasets and place them in the folder
```bash
./motis config my.osm.pbf gtfs.zip # generates a minimal config.yml
./motis import # preprocesses data
./motis server # starts a HTTP server on port 8080
```
This will preprocess the input files and create a `data` folder.
After that, it will start a server.
> [!IMPORTANT]
> Ensure a valid timetable is used. If the timetable is outdated, it will not contain any trips to consider for upcoming dates.
This script will execute the steps described above for a small dataset for the city of Aachen, Germany:
**Linux / macOS**
```bash
# set TARGET to linux-arm64, macos-arm64, ... to fit your setup
# see release list for supported platforms
TARGET="linux-amd64"
wget https://github.com/motis-project/motis/releases/latest/download/motis-${TARGET}.tar.bz2
tar xf motis-${TARGET}.tar.bz2
wget https://github.com/motis-project/test-data/raw/aachen/aachen.osm.pbf
wget https://opendata.avv.de/current_GTFS/AVV_GTFS_Masten_mit_SPNV.zip
./motis config aachen.osm.pbf AVV_GTFS_Masten_mit_SPNV.zip
./motis import
./motis server
```
**Windows**
```pwsh
Invoke-WebRequest https://github.com/motis-project/motis/releases/latest/download/motis-windows.zip -OutFile motis-windows.zip
Expand-Archive motis-windows.zip
Invoke-WebRequest https://github.com/motis-project/test-data/archive/refs/heads/aachen.zip -OutFile aachen.zip
Expand-Archive aachen.zip
./motis config aachen.osm.pbf AVV_GTFS_Masten_mit_SPNV.zip
./motis import
./motis server
```
# Documentation
## Developer Setup
Build MOTIS from source:
- [for Linux](docs/linux-dev-setup.md)
- [for Windows](docs/windows-dev-setup.md)
- [for macOS](docs/macos-dev-setup.md)
Set up a server using your build:
- [for Linux](docs/dev-setup-server.md)
MOTIS uses [pkg](https://github.com/motis-project/pkg) for dependency management.
See its [README](https://github.com/motis-project/pkg/blob/master/README.md) for how to work with it.
## Configuration
- [Advanced Setups](docs/setup.md)