TomTom Search API

The Search API from TomTom — 9 operation(s) for search.

Operations 10

GET /search/{versionNumber}/cS/{category}.{ext} Low Bandwith Category Search #
GET /search/{versionNumber}/categorySearch/{query}.{ext} Category Search #
GET /search/{versionNumber}/geometrySearch/{query}.{ext} Geometry Search #
POST /search/{versionNumber}/geometrySearch/{query}.{ext} Geometry Search #
GET /search/{versionNumber}/nearbySearch/.{ext} Nearby Search #
GET /search/{versionNumber}/poiSearch/{query}.{ext} Points of Interest Search #
GET /search/{versionNumber}/routedSearch/{query}/{position}/{heading}.{ext} Routed Search #
GET /search/{versionNumber}/s/{query}.{ext} Low Bandwith Search #
GET /search/{versionNumber}/search/{query}.{ext} Fuzzy Search #
POST /search/{versionNumber}/searchAlongRoute/{query}.{ext} Along Route Search #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/tomtom-search-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

tomtom-search-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    name: Contact Us
    url: https://developer.tomtom.com/contact-us
    x-twitter: TomTom
  description: Search API is a RESTful API that allows developers to run a single line fuzzy search for addresses and POIs. Search API returns the latitude/longitude of a specific address, cross street, geographic feature, or point of interest (POI).
  title: Search API
  version: 1.0.0
servers:
- url: https://api.tomtom.com
security:
- api_key: []
tags:
- name: Search
paths:
  /search/{versionNumber}/cS/{category}.{ext}:
    get:
      deprecated: true
      parameters:
      - $ref: '#/components/parameters/versionNumber'
      - description: Query string. Must be properly URL encoded.
        example: pizza
        in: path
        name: category
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/ext'
      - $ref: '#/components/parameters/typeahead'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/ofs'
      - $ref: '#/components/parameters/countrySet'
      - $ref: '#/components/parameters/lat'
      - $ref: '#/components/parameters/lon'
      - $ref: '#/components/parameters/radius'
      - $ref: '#/components/parameters/topLeft'
      - $ref: '#/components/parameters/btmRight'
      - $ref: '#/components/parameters/language'
      - $ref: '#/components/parameters/idxSet'
      - $ref: '#/components/parameters/view'
      responses:
        '200':
          $ref: '#/components/responses/200'
        '400':
          $ref: '#/components/responses/400'
        '403':
          $ref: '#/components/responses/403'
        '405':
          $ref: '#/components/responses/405'
        404/596:
          $ref: '#/components/responses/404596'
        5XX:
          $ref: '#/components/responses/5xx'
      summary: Low Bandwith Category Search
      tags:
      - Search
      operationId: getSearchByVersionNumberCSByCategory}{ext
      x-operation-id-source: derived
  /search/{versionNumber}/categorySearch/{query}.{ext}:
    get:
      parameters:
      - $ref: '#/components/parameters/versionNumber'
      - description: Query string. Must be properly URL encoded.
        example: pizza
        in: path
        name: query
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/ext'
      - $ref: '#/components/parameters/typeahead'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/ofs'
      - $ref: '#/components/parameters/countrySet'
      - $ref: '#/components/parameters/lat'
      - $ref: '#/components/parameters/lon'
      - $ref: '#/components/parameters/radius'
      - $ref: '#/components/parameters/topLeft'
      - $ref: '#/components/parameters/btmRight'
      - $ref: '#/components/parameters/language'
      - $ref: '#/components/parameters/extendedPostalCodesFor'
      - $ref: '#/components/parameters/view'
      responses:
        '200':
          $ref: '#/components/responses/200'
        '400':
          $ref: '#/components/responses/400'
        '403':
          $ref: '#/components/responses/403'
        '405':
          $ref: '#/components/responses/405'
        404/596:
          $ref: '#/components/responses/404596'
        5XX:
          $ref: '#/components/responses/5xx'
      summary: Category Search
      tags:
      - Search
      operationId: getSearchByVersionNumberCategorySearchByQuery}{ext
      x-operation-id-source: derived
  /search/{versionNumber}/geometrySearch/{query}.{ext}:
    get:
      parameters:
      - $ref: '#/components/parameters/versionNumber'
      - description: Query string. Must be properly URL encoded.
        example: pizza
        in: path
        name: query
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/ext'
      - description: List of geometries to filter by. Available types are CIRCLE (with the radius expressed in meters) and POLYGON.
        example: '[{"type":"POLYGON", "vertices":["37.7524152343544, -122.43576049804686", "37.70660472542312, -122.43301391601562", "37.712059855877314, -122.36434936523438", "37.75350561243041, -122.37396240234374"]}, {"type":"CIRCLE", "position":"37.71205, -121.36434", "radius":6000}, {"type":"CIRCLE", "position":"37.31205, -121.36434", "radius":1000}]'
        in: query
        name: geometryList
        schema:
          type: string
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/language'
      - $ref: '#/components/parameters/extendedPostalCodesFor'
      - $ref: '#/components/parameters/idxSet'
      responses:
        '200':
          $ref: '#/components/responses/200'
        '400':
          $ref: '#/components/responses/400'
        '403':
          $ref: '#/components/responses/403'
        '405':
          $ref: '#/components/responses/405'
        404/596:
          $ref: '#/components/responses/404596'
        5XX:
          $ref: '#/components/responses/5xx'
      summary: Geometry Search
      tags:
      - Search
      operationId: getSearchByVersionNumberGeometrySearchByQuery}{ext
      x-operation-id-source: derived
    post:
      parameters:
      - $ref: '#/components/parameters/versionNumber'
      - description: Query string. Must be properly URL encoded.
        example: pizza
        in: path
        name: query
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/ext'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/language'
      - $ref: '#/components/parameters/extendedPostalCodesFor'
      - $ref: '#/components/parameters/idxSet'
      requestBody:
        content:
          application/json:
            schema:
              example:
                geometryList:
                - type: POLYGON
                  vertices:
                  - 37.7524152343544,-122.43576049804686
                  - 37.70660472542312,-122.43301391601562
                  - 37.712059855877314,-122.36434936523438
                  - 37.75350561243041,-122.37396240234374
                - position: 37.71205,-121.36434
                  radius: 6000
                  type: CIRCLE
                - position: 37.31205,-121.36434
                  radius: 1000
                  type: CIRCLE
              properties:
                geometryList:
                  items:
                    properties:
                      position:
                        type: string
                      radius:
                        type: integer
                      type:
                        type: string
                      vertices:
                        items:
                          type: string
                        type: array
                    type: object
                  type: array
              type: object
      responses:
        '200':
          $ref: '#/components/responses/200'
        '400':
          $ref: '#/components/responses/400'
        '403':
          $ref: '#/components/responses/403'
        '405':
          $ref: '#/components/responses/405'
        404/596:
          $ref: '#/components/responses/404596'
        5XX:
          $ref: '#/components/responses/5xx'
      summary: Geometry Search
      tags:
      - Search
      operationId: postSearchByVersionNumberGeometrySearchByQuery}{ext
      x-operation-id-source: derived
  /search/{versionNumber}/nearbySearch/.{ext}:
    get:
      parameters:
      - $ref: '#/components/parameters/versionNumber'
      - $ref: '#/components/parameters/ext'
      - description: "Latitude where results should be biased.  \nNOTE: supplying a lat/lon without a radius will return search results biased to that point."
        example: 37.337
        in: query
        name: lat
        required: true
        schema:
          format: float
          type: number
      - description: 'Longitude where results should be biased

          NOTE: supplying a lat/lon without a radius will return search results biased to that point.'
        example: -121.89
        in: query
        name: lon
        required: true
        schema:
          format: float
          type: number
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/ofs'
      - $ref: '#/components/parameters/countrySet'
      - description: If radius and position are set, the results will be constrained to the defined area. The radius parameter is specified in meters.
        in: query
        name: radius
        schema:
          default: 10000
          maximum: 50000
          type: integer
      - deprecated: true
        description: Top left position of the bounding box. This is specified as a comma separated string composed of lat., lon.
        example: 37.553,-122.453
        in: query
        name: topLeft
        schema:
          type: string
      - deprecated: true
        description: Bottom right position of the bounding box. This is specified as a comma separated string composed of lat., lon.
        example: 37.4,-122.55
        in: query
        name: btmRight
        schema:
          type: string
      - $ref: '#/components/parameters/language'
      - $ref: '#/components/parameters/extendedPostalCodesFor'
      - $ref: '#/components/parameters/minFuzzyLevel'
      - $ref: '#/components/parameters/maxFuzzyLevel'
      - $ref: '#/components/parameters/idxSet'
      - $ref: '#/components/parameters/view'
      responses:
        '200':
          $ref: '#/components/responses/200'
        '400':
          $ref: '#/components/responses/400'
        '403':
          $ref: '#/components/responses/403'
        '405':
          $ref: '#/components/responses/405'
        404/596:
          $ref: '#/components/responses/404596'
        5XX:
          $ref: '#/components/responses/5xx'
      summary: Nearby Search
      tags:
      - Search
      operationId: getSearchByVersionNumberNearbySearch{ext}
      x-operation-id-source: derived
  /search/{versionNumber}/poiSearch/{query}.{ext}:
    get:
      parameters:
      - $ref: '#/components/parameters/versionNumber'
      - description: Query string. Must be properly URL encoded.
        example: pizza
        in: path
        name: query
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/ext'
      - $ref: '#/components/parameters/typeahead'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/ofs'
      - $ref: '#/components/parameters/countrySet'
      - $ref: '#/components/parameters/lat'
      - $ref: '#/components/parameters/lon'
      - $ref: '#/components/parameters/radius'
      - $ref: '#/components/parameters/topLeft'
      - $ref: '#/components/parameters/btmRight'
      - $ref: '#/components/parameters/language'
      - $ref: '#/components/parameters/extendedPostalCodesFor'
      - $ref: '#/components/parameters/view'
      responses:
        '200':
          $ref: '#/components/responses/200'
        '400':
          $ref: '#/components/responses/400'
        '403':
          $ref: '#/components/responses/403'
        '405':
          $ref: '#/components/responses/405'
        404/596:
          $ref: '#/components/responses/404596'
        5XX:
          $ref: '#/components/responses/5xx'
      summary: Points of Interest Search
      tags:
      - Search
      operationId: getSearchByVersionNumberPoiSearchByQuery}{ext
      x-operation-id-source: derived
  /search/{versionNumber}/routedSearch/{query}/{position}/{heading}.{ext}:
    get:
      deprecated: true
      parameters:
      - $ref: '#/components/parameters/versionNumber'
      - description: Query string. Must be properly URL encoded.
        example: gas
        in: path
        name: query
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/position'
      - description: The directional heading in degrees, usually similar to the course along a road segment. Entered in degrees, measured clockwise from north (so north is 0, east is 90, etc.)
        example: 90
        in: path
        name: heading
        required: true
        schema:
          format: float
          type: number
      - $ref: '#/components/parameters/ext'
      - $ref: '#/components/parameters/typeahead'
      - $ref: '#/components/parameters/limit'
      - description: Multiplies the limit by N to gather more candidate POIs, which will then be sorted by drive distance, returning only the top candidates according to the limit.
        in: query
        name: multiplier
        schema:
          default: 2
          type: integer
      - $ref: '#/components/parameters/routingTimeout'
      - $ref: '#/components/parameters/language'
      - $ref: '#/components/parameters/extendedPostalCodesFor'
      - $ref: '#/components/parameters/idxSet'
      responses:
        '200':
          $ref: '#/components/responses/200'
        '400':
          $ref: '#/components/responses/400'
        '403':
          $ref: '#/components/responses/403'
        '405':
          $ref: '#/components/responses/405'
        404/596:
          $ref: '#/components/responses/404596'
        5XX:
          $ref: '#/components/responses/5xx'
      summary: Routed Search
      tags:
      - Search
      operationId: getSearchByVersionNumberRoutedSearchByQueryByPositionByHeading}{ext
      x-operation-id-source: derived
  /search/{versionNumber}/s/{query}.{ext}:
    get:
      deprecated: true
      parameters:
      - $ref: '#/components/parameters/versionNumber'
      - description: Query string. Must be properly URL encoded.
        example: pizza
        in: path
        name: query
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/ext'
      - $ref: '#/components/parameters/typeahead'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/ofs'
      - $ref: '#/components/parameters/countrySet'
      - $ref: '#/components/parameters/lat'
      - $ref: '#/components/parameters/lon'
      - $ref: '#/components/parameters/radius'
      - $ref: '#/components/parameters/topLeft'
      - $ref: '#/components/parameters/btmRight'
      - $ref: '#/components/parameters/language'
      - $ref: '#/components/parameters/idxSet'
      - $ref: '#/components/parameters/view'
      responses:
        '200':
          $ref: '#/components/responses/200'
        '400':
          $ref: '#/components/responses/400'
        '403':
          $ref: '#/components/responses/403'
        '405':
          $ref: '#/components/responses/405'
        404/596:
          $ref: '#/components/responses/404596'
        5XX:
          $ref: '#/components/responses/5xx'
      summary: Low Bandwith Search
      tags:
      - Search
      operationId: getSearchByVersionNumberSByQuery}{ext
      x-operation-id-source: derived
  /search/{versionNumber}/search/{query}.{ext}:
    get:
      parameters:
      - $ref: '#/components/parameters/versionNumber'
      - description: 'Query string. Must be properly URL encoded.


          To perform a reverse geocode, the user can provide latitude and longitude coordinates directly in the query. More information can be found <a href="/search-api/search-api-documentation-search/fuzzy-search#AdditionalInfo">here</a>.'
        example: pizza
        in: path
        name: query
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/ext'
      - $ref: '#/components/parameters/typeahead'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/ofs'
      - $ref: '#/components/parameters/countrySet'
      - $ref: '#/components/parameters/lat'
      - $ref: '#/components/parameters/lon'
      - $ref: '#/components/parameters/radius'
      - $ref: '#/components/parameters/topLeft'
      - $ref: '#/components/parameters/btmRight'
      - $ref: '#/components/parameters/language'
      - $ref: '#/components/parameters/extendedPostalCodesFor'
      - $ref: '#/components/parameters/minFuzzyLevel'
      - $ref: '#/components/parameters/maxFuzzyLevel'
      - $ref: '#/components/parameters/idxSet'
      - $ref: '#/components/parameters/view'
      responses:
        '200':
          $ref: '#/components/responses/200'
        '400':
          $ref: '#/components/responses/400'
        '403':
          $ref: '#/components/responses/403'
        '405':
          $ref: '#/components/responses/405'
        404/596:
          $ref: '#/components/responses/404596'
        5XX:
          $ref: '#/components/responses/5xx'
      summary: Fuzzy Search
      tags:
      - Search
      operationId: getSearchByVersionNumberSearchByQuery}{ext
      x-operation-id-source: derived
  /search/{versionNumber}/searchAlongRoute/{query}.{ext}:
    post:
      parameters:
      - $ref: '#/components/parameters/versionNumber'
      - description: Query string. Must be properly URL encoded.
        example: pizza
        in: path
        name: query
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/ext'
      - description: Maximum detour time
        example: 1200
        in: query
        name: maxDetourTime
        required: true
        schema:
          maximum: 3600
          type: integer
      - $ref: '#/components/parameters/limit'
      requestBody:
        content:
          application/json:
            schema:
              example:
                route:
                  points:
                  - lat: 37.7524152343544
                    lon: -122.43576049804686
                  - lat: 37.70660472542312
                    lon: -122.43301391601562
                  - lat: 37.712059855877314
                    lon: -122.36434936523438
                  - lat: 37.75350561243041
                    lon: -122.37396240234374
              properties:
                route:
                  properties:
                    points:
                      items:
                        properties:
                          lat:
                            format: float
                            type: number
                          lon:
                            format: float
                            type: number
                        type: object
                      type: array
                  type: object
              type: object
      responses:
        '200':
          $ref: '#/components/responses/200'
        '400':
          $ref: '#/components/responses/400'
        '403':
          $ref: '#/components/responses/403'
        '405':
          $ref: '#/components/responses/405'
        404/596:
          $ref: '#/components/responses/404596'
        5XX:
          $ref: '#/components/responses/5xx'
      summary: Along Route Search
      tags:
      - Search
      operationId: postSearchByVersionNumberSearchAlongRouteByQuery}{ext
      x-operation-id-source: derived
components:
  parameters:
    versionNumber:
      description: Service version number. The current value is 2.
      in: path
      name: versionNumber
      required: true
      schema:
        enum:
        - 2
        type: integer
    language:
      description: Language in which search results should be returned. Should be one of <a href="/search-api/search-api-documentation/supported-languages">supported IETF language tags</a>, case insensitive.
      in: query
      name: language
      schema:
        type: string
    typeahead:
      description: If the "typeahead" flag is set, the query will be interpreted as a partial input and the search will enter <b>predictive</b> mode.
      in: query
      name: typeahead
      schema:
        default: false
        type: boolean
    radius:
      description: If radius <b>and</b> position are set, the results will be constrained to the defined area. The radius parameter is specified in meters.
      in: query
      name: radius
      schema:
        type: integer
    ext:
      description: Expected response format.
      example: xml
      in: path
      name: ext
      required: true
      schema:
        enum:
        - json
        - jsonp
        - js
        - xml
        type: string
    maxFuzzyLevel:
      description: Maximum fuzziness level to be used.
      in: query
      name: maxFuzzyLevel
      schema:
        default: 2
        maximum: 4
        minimum: 1
        type: integer
    btmRight:
      description: Bottom right position of the bounding box. This is specified as a comma separated string composed of lat., lon.
      example: 37.4,-122.55
      in: query
      name: btmRight
      schema:
        type: string
    lat:
      description: "Latitude where results should be biased.  \nNOTE: supplying a lat/lon without a radius will return search results biased to that point."
      example: 37.337
      in: query
      name: lat
      schema:
        format: float
        type: number
    position:
      description: This is specified as a comma separated string composed of lat., lon.
      example: 37.8328,-122.27669
      in: path
      name: position
      required: true
      schema:
        type: string
    topLeft:
      description: Top left position of the bounding box. This is specified as a comma separated string composed of lat., lon.
      example: 37.553,-122.453
      in: query
      name: topLeft
      schema:
        type: string
    extendedPostalCodesFor:
      description: "Indexes for which extended postal codes should be included in the results. Available indexes are:\n  - <b>Addr</b> = Address ranges\n  - <b>Geo</b> = Geographies\n  - <b>PAD</b> = Point Addresses\n  - <b>POI</b> = Points of Interest\n  - <b>Str</b> = Streets\n  - <b>XStr</b> = Cross Streets (intersections)"
      in: query
      name: extendedPostalCodesFor
      schema:
        type: string
    minFuzzyLevel:
      description: Minimum fuzziness level to be used.
      in: query
      name: minFuzzyLevel
      schema:
        default: 1
        maximum: 4
        minimum: 1
        type: integer
    limit:
      description: Maximum number of search results that will be returned.
      in: query
      name: limit
      schema:
        default: 10
        maximum: 100
        type: integer
    countrySet:
      description: Comma separated string of country codes. This will limit the search to the specified countries.
      example: FR
      in: query
      name: countrySet
      schema:
        type: string
    idxSet:
      description: "A comma separated list of indexes which should be utilized for the search. Item order does not matter. Available indexes are:\n  - <b>Addr</b> = Address range interpolation (when there is no PAD)\n  - <b>Geo</b> = Geographies\n  - <b>PAD</b> = Point Addresses\n  - <b>POI</b> = Points of interest\n  - <b>Str</b> = Streets\n  - <b>Xstr</b> = Cross Streets (intersections)"
      example: POI
      in: query
      name: idxSet
      schema:
        type: string
    lon:
      description: 'Longitude where results should be biased

        NOTE: supplying a lat/lon without a radius will return search results biased to that point.'
      example: -121.89
      in: query
      name: lon
      schema:
        format: float
        type: number
    view:
      description: Geopolitical View.
      in: query
      name: view
      required: false
      schema:
        default: Unified
        enum:
        - Unified
        - IN
        - PK
        - IL
        - MA
        type: string
    ofs:
      description: Starting offset of the returned results within the full result set.
      in: query
      name: ofs
      schema:
        default: 0
        maximum: 1900
        type: integer
    routingTimeout:
      description: Only return results that arrive from routing engine within this time limit.
      in: query
      name: routingTimeout
      schema:
        default: 4000
        type: integer
  responses:
    '400':
      description: 'Bad Request: one or more parameters were incorrectly specified.'
    '403':
      description: "Forbidden: possible causes include:\n  - Service requires SSL\n  - Not authorized\n  - Rate or volume limit exceeded\n  - Unknown referer"
    '404596':
      description: 'Not Found: the HTTP request method (GET, POST, etc) or path is incorrect.'
    5xx:
      description: An error occurred while processing the request. Please try again later.
    '200':
      description: 'OK: the search successfully returned zero or more results.'
    '405':
      description: 'Method Not Allowed: the HTTP method (GET, POST, etc) is not supported for this request.'
  securitySchemes:
    api_key:
      in: query
      name: key
      type: apiKey