Discover

POST
Service version: 3
Last edit: 2026.07.03
TomTom Orbis Maps

Purpose

Delivers fully resolved location or discoverAction results based on complete input criteria.

Use this endpoint for structured or fully specified inputs, such as suggestion/button interactions, or voice queries.

Not intended for as-you-type suggestions (see Suggest).

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: POST

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.
post
URL request format
https://{baseURL}/maps/orbis/places/discover
post
URL request example
https://api.tomtom.com/maps/orbis/places/discover
post
curl command request example
1curl -X POST 'https://api.tomtom.com/maps/orbis/places/discover' \
2 -H 'TomTom-Api-Key: {Your_API_Key}' \
3 -H 'TomTom-Api-Version: 3' \
4 -H 'Attributes: results' \
5 -H 'Content-Type: application/json' \
6 -d '{
7 "query": "restaurant",
8 "origin": {
9 "type": "point",
10 "coordinates": [ 13.4312, 54.3927 ]
11 },
12 "preferences": {
13 "geometry": {
14 "type": "point",
15 "coordinates": [ 13.4312, 54.3927 ]
16 }
17 }
18 }'

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

baseURL
string

Base URL for calling the API.
Values:

  • api.tomtom.com

  • kr-api.tomtom.com

  • eu-api.tomtom.com

  • us-api.tomtom.com

TomTom-Api-Key
string
header

An API Key valid for the requested service. See: How do I get a TomTom API Key?
Value: Your valid API Key.

TomTom-Api-Version
integer
header

Version of the API. The API version MUST be specified in all requests.
Value: The current value is 3.
Supported Api Versions: 3

Attributes
string
header

A comma-separated list of response attributes to return. Nested attributes are specified in dot notation. Multiple attributes sharing the same parent can be grouped together using parentheses.
Specifying a non-leaf attribute returns all available subattributes implicitly.
Note:

  • New response fields may be added over time without notice.
  • When (sub)attributes are requested implicitly, the client must be forward-compatible with respect to new subattributes.
  • Requesting attributes implicitly may have variable cost/billing implications and is therefore not recommended for production use.
  • An empty top-level Attributes parameter is not valid.
  • Invalid attributes are rejected with a 400 Bad Request response.

Examples:

  • results
  • results(address,distanceInMeters)
  • results(address,chargingLocation(chargingStations))

Optional parameters

Description

Session-Id
string
header

A unique identifier that must be a 36-character hyphenated UUID (v4 or v7) in the format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12, 36 characters including hyphens), for a places search flow session.
A places search application user journey (flow) may start with a suggest, discover or details request. Typically, the application is responsible for identifying the beginning of a places search session and thus is responsible for generating a unique SessionId for the session. The session identifier should be reused for all requests within the same user journey.
Suggest, Discover and Details results include follow-up places search requests with an embedded SessionId.
As the user progresses through a search query typing session, interacts with suggestions or discover / details results by making followup places search requests, the session id is propagated via the SessionId header prescribed in the followup request specification.
A places search session is terminated when either no request has been received by the server for a given SessionId within a dynamic server-controlled use-case dependent timeout, or a suggest request is received not preceded by a suggest request with the same SessionId.
Format: 36-character hyphenated UUID (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
Min Length: 36
Max Length: 36

Tracking-Id
string
header

A unique identifier for tracking the request across services. The client should provide a globally unique value, preferably a UUID (v4 or v7). While any string format is accepted, the tracking ID must be unique to enable effective request tracing and correlation in logs.
Min Length: 10
Max Length: 50

Accept-Language
string
header

Sequence of preferred response IETF BCP 47 language tags compliant with RFC 7231 (section 5.3.5).
The API makes best effort to return results in one of the preferred languages, falling back to the prevalent local language in the result's geographical region if none of the preferred languages is available.
Example: en-US,en,hi-Deva;q=0.9

Accept
string
header

The standard HTTP Accept header indicating the media type(s) the client is able to understand. HTTP reference
Allowed Values: application/json

Request body

The following table describes the JSON request body parameters.

Content Type: application/json

Description: Additional request parameters.

Request body parameters

Description

query
string

Text query, assumed to be fully expressed by the user.
Min Length: 0

origin
Origin

The position from which result distances are calculated, populating the distanceInMeters field on each result. It does not affect result ranking or ordering. Typically the position of the user making the request.
Type: Point geometry restricted to 2D coordinates (Longitude, Latitude).
Properties:

  • type (required): "point"
  • coordinates (required): PositionWithoutElevation - Array of [longitude, latitude] in degrees

    • Array of 2 numbers: [longitude, latitude]
    • longitude: number, -180 to 180 (Longitude of point in degrees)
    • latitude: number, -90 to 90 (Latitude of point in degrees)

Example: {"type": "point", "coordinates": [-73.935242, 40.73061]}

maxResults
number

Maximum number of results to return.
Default value: 10
Minimum value: 1
Maximum value: 100

geopoliticalView
string

Geopolitical view. The context used to resolve the handling of addressing schemes in disputed territories.
Default value: "Unified"
Enum: "AR" "CN" "IL" "IN" "KR" "MA" "PK" "RU" "RS" "TR" "TW" "Unified"
Supported geopolitical views:

  • Unified
  • AR: Argentina
  • CN: China
  • IL: Israel
  • IN: India
  • KR: South Korea
  • MA: Morocco
  • PK: Pakistan
  • RU: Russia
  • RS: Serbia
  • TR: Türkiye
  • TW: Taiwan

The default and available values depend on the country where the request is made in. If valid value but non available one is used the 403 error is raised. Possible values and defaults(per request-origin country) are as follows:

  • Argentina - default view: AR, available views: All
  • China - default view: CN, available views: All
  • India - default view: IN, available views: IN (no other views available)
  • Israel - default view: IL, available views: All
  • South Korea (check for region specific contents) - default view: KR, available views: KR (no other views available)
  • Morocco - default view: MA, available views: All
  • Pakistan - default view: PK, available views: All
  • Russia - default view: RU, available views: All
  • Türkiye - default view: TR, available views: All
  • Taiwan - default view: TW, available views: All
  • Serbia - default view: RS, available views: All
  • Others - default view: Unified, available views: All

When not specified, the appropriate geopolitical view is applied based on the origin location of the request.

filters
object

Filters to apply for discover requests. Filter parameters narrow the set of candidate results and do not affect result ranking or ordering. Includes all suggest filters plus additional POI-specific filters.
Properties:

  • types - Types of results to include. When not specified, all types are included. Array of ResultType. ResultType can be either a LocationType (poi, address, street, intersection, area) or the string discoverAction. Default: ["address", "street", "intersection", "poi", "area", "discoverAction"], Min items: 1
  • countryCodesIso2 - List of ISO 3166-1 alpha-2 country codes to restrict results to. When not specified, all countries are included. Format: 2-character uppercase country codes
  • areaTypes - Types of areas to include. When not specified, all area types are included. Allowed values: country, countrySubdivision, countrySecondarySubdivision, countryTertiarySubdivision, municipality, municipalitySubdivision, municipalitySecondarySubdivision, postalCode, neighborhood, block
  • poiTypes - Types of places of interest to include. When not specified, all place-of-interest types are included
  • poiBrands - List of brand IDs to filter results by. Brand IDs are case-sensitive uppercase strings (e.g. STARBUCKS, MCDONALDS); mixed-case or lowercase values will not match and return unfiltered results. When not specified, all brands are included
  • geometry - Limits the results to the provided geometrical boundary. Type discriminated by the type property: Circle (circle, with center and radiusInMeters in range 1-1000000), Rectangle (rectangle, with coordinates as [southWestLon, southWestLat, northEastLon, northEastLat]), or Simple Polygon (simplePolygon, with a closed coordinates array of [longitude, latitude] pairs, min 4)
  • chargingLocation - Filters/preferences applicable to places of interest of poiType: ev_charger. Properties: connectorTypes, currentType, minPowerInKilowatts (default: 0, range: 0-1000), maxPowerInKilowatts (range: 1-1000), status, capabilities
  • fuelStation - Properties: fuelTypes (array of: e100, e95, e85, diesel, cng, hydrogen, lpg, biodiesel)

preferences
object

Preferences for results.
Properties:

  • geometry - Indicates a preference for results around a preferred geometry. When a point is provided as the preferred geometry, results closer to the point may generally appear higher in the result list, subject to other ranking factors.

    • type (required): "point"
    • coordinates (required, PositionWithoutElevation): position array [longitude, latitude] in degrees

Response data

Response body - JSON

See the response body example and the response field documentation below for more information.

Response body example - JSON
1{
2 "results": [
3 {
4 "id": "qv3FAP2e0GnYgS-KeAgciA",
5 "type": "poi",
6 "title": "Dalbhat",
7 "subtitles": [
8 "Mainzer Straße 8, 10715 Berlin-Wilmersdorf"
9 ],
10 "poiTypes": [
11 {
12 "id": "indian_restaurant",
13 "name": "Indian Restaurant"
14 },
15 {
16 "id": "nepalese_restaurant",
17 "name": "Nepalese Restaurant"
18 }
19 ],
20 "distanceInMeters": 4321,
21 "position": {
22 "type": "Point",
23 "coordinates": [
24 0.0098,
25 51.4934
26 ]
27 },
28 "address": {
29 "country": "Germany",
30 "countryCodeIso2": "DE",
31 "postalCode": "10715",
32 "municipality": "Berlin",
33 "municipalitySubdivision": "Wilmersdorf",
34 "street": "Mainzer Straße",
35 "houseNumber": "8"
36 },
37 "openingHours": [
38 {
39 "date": "2025-06-06",
40 "timeRanges": [
41 {
42 "start": "11:00",
43 "end": "23:00",
44 "utcOffsetSeconds": 7200
45 }
46 ]
47 }
48 ],
49 "chargingLocation": {
50 "chargingStations": [
51 {
52 "id": "67335c40-4e72-11e8-8f53-42010a840002",
53 "chargingPoints": [
54 {
55 "capabilities": [
56 "RemoteStartStopCapable",
57 "RfidReader"
58 ],
59 "connectors": [
60 {
61 "id": "1",
62 "currentInAmperes": 16,
63 "currentType": "AC3",
64 "ratedPowerInKilowatts": 11,
65 "type": "IEC62196Type2Outlet",
66 "voltageInVolts": 230
67 },
68 {
69 "id": "2",
70 "currentInAmperes": 16,
71 "currentType": "AC3",
72 "ratedPowerInKilowatts": 11,
73 "type": "IEC62196Type2Outlet",
74 "voltageInVolts": 230
75 }
76 ],
77 "evseId": "NL-GFX-EEVB-P1552388-1",
78 "physicalReference": "1552388",
79 "status": "Occupied"
80 },
81 {
82 "capabilities": [
83 "RemoteStartStopCapable",
84 "RfidReader"
85 ],
86 "connectors": [
87 {
88 "id": "2",
89 "currentInAmperes": 16,
90 "currentType": "AC3",
91 "ratedPowerInKilowatts": 11,
92 "type": "IEC62196Type2Outlet",
93 "voltageInVolts": 230
94 }
95 ],
96 "evseId": "NL-GFX-EEVB-P1552388-2",
97 "physicalReference": "1552388",
98 "status": "Available"
99 }
100 ]
101 }
102 ]
103 },
104 "more": {
105 "operation": "details",
106 "pathParameters": [
107 {
108 "parameter": "type",
109 "argument": "pois"
110 },
111 {
112 "parameter": "id",
113 "argument": "qv3FAP2e0GnYgS-KeAgciA"
114 }
115 ],
116 "queryParameters": {
117 "origin": "1.0098,53.4934"
118 }
119 }
120 }
121 ]
122}

Response fields

The following table describes all of the fields that can appear in a response.

Field

Description

results
array

A list of discover results. Each result can be one of the following types: discoverAction, poi, address, street, intersection, area.

Common result properties

FieldDescription

id
string

Unique identifier of the result.
Example: qv3FAP2e0GnYgS-KeAgciA

type
string

Type of the result.
Values: poi, address, street, intersection, area, discoverAction

title
string

Localized display title for the result.

subtitles
array

An ordered list of localized text lines that help to understand the result, such as providing additional information or display a colloquial, region-specific address.

distanceInMeters
integer

Distance of the result from the origin in meters.

position
object

GeoJSON Point position of the location. Contains type (Point) and coordinates (array of [longitude, latitude]).

more
object

Follow-up request information for getting more details. Contains operation, pathParameters, queryParameters, and optional requestBody.

address object

FieldDescription

country
string

Country name.

countryCodeIso2
string

ISO 3166-1 alpha-2 country code.

countrySubdivision
string

State or province.

countrySubdivisionCodeIso
string

ISO 3166-2 country subdivision code.

countrySecondarySubdivision
string

County.

countryTertiarySubdivision
string

Named area.

municipality
string

City or town.

municipalitySubdivision
string

Subdivision of a city.

municipalitySecondarySubdivision
string

Smaller subdivision of a city.

neighborhood
string

Neighborhood.

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.

extendedPostalCode
string

Extended postal code (availability dependent on region).

street
string

Name of the street.

houseNumber
string

The building number on the street.

timeZones array

FieldDescription

ianaId
string

IANA timezone identifier.
Example: Europe/Berlin

currentUTCOffsetSeconds
integer

Current UTC offset in seconds, takes into account daylight saving time if applicable.
Example: 7200

poi result (Place of Interest)

FieldDescription

poiTypes
array

Types of places of interest associated with this place of interest. Each object contains id, name, and optional parentId.

poiBrands
array

Brands associated with this place of interest. Each object contains id and name. The id is a case-sensitive uppercase brand identifier (e.g. STARBUCKS).

openingHours
array

The opening hours for specific dates. The date is in the local time of the place. Each object contains date (RFC 3339 format "YYYY-MM-DD") and timeRanges array with start, end, and utcOffsetSeconds.

contacts
array

Contact information. Each object contains type (label like "Reservations", "Customer Support"), phones (array), emails (array), and websites (array).

chargingLocation object (for EV charging POIs)

FieldDescription

chargingStations
array

Array of charging station objects. Each contains id and chargingPoints array. Each charging point has evseId, status, physicalReference, capabilities array, and connectors array. Each connector includes type, ratedPowerInKilowatts, currentType, currentInAmperes, and voltageInVolts.

area result

FieldDescription

areaType
string

Type of area.
Values: country, countrySubdivision, countrySecondarySubdivision, countryTertiarySubdivision, municipality, municipalitySubdivision, municipalitySecondarySubdivision, postalCode, neighborhood, block

Response codes

The following table contains response codes sent back from an API server.

Code

Meaning & possible causes

200

OK: A list of places.

400

Bad Request: The request was invalid.

403

Forbidden: The API Key is missing, inactive, invalid, not entitled to use this API, or the geopolitical view is not available for the request origin.

404

Not Found: The requested resource could not be found.

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 data table contains response headers sent back from an API server.

Header

Description

Session-Id

A unique identifier that must be a 36-character hyphenated UUID (v4 or v7) in the format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12, 36 characters including hyphens), for a places search flow session.

Tracking-Id

A unique identifier for tracking the request across services. If the client provided a Tracking-Id in the request header, this value is echoed back. If not provided, TomTom systems will generate a tracking identifier automatically. This identifier enables effective request tracing and correlation in logs.

Content-Type

Indicates the format of the response as chosen by the client.
Value: application/json

Content-Language

The HTTP Content-Language representation header is used to describe the language(s) intended for the audience.

Error response

When an error occurs, the response contains detailed error information.

Response 4XX/5XX body structure - JSON
1{
2 "detailedError": {
3 "code": "string",
4 "message": "string",
5 "target": "string",
6 "details": [
7 {
8 "code": "string",
9 "message": "string",
10 "target": "string"
11 }
12 ],
13 "innerError": {
14 "code": "string",
15 "innerError": {}
16 }
17 }
18}

Field

Description

detailedError object

FieldDescription

code
string

A unique identifier for this particular occurrence of the problem that SHOULD be human-readable.

message
string

It is intended as an aid to developers and is not suitable for exposure to end users. Do not build logic on the content of this field and rely on the code instead.

target
string

The target of the error (e.g., the name of the property in error).

details
array

Additional details about the error.

innerError
object

The contents of this object are service-defined. Each nested innerError object represents a higher level of detail than its parent.