Geocode Earth Forward API

The Forward API from Geocode Earth — 3 operation(s) for forward.

Operations 3

GET /autocomplete Autocomplete (type-ahead) geocoding #
GET /search/structured Structured forward geocoding #

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/geocode-earth-forward-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 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 Specification

geocode-earth-forward-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Geocode Earth Forward 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: []
tags:
- name: Forward
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'
  /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'
components:
  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
    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
    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
    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
    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.
  parameters:
    BoundaryRectMaxLat:
      name: boundary.rect.max_lat
      in: query
      description: Maximum latitude of a bounding rectangle filter.
      schema:
        type: number
        format: double
    Size:
      name: size
      in: query
      description: Maximum number of results to return (default 10).
      schema:
        type: integer
        default: 10
        minimum: 1
        maximum: 40
    BoundaryRectMinLat:
      name: boundary.rect.min_lat
      in: query
      description: Minimum latitude of a bounding rectangle 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
    BoundaryRectMinLon:
      name: boundary.rect.min_lon
      in: query
      description: Minimum longitude of a bounding rectangle filter.
      schema:
        type: number
        format: double
    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
    BoundaryRectMaxLon:
      name: boundary.rect.max_lon
      in: query
      description: Maximum longitude of a bounding rectangle filter.
      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
    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
    BoundaryCountry:
      name: boundary.country
      in: query
      description: Restrict results to one or more ISO 3166-1 country codes.
      schema:
        type: string
      example: US
    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
    FocusPointLon:
      name: focus.point.lon
      in: query
      description: Longitude used to prioritize results near a given location.
      schema:
        type: number
        format: double
    ApiKey:
      name: api_key
      in: query
      required: true
      description: Your Geocode Earth API key.
      schema:
        type: string
    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
  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.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: query
      name: api_key
      description: Geocode Earth API key passed as the api_key query string parameter.