OpenRouteService Geocoding API
Resolve addresses to coordinates and vice versa using Pelias engine
Resolve addresses to coordinates and vice versa using Pelias engine
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/openrouteservice-geocoding-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: OpenRouteService Directions Geocoding API
description: OpenRouteService is a free, open-source geospatial API platform built on OpenStreetMap data. It provides routing directions for multiple transport modes, isochrones for reachability analysis, time-distance matrices, geocoding, elevation data, points of interest, and vehicle route optimization for logistics and humanitarian use cases.
version: v2
contact:
name: OpenRouteService Support
url: https://ask.openrouteservice.org
email: support@smartmobility.heigit.org
license:
name: GNU General Public License v3.0
url: https://github.com/GIScience/openrouteservice/blob/main/LICENSE
x-ors-docs: https://giscience.github.io/openrouteservice/
servers:
- url: https://api.openrouteservice.org
description: OpenRouteService Public API
security:
- ApiKeyAuth: []
tags:
- name: Geocoding
description: Resolve addresses to coordinates and vice versa using Pelias engine
paths:
/geocode/search:
get:
tags:
- Geocoding
summary: Forward Geocoding
description: Resolves a text address query to geographic coordinates using the Pelias geocoding engine. Returns matching locations ordered by relevance.
operationId: geocodeSearch
parameters:
- name: text
in: query
description: The address or place name to search for
required: true
schema:
type: string
example: Heidelberg, Germany
- name: boundary.country
in: query
description: Restrict results to a specific country using ISO 3166-1 alpha-2 or alpha-3 code
required: false
schema:
type: string
example: DE
- name: boundary.rect.min_lon
in: query
description: Minimum longitude for bounding box restriction
required: false
schema:
type: number
format: double
- name: boundary.rect.min_lat
in: query
description: Minimum latitude for bounding box restriction
required: false
schema:
type: number
format: double
- name: boundary.rect.max_lon
in: query
description: Maximum longitude for bounding box restriction
required: false
schema:
type: number
format: double
- name: boundary.rect.max_lat
in: query
description: Maximum latitude for bounding box restriction
required: false
schema:
type: number
format: double
- name: boundary.circle.lon
in: query
description: Longitude of circle center for circular boundary restriction
required: false
schema:
type: number
format: double
- name: boundary.circle.lat
in: query
description: Latitude of circle center for circular boundary restriction
required: false
schema:
type: number
format: double
- name: boundary.circle.radius
in: query
description: Radius in kilometers for circular boundary restriction
required: false
schema:
type: number
format: double
- name: focus.point.lon
in: query
description: Longitude of focus point to bias nearby results higher
required: false
schema:
type: number
format: double
- name: focus.point.lat
in: query
description: Latitude of focus point to bias nearby results higher
required: false
schema:
type: number
format: double
- name: size
in: query
description: Number of results to return (max 40)
required: false
schema:
type: integer
default: 10
maximum: 40
- name: layers
in: query
description: Filter by Pelias layer types (venue, address, street, neighbourhood, etc.)
required: false
schema:
type: string
- name: sources
in: query
description: Filter by data sources (openstreetmap, openaddresses, whosonfirst, geonames)
required: false
schema:
type: string
responses:
'200':
description: Geocoding results as GeoJSON FeatureCollection
content:
application/json:
schema:
$ref: '#/components/schemas/GeocodeResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'500':
$ref: '#/components/responses/InternalServerError'
/geocode/reverse:
get:
tags:
- Geocoding
summary: Reverse Geocoding
description: Resolves geographic coordinates to a human-readable address using the Pelias engine. Returns the nearest address or place for the given coordinates.
operationId: geocodeReverse
parameters:
- name: point.lon
in: query
description: Longitude of the point to reverse geocode
required: true
schema:
type: number
format: double
example: 8.681495
- name: point.lat
in: query
description: Latitude of the point to reverse geocode
required: true
schema:
type: number
format: double
example: 49.41461
- name: boundary.circle.radius
in: query
description: Radius in kilometers to search around the point
required: false
schema:
type: number
format: double
default: 1
- name: size
in: query
description: Number of results to return
required: false
schema:
type: integer
default: 1
maximum: 40
- name: layers
in: query
description: Filter by Pelias layer types
required: false
schema:
type: string
- name: sources
in: query
description: Filter by data sources
required: false
schema:
type: string
- name: boundary.country
in: query
description: Restrict results to a specific country
required: false
schema:
type: string
responses:
'200':
description: Reverse geocoding results as GeoJSON FeatureCollection
content:
application/json:
schema:
$ref: '#/components/schemas/GeocodeResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'500':
$ref: '#/components/responses/InternalServerError'
/geocode/autocomplete:
get:
tags:
- Geocoding
summary: Geocoding Autocomplete
description: Returns address suggestions as the user types, optimized for low-latency typeahead searches. Uses Pelias autocomplete for partial address matching.
operationId: geocodeAutocomplete
parameters:
- name: text
in: query
description: Partial address text for autocomplete suggestions
required: true
schema:
type: string
example: Heidel
- name: focus.point.lon
in: query
description: Longitude of focus point to bias nearby results higher
required: false
schema:
type: number
format: double
- name: focus.point.lat
in: query
description: Latitude of focus point to bias nearby results higher
required: false
schema:
type: number
format: double
- name: boundary.country
in: query
description: Restrict results to a specific country
required: false
schema:
type: string
- name: layers
in: query
description: Filter by Pelias layer types
required: false
schema:
type: string
- name: sources
in: query
description: Filter by data sources
required: false
schema:
type: string
- name: size
in: query
description: Number of results to return (max 40)
required: false
schema:
type: integer
default: 10
maximum: 40
responses:
'200':
description: Autocomplete suggestions as GeoJSON FeatureCollection
content:
application/json:
schema:
$ref: '#/components/schemas/GeocodeResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'500':
$ref: '#/components/responses/InternalServerError'
components:
schemas:
GeocodeResponse:
type: object
properties:
geocoding:
type: object
properties:
version:
type: string
attribution:
type: string
query:
type: object
engine:
type: object
properties:
name:
type: string
author:
type: string
version:
type: string
timestamp:
type: string
format: date-time
type:
type: string
enum:
- FeatureCollection
features:
type: array
items:
$ref: '#/components/schemas/GeocodeFeature'
bbox:
type: array
items:
type: number
GeocodeFeature:
type: object
properties:
type:
type: string
enum:
- Feature
geometry:
type: object
properties:
type:
type: string
enum:
- Point
coordinates:
type: array
items:
type: number
minItems: 2
maxItems: 2
properties:
type: object
properties:
id:
type: string
gid:
type: string
layer:
type: string
description: Pelias layer (venue, address, street, neighbourhood, etc.)
source:
type: string
description: Data source (openstreetmap, openaddresses, etc.)
source_id:
type: string
name:
type: string
confidence:
type: number
format: double
match_type:
type: string
accuracy:
type: string
country:
type: string
country_gid:
type: string
country_a:
type: string
region:
type: string
region_gid:
type: string
locality:
type: string
locality_gid:
type: string
postalcode:
type: string
label:
type: string
description: Full formatted address label
ErrorResponse:
type: object
properties:
error:
type: object
properties:
code:
type: integer
description: Error code
message:
type: string
description: Human-readable error message
info:
type: object
properties:
engine:
$ref: '#/components/schemas/EngineInfo'
attribution:
type: string
timestamp:
type: integer
format: int64
EngineInfo:
type: object
properties:
version:
type: string
description: ORS engine version
build_date:
type: string
format: date-time
description: Build date of the ORS engine
responses:
Forbidden:
description: Forbidden - API key does not have permission for this operation
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
InternalServerError:
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
Unauthorized:
description: Unauthorized - missing or invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
BadRequest:
description: Bad request - invalid parameters or request body
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: Authorization
description: API key obtained from https://openrouteservice.org