GnistAI GnistAI
Log in

OpenStreetMap POI

Points of interest from OpenStreetMap — restaurants, shops, landmarks, and amenities.

Overview   |   MCP   |   REST API   |   OpenAPI   |   CLI   |   Tutorial   |   Toolkits   |   Home
status: healthy status status healthy healthy tools: 5 tools tools 5 5 type: api wrapper type type api wrapper api wrapper lifecycle: maintained lifecycle lifecycle maintained maintained Geography

Data source: OpenStreetMap / Overpass

REST Bridge Endpoint https://context.gnist.ai/rest/osm-poi/
Authentication

All requests require a Gnist-API-Key header (or api_key query parameter).

Free tier: 100 calls/day. Get your API key.

Tools (5)

nearby_pois

Find points of interest near a location.

Searches OpenStreetMap for POIs within a radius of the given coordinates.

Args:
lat: Latitude of the centre point (-90 to 90).
lon: Longitude of the centre point (-180 to 180).
radius_m: Search radius in metres (1–50000, default 500).
poi_type: Type of POI to filter by. Examples: "restaurant", "cafe", "hospital",
"pharmacy", "hotel", "museum", "supermarket", "park", "ev_charger",
"school", "bank", "parking". Omit to return all POI types.
max_results: Maximum number of results (1–100, default 20).

Returns:
Object with count and list of POIs, each with osm_id, name, poi_type,
lat, lon, and key OSM tags (address, opening hours, phone, website, etc.).

ParameterTypeRequiredDescription
latnumberrequiredLatitude of the centre point (-90 to 90).
lonnumberrequiredLongitude of the centre point (-180 to 180).
radius_mintegeroptionalSearch radius in metres (1–50000, default 500). (default: 500)
poi_typeanyoptionalType of POI to filter by. Examples: "restaurant", "cafe", "hospital", "pharmacy", "hotel", "museum", "supermarket", "park", "ev_charger", "school", "bank", "parking". Omit t...
max_resultsintegeroptionalMaximum number of results (1–100, default 20). (default: 20)
Request Body
{
  "lat": 1.0,
  "lon": 1.0
}
search_poi

Search for POIs by name across OpenStreetMap.

Performs a case-insensitive regex search over OSM name tags. Optionally
restricted to a specific country.

Args:
name_query: Name or partial name to search for (e.g. "Starbucks", "IKEA").
country_code: ISO 3166-1 alpha-2 country code to restrict results
(e.g. "NO" for Norway, "GB" for UK, "US" for United States).
Omit for global search (slower, may time out for common names).
max_results: Maximum number of results (1–50, default 20).

Returns:
Object with count and list of matching POIs, each with osm_id, name,
poi_type, lat, lon, and key OSM tags.

ParameterTypeRequiredDescription
name_querystringrequiredName or partial name to search for (e.g. "Starbucks", "IKEA").
country_codeanyoptionalISO 3166-1 alpha-2 country code to restrict results (e.g. "NO" for Norway, "GB" for UK, "US" for United States). Omit for global search (slower, may time out for common names).
max_resultsintegeroptionalMaximum number of results (1–50, default 20). (default: 20)
Request Body
{
  "name_query": "example"
}
get_poi_details

Get full OSM tag data for a specific POI.

Returns all available metadata for a single OSM element, including
opening hours, contact info, accessibility attributes, and more.

Args:
osm_id: OSM element identifier in the format "type/id", e.g. "node/12345"
or "way/67890". Obtained from nearby_pois or search_poi results.

Returns:
Full POI record with all OSM tags, or {"error": "not_found"} if the
element does not exist.

ParameterTypeRequiredDescription
osm_idstringrequiredOSM element identifier in the format "type/id", e.g. "node/12345" or "way/67890". Obtained from nearby_pois or search_poi results.
Request Body
{
  "osm_id": "example"
}
count_pois

Count POIs within a bounding box.

Useful for density analysis, market research, and catchment area studies.

Args:
min_lat: Southern boundary latitude.
min_lon: Western boundary longitude.
max_lat: Northern boundary latitude.
max_lon: Eastern boundary longitude.
poi_type: POI type to count (e.g. "restaurant", "ev_charger"). Omit to
count all named POIs.

Returns:
Object with the count of matching POIs and the queried bbox.

ParameterTypeRequiredDescription
min_latnumberrequiredSouthern boundary latitude.
min_lonnumberrequiredWestern boundary longitude.
max_latnumberrequiredNorthern boundary latitude.
max_lonnumberrequiredEastern boundary longitude.
poi_typeanyoptionalPOI type to count (e.g. "restaurant", "ev_charger"). Omit to count all named POIs.
Request Body
{
  "min_lat": 1.0,
  "min_lon": 1.0,
  "max_lat": 1.0,
  "max_lon": 1.0
}
report_feedback

Report a bug, feature request, or general feedback for this data source.

Use this when something doesn't work as expected, when you'd like
a new feature, or when you have suggestions for improvement.

Args:
feedback: Describe the issue or suggestion.
feedback_type: One of 'bug', 'feature_request', or 'general'.

ParameterTypeRequiredDescription
feedbackstringrequired
feedback_typestringoptional (default: "general")
Request Body
{
  "feedback": "example"
}

Quick Start

Shell
curl -X POST "https://context.gnist.ai/rest/osm-poi/nearby_pois" \
  -H "Content-Type: application/json" \
  -H "Gnist-API-Key: YOUR_API_KEY" \
  -d '{"lat": 1.0, "lon": 1.0}'
Python
import httpx

resp = httpx.post(
    "https://context.gnist.ai/rest/osm-poi/nearby_pois",
    headers={"Gnist-API-Key": "YOUR_API_KEY"},
    json={
  "lat": 1.0,
  "lon": 1.0
},
)
print(resp.json())

Related Toolkits (Geography)

Resources