Skip to main content
Donate to the Python Software Foundation or Purchase a PyCharm License to Benefit the PSF! Donate Now

Python client for requests to openrouteservice API services

Project description

Build status Coveralls coverage Documentation Status PyPI version Conda install MyBinder



The openrouteservice library gives you painless access to the openrouteservice (ORS) routing API’s. It performs requests against our API’s for

For further details, please visit:

We also have a repo with a few useful examples here.

For support, please ask our forum.

By using this library, you agree to the ORS terms and conditions.


openrouteservice-py is tested against CPython 2.7, 3.4, 3.5, 3.6, 3.7 and 3.8-dev, and PyPy3.5.

For setting up a testing environment, install requirements-dev.txt:

pip install -r requirements-dev.txt


To install from PyPI, simply use pip:

pip install openrouteservice

To install the latest and greatest from source:

pip install git+git://

For conda users:

conda install -c nilsnolde openrouteservice

This command group will install the library to your global environment. Also works in virtual environments.


If you want to run the unit tests, see Requirements. cd to the library directory and run:

nosetests -v

-v flag for verbose output (recommended).


For an interactive Jupyter notebook have a look on

Basic example

import openrouteservice

coords = ((8.34234,48.23424),(8.34423,48.26424))

client = openrouteservice.Client(key='') # Specify your personal API key
routes = client.directions(coords)

print routes

For convenience, all request performing module methods are wrapped inside the client class. This has the disadvantage, that your IDE can’t auto-show all positional and optional arguments for the different methods. And there are a lot!

The slightly more verbose alternative, preserving your IDE’s smart functions, is

import openrouteservice
from openrouteservice.directions import directions

coords = ((8.34234,48.23424),(8.34423,48.26424))

client = openrouteservice.Client(key='') # Specify your personal API key
routes = directions(client, coords) # Now it shows you all arguments for .directions

Decode Polyline

By default, the directions API returns encoded polylines. To decode to a dict, which is a GeoJSON geometry object, simply do

import openrouteservice
from openrouteservice import convert

coords = ((8.34234,48.23424),(8.34423,48.26424))

client = openrouteservice.Client(key='') # Specify your personal API key

# decode_polyline needs the geometry only
geometry = client.directions(coords)['routes'][0]['geometry']

decoded = convert.decode_polyline(geometry)

print decoded

Dry run

Although errors in query creation should be handled quite decently, you can do a dry run to print the request and its parameters:

import openrouteservice

coords = ((8.34234,48.23424),(8.34423,48.26424))

client = openrouteservice.Client()
client.directions(coords, dry_run='true')

Local ORS instance

If you’re hosting your own ORS instance, you can alter the base_url parameter to fit your own:

import openrouteservice

coords = ((8.34234,48.23424),(8.34423,48.26424))

# key can be omitted for local host
client = openrouteservice.Client(base_url='http://localhost/ors')

# Only works if you didn't change the ORS endpoints manually
routes = client.directions(coords)

# If you did change the ORS endpoints for some reason
# you'll have to pass url and required parameters explicitly:
routes = client.request(
      'coordinates': coords,
      'profile': 'driving-car',
      'format': 'geojson'


For general support and questions, contact our forum.

For issues/bugs/enhancement suggestions, please use


This library is based on the very elegant codebase from googlemaps.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
openrouteservice-2.2.1-py2.py3-none-any.whl (37.2 kB) Copy SHA256 hash SHA256 Wheel py2.py3
openrouteservice-2.2.1.tar.gz (27.7 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page