MCPcopy Index your code
hub / github.com/GIScience/openrouteservice

github.com/GIScience/openrouteservice @v9.9.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v9.9.0 ↗ · + Follow
6,700 symbols 22,519 edges 762 files 636 documented · 9% updated 5d agov9.9.0 · 2026-04-29★ 1,918159 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Openrouteservice

Docker Nightly Build Status Docker Version Status Quality Gate Status Vulnerabilities Security Rating Maintainability Rating Release LICENSE

Openrouteservice is a highly customizable, performant routing service written in Java. It uses a forked and edited version of graphhopper 4.0 and provides global spatial services by consuming user-generated and collaboratively collected free geographic data directly from OpenStreetMap:

¹) Health and Status Endpoint are not available in our public openrouteservice API aka "live API"! You can use them by running your own instance of openrouteservice.

And to avoid any misunderstandings, it should also be mentioned at this point that our live API provides several other endpoints that are not part of the openrouteservice software/repository:

  • openpoiservice: A stand-alone service from HeiGIT that returns points of interest in the area surrounding a geometry
  • openelevationservice: A stand-alone service from HeiGIT that returns the elevation for point or line geometries
  • Pelias: A (reverse) geocoder hosted by HeiGIT that resolves geographic coordinates to addresses and vice versa
  • VROOM: The Vehicle Routing Open-source Optimization Machine hosted by HeiGIT

To play around with openrouteservice you may use our demonstration server which comes with both the backend and a frontend. Or simply sign up for an API key and fire your requests against the API directly. You can also do this in our API Playground - take a look at the API Reference to get more information.

map-client-isochrones

Installation

You can easily run openrouteservice yourself!

tl;dr: We suggest using docker to install and launch openrouteservice. In short, a machine with a working docker installation will get everything done for you.

Change to the directory where you want to install your local openrouteservice and first create some directories, where openrouteservice will persist its data:

mkdir -p ors-docker/config ors-docker/elevation_cache ors-docker/graphs ors-docker/files ors-docker/logs

Only use nightly (main branch) if you know what you do. We recommend running docker compose with the latest release version.

wget https://github.com/GIScience/openrouteservice/releases/latest/download/docker-compose.yml

Start openrouteservice in the background:

docker compose up -d

This will pull the openrouteservice docker image of the selected version and start it up using an example setup and the provided test OSM file for Heidelberg/Germany and surrounding area.

To see the container's logs, run:

docker compose logs 

Stop the container with:

docker compose down

Usage

The above mentioned endpoints will be available on port 8080:

  • http://localhost:8080/ors/v2/directions
  • http://localhost:8080/ors/v2/isochrones
  • http://localhost:8080/ors/v2/matrix
  • http://localhost:8080/ors/v2/snap
  • http://localhost:8080/ors/v2/export
  • http://localhost:8080/ors/v2/health
  • http://localhost:8080/ors/v2/status

You can find more information in the endpoint documentation pages linked above.

On the API Reference there is also a description how you can use the Swagger-UI and the API Playground for local instances of openrouteservice.

Changelog/latest changes

Openrouteservice CHANGELOG

Contribute

We appreciate any kind of contribution - bug reports, new feature suggestion or improving our translations are greatly appreciated. Feel free to create an issue and label it accordingly. If your issue regards the openrouteservice web-app please use the corresponding repository.

If you want to contribute your improvements, please follow the steps outlined in our CONTRIBUTION guidelines

The sourcespy dashboard provides a high level overview of the repository including technology summary, module dependencies and other components of the system.

Questions

For questions please use our community forum.

Translations

If you notice anything wrong with translations, or you want to add a new language to the openrouteservice instructions, we have some instructions in our backend documentation about how you can submit an update. You can also look over at our maps client GitHub if you want to contribute the language to there as well (adding or editing the language in the openrouteservice GitHub repo only affects the instructions - any new language also needs adding to the client).

Extension points exported contracts — how you extend this code

ContainerTestImage (Interface)
Interface representing a container test image. Allows for generic usage of the inheriting enums. [57 implementers]
ors-test-scenarios/src/test/java/utils/ContainerInitializer.java
MatrixAlgorithm (Interface)
(no doc) [6 implementers]
ors-engine/src/main/java/org/heigit/ors/matrix/algorithms/MatrixAlgorithm.java
RouteRequestCustomModelAreas (Interface)
(no doc) [18 implementers]
ors-api/src/main/java/org/heigit/ors/api/requests/routing/RouteRequestCustomModelAreas.java
ContractedMatrixAlgorithm (Interface)
(no doc) [50 implementers]
ors-engine/src/main/java/org/heigit/ors/matrix/algorithms/ContractedMatrixAlgorithm.java
BoundingBox (Interface)
(no doc) [5 implementers]
ors-api/src/main/java/org/heigit/ors/api/responses/common/boundingbox/BoundingBox.java
ORSGraphRepoClient (Interface)
(no doc) [8 implementers]
ors-engine/src/main/java/org/heigit/ors/routing/graphhopper/extensions/manage/remote/ORSGraphRepoClient.java
WarningGraphExtension (Interface)
Interface for declaring a graph storage as bein able to be used for producing warning messages [2 implementers]
ors-engine/src/main/java/org/heigit/ors/routing/graphhopper/extensions/storages/WarningGraphExtension.java
StatisticsProvider (Interface)
(no doc) [2 implementers]
ors-engine/src/main/java/org/heigit/ors/isochrones/statistics/StatisticsProvider.java

Core symbols most depended-on inside this repo

get
called by 813
ors-engine/src/main/java/com/graphhopper/routing/ev/HashMapSparseEncodedValue.java
toString
called by 509
ors-api/src/main/java/org/heigit/ors/api/APIEnums.java
add
called by 426
ors-engine/src/main/java/org/heigit/ors/routing/graphhopper/extensions/edgefilters/EdgeFilterSequence.java
add
called by 407
ors-engine/src/main/java/org/heigit/ors/routing/RouteExtraInfo.java
size
called by 291
ors-engine/src/main/java/org/heigit/ors/matrix/MatrixLocations.java
isEmpty
called by 281
ors-api/src/main/java/org/heigit/ors/api/requests/routing/RouteRequestCustomModelAreas.java
contains
called by 182
ors-engine/src/main/java/org/heigit/ors/routing/graphhopper/extensions/ORSGraphHopper.java
getBaseGraph
called by 133
ors-engine/src/main/java/org/heigit/ors/routing/graphhopper/extensions/util/GraphUtils.java

Shape

Method 5,797
Class 816
Enum 66
Interface 21

Languages

Java100%

Modules by API surface

ors-api/src/test/java/org/heigit/ors/apitests/routing/ResultTest.java113 symbols
ors-api/src/main/java/org/heigit/ors/api/requests/routing/RouteRequest.java93 symbols
ors-engine/src/main/java/org/heigit/ors/routing/RouteSearchParameters.java82 symbols
ors-engine/src/main/java/org/heigit/ors/routing/RoutingRequest.java61 symbols
ors-api/src/main/java/org/heigit/ors/api/APIEnums.java61 symbols
ors-api/src/test/java/org/heigit/ors/apitests/routing/ParamsTest.java60 symbols
ors-engine/src/main/java/org/heigit/ors/isochrones/IsochroneRequest.java49 symbols
ors-api/src/main/java/org/heigit/ors/api/requests/isochrones/IsochronesRequest.java46 symbols
ors-engine/src/main/java/org/heigit/ors/routing/graphhopper/extensions/manage/local/ORSGraphFileManager.java45 symbols
ors-engine/src/main/java/org/heigit/ors/routing/graphhopper/extensions/ORSGraphHopper.java45 symbols
ors-engine/src/main/java/org/heigit/ors/routing/graphhopper/extensions/storages/TrafficGraphStorage.java42 symbols
ors-engine/src/main/java/org/heigit/ors/routing/graphhopper/extensions/flagencoders/bike/CommonBikeFlagEncoder.java38 symbols

For agents

$ claude mcp add openrouteservice \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact