Geocode
Purpose
In many cases, the complete Search service might be too much. For instance, if you are only interested in traditional Geocoding, Search can also be exclusively accessed for address look-up.
- The Geocoding is performed by hitting the Geocode endpoint with just the address or partial address in question.
- 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, streets, or intersections as well as higher-level geographies such as city centers, counties, states, etc.
Run this endpoint
You can easily run this and other endpoints. Go to the TomTom API Explorer page and follow the directions.
Request data
HTTPS Method: GET
For ease of viewing and identification:
- Constants and parameters enclosed in curly brackets { } must be replaced with their values.
- Please see the following Request parameters section with the required and optional parameters tables for their values. The generic request format is as follows.
URL format
https://{baseURL}/search/{versionNumber}/geocode/{query}.{ext}?key={Your_API_Key}&storeResult={storeResult}&typeahead={typeahead}&limit={limit}&ofs={ofs}&lat={lat}&lon={lon}&countrySet={countrySet}&radius={radius}&topLeft={topLeft}&btmRight={btmRight}&language={language}&extendedPostalCodesFor={extendedPostalCodesFor}&view={view}&mapcodes={mapcodes}&entityTypeSet={entityTypeSet}
curl command format
curl 'https://{baseURL}/search/{versionNumber}/geocode/{query}.{ext}?key={Your_API_Key}&storeResult={storeResult}&typeahead={typeahead}&limit={limit}&ofs={ofs}&lat={lat}&lon={lon}&countrySet={countrySet}&radius={radius}&topLeft={topLeft}&btmRight={btmRight}&language={language}&extendedPostalCodesFor={extendedPostalCodesFor}&view={view}&mapcodes={mapcodes}&entityTypeSet={entityTypeSet}'
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 may be used.
- The order of request parameters is not important.
Required parameters | Description |
---|---|
baseURL string | Base URL for calling the API. Values:
|
versionNumber string | Service version number. Value: The current value is 2 . |
query string | Query string. Must be properly URL encoded. Value: A properly URL encoded 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 . |
Optional parameters | Description |
---|---|
storeResult boolean Deprecated | If the storeResult flag is set, the query will be interpreted as a stored geocode, and will be billed according to the terms of use.Default value: false .
|
typeahead boolean | If the typeahead flag is set, the query will be interpreted as a partial input, and the search will enter predictive mode.Default value: false |
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 The total number of results can be no more than 2000. If you want to receive all the results, you need to limit the number of results by using, for example, the radius parameter. |
lat float | Latitude, e.g., lat=37.337 lat,lon where results should be biased.Note: supplying a lat/lon without a radius will bias the search results to that area.Value: lat |
lon float | Longitude, e.g., lon=-121.89 lat,lon where results should be biased.Note: supplying a lat/lon without a radius will bias the search results to that area.Value: lon |
countrySet string | Comma separated string of country codes in ISO 3166-1 alpha-2 or alpha-3 code formats (e.g., FR,ES or FRA,ESP ).
FR ,ES or FRA ,ESP , etc.Visit the Search API Market Coverage page for a list of all the countries supported by the Search engine. |
radius integer | If radius and position are set, the results will be constrained to the defined area. The radius parameter is specified in meters.Value: A radius. |
topLeft string | Top-left position of the bounding box.
lat ,lon .Example: 37.553,-122.453 |
btmRight string | Bottom-right position of the bounding box.
lat ,lon .Example: 37.553,-122.453 |
language string | Language in which search results should be returned.
|
extendedPostalCodesFor string | Indexes for which extended postal codes should be included in the results.
extendedPostalCode property of an address. Availability is region-dependent.Value: A comma-separated list of index types. |
view string | Geopolitical View.
|
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:
Usage examples:
|
entityTypeSet string | A comma-separated list of entity types which can be used to restrict the result to the Geography result of a specific entity type. If entityTypeSet is specified, only a Geography result with a proper entity type will be returned.Value: A comma-separated list of of entity types.
|
Request headers
Optional headers | Description |
---|---|
Accept-Encoding | Enables response compression. Value: gzip |
Tracking-ID | Specifies an identifier for the request.
identifier for the request. |
Response data
Response body
For illustrative purposes the example below is 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 documentation for more information.
When requesting JSON output the response has the following structure:
1{2 "summary": {3 "query": "2501 soquel dr santa cruz ca 95065",4 "queryType": "NON_NEAR",5 "queryTime": 8,6 "numResults": 1,7 "offset": 0,8 "totalResults": 1,9 "fuzzyLevel": 1,10 "geoBias": {11 "lat": 36.98844,12 "lon": -121.9748313 }14 },15 "results": []16}
Where each element of the results
array is in the following format:
Results array elements format - JSON
1{2 "type": "Point Address",3 "id": "US/PAD/p0/45619296",4 "score": 15.725,5 "matchConfidence": {6 "score": 17 },8 "dist": 0.8875712594288668,9 "address": {10 "streetNumber": "2501",11 "streetName": "Soquel Dr",12 "municipalitySubdivision": "Santa Cruz, Live Oak",13 "municipality": "Santa Cruz, Live Oak",14 "countrySecondarySubdivision": "Santa Cruz",15 "countryTertiarySubdivision": "Santa Cruz",16 "countrySubdivision": "CA",17 "postalCode": "95065",18 "extendedPostalCode": "950652023",19 "countryCode": "US",20 "country": "United States Of America",21 "countryCodeISO3": "USA",22 "freeformAddress": "2501 Soquel Dr, Santa Cruz, CA 95065",23 "countrySubdivisionName": "California",24 "localName": "Santa Cruz"25 },26 "position": {27 "lat": 36.98844,28 "lon": -121.9748229 },30 "mapcodes":[31 {32 "type":"Local",33 "fullMapcode":"US-CA FS.WRH3",34 "territory":"US-CA",35 "code":"FS.WRH3"36 },37 {38 "type":"International",39 "fullMapcode":"S4ZW4.990V"40 },41 {42 "type":"Alternative",43 "fullMapcode":"US-CA 4349.S8W",44 "territory":"US-CA",45 "code":"4349.S8W"46 },47 {48 "type":"Alternative",49 "fullMapcode":"US-CA JJCH.H9DF",50 "territory":"US-CA",51 "code":"JJCH.H9DF"52 },53 {54 "type":"Alternative",55 "fullMapcode":"USA JJCH.H9DF",56 "territory":"USA",57 "code":"JJCH.H9DF"58 }59 ],60 "viewport": {61 "topLeftPoint": {62 "lat": 36.98934,63 "lon": -121.9759564 },65 "btmRightPoint": {66 "lat": 36.98754,67 "lon": -121.9736968 }69 },70 "entryPoints": [71 {72 "type": "main",73 "position": {74 "lat": 36.98817,75 "lon": -121.9748776 }77 }78 ],79 "addressRanges": {80 "rangeLeft": "1 - 3",81 "rangeRight": "2 - 12",82 "from": {83 "lat": 51.16561,84 "lon": 19.4848985 },86 "to": {87 "lat": 51.16545,88 "lon": 19.486389 }90 },91 "dataSources": {92 "geometry": {93 "id": "00004e4c-3100-3c00-0000-0000685e23c7"94 }95 }96}
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, and 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 | The 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 object | The position used to bias the results: Latitude, LongitudeLatLon |
results array | |
Field | Description |
type string | Type of result. Value: One of:
|
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. |
matchConfidence object | The confidence of the result`s textual match with the query.matchConfidence object |
dist double | Unit: meters. This is the distance to an object if geobias was provided. |
address object | The structured address for the result.address object |
position object | The position of the result: Latitude, Longitude.LatLon |
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 | A list of entry points of the POI (Points of Interest).entryPoints array |
addressRanges object | The address ranges on a street segment. Available only for results where the result type is equal to Address Range.addressRanges object |
dataSources object | An optional section. These are unique reference 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 |
postalName string | An address component which represents the name for a postal code that is related to a single administrative area, city, town, or other populated place. Note:
|
extendedPostalCode string | Extended postal code (availability dependent on region). |
countryCode string | A country's code (Note: This is a two-letter code, not a country name.). |
country string | Country name |
countryCodeISO3 string | ISO alpha-3 country code |
freeformAddress string | An address line formatted according to:
|
countrySubdivisionName string | The full name of the first level of country administrative hierarchy.
|
countrySubdivisionCode string | countrySubdivisionCode prefixed by countryCode (countryCode-countrySubdivisionCode ) and the hyphen forms the ISO 3166-2 code. Only present if returned document has entityType == CountrySubdivision .countrySubdivisionCode examples: TX for Texas, SCT for Scotland, ON for Ontario, ZE for Zeeland and BB for Brandenburg. |
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. |
matchConfidence object | |
Field | Description |
score double | Represents overall textual match score, in the range of [0..1], where 1 means perfect match and 0 - no match. Example: A Point Address result with freeformAddress 9390 Santa Monica Boulevard, Beverly Hills, CA 90210 has:
|
mapcodes object | |
Field | Description |
type string | Type of mapcode:
|
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:
territory codes is available at Territories for mapcodes. 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 object | Top-left corner of the rectangle:LatLon |
btmRightPoint object | Bottom-right corner of the rectangle:LatLon |
boundingBox object | |
Field | Description |
topLeftPoint object | Top-left position of the bounding box:LatLon |
btmRightPoint object | Bottom-right position of the bounding box:LatLon |
entryPoints array | |
Field | Description |
type string | The main entry point. One of:
|
functions array | If present, represents the type of access for the POI. Example: FrontDoor |
position object | Position of the entry point.LatLon |
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 object | The beginning point of a street segment: Latitude, LongitudeLatLon |
to object | The end point of a street segment: Latitude, LongitudeLatLon |
dataSources object | |
Field | Description |
geometry object | Information about the geometric shape of the result. Only present if type == Geography .geometry object |
geometry | |
Field | Description |
id string | Pass this as geometryId to the Additional Data service to fetch geometry information for this result. |
LatLon | |
Field | Description |
lat float | Latitude. min/max: -90 to +90 Reference: Latitude, Longitude and Coordinate System Grids |
lon float | Longitude. min/max: -180 to +180 Reference: Latitude, Longitude and Coordinate System Grids |
Response codes
The following data table contains HTTP response codes signifying successful and failed requests to an API server.
Successful and failed response codes | |
---|---|
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:
|
405 | Method Not Allowed: The HTTPS method (GET , POST , etc.) is not supported for this request. |
404/596 | Not Found: The HTTPS 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. |
Response headers
The following table contains response headers sent back from an 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:
|
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.
Value: An identifier for the request. |
Error response
The error response content type depends on the ext
parameter.
1{2 "errorText":"Error parsing 'language': Language tag 'en-ES' not supported",3 "detailedError":{4 "code":"BadRequest",5 "message":"Error parsing 'language': Language tag 'en-ES' not supported",6 "target":"language"7 },8 "httpStatusCode":"400"9}
1<?xml version="1.0" encoding="UTF-8"?>2<response>3 <errorText>Error parsing 'language': Language tag 'en-ES' not supported</errorText>4 <detailedError>5 <code>BadRequest</code>6 <message>Error parsing 'language': Language tag 'en-ES' not supported</message>7 <target>language</target>8 </detailedError>9 <httpStatusCode>400</httpStatusCode>10</response>
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. Value: The name of the request parameter causing the error. |
Additional information
Indexes abbreviation values
In some cases, a list of indexes can be passed as a parameter to query, which should be listed with their abbreviations, available values are:
Geo
= Geographies - areas on map which represent administrative divison of a land i.e., country, state, city.PAD
= Point Addresses - points on a map where a specific address with a street name and number can be found in the index, i.e., 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.