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