Geocode Earth Structured Search API
Forward geocoding from separate address components (address, locality, region, postalcode, country, and more) instead of a single free-text string, for cases where structured fields are already known.
Forward geocoding from separate address components (address, locality, region, postalcode, country, and more) instead of a single free-text string, for cases where structured fields are already known.
openapi: 3.0.1
info:
title: Geocode Earth API
description: >-
Hosted geocoding and address autocomplete API built on the open-source
Pelias geocoder. Provides forward (search), autocomplete, reverse, and
structured geocoding plus place lookup over open data sources
(OpenStreetMap, OpenAddresses, Who's on First, and Geonames). All
responses are GeoJSON FeatureCollections. Authentication is via an
api_key query string parameter.
termsOfService: https://geocode.earth/terms/
contact:
name: Geocode Earth Support
url: https://geocode.earth/
email: hello@geocode.earth
version: '1.0'
servers:
- url: https://api.geocode.earth/v1
description: Geocode Earth v1 production API
security:
- ApiKeyAuth: []
paths:
/search:
get:
operationId: search
tags:
- Forward
summary: Forward geocoding (search)
description: >-
Turn a free-text place or address string into structured GeoJSON
results with coordinates, ranked by relevance.
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: text
in: query
required: true
description: The place or address to search for.
schema:
type: string
example: 476 5th Avenue, New York, NY 10018
- $ref: '#/components/parameters/Size'
- $ref: '#/components/parameters/Layers'
- $ref: '#/components/parameters/Sources'
- $ref: '#/components/parameters/BoundaryCountry'
- $ref: '#/components/parameters/BoundaryRectMinLon'
- $ref: '#/components/parameters/BoundaryRectMinLat'
- $ref: '#/components/parameters/BoundaryRectMaxLon'
- $ref: '#/components/parameters/BoundaryRectMaxLat'
- $ref: '#/components/parameters/BoundaryCircleLat'
- $ref: '#/components/parameters/BoundaryCircleLon'
- $ref: '#/components/parameters/BoundaryCircleRadius'
- $ref: '#/components/parameters/FocusPointLat'
- $ref: '#/components/parameters/FocusPointLon'
- $ref: '#/components/parameters/Lang'
responses:
'200':
description: A GeoJSON FeatureCollection of geocoding results.
content:
application/json:
schema:
$ref: '#/components/schemas/GeocodingResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/autocomplete:
get:
operationId: autocomplete
tags:
- Forward
summary: Autocomplete (type-ahead) geocoding
description: >-
Type-ahead geocoding optimized for partial, real-time user input.
Returns ranked suggestions as the user types.
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: text
in: query
required: true
description: The partial search input from the user.
schema:
type: string
example: lond
- $ref: '#/components/parameters/Layers'
- $ref: '#/components/parameters/Sources'
- $ref: '#/components/parameters/BoundaryCountry'
- $ref: '#/components/parameters/BoundaryRectMinLon'
- $ref: '#/components/parameters/BoundaryRectMinLat'
- $ref: '#/components/parameters/BoundaryRectMaxLon'
- $ref: '#/components/parameters/BoundaryRectMaxLat'
- $ref: '#/components/parameters/FocusPointLat'
- $ref: '#/components/parameters/FocusPointLon'
- $ref: '#/components/parameters/Lang'
responses:
'200':
description: A GeoJSON FeatureCollection of autocomplete suggestions.
content:
application/json:
schema:
$ref: '#/components/schemas/GeocodingResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/reverse:
get:
operationId: reverse
tags:
- Reverse
summary: Reverse geocoding
description: >-
Convert a latitude/longitude point into the nearest address, venue,
or (with the layers parameter) the administrative area that contains
it.
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: point.lat
in: query
required: true
description: Latitude of the point to reverse geocode.
schema:
type: number
format: double
example: -22.95166
- name: point.lon
in: query
required: true
description: Longitude of the point to reverse geocode.
schema:
type: number
format: double
example: -43.21083
- $ref: '#/components/parameters/Size'
- $ref: '#/components/parameters/Layers'
- $ref: '#/components/parameters/Sources'
- $ref: '#/components/parameters/BoundaryCountry'
- $ref: '#/components/parameters/BoundaryCircleRadius'
- $ref: '#/components/parameters/Lang'
responses:
'200':
description: A GeoJSON FeatureCollection of nearby records.
content:
application/json:
schema:
$ref: '#/components/schemas/GeocodingResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/search/structured:
get:
operationId: searchStructured
tags:
- Forward
summary: Structured forward geocoding
description: >-
Forward geocoding from separate address components instead of a single
free-text string. At least one component parameter is required.
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: address
in: query
description: Street address including house number, e.g. "10 Downing St".
schema:
type: string
example: 10 Downing St
- name: neighbourhood
in: query
description: Neighbourhood within a locality.
schema:
type: string
- name: borough
in: query
description: Borough within a locality (e.g. a New York City borough).
schema:
type: string
- name: locality
in: query
description: City or town.
schema:
type: string
example: London
- name: county
in: query
description: County or administrative subdivision below region.
schema:
type: string
- name: region
in: query
description: State, province, or region.
schema:
type: string
- name: postalcode
in: query
description: Postal or ZIP code.
schema:
type: string
example: SW1A 2AA
- name: country
in: query
description: Country name or ISO 3166-1 alpha-2/alpha-3 code.
schema:
type: string
example: GB
- $ref: '#/components/parameters/Size'
- $ref: '#/components/parameters/Layers'
- $ref: '#/components/parameters/Sources'
- $ref: '#/components/parameters/Lang'
responses:
'200':
description: A GeoJSON FeatureCollection of geocoding results.
content:
application/json:
schema:
$ref: '#/components/schemas/GeocodingResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/place:
get:
operationId: place
tags:
- Place
summary: Place lookup by gid
description: >-
Look up one or more records directly by their Geocode Earth global
identifier (gid). Multiple ids may be supplied as a comma-separated
list.
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: ids
in: query
required: true
description: >-
One or more global identifiers (gid) to retrieve, comma-separated.
schema:
type: string
example: whosonfirst:locality:101750367
- $ref: '#/components/parameters/Lang'
responses:
'200':
description: A GeoJSON FeatureCollection containing the requested records.
content:
application/json:
schema:
$ref: '#/components/schemas/GeocodingResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: query
name: api_key
description: Geocode Earth API key passed as the api_key query string parameter.
parameters:
ApiKey:
name: api_key
in: query
required: true
description: Your Geocode Earth API key.
schema:
type: string
Size:
name: size
in: query
description: Maximum number of results to return (default 10).
schema:
type: integer
default: 10
minimum: 1
maximum: 40
Layers:
name: layers
in: query
description: >-
Comma-separated list of layers to search, e.g. venue, address,
street, locality, region, country, or the coarse alias.
schema:
type: string
example: venue,address
Sources:
name: sources
in: query
description: >-
Comma-separated list of data sources to query, e.g. osm
(OpenStreetMap), oa (OpenAddresses), wof (Who's on First), gn
(Geonames).
schema:
type: string
example: osm,oa
BoundaryCountry:
name: boundary.country
in: query
description: Restrict results to one or more ISO 3166-1 country codes.
schema:
type: string
example: US
BoundaryRectMinLon:
name: boundary.rect.min_lon
in: query
description: Minimum longitude of a bounding rectangle filter.
schema:
type: number
format: double
BoundaryRectMinLat:
name: boundary.rect.min_lat
in: query
description: Minimum latitude of a bounding rectangle filter.
schema:
type: number
format: double
BoundaryRectMaxLon:
name: boundary.rect.max_lon
in: query
description: Maximum longitude of a bounding rectangle filter.
schema:
type: number
format: double
BoundaryRectMaxLat:
name: boundary.rect.max_lat
in: query
description: Maximum latitude of a bounding rectangle filter.
schema:
type: number
format: double
BoundaryCircleLat:
name: boundary.circle.lat
in: query
description: Latitude of the center of a bounding circle filter.
schema:
type: number
format: double
BoundaryCircleLon:
name: boundary.circle.lon
in: query
description: Longitude of the center of a bounding circle filter.
schema:
type: number
format: double
BoundaryCircleRadius:
name: boundary.circle.radius
in: query
description: Radius of the bounding circle filter, in kilometers.
schema:
type: number
format: double
FocusPointLat:
name: focus.point.lat
in: query
description: Latitude used to prioritize results near a given location.
schema:
type: number
format: double
FocusPointLon:
name: focus.point.lon
in: query
description: Longitude used to prioritize results near a given location.
schema:
type: number
format: double
Lang:
name: lang
in: query
description: >-
Preferred response language as an ISO 639-1 or 639-3 code, used to
localize result labels where translations are available.
schema:
type: string
example: en
responses:
BadRequest:
description: The request was malformed or missing a required parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/GeocodingResponse'
Unauthorized:
description: The API key was missing or invalid.
TooManyRequests:
description: The account rate limit or quota was exceeded.
schemas:
GeocodingResponse:
type: object
description: A GeoJSON FeatureCollection returned by the Geocode Earth API.
properties:
geocoding:
$ref: '#/components/schemas/GeocodingBlock'
type:
type: string
example: FeatureCollection
features:
type: array
items:
$ref: '#/components/schemas/Feature'
bbox:
type: array
description: Bounding box of all results as [min_lon, min_lat, max_lon, max_lat].
items:
type: number
format: double
GeocodingBlock:
type: object
description: Metadata about the geocoding request and engine.
properties:
version:
type: string
example: '0.2'
attribution:
type: string
example: https://geocode.earth/guidelines
query:
type: object
additionalProperties: true
description: Echo of the parsed query parameters used for the request.
engine:
type: object
properties:
name:
type: string
example: Pelias
author:
type: string
example: Geocode Earth
version:
type: string
example: '1.0'
timestamp:
type: integer
format: int64
description: Unix epoch timestamp (milliseconds) when the response was generated.
Feature:
type: object
description: A single GeoJSON Feature representing a geocoded record.
properties:
type:
type: string
example: Feature
geometry:
$ref: '#/components/schemas/Geometry'
properties:
$ref: '#/components/schemas/FeatureProperties'
bbox:
type: array
items:
type: number
format: double
Geometry:
type: object
properties:
type:
type: string
example: Point
coordinates:
type: array
description: Coordinates as [longitude, latitude].
items:
type: number
format: double
example:
- -73.981929
- 40.752663
FeatureProperties:
type: object
description: Descriptive properties for a geocoded record.
properties:
id:
type: string
example: '101750367'
gid:
type: string
description: Global identifier usable with the place endpoint.
example: whosonfirst:locality:101750367
layer:
type: string
example: venue
source:
type: string
example: osm
source_id:
type: string
country_code:
type: string
example: US
name:
type: string
example: Empire State Building
confidence:
type: number
format: float
example: 0.9
match_type:
type: string
example: exact
accuracy:
type: string
example: point
country:
type: string
example: United States
country_gid:
type: string
region:
type: string
example: New York
region_gid:
type: string
locality:
type: string
example: New York
locality_gid:
type: string
postalcode:
type: string
example: '10018'
street:
type: string
example: 5th Avenue
housenumber:
type: string
example: '476'
label:
type: string
example: Empire State Building, New York, NY, USA