openapi: 3.0.3
info:
title: Pelias Geocoding Autocomplete Forward Geocoding API
description: 'Pelias is a modular, open-source geocoding search engine built on Elasticsearch. It converts addresses and place names into geographic coordinates (forward geocoding) and geographic coordinates into places and addresses (reverse geocoding). Powered entirely by open data from OpenStreetMap, OpenAddresses, Who''s on First, and Geonames, it is freely available under the MIT license and can be self-hosted or accessed via hosted services such as geocode.earth.
'
version: '1.0'
license:
name: MIT
url: https://github.com/pelias/pelias/blob/master/LICENSE
contact:
name: Pelias Team
email: team@pelias.io
url: https://github.com/pelias
x-github-org: https://github.com/pelias
x-documentation: https://github.com/pelias/documentation
servers:
- url: https://api.geocode.earth/v1
description: Geocode.earth hosted Pelias service
- url: http://localhost:3100/v1
description: Self-hosted local Pelias instance
tags:
- name: Forward Geocoding
description: Convert text or addresses into geographic coordinates
paths:
/search:
get:
operationId: searchGeocode
summary: Forward geocode a free-form text query
description: 'Search for places by free-form text. Returns up to 10 GeoJSON features by default. Supports filtering by data source, layer, bounding box, circle, and country.
'
tags:
- Forward Geocoding
parameters:
- $ref: '#/components/parameters/text'
- $ref: '#/components/parameters/size'
- $ref: '#/components/parameters/lang'
- $ref: '#/components/parameters/focus.point.lat'
- $ref: '#/components/parameters/focus.point.lon'
- $ref: '#/components/parameters/boundary.rect.min_lon'
- $ref: '#/components/parameters/boundary.rect.max_lon'
- $ref: '#/components/parameters/boundary.rect.min_lat'
- $ref: '#/components/parameters/boundary.rect.max_lat'
- $ref: '#/components/parameters/boundary.circle.lat'
- $ref: '#/components/parameters/boundary.circle.lon'
- $ref: '#/components/parameters/boundary.circle.radius'
- $ref: '#/components/parameters/boundary.country'
- $ref: '#/components/parameters/boundary.gid'
- $ref: '#/components/parameters/sources'
- $ref: '#/components/parameters/layers'
responses:
'200':
description: GeoJSON FeatureCollection of geocoding results
content:
application/json:
schema:
$ref: '#/components/schemas/GeocodingResponse'
examples:
ymca_search:
$ref: '#/components/examples/YMCASearch'
'400':
$ref: '#/components/responses/BadRequest'
/search/structured:
get:
operationId: structuredGeocode
summary: Forward geocode using structured address components
description: 'Search for places by providing individual address components (address, neighbourhood, borough, locality, county, region, postalcode, country). Reduces ambiguity compared to free-form text search. Currently in beta.
'
tags:
- Forward Geocoding
parameters:
- name: address
in: query
description: Street address with optional house number
schema:
type: string
example: 30 West 26th Street
- name: neighbourhood
in: query
description: Neighbourhood name (vernacular geographic entity)
schema:
type: string
example: Notting Hill
- name: borough
in: query
description: Borough name (sub-locality division)
schema:
type: string
example: Manhattan
- name: locality
in: query
description: City or locality name
schema:
type: string
example: New York
- name: county
in: query
description: County or administrative division between locality and region
schema:
type: string
example: Bucks
- name: region
in: query
description: State, province, or first-level administrative division
schema:
type: string
example: NY
- name: postalcode
in: query
description: Postal or ZIP code
schema:
type: string
example: '10001'
- name: country
in: query
description: Country name or ISO-3166 alpha-2/alpha-3 code
schema:
type: string
example: US
- $ref: '#/components/parameters/size'
- $ref: '#/components/parameters/lang'
- $ref: '#/components/parameters/focus.point.lat'
- $ref: '#/components/parameters/focus.point.lon'
- $ref: '#/components/parameters/boundary.rect.min_lon'
- $ref: '#/components/parameters/boundary.rect.max_lon'
- $ref: '#/components/parameters/boundary.rect.min_lat'
- $ref: '#/components/parameters/boundary.rect.max_lat'
- $ref: '#/components/parameters/boundary.country'
- $ref: '#/components/parameters/sources'
- $ref: '#/components/parameters/layers'
responses:
'200':
description: GeoJSON FeatureCollection of geocoding results
content:
application/json:
schema:
$ref: '#/components/schemas/GeocodingResponse'
'400':
$ref: '#/components/responses/BadRequest'
components:
parameters:
size:
name: size
in: query
description: Maximum number of results to return (default 10, max 40)
schema:
type: integer
minimum: 1
maximum: 40
default: 10
example: 10
sources:
name: sources
in: query
description: 'Comma-separated list of data sources to query. Valid values: openstreetmap (osm), openaddresses (oa), whosonfirst (wof), geonames (gn)
'
schema:
type: string
enum:
- openstreetmap
- osm
- openaddresses
- oa
- whosonfirst
- wof
- geonames
- gn
example: osm
lang:
name: lang
in: query
description: 'BCP47 language tag for preferred response language (e.g. en, fr, de). Not all places have translated names.
'
schema:
type: string
example: en
layers:
name: layers
in: query
description: 'Comma-separated list of layer types to restrict results. Valid values: venue, address, street, neighbourhood, borough, localadmin, locality, county, macrocounty, region, macroregion, country, coarse, postalcode
'
schema:
type: string
example: address,locality
boundary.rect.min_lat:
name: boundary.rect.min_lat
in: query
description: Minimum latitude of rectangular boundary (southern edge)
schema:
type: number
format: float
boundary.gid:
name: boundary.gid
in: query
description: Pelias gid of an administrative area to restrict results within
schema:
type: string
example: whosonfirst:locality:101748355
boundary.rect.max_lat:
name: boundary.rect.max_lat
in: query
description: Maximum latitude of rectangular boundary (northern edge)
schema:
type: number
format: float
focus.point.lon:
name: focus.point.lon
in: query
description: Longitude of the focus point to boost nearby results
schema:
type: number
format: float
minimum: -180
maximum: 180
example: -122.4194
text:
name: text
in: query
required: true
description: Free-form text to geocode (addresses, place names, etc.)
schema:
type: string
example: YMCA
boundary.circle.radius:
name: boundary.circle.radius
in: query
description: Radius in km of the circular boundary
schema:
type: number
format: float
boundary.circle.lat:
name: boundary.circle.lat
in: query
description: Latitude of the center of a circular boundary
schema:
type: number
format: float
boundary.country:
name: boundary.country
in: query
description: 'Comma-separated list of ISO-3166 alpha-2 or alpha-3 country codes to restrict results
'
schema:
type: string
example: GBR
boundary.circle.lon:
name: boundary.circle.lon
in: query
description: Longitude of the center of a circular boundary
schema:
type: number
format: float
boundary.rect.max_lon:
name: boundary.rect.max_lon
in: query
description: Maximum longitude of rectangular boundary (eastern edge)
schema:
type: number
format: float
boundary.rect.min_lon:
name: boundary.rect.min_lon
in: query
description: Minimum longitude of rectangular boundary (western edge)
schema:
type: number
format: float
focus.point.lat:
name: focus.point.lat
in: query
description: Latitude of the focus point to boost nearby results
schema:
type: number
format: float
minimum: -90
maximum: 90
example: 37.7749
examples:
YMCASearch:
summary: Search for YMCA worldwide
value:
geocoding:
version: '1.0'
attribution: https://geocode.earth/guidelines
query:
text: YMCA
size: 10
private: false
lang:
name: English
iso6391: en
iso6393: eng
defaulted: true
engine:
name: Pelias
author: Mapzen
version: '1.0'
timestamp: 1525718151924
type: FeatureCollection
features:
- type: Feature
geometry:
type: Point
coordinates:
- -3.178491
- 51.675098
properties:
id: '1234567'
gid: openstreetmap:venue:1234567
layer: venue
source: openstreetmap
name: YMCA
confidence: 0.9
country: United Kingdom
country_a: GBR
locality: Bargoed
label: YMCA, Bargoed Community, United Kingdom
schemas:
ErrorResponse:
type: object
description: Error response from the Pelias API
properties:
geocoding:
type: object
properties:
errors:
type: array
items:
type: string
example:
- '''text'' parameter is required'
query:
type: object
additionalProperties: true
type:
type: string
enum:
- FeatureCollection
features:
type: array
items: {}
GeocodingFeature:
type: object
description: A GeoJSON Feature representing a geocoded place
required:
- type
- geometry
- properties
properties:
type:
type: string
enum:
- Feature
geometry:
type: object
description: GeoJSON Point geometry (coordinates are [longitude, latitude])
required:
- type
- coordinates
properties:
type:
type: string
enum:
- Point
coordinates:
type: array
description: '[longitude, latitude] in decimal degrees'
items:
type: number
minItems: 2
maxItems: 2
properties:
$ref: '#/components/schemas/PlaceProperties'
bbox:
type: array
description: Feature-level bounding box [minLon, minLat, maxLon, maxLat]
items:
type: number
minItems: 4
maxItems: 4
GeocodingResponse:
type: object
description: GeoJSON FeatureCollection returned by all Pelias endpoints
required:
- geocoding
- type
- features
properties:
geocoding:
$ref: '#/components/schemas/GeocodingMetadata'
type:
type: string
enum:
- FeatureCollection
description: GeoJSON type identifier
features:
type: array
description: List of matched place features
items:
$ref: '#/components/schemas/GeocodingFeature'
bbox:
type: array
description: Bounding box of all results [minLon, minLat, maxLon, maxLat]
items:
type: number
minItems: 4
maxItems: 4
PlaceProperties:
type: object
description: Properties of a geocoded place
properties:
id:
type: string
description: Source-specific record ID
example: '101750367'
gid:
type: string
description: Pelias Global Identifier (source:layer:id)
example: whosonfirst:locality:101750367
layer:
type: string
description: Data layer/type (venue, address, locality, country, etc.)
example: locality
source:
type: string
description: Data source name
example: whosonfirst
source_id:
type: string
description: ID within the original source dataset
example: '101750367'
name:
type: string
description: Short place name (business name, street address, locality, etc.)
example: London
label:
type: string
description: Human-friendly full label ready for display
example: London, England, United Kingdom
confidence:
type: number
format: float
minimum: 0
maximum: 1
description: Confidence score for this result (0–1)
example: 0.949
distance:
type: number
format: float
description: Distance in km from query point (reverse geocoding only)
country:
type: string
example: United Kingdom
country_gid:
type: string
example: whosonfirst:country:85633159
country_a:
type: string
description: ISO-3166 alpha-3 country code
example: GBR
macroregion:
type: string
example: England
macroregion_gid:
type: string
example: whosonfirst:macroregion:404227469
region:
type: string
example: City of Westminster
region_gid:
type: string
example: whosonfirst:region:85684061
region_a:
type: string
description: Region abbreviation
example: CA
county:
type: string
example: Maui
county_gid:
type: string
localadmin:
type: string
localadmin_gid:
type: string
locality:
type: string
example: London
locality_gid:
type: string
example: whosonfirst:locality:101750367
borough:
type: string
example: Manhattan
borough_gid:
type: string
neighbourhood:
type: string
example: Notting Hill
neighbourhood_gid:
type: string
postalcode:
type: string
example: '10001'
housenumber:
type: string
example: '30'
street:
type: string
example: West 26th Street
categories:
type: array
description: Place categories (returned when categories parameter is present on /place)
items:
type: string
example:
- entertainment
addendum:
type: object
description: Additional source-specific metadata
additionalProperties: true
GeocodingMetadata:
type: object
description: Metadata about the geocoding request and response
properties:
version:
type: string
description: Pelias API version
example: '1.0'
attribution:
type: string
description: Attribution URL for the geocoding service
example: https://geocode.earth/guidelines
query:
type: object
description: Parsed query parameters
additionalProperties: true
engine:
type: object
description: Engine version information
properties:
name:
type: string
example: Pelias
author:
type: string
example: Mapzen
version:
type: string
example: '1.0'
timestamp:
type: integer
description: Unix timestamp of the response (milliseconds)
example: 1525718151924
responses:
BadRequest:
description: Bad request — missing or invalid parameters
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
geocoding:
errors:
- '''text'' parameter is required'
type: FeatureCollection
features: []
externalDocs:
description: Pelias Documentation
url: https://github.com/pelias/documentation