OpenRouteService Geocoding API

Resolve addresses to coordinates and vice versa using Pelias engine

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/openrouteservice-geocoding-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

openrouteservice-geocoding-api-openapi.yml Raw ↑
openapi: 3.0.3
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:
    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
    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
    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
    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
  responses:
    Forbidden:
      description: Forbidden - API key does not have permission for this operation
      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'
    InternalServerError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: API key obtained from https://openrouteservice.org