Sorry, you need to enable JavaScript to visit this website.

Structured Geocode

 

Service version: 2
Last edit: 2019.10.29

On this page

Purpose

Search can also be exclusively accessed for structured address look up.

  • The geocoding index will be queried for everything above the street level data.
  • No POIs (Points of Interest) will be returned.
  • Note that the geocoder is very tolerant of typos and incomplete addresses.

It will also handle everything from exact street addresses, street, or intersections, and higher level geographies such as city centers, counties, states, etc.

Run this endpoint

You can easily run this and other endpoints.

  1. Go to the TomTom API Explorer page.
  2. Click an endpoint.
    1. Click Try it out.
    2. Enter/select all required parameter values and any optional parameter values.
    3. At the bottom of the form, click Execute.
  3. Review the Response.

Request data

HTTPS Method: GET

URL format

https://<baseURL>/search/<versionNumber>/structuredGeocode.<ext>?key=<Your_API_Key>&countryCode=<countryCode>[&limit=<limit>][&ofss=<ofss>][&streetNumber=<streetNumber>][&streetName=<streetName>][&crossStreet=<crossStreet>][&municipality=<municipality>][&municipalitySubdivision=<municipalitySubdivision>][&countryTertiarySubdivision=<countryTertiarySubdivision>][&countrySecondarySubdivision=<countrySecondarySubdivision>][&countrySubdivision=<countrySubdivision>][&postalCode=<postalCode>][&language=<language>][&extendedPostalCodesFor=<extendedPostalCodesFor>][&view=<view>][&mapcodes=<mapcodes>]

curl format

curl 'https://<baseURL>/search/<versionNumber>/structuredGeocode.<ext>?key=<Your_API_Key>&countryCode=<countryCode>[&limit=<limit>][&ofss=<ofss>][&streetNumber=<streetNumber>][&streetName=<streetName>][&crossStreet=<crossStreet>][&municipality=<municipality>][&municipalitySubdivision=<municipalitySubdivision>][&countryTertiarySubdivision=<countryTertiarySubdivision>][&countrySecondarySubdivision=<countrySecondarySubdivision>][&countrySubdivision=<countrySubdivision>][&postalCode=<postalCode>][&language=<language>][&extendedPostalCodesFor=<extendedPostalCodesFor>][&view=<view>][&mapcodes=<mapcodes>]'

Request parameters

The following table describes the parameters that can be used in a Request.

  • Required parameters must be used or the call will fail.
  • Optional parameters, which are highlighted with [square brackets], may be used.
  • If there is a default value that will be assumed when an optional parameter is not used, it is shown in the table.
  • The order of request parameters is not important.
Required parameters
Parameter Description
baseURL
string
The base URL for calling the API.
Value: api.tomtom.com
versionNumber
string
Service version number.
Value: The current value is 2.
structuredGeocode
string
The query string.
Value: A query string.
ext
string
A valid response format:
Values: JSON, JSONP, JS, or XML
key
string
An API Key valid for the requested service.
Value: Your valid API Key.
countryCode
string
The code of the country being targeted.
Value: A country code (Note: This is a two-letter code, not a country name.)
Optional headers
Header Description
[Accept-Encoding]
string
Enables response compression.
Value: gzip
Tracking-ID
string
Specifies an identifier for the Request.
  • It can be used to trace a call.
  • The value must match the regular expression '^[a-zA-Z0-9-]{1,100}$'.
  • An example of the format that matches this regular expression is UUID: (e.g. 9ac68072-c7a4-11e8-a8d5-f2801f1b9fd1). For details check RFC 4122.
  • If specified, it is replicated in the Tracking-ID Response header.
  • It is only meant to be used for support and does not involve tracking of you or your users in any form.

Value: An identifier for the Request.

Optional parameters
Parameter Description
[limit]
integer
The maximum number of responses that will be returned.
Default value: 10
Maximum value: 100
[ofs]
integer
The starting offset of the returned results within the full result set.
Default value: 0
Maximum value: 1900
[streetNumber]
string
The street number for the structured address.
Value: A street number.
[streetName]
string
The street name for the structured address.
Value: A street name.
[crossStreet]
string
The cross street name for the structured address.
Value: A cross street name.
[municipality]
string
The municipality (city/town) for the structured address.
Value: A municipality.
[municipalitySubdivision]
string
The municipality subdivision (sub/super city) for the structured address.
Value: A municipality subdivision.
[countryTertiarySubdivision]
string
The named area for the structured address.
Value: A country tertiary subdivision.
[countrySecondarySubdivision]
string
The county for the structured address.
Value: A country name.
[countrySubdivision]
string
The state or province for the structured address.
Value: A country subdivision.
[postalCode]
string
The zip code or postal code for the structured address.
Value: A zip or postal code.
[language]
string
Language in which search results should be returned.
  • Should be one of the TomTom supported IETF language tags, case insensitive.
  • When data in specified language is not available for a specific field, the default langauge is used.

Value: A TomTom supported IETF language tag.

[extendedPostalCodesFor]
string
Indexes for which extended postal codes should be included in the results.
  • Available values are described in the additional information indexes Abbreviated values section.
  • Value should be a comma-separated list of index types (in any order) or "None" for no indexes.
  • By default, extended postal codes are included for all indexes except Geo.
  • Extended postal code lists for geographies can be quite long, so they have to be explicitly requested when needed.
  • Extended postal code is returned as an extendedPostalCode property of an address.
  • Availability is region-dependent.

Usage examples:

  • extendedPostalCodesFor=POI
  • extendedPostalCodesFor=PAD,Addr,POI
  • extendedPostalCodesFor=None

Value: A comma-separated list of index types.

[view]
string
Geopolitical View.
  • The context used to resolve the handling of disputed territories.
  • Views include Unified, along with AR, IL, IN, MA, PK, RU and TR which are respectively tailored for Argentina, Israel, India, Morocco, Pakistan, Russia and Turkey.

Default values:

  • Argentina, default view: AR, available views: Unified, IL, IN, MA, PK, RU, TR
  • India, default view: IN, available views: -
  • Morocco, default view: MA, available views: Unified, AR, IL, IN, PK, RU, TR
  • Pakistan, default view: PK, available views: Unified, AR, IL, IN, MA, RU, TR
  • Russia, default view: RU, available views: Unified, AR, IL, IN, MA, PK, TR
  • Turkey, default view: TR, available views: Unified, AR, IL, IN, MA, PK, RU
  • Others, default view: Unified, available views: AR, IL, IN, MA, PK, RU, TR

See the following section: Default view mapping.

Default view mapping

Default view is recognised based on the country the Request came from.

Country Default view Other available views
Argentina AR Unified, IL, IN, MA, PK, RU, TR
India IN -
Morocco MA Unified, AR, IL, IN, PK, RU, TR
Pakistan PK Unified, AR, IL, IN, MA, RU, TR
Russia RU Unified, AR, IL, IN, MA, PK, TR
Turkey TR Unified, AR, IL, IN, MA, PK, RU
Others Unified AR, IL, IN, MA, PK, RU, TR
[mapcodes]
string
Enables the return of a comma-separted mapcodes list. It can also filter the Response to only show selected mapcode types. See Mapcodes in the response.
Values: One or more of:
  • Local
  • International
  • Alternative

A mapcode represents a specific location, to within a few meters. Every location on Earth can be represented by a mapcode. Mapcodes are designed to be short, easy to recognize, remember, and communicate. Visit the Mapcode project website for more information.
Usage examples:

  • mapcodes=Local (returns only the local mapcode for a location)
  • mapcodes=Local,Alternative (returns both, local and alternative, mapcodes for a location)
  • mapcodes=Local,Alternative,International (returns all possible mapcodes for a location)

▲ Return to Top

Response data

Response body

For illustrative purposes, the following code examples are neatly indented and includes all possible Response fields.

  • Actual responses are more compact and the fields present will vary based on the result type and the data available.
  • See the following Response field section for more information.

When requesting JSON output the Response has the following structure:

{
  "summary": {
    "query": "2501 soquel dr",
    "queryType": "NON_NEAR",
    "queryTime": 21,
    "numResults": 1,
    "offset": 0,
    "totalResults": 1,
    "fuzzyLevel": 1
  },
  "results": []
}

Each element of the results array is in the following format:

{
  "type": "Point Address",
  "id": "US/PAD/p0/45619296",
  "score": 7.675,
  "address": {
    "streetNumber": "2501",
    "streetName": "Soquel Dr",
    "municipalitySubdivision": "Santa Cruz, Live Oak",
    "municipality": "Santa Cruz, Live Oak",
    "countrySecondarySubdivision": "Santa Cruz",
    "countryTertiarySubdivision": "Santa Cruz",
    "countrySubdivision": "CA",
    "postalCode": "95065",
    "extendedPostalCode": "950652023",
    "countryCode": "US",
    "country": "United States Of America",
    "countryCodeISO3": "USA",
    "freeformAddress": "2501 Soquel Dr, Santa Cruz, CA 95065",
    "countrySubdivisionName": "California",
    "localName": "Santa Cruz"
  },
  "position": {
    "lat": 36.98844,
    "lon": -121.97482
  },
  "mapcodes":[
    {
      "type":"Local",
      "fullMapcode":"US-CA FS.WRH3",
      "territory":"US-CA",
      "code":"FS.WRH3"
    },
    {
      "type":"International",
      "fullMapcode":"S4ZW4.990V"
    },
    {
      "type":"Alternative",
      "fullMapcode":"US-CA 4349.S8W",
      "territory":"US-CA",
      "code":"4349.S8W"
    },
    {
      "type":"Alternative",
      "fullMapcode":"US-CA JJCH.H9DF",
      "territory":"US-CA",
      "code":"JJCH.H9DF"
    },
    {
      "type":"Alternative",
      "fullMapcode":"USA JJCH.H9DF",
      "territory":"USA",
      "code":"JJCH.H9DF"
    }
  ],
  "viewport": {
    "topLeftPoint": {
      "lat": 36.98934,
      "lon": -121.97595
    },
    "btmRightPoint": {
      "lat": 36.98754,
      "lon": -121.97369
    }
  },
  "entryPoints": [
    {
      "type": "main",
      "position": {
        "lat": 36.98817,
        "lon": -121.97487
      }
    }
  ],
  "addressRanges": {
    "rangeLeft": "1 - 99",
    "rangeRight": "2 - 130",
    "from": {
      "lat": 37.33666,
      "lon": -121.88951
    },
    "to": {
      "lat": 37.338,
      "lon": -121.89049
    }
  },
  "dataSources": {
    "geometry": {
      "id": "0000504c-3200-4600-0000-0000478d98c6"
    }
  }
}

▲ Return to top

Response fields

The following tables describe all of the fields that can appear in a Response. Fields are listed:

  • By the Response section they belong to.
  • In the order that they appear in the Response.
Primary fields
Field Description
summary{}
object
Summary information about the search that was performed.
summary{} object
results[]
array
The result list, sorted in descending order by score.
results[] array
summary{} object
Field Description
query
string
Query as interpreted by the search engine.
queryType
string
Response type. Can be NEARBY or NON_NEAR.
queryTime
integer
Time spent on resolving the query.
numResults
integer
The number of Results in the response.
offset
integer
The starting offset of the returned Results within the full Result set.
totalResults
integer
The total number of Results found.
fuzzyLevel
integer
The maximum fuzzy level required to provide Results.
geoBias
string
The position used to bias the Results: Latitude,Longitude
LatLon double
Example: 37.553,-122.453
results[] array
Field Description
type
string
Type of Result.
Value: One of:
  • Street
  • Geography
  • Point Address
  • Address Range
  • Cross Street
id
string
The non-stable unique id for this Result.
score
double
The score of the Result. A larger score means there is a probability that a Result meeting the query criteria is higher.
dist
double
Unit: meters. This is the distance to an object if geobias was provided.
address
object
The structured address for the Result.
position
object
The position of the Result: Latitude,Longitude
LatLon double
Example: 37.553,-122.453
mapcodes
array
List of mapcode{} objects
mapcodes{} object
viewport
object
A viewport which can be used to display the Result on a map.
viewport{} object
boundingBox
object
Optional section. Only present if type == Geography.
A bounding box which can be used to display the
result on a map defined by minimum and maximum longitudes and latitudes.
boundingBox{} object
entrypoints
array
The list of entry points of the POI.
entryPoints[] array
addressRanges
object
Address ranges on a street segment. Available only for Results where the Result type is equal to "Address Range".
addressRanges{} object
dataSources
object
Optional section. Reference unique ids for use with the Additional Data service.
dataSources{} object
address{} object
Field Description
streetNumber
string
The building number on the street.
streetName
string
The street name.
municipalitySubdivision
string
Sub / Super City
municipality
string
City / Town
countrySecondarySubdivision
string
County
countryTertiarySubdivision
string
Named Area
countrySubdivision
string
State or Province
postalCode
string
Postal Code / Zip Code
extendedPostalCode
string
Extended postal code (availability dependent on region).
countryCode
string
Country
country
string
Country name
countryCodeISO3
string
ISO alpha-3 country code
freeformAddress
string
An address line formatted according to the formatting rules of a Result's country of origin, or in the case of countries, its full country name.
countrySubdivisionName
string
The full name of the first level of a country administrative hierarchy.
  • This field appears only in case countrySubdivision is presented in an abbreviated form.
  • Supported only for USA, Canada, and Great Britain.
localName
string
An address component which represents the name of a geographic area or locality that groups a number of addressable objects for addressing purposes, without being an administrative unit.
mapcodes{} object
Field Description
type
string
Type of mapcode:
  • Local: the shortest possible (and easiest to remember) mapcode. Local mapcodes are especially useful when the user knows what territory the mapcode is in (for example, when an application is designed to be used inside just one European country or US state). Note that the code element of a Local mapcode is ambiguous when used without the territory element - e.g.: the "4J.P2" mapcode can mean the Eiffel Tower location (48.858380, 2.294440) (with the territory set to FRA), but also some place in Amsterdam-Noord, Netherlands (52.382184, 4.911021) (with the territory set to NLD).
  • International: this mapcode is unambiguous. It is also the longest.
  • Alternative: alternatives to Local mapcodes. Each Alternative mapcode points to slightly different coordinates due to the way mapcodes are computed (see the mapcode documentation). For example: the position from a response can be encoded as "5DM.WC" (51.759244, 19.448316) and the "VHJ.036" (51.759245, 19.448264), which are close to each other, but not exactly the same place.
fullMapcode
string
The full form of a mapcode (territory + code). It is always unambiguous.
The territory element is always in the Latin alphabet.
In an International mapcode, the territory part is empty.
territory
string
The territory element of the mapcode. The territory element is always in the Latin alphabet. Usually, the territory is the ISO 3166-1 alpha 3 abbreviation for the country name. However in these eight very large countries:
  • USA
  • Canada
  • Mexico
  • Brazil
  • India
  • Australia
  • Russia
  • China

an address has little meaning unless the user also knows what state it's in (just as, elsewhere, an address has little meaning if the user doesn’t know what country it’s in). More information about territory codes is available here. This field is not returned for an International mapcode.

code
string
The mapcode without the territory element. It consists of two groups of letters and digits separated by a dot.
The code is using the same language and alphabet as the response. The language parameter may be used to modify the language and alphabet of both the response and the code (for example: Cyrillic for the language 'ru-RU').
This field is not returned for the International mapcodes - use fullMapcode instead.
viewport{} object
Field Description
topLeftPoint
string
Top-left corner of the rectangle: LatLon
LatLon double
btmRightPoint
string
Bottom-right corner of the rectangle: LatLon
LatLon double
boundingBox{} object
Field Description
topLeftPoint
comma separated string composed by lat,lon
Top left position of the bounding box:
LatLon double
btmRightPoint
comma separated string composed by lat,lon
Bottom right position of the bounding box:
LatLon double
entryPoints[] array
Field Description
type
string
Main entry point: One of:
  • main
  • minor
position
double
The position of the entry point: Latitude,Longitude
LatLon double
Example: 37.553,-122.453
addressRanges{} object
Field Description
rangeLeft
string
An address range on the left side of a street segment (assuming looking from the "from" end toward the "to" end).
rangeRight
string
An address range on the right side of a street segment (assuming looking from the "from" end toward the "to" end).
from
string
The beginning point of a street segment: Latitude, Longitude
LatLon double
to
string
An end point of a street segment: Latitude, Longitude
LatLon double
dataSources{} object
Field Description
geometry
object
Information about the geometric shape of the result. Only present if type = = Geography or POI.
geometry{} object
geometry{} object
Field Description
id
string
Pass this as geometryId to the Additional Data service to fetch geometry information for this result.
LatLon double
Field Description
lat
float
Latitude
lon
float
Longitude

▲ Return to Top

HTTP Response codes

The following table contains Response codes signifying successful and failed requests to an API server.

Code Meaning & possible causes
200 OK: The search successfully returned zero or more results.
400 Bad Request: One or more parameters were incorrectly specified.
403 Forbidden: Possible causes include:
  • Service requires SSL
  • Not authorized
  • Rate or volume limit exceeded
  • Unknown referer
405 Method Not Allowed: The HTTP method (GET, POST, etc.) is not supported for this Request.
404/596 Not Found: The HTTP Request method (GET, POST, etc.) or path is incorrect.
429 Too Many Requests: The API key is over QPS (Queries per second).
5xx Server Error: The service was unable to process your Request. Contact support to resolve the issue.

▲ Return to Top

Response headers

The following table contains Response headers sent back from the API server.

Header Description
Access-Control-Allow-Origin Ensures that clients implementing the CORS security model are able to access the response from this service.
Value: An asterisk "*" that signifies access to the TomTom API using the Access-Control-Allow-Origin (ACAO) header in its Response indicating which origin sites are allowed.
Content-Type Indicates the format of the response as chosen by the client.
Format: type/subtype; charset=utf-8
Value: type/subtype is one of:
  • application/json
  • text/javascript
  • text/xml
Content-Encoding If requested by the client, the Search service applies gzip compression to the Responses with the Accept-Encoding header.
Value: gzip
Tracking-ID An identifier for the Request.
  • If the Tracking-ID header was specified, it is replicated in the Response.
  • Otherwise, it is generated automatically by the service.
  • It is only meant to be used for support and does not involve tracking of you or your users in any form.

Value: An identifier for the Request.

Error Response

The error Response content type depends on the ext parameter.

Error Response example (JSON)

{
  "errorText":"Error parsing 'language': Language tag 'en-ES' not supported",
  "detailedError":{
    "code":"BadRequest",
    "message":"Error parsing 'language': Language tag 'en-ES' not supported",
    "target":"language"
    },
  "httpStatusCode":"400"
}

Error Response example (XML)

<?xml version="1.0" encoding="UTF-8"?>
<response>
  <errorText>Error parsing 'language': Language tag 'en-ES' not supported</errorText>
  <detailedError>
    <code>BadRequest</code>
    <message>Error parsing 'language': Language tag 'en-ES' not supported</message>
    <target>language</target>
  </detailedError>
  <httpStatusCode>400</httpStatusCode>
</response>

▲ Return to top

Error Response fields

Primary fields
Field Description
errorText
string
A human-readable description of the error.
detailedError
object
Detailed information about the error.
detailedError{} object
httpStatusCode
integer
HTTP response codes signifying failed requests to an API server.
detailedError{} object
Field Description
code
string
One of a server-defined set of error codes.
message
string
A human-readable description of the error code. It is intended as an aid to developers and is not suitable for exposure to end users.
target
string
Optional.
Target of the particular error.
Values:
  • The name of the Request parameter causing the error.

▲ Return to top


Additional information

Indexes abbreviation values

In some cases a list of indexes can be passed as a parameter to a query, which should be listed with their abbreviations. Available values are:

  • Geo = Geographies - areas on map which represent administrative divison of a land ie. country, state, city.
  • PAD = Point Addresses - points on map where specific address with street name and number can be found in index, ie. Soquel Dr 2501.
  • Addr = Address ranges - for some streets there are address points that are interpolated from the beginning and end of the street, those points are represented as address ranges.
  • Str = Streets - representation of streets on the map.
  • XStr = Cross Streets (intersections) - representations of junctions; places where two streets intersect.

▲ Return to Top

You are here