Find an API

Search public APIs with auth details & Postman guides

← All APIs

Search

tomtom · Location

Location No Auth Free & Open location

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).

Authentication

No authentication requiredFree to use with no key needed.

Sample Requests

GET Additional Data

Additional Data

https://api.apis.guru/v2/specs/tomtom.com/search/1.0.0/search/{versionNumber}/additionalData.{ext}?geometries=example&geometriesZoom=0

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/tomtom.com/search/1.0.0/search/{versionNumber}/additionalData.{ext}?geometries=example&geometriesZoom=0"
import requests
params = {
    "geometries": "example",
    "geometriesZoom": "0"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/tomtom.com/search/1.0.0/search/{versionNumber}/additionalData.{ext}",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/tomtom.com/search/1.0.0/search/{versionNumber}/additionalData.{ext}');
url.searchParams.set('geometries', 'example');
url.searchParams.set('geometriesZoom', '0');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/tomtom.com/search/1.0.0/search/{versionNumber}/additionalData.{ext}")
	q := baseURL.Query()
	q.Set("geometries", "example")
	q.Set("geometriesZoom", "0")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/tomtom.com/search/1.0.0/search/{versionNumber}/additionalData.{ext}")
uri.query = URI.encode_www_form({
  "geometries" => "example",
  "geometriesZoom" => "0"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/tomtom.com/search/1.0.0/search/{versionNumber}/additionalData.{ext}?" . http_build_query([
    "geometries" => "example",
    "geometriesZoom" => "0"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET Geometry Filter

Geometry Filter

https://api.apis.guru/v2/specs/tomtom.com/search/1.0.0/search/{versionNumber}/geometryFilter.{ext}?poiList=example&geometryList=example

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/tomtom.com/search/1.0.0/search/{versionNumber}/geometryFilter.{ext}?poiList=example&geometryList=example"
import requests
params = {
    "poiList": "example",
    "geometryList": "example"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/tomtom.com/search/1.0.0/search/{versionNumber}/geometryFilter.{ext}",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/tomtom.com/search/1.0.0/search/{versionNumber}/geometryFilter.{ext}');
url.searchParams.set('poiList', 'example');
url.searchParams.set('geometryList', 'example');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/tomtom.com/search/1.0.0/search/{versionNumber}/geometryFilter.{ext}")
	q := baseURL.Query()
	q.Set("poiList", "example")
	q.Set("geometryList", "example")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/tomtom.com/search/1.0.0/search/{versionNumber}/geometryFilter.{ext}")
uri.query = URI.encode_www_form({
  "poiList" => "example",
  "geometryList" => "example"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/tomtom.com/search/1.0.0/search/{versionNumber}/geometryFilter.{ext}?" . http_build_query([
    "poiList" => "example",
    "geometryList" => "example"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET Nearby Search

Nearby Search

https://api.apis.guru/v2/specs/tomtom.com/search/1.0.0/search/{versionNumber}/nearbySearch/.{ext}?lat=51.5074&lon=-0.1278&ofs=0&view=Unified&limit=10&idxSet=example&radius=10000&topLeft=example&btmRight=example&language=en&countrySet=example&maxFuzzyLevel=2&minFuzzyLevel=1&extendedPostalCodesFor=example

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/tomtom.com/search/1.0.0/search/{versionNumber}/nearbySearch/.{ext}?lat=51.5074&lon=-0.1278&ofs=0&view=Unified&limit=10&idxSet=example&radius=10000&topLeft=example&btmRight=example&language=en&countrySet=example&maxFuzzyLevel=2&minFuzzyLevel=1&extendedPostalCodesFor=example"
import requests
params = {
    "lat": "51.5074",
    "lon": "-0.1278",
    "ofs": "0",
    "view": "Unified",
    "limit": "10",
    "idxSet": "example",
    "radius": "10000",
    "topLeft": "example",
    "btmRight": "example",
    "language": "en",
    "countrySet": "example",
    "maxFuzzyLevel": "2",
    "minFuzzyLevel": "1",
    "extendedPostalCodesFor": "example"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/tomtom.com/search/1.0.0/search/{versionNumber}/nearbySearch/.{ext}",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/tomtom.com/search/1.0.0/search/{versionNumber}/nearbySearch/.{ext}');
url.searchParams.set('lat', '51.5074');
url.searchParams.set('lon', '-0.1278');
url.searchParams.set('ofs', '0');
url.searchParams.set('view', 'Unified');
url.searchParams.set('limit', '10');
url.searchParams.set('idxSet', 'example');
url.searchParams.set('radius', '10000');
url.searchParams.set('topLeft', 'example');
url.searchParams.set('btmRight', 'example');
url.searchParams.set('language', 'en');
url.searchParams.set('countrySet', 'example');
url.searchParams.set('maxFuzzyLevel', '2');
url.searchParams.set('minFuzzyLevel', '1');
url.searchParams.set('extendedPostalCodesFor', 'example');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/tomtom.com/search/1.0.0/search/{versionNumber}/nearbySearch/.{ext}")
	q := baseURL.Query()
	q.Set("lat", "51.5074")
	q.Set("lon", "-0.1278")
	q.Set("ofs", "0")
	q.Set("view", "Unified")
	q.Set("limit", "10")
	q.Set("idxSet", "example")
	q.Set("radius", "10000")
	q.Set("topLeft", "example")
	q.Set("btmRight", "example")
	q.Set("language", "en")
	q.Set("countrySet", "example")
	q.Set("maxFuzzyLevel", "2")
	q.Set("minFuzzyLevel", "1")
	q.Set("extendedPostalCodesFor", "example")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/tomtom.com/search/1.0.0/search/{versionNumber}/nearbySearch/.{ext}")
uri.query = URI.encode_www_form({
  "lat" => "51.5074",
  "lon" => "-0.1278",
  "ofs" => "0",
  "view" => "Unified",
  "limit" => "10",
  "idxSet" => "example",
  "radius" => "10000",
  "topLeft" => "example",
  "btmRight" => "example",
  "language" => "en",
  "countrySet" => "example",
  "maxFuzzyLevel" => "2",
  "minFuzzyLevel" => "1",
  "extendedPostalCodesFor" => "example"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/tomtom.com/search/1.0.0/search/{versionNumber}/nearbySearch/.{ext}?" . http_build_query([
    "lat" => "51.5074",
    "lon" => "-0.1278",
    "ofs" => "0",
    "view" => "Unified",
    "limit" => "10",
    "idxSet" => "example",
    "radius" => "10000",
    "topLeft" => "example",
    "btmRight" => "example",
    "language" => "en",
    "countrySet" => "example",
    "maxFuzzyLevel" => "2",
    "minFuzzyLevel" => "1",
    "extendedPostalCodesFor" => "example"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));

Postman Setup Guide

Get Postman ↗
  1. See official documentation for authentication and setup.

What can you build with Search?

Search is a Location API. Developers commonly use location APIs for:

  • tracking assets and vehicles in real time
  • building delivery and logistics apps
  • finding nearby businesses or services
  • geo-fencing and location-based notifications
  • address validation and autocomplete

No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. Search is free to use, making it a low-risk choice to experiment with.

New to APIs? Read our beginner's guide · Learn about API keys · What is REST?

Open documentation ↗