search: Forward geocoding - search for places by name or address

API: nominatim.org:nominatim-geocoding-api
Endpoint: /search
Response format: application/json
Auth: unknown
Method: GET
Last Status: 200
Latency: 884ms

Description

Returns an array of matching locations with coordinates, address details, and bounding boxes. Use this to convert human-readable addresses or place names into geographic coordinates for mapping or location-based services.

From spec: Search for OSM objects (places, addresses, POIs) by name or address. Returns matching locations with coordinates and address details.

Usage Tips

- Rate limit: 1 request per second maximum - Must include User-Agent header with contact info - Free usage requires attribution: Data © OpenStreetMap contributors, ODbL 1.0 - Results include importance score for ranking - Use 'limit' parameter to control result count (default: 10)

Parameters (29)

accept-language (string, query, optional)

Preferred language order for showing search results (e.g., 'en-US,en;q=0.9')

addressdetails (integer, query, optional, default: 1)

Include a breakdown of the address into elements (1=yes, 0=no)

Constraints: {'enum': [0, 1]}

amenity (string, query, optional)

Name or category of the POI (for structured search)

bounded (integer, query, optional, default: 0)

Restrict results to items within viewbox (1=yes, 0=no)

Constraints: {'enum': [0, 1]}

city (string, query, optional)

City name (for structured search)

country (string, query, optional)

Country name (for structured search)

countrycodes (string, query, optional)

Limit search to countries by ISO 3166-1alpha2 codes (comma-separated, e.g., 'us,ca,gb')

county (string, query, optional)

County name (for structured search)

debug (integer, query, optional, default: 0)

Output debug information (returns HTML, 1=yes, 0=no)

Constraints: {'enum': [0, 1]}

dedupe (integer, query, optional, default: 1)

Remove duplicate results (1=yes, 0=no)

Constraints: {'enum': [0, 1]}

email (string, query, optional)

Valid email address for identification (recommended for heavy usage)

entrances (integer, query, optional, default: 0)

Include tagged entrances in the result (1=yes, 0=no)

Constraints: {'enum': [0, 1]}

exclude_place_ids (string, query, optional)

Comma-separated list of place_id values to exclude from results

extratags (integer, query, optional, default: 0)

Include additional information in the result (1=yes, 0=no)

Constraints: {'enum': [0, 1]}

featureType (string, query, optional)

Filter by feature type (country, state, city, settlement)

Constraints: {'enum': ['country', 'state', 'city', 'settlement']}

format (string, query, optional, default: jsonv2)

Output format

Constraints: {'enum': ['xml', 'json', 'jsonv2', 'geojson', 'geocodejson']}

layer (string, query, optional)

Filter by layer type (comma-separated: address, poi, railway, natural, manmade)

limit (integer, query, optional, default: 10)

Maximum number of results (max 40)

Constraints: {'minimum': 1, 'maximum': 40}

namedetails (integer, query, optional, default: 0)

Include a full list of names for the result (1=yes, 0=no)

Constraints: {'enum': [0, 1]}

polygon_geojson (integer, query, optional, default: 0)

Add full geometry to result output in GeoJSON format (1=yes, 0=no)

Constraints: {'enum': [0, 1]}

polygon_kml (integer, query, optional, default: 0)

Add full geometry to result output in KML format (1=yes, 0=no)

Constraints: {'enum': [0, 1]}

polygon_svg (integer, query, optional, default: 0)

Add full geometry to result output in SVG format (1=yes, 0=no)

Constraints: {'enum': [0, 1]}

polygon_text (integer, query, optional, default: 0)

Add full geometry to result output in WKT format (1=yes, 0=no)

Constraints: {'enum': [0, 1]}

polygon_threshold (number, query, optional, default: 0.0)

Tolerance in degrees for geometry simplification

postalcode (string, query, optional)

Postal code (for structured search)

q (string, query, optional)

Free-form query string to search for (e.g., '135 Pilkington Avenue, Birmingham')

state (string, query, optional)

State name (for structured search)

street (string, query, optional)

Street name and house number (for structured search)

viewbox (string, query, optional)

Preferred area to find search results (left,top,right,bottom)

Examples (3)

Search for Big Ben landmark probe-gate

Demonstrates basic forward geocoding to find a famous landmark by name

curl 'https://nominatim.openstreetmap.org/search?q=Big+Ben&format=json&limit=1'
import requests

resp = requests.get(
    "https://nominatim.openstreetmap.org/search",
    params={
        'q': 'Big Ben',
        'format': 'json',
        'limit': '1',
    },
)
data = resp.json()
import zingu_apis

api = zingu_apis.api("nominatim-geocoding")
result = api.fetch("search", q="Big Ben", format="json", limit=1)

for item in result:
    print(item)
const resp = await fetch("https://nominatim.openstreetmap.org/search?q=Big+Ben&format=json&limit=1");
const data = await resp.json();
Search for Eiffel Tower with city context probe-gate

Demonstrates searching for a landmark with city context for better accuracy

curl 'https://nominatim.openstreetmap.org/search?q=Eiffel+Tower%2C+Paris&format=json&limit=1'
import requests

resp = requests.get(
    "https://nominatim.openstreetmap.org/search",
    params={
        'q': 'Eiffel Tower, Paris',
        'format': 'json',
        'limit': '1',
    },
)
data = resp.json()
import zingu_apis

api = zingu_apis.api("nominatim-geocoding")
result = api.fetch("search", q="Eiffel Tower, Paris", format="json", limit=1)

for item in result:
    print(item)
const resp = await fetch("https://nominatim.openstreetmap.org/search?q=Eiffel+Tower%2C+Paris&format=json&limit=1");
const data = await resp.json();
Search for Times Square probe-gate

Demonstrates searching for a famous city landmark by name only

curl 'https://nominatim.openstreetmap.org/search?q=Times+Square&format=json&limit=1'
import requests

resp = requests.get(
    "https://nominatim.openstreetmap.org/search",
    params={
        'q': 'Times Square',
        'format': 'json',
        'limit': '1',
    },
)
data = resp.json()
import zingu_apis

api = zingu_apis.api("nominatim-geocoding")
result = api.fetch("search", q="Times Square", format="json", limit=1)

for item in result:
    print(item)
const resp = await fetch("https://nominatim.openstreetmap.org/search?q=Times+Square&format=json&limit=1");
const data = await resp.json();

Probe History

Latency

Status Codes

TimeStatusLatencySize
2026-04-16 16:59:43.469061 200 884ms
2026-04-16 03:56:29.250372 200 476ms
2026-04-16 02:43:39.033659 200 248ms
2026-04-16 00:58:00.374184 200 851ms
2026-04-15 03:28:38.411900 200 244ms
2026-04-15 00:41:54.071276 200 456ms
2026-04-15 00:28:56.095849 200 260ms
2026-04-14 01:39:27.923837 200 364ms
2026-04-14 01:07:54.795797 200 218ms
2026-04-14 00:21:05.507104 200 450ms
2026-04-12 14:53:27.692812 200 893ms
2026-04-12 14:06:53.377847 200 260ms
2026-04-12 13:50:18.396814 200 233ms
2026-04-10 06:49:30.994937 200 208ms
2026-04-10 03:19:33.711837 200 254ms
2026-04-10 01:14:37.688737 200 257ms
2026-04-09 03:28:35.963860 200 471ms
2026-04-09 03:02:46.818562 200 792ms
2026-04-09 02:48:02.307650 200 762ms