---
title: "Submit batch geocode search job"
method: POST
path: "/batch/geocode/search"
tags: ["Batch Geocoding"]
---

# Submit batch geocode search job

`POST /batch/geocode/search`

## Request

- Base URL: `https://api.geoapify.com/v1`
- URL: `https://api.geoapify.com/v1/batch/geocode/search`
- Auth: one of:
  - API key in query parameter `apiKey`
  - API key in header `x-api-key`

Submit up to 1000 free-text addresses for asynchronous geocoding. One result is requested per input address.

## Query parameters

- `lang` 'ab' | 'aa' | 'af' | 'ak' | 'sq' | 'am' | 'ar' | 'an' | 'hy' | 'as' | 'av' | 'ae' | 'ay' | 'az' | 'bm' | 'ba' | 'eu' | 'be' | 'bn' | 'bh' | 'bi' | 'bs' | 'br' | 'bg' | 'my' | 'ca' | 'ch' | 'ce' | 'ny' | 'zh' | 'cv' | 'kw' | 'co' | 'cr' | 'hr' | 'cs' | 'da' | 'dv' | 'nl' | 'en' | 'eo' | 'et' | 'ee' | 'fo' | 'fj' | 'fi' | 'fr' | 'ff' | 'gl' | 'ka' | 'de' | 'el' | 'gn' | 'gu' | 'ht' | 'ha' | 'he' | 'hz' | 'hi' | 'ho' | 'hu' | 'ia' | 'id' | 'ie' | 'ga' | 'ig' | 'ik' | 'io' | 'is' | 'it' | 'iu' | 'ja' | 'jv' | 'kl' | 'kn' | 'kr' | 'ks' | 'kk' | 'km' | 'ki' | 'rw' | 'ky' | 'kv' | 'kg' | 'ko' | 'ku' | 'kj' | 'la' | 'lb' | 'lg' | 'li' | 'ln' | 'lo' | 'lt' | 'lu' | 'lv' | 'gv' | 'mk' | 'mg' | 'ms' | 'ml' | 'mt' | 'mi' | 'mr' | 'mh' | 'mn' | 'na' | 'nv' | 'nb' | 'nd' | 'ne' | 'ng' | 'nn' | 'no' | 'ii' | 'nr' | 'oc' | 'oj' | 'cu' | 'om' | 'or' | 'os' | 'pa' | 'pi' | 'fa' | 'pl' | 'ps' | 'pt' | 'qu' | 'rm' | 'rn' | 'ro' | 'ru' | 'sa' | 'sc' | 'sd' | 'se' | 'sm' | 'sg' | 'sr' | 'gd' | 'sn' | 'si' | 'sk' | 'sl' | 'so' | 'st' | 'es' | 'su' | 'sw' | 'ss' | 'sv' | 'ta' | 'te' | 'tg' | 'th' | 'ti' | 'bo' | 'tk' | 'tl' | 'tn' | 'to' | 'tr' | 'ts' | 'tt' | 'tw' | 'ty' | 'ug' | 'uk' | 'ur' | 'uz' | 've' | 'vi' | 'vo' | 'wa' | 'cy' | 'wo' | 'fy' | 'xh' | 'yi' | 'yo' | 'za'
- `lat` number
- `lon` number
- `filter` string
- `bias` string
- `text` string
- `countrycodes` string
- `type` 'country' | 'state' | 'city' | 'postcode' | 'street' | 'amenity' | 'locality'
- `priority` number

## Request body

- string[]

## Response `200`

Normalized geocoding results when the batch completes immediately.

- BatchGeocodeSearchResult[]
  - `name` string
  - `continent` string
  - `country` string
  - `country_code` string
  - `region` string
  - `state` string
  - `state_code` string
  - `state_COG` string
  - `department_COG` string
  - `state_district` string
  - `province` string
  - `department` string
  - `arrondissement` string
  - `county` string
  - `county_code` string
  - `county_district` string
  - `city` string
  - `city_district` string
  - `postcode` string
  - `postal_code` string
  - `openGeoDB:postal_codes` string
  - `district` string
  - `suburb` string
  - `municipality` string
  - `commune` string
  - `subdistrict` string
  - `city_block` string
  - `neighbourhood` string
  - `quarter` string
  - `section` string
  - `sector` string
  - `subdivision` string
  - `croft` string
  - `allotments` string
  - `residental` string
  - `farm` string
  - `farmyard` string
  - `industrial` string
  - `commercial` string
  - `retail` string
  - `borough` string
  - `town` string
  - `township` string
  - `village` string
  - `hamlet` string
  - `locality` string
  - `isolated_dwelling` string
  - `street` string
  - `road` string
  - `footway` string
  - `pedestrian` string
  - `path` string
  - `housenumber` string
  - `house_number` string
  - `house_name` string
  - `old_name` string
  - `other` string
  - `formatted` string
  - `address_line1` string
  - `address_line2` string
  - `unlocode` string
  - `iso3166_2` string
  - `iso3166_2_sublevel` string
  - `iso3166_sublevel` string
  - `plus_code` string
  - `plus_code_short` string
  - `postcodes` string[]
  - `other_names` object
  - `population` number
  - `lon` number
  - `lat` number
  - `parent_as_place_id` boolean
  - `timezone` GeocodingTimezoneOutput
    - `name` string, required
    - `name_alt` string
    - `country_codes` string[]
    - `offset_STD` string, required
    - `offset_DST` string, required
    - `offset_STD_seconds` number, required
    - `offset_DST_seconds` number, required
    - `abbreviation_STD` string
    - `abbreviation_DST` string
  - `NUTS_3` string
  - `result_type` 'unknown' | 'amenity_name' | 'amenity' | 'building' | 'street' | 'postcode' | 'suburb' | 'district' | 'city' | 'county' | 'state' | 'country'
  - `distance` number
  - `datasource` GeocodingPublicDatasource
    - `sourcename` string
    - `attribution` string
    - `license` string
    - `url` string, uri
  - `rank` GeocodingGeocodingRank
    - `confidence` number
    - `confidence_city_level` number
    - `confidence_street_level` number
    - `confidence_building_level` number
    - `match_type` 'full_match' | 'inner_part' | 'match_by_building' | 'match_by_street' | 'match_by_postcode' | 'match_by_city_or_disrict' | 'match_by_country_or_state'
    - `importance` number
    - `popularity` number
  - `category` string
  - `categories` string[]
  - `place_id` string
  - `bbox` object
    - `lon1` number, required
    - `lat1` number, required
    - `lon2` number, required
    - `lat2` number, required
  - `query` BatchGeocodeSearchQuery, required
    - `lat` number
    - `lon` number
    - `plus_code` string
    - `text` string, required
    - `postcode` string
    - `city` string
    - `state` string
    - `country` string
    - `housenumber` string
    - `street` string
    - `parsed` GeocodingParsedAddress
      - `po_box` string
      - `unit` string
      - `house` string
      - `housenumber` string
      - `street` string
      - `suburb` string
      - `postcode` string
      - `district` string
      - `city` string
      - `county` string
      - `state` string
      - `region` string
      - `country` string
      - `expected_type` 'unknown' | 'amenity_name' | 'amenity' | 'building' | 'street' | 'postcode' | 'suburb' | 'district' | 'city' | 'county' | 'state' | 'country'
    - `categories` object[]
      - `keys` string[], required
      - `label` string, required

## Other responses

- `202`: The batch geocoding job was accepted and is still processing.
- `400`: Invalid batch geocoding request.
- `401`: Missing or invalid Geoapify API key.
- `404`: Batch job was not found.
- `429`: Rate limit or quota exceeded.
- `500`: Internal gateway error.

---

[API](https://skmtc.dev/geoapify/apis/geoapify-batch-geocoding-api.md) - [All operations](https://skmtc.dev/geoapify/apis/geoapify-batch-geocoding-api/llms.txt) - [OpenAPI document](https://skmtc.dev/geoapify/apis/geoapify-batch-geocoding-api/revisions/d3337330b3ab?raw)
