Along Route Search
Purpose
The Along Route Search endpoint allows you to perform a fuzzy search for POIs along a specified route. This search is constrained by specifying a detour time-limiting measure. To send the route points you will use a POST request whose body will contain the route parameter in JSON format. The minimum number of route points is 2.
It is possible that the original route will be altered, and some of its points may be skipped. If the route that passes through the found point is faster than the original one, the detour time value is negative. POST requests require the Content-Type header to be set to application/json
.
For performance reasons and large data sets, you may use Content-Encoding: gzip
, Content-Type: application/json
, and Accept-Encoding: gzip
headers together with the compressed payload.
Run this endpoint
You can easily run this and other endpoints. Go to the TomTom API Explorer page and follow the directions.
1{2 "route": {3 "points": [4 {5 "lat": 37.7524152343544,6 "lon": -122.435760498046867 },8 {9 "lat": 37.70660472542312,10 "lon": -122.4330139160156211 },12 {13 "lat": 37.712059855877314,14 "lon": -122.3643493652343815 },16 {17 "lat": 37.75350561243041,18 "lon": -122.3739624023437419 }20 ]21 }22}
Request data
HTTPS Method: POST
- 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.
https://{baseURL}/search/{versionNumber}/searchAlongRoute/{query}.{ext}?key={Your_API_Key}&maxDetourTime={maxDetourTime}&typeahead={typeahead}&limit={limit}&categorySet={categorySet}&brandSet={brandSet}&connectorSet={connectorSet}&fuelSet={fuelSet}&vehicleTypeSet={vehicleTypeSet}&view={view}&detourOffset={detourOffset}&sortBy={sortBy}&openingHours={openingHours}&spreadingMode={spreadingMode}&timeZone={timeZone}&mapcodes={mapcodes}&relatedPois={relatedPois}&minPowerKW={minPowerKW}&maxPowerKW={maxPowerKW}
https://api.tomtom.com/search/2/searchAlongRoute/restaurant.json?key={Your_API_Key}&maxDetourTime=1000
1curl -XPOST -d '{2 "route": {3 "points": [4 {5 "lat": 37.7524152343544,6 "lon":-122.435760498046867 },8 {9 "lat": 37.70660472542312,10 "lon":-122.4330139160156211 },12 {13 "lat": 37.712059855877314,14 "lon":-122.3643493652343815 },16 {17 "lat": 37.75350561243041,18 "lon":-122.3739624023437419 }20 ]21 }22}' 'https://api.tomtom.com/search/2/searchAlongRoute/pizza.json?key={Your_API_Key}&maxDetourTime=1000'
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.
- 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 | Description |
---|---|
| Base URL for calling the API.
|
| The service version. |
| A valid response format. |
| An API Key valid for the requested service. |
| Maximum detour time. |
Optional parameters | Description |
---|---|
| The query string. It must be properly URL-encoded. |
| If the |
| The maximum number of responses that will be returned. |
| A comma-separated list of categories which could be used to restrict the
result to the Points Of Interest of specific categories. The list of
categories can be discovered using the
POI Categories
endpoint.
|
| A comma-separated list of brand names which could be used to restrict
the result to Points Of Interest of specific brands.
|
| A comma-separated list of connector types which could be used to
restrict the result to the Points Of Interest of type Electric Vehicle
Station supporting specific connector types. See:
List of supported connector types
|
| An optional parameter which could be used to restrict the result to the
Points Of Interest of type Electric Vehicle Station supporting at least
one connector with a specific minimal value of power in kilowatts
(closed interval - with that value). |
| An optional parameter which could be used to restrict the result to the
Points Of Interest of type Electric Vehicle Station supporting at least
one connector with a specific maximum value of power in kilowatts
(closed interval - with that value). |
| A comma-separated list of fuel types which could be used to restrict the
result to the Points Of Interest of specific fuels. If
Usage examples:
|
| A comma-separated list of vehicle types that could be used to restrict the
result to the Points Of Interest of specific vehicles. If
Usage examples:
|
| Geopolitical View. The context used to resolve the handling of disputed
territories. Views include
|
| Parameter which turns on calculation of the distance between the start
of the route and the starting point of the detour to a POI. |
| Parameter which provides the possibility to sort returned results.
|
| Language in which search results should be returned. It should be one of
the TomTom supported
IETF language tags
, case insensitive. When data in the specified language is not available
for a specific field or the language is not specified, the language best
matched with your query is used. |
| List of opening hours for a |
| Enables the even distribution of returned results along the route or closer to the starting point.
|
| Enables the return of a comma-separated mapcodes list. It can also
filter the response to only show selected mapcode types. See
mapcodes
in the response.
|
| Used to indicate the mode in which the |
| An optional parameter that provides the possibility to return related
Points Of Interest.
|
Request headers
Optional headers | Description |
---|---|
Enables response compression. | |
Tracking-ID | Specifies an identifier for the request. It can be used to trace a call.
The value must match the regular expression
|
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": "pizza",4 "queryType": "NON_NEAR",5 "queryTime": 137,6 "numResults": 1,7 "offset": 0,8 "totalResults": 1,9 "fuzzyLevel": 110 },11 "results": []12}
Each element of the results
array is in the following format:
Results array elements format - JSON
1{2 "type": "POI",3 "id": "g6JpZK84NDAwNjEwMDE4NjUxNDKhY6NVU0GhdqdVbmlmaWVk",4 "score": 4.999,5 "dist": 32.32909635789851,6 "info": "search:ta:840061001865142-US",7 "poi": {8 "name": "Upper Crust Pizza & Pasta",9 "phone": "+(1)-(831)-4762333",10 "url": "www.uppercrustsc.com/",11 "brands": [12 {13 "name": "Upper Crust"14 }15 ],16 "categorySet": [17 {18 "id": 731501519 }20 ],21 "categories": ["pizza", "restaurant"],22 "openingHours": {23 "mode": "nextSevenDays",24 "timeRanges": [25 {26 "startTime": {27 "date": "2019-02-05",28 "hour": 7,29 "minute": 030 },31 "endTime": {32 "date": "2019-02-05",33 "hour": 21,34 "minute": 035 }36 },37 {38 "startTime": {39 "date": "2019-02-06",40 "hour": 7,41 "minute": 042 },43 "endTime": {44 "date": "2019-02-06",45 "hour": 21,46 "minute": 047 }48 },49 {50 "startTime": {51 "date": "2019-02-07",52 "hour": 7,53 "minute": 054 },55 "endTime": {56 "date": "2019-02-07",57 "hour": 21,58 "minute": 059 }60 },61 {62 "startTime": {63 "date": "2019-02-08",64 "hour": 7,65 "minute": 066 },67 "endTime": {68 "date": "2019-02-08",69 "hour": 21,70 "minute": 071 }72 },73 {74 "startTime": {75 "date": "2019-02-09",76 "hour": 7,77 "minute": 078 },79 "endTime": {80 "date": "2019-02-09",81 "hour": 21,82 "minute": 083 }84 },85 {86 "startTime": {87 "date": "2019-02-10",88 "hour": 7,89 "minute": 090 },91 "endTime": {92 "date": "2019-02-10",93 "hour": 12,94 "minute": 095 }96 },97 {98 "startTime": {99 "date": "2019-02-10",100 "hour": 14,101 "minute": 0102 },103 "endTime": {104 "date": "2019-02-10",105 "hour": 21,106 "minute": 0107 }108 }109 ]110 },111 "classifications": [112 {113 "code": "RESTAURANT",114 "names": [115 {116 "nameLocale": "en-US",117 "name": "pizza"118 },119 {120 "nameLocale": "en-US",121 "name": "restaurant"122 }123 ]124 }125 ],126 "timeZone": {127 "ianaId": "Europe/Andorra"128 }129 },130 "relatedPois": [131 {132 "relationType": "child",133 "id": "g6JpZK83ODQwMDkwMDAwMjUxMTWhY6NBUkWhdqdVbmlmaWVk"134 },135 {136 "relationType": "child",137 "id": "u234HsadasKHZK81MjgwMDkwMDQyNDY3jashfsaASDHkjhdA"138 }139 ],140 "address": {141 "streetNumber": "2501",142 "streetName": "Soquel Dr",143 "municipalitySubdivision": "Santa Cruz, Live Oak",144 "municipality": "Santa Cruz, Live Oak",145 "countrySecondarySubdivision": "Santa Cruz",146 "countryTertiarySubdivision": "Santa Cruz",147 "countrySubdivision": "CA",148 "postalCode": "95065",149 "extendedPostalCode": "950652023",150 "countryCode": "US",151 "country": "United States Of America",152 "countryCodeISO3": "USA",153 "freeformAddress": "2501 Soquel Dr, Santa Cruz, CA 95065",154 "countrySubdivisionName": "California",155 "localName": "Santa Cruz"156 },157 "position": {158 "lat": 36.98844,159 "lon": -121.97483160 },161 "mapcodes": [162 {163 "type": "Local",164 "fullMapcode": "US-CA FS.WRH3",165 "territory": "US-CA",166 "code": "FS.WRH3"167 },168 {169 "type": "International",170 "fullMapcode": "S4ZW4.990V"171 },172 {173 "type": "Alternative",174 "fullMapcode": "US-CA 4349.S8W",175 "territory": "US-CA",176 "code": "4349.S8W"177 },178 {179 "type": "Alternative",180 "fullMapcode": "US-CA JJCH.H9DF",181 "territory": "US-CA",182 "code": "JJCH.H9DF"183 },184 {185 "type": "Alternative",186 "fullMapcode": "USA JJCH.H9DF",187 "territory": "USA",188 "code": "JJCH.H9DF"189 }190 ],191 "viewport": {192 "topLeftPoint": {193 "lat": 36.98934,194 "lon": -121.97596195 },196 "btmRightPoint": {197 "lat": 36.98754,198 "lon": -121.9737199 }200 },201 "entryPoints": [202 {203 "type": "main",204 "position": {205 "lat": 36.98817,206 "lon": -121.97487207 }208 },209 {210 "type": "minor",211 "functions": ["FrontDoor"],212 "position": {213 "lat": 52.30987,214 "lon": 4.76093215 }216 }217 ],218 "detourTime": 113,219 "detourDistance": 211,220 "detourOffset": 156,221 "chargingPark": {222 "connectors": [223 {224 "connectorType": "IEC62196Type2CCS",225 "ratedPowerKW": 22.2,226 "currentA": 32,227 "currentType": "AC3",228 "voltageV": 380229 },230 {231 "connectorType": "Tesla",232 "ratedPowerKW": 43.2,233 "currentA": 16,234 "currentType": "AC3",235 "voltageV": 480236 }237 ]238 },239 "dataSources": {240 "chargingAvailability": {241 "id": "442009000132285"242 },243 "parkingAvailability": {244 "id": "00000000-0005-36de-0009-20d4467654e2"245 },246 "fuelPrice": {247 "id": "1:cf81fe50-6218-11ea-a677-d05099d5f839"248 },249 "geometry": {250 "id": "00004e4c-3100-3c00-0000-0000685e23c7"251 }252 }253}
Response fields
The following table describes 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 information about the search that was performed. |
| The result list, sorted in descending order by score. |
summary object | |
Field | Description |
| The query as interpreted by the search engine. |
| Response type. Can be |
| Time spent on resolving the query. |
| The number of results in the response. |
| The starting offset of the returned results within the full result set. |
| The total number of results found. |
| The maximum fuzzy level required to provide results. |
results array | |
Field | Description |
| Type of result. |
| A stable unique id for the |
| The score of the result. A larger score means there is a probability that a result meeting the query criteria is higher. |
| Unit: meters. This is the distance to an object from the provided route. |
| Information about the original data source of the result. |
| Information about the Points of Interest in the result. |
| List of related Points Of Interest. |
| Structured address for the result. |
| Position of the result: |
| List of |
| A viewport which can be used to display the result on a map. |
| List of entry points of the |
| Detour time in seconds. |
| Detour distance in meters. |
| Detour offset in meters. |
| A list of |
| Optional section. Reference ids for use with the
Additional Data
service. |
| Optional section. List of fuel types served by the petrol station. |
| Optional section. List of vehicle types supported by the petrol station. |
poi object | |
Field | Description |
| Name of the |
| Telephone number. |
| The list of |
| Website URL. |
| The list of
|
| The list of the most specific |
| List of opening hours for a |
| The list of |
| Time zone information for the |
categorySet array | |
Field | Description |
| Category id. Full list of available categories is available under POI Categories endpoint. |
brands array | |
Field | Description |
| Brand name. |
classifications array | |
Field | Description |
| Fixed top level category code. Supported Category Codes |
| List of category names with locale code information. Currently only
|
names array | |
Field | Description |
| The locale code of this category name. |
| Category name in the given locale. |
relatedPoi object | |
Field | Description |
| Relation type:
|
| Pass this as |
address object | |
Field | Description |
| The number of the building on the street. |
| The street name. |
| Sub City |
| Sub Sub City |
| Neighbourhood |
| City / Town |
| County |
| Named Area |
| State or Province |
| Postal Code / Zip Code |
| Extended postal code (availability dependent on region) |
| Country (Note: This is a two-letter code, not a country name.) |
| Country name |
| ISO alpha-3 country code |
| An address line formatted according to the formatting rules of the result's country of origin. In the case of countries, its full country name. |
| The full name of the first level of a country's administrative
hierarchy. This field appears only in case
|
| 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 of mapcode. |
| The full form of a mapcode ( |
| The
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
|
| The mapcode without the |
viewport object | |
Field | Description |
| Top-left corner of the rectangle: |
| Bottom-right corner of the rectangle: |
entryPoints array | |
Field | Description |
| The main entry point. One of:
|
| If present, represents the type of access for the |
| Position of the entry point. |
chargingPark object | |
Field | Description |
| A list of connectors available in the Points Of Interest of an Electric
Vehicle Station type. |
connectors array | |
Field | Description |
| Type of the connector available in Electric Vehicle Station. |
| Rated power of the connector in kilowatts (kW). |
| Current value of the connector in amperes (A). |
| Current type of the connector. |
| Voltage of the connector in Volts (V). |
dataSources object | |
Field | Description |
| Information about the charging stations availability. |
| Information about the parking site availability. |
| Information about the fuel station prices. |
| Information about the geometric shape of the result. |
chargingAvailability object | |
Field | Description |
| Pass this as |
parkingAvailability object | |
Field | Description |
| Pass this as |
fuelPrice object | |
Field | Description |
| Pass this as |
geometry object | |
Field | Description |
| Pass this as |
| Name of an additional data provider. |
LatLon | |
Field | Description |
| Latitude. min/max: -90 to +90 |
| Longitude. min/max: -180 to +180 |
openingHours object | |
Field | Description |
| Mode used in the request. |
| List of time ranges for the next 7 days. |
timeRanges array | |
Field | Description |
| The point in the next 7 days range when a given |
| The point in the next 7 days range when a given |
startTime object, endTime object | |
Field | Description |
| Represents current day in calendar year in |
| Hours are in the 24 hour format in the local time of a |
| Minutes are in the local time of a |
timeZone object | |
Field | Description |
| ID from the IANA Time Zone Database. |
Response codes
Code | Meaning & possible causes |
---|---|
| OK : The search successfully returned zero or more results. |
| Bad Request : One or more parameters were incorrectly specified. |
| Forbidden : Possible causes include:
|
| Method Not Allowed : The HTTP method ( |
| Not Found : The HTTP request method ( |
| Too Many Requests : The API key is over QPS (Queries per second). |
| Server Error : The server 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 |
---|---|
Ensures that clients implementing the CORS security model are able to
access the response from this service. | |
Indicates the format of the response as chosen by the client.
| |
If requested by the client, the Search service applies gzip compression
to the responses with the Accept-Encoding header. | |
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. |
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 |
| A human-readable description of the error. |
| Detailed information about the error. |
| Response codes signifying failed requests to an API server. |
detailedError object | |
Field | Description |
| One of a server-defined set of error codes. |
| 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. |
| Optional. Target of the particular error. |