Data source: OpenStreetMap / Overpass
https://context.gnist.ai/rest/osm-poi/
AuthenticationAll requests require a Gnist-API-Key header (or api_key query parameter).
Free tier: 100 calls/day. Get your API key.
Tools (5)
nearby_poisFind 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.).
| Parameter | Type | Required | Description |
|---|---|---|---|
lat | number | required | Latitude of the centre point (-90 to 90). |
lon | number | required | Longitude of the centre point (-180 to 180). |
radius_m | integer | optional | Search radius in metres (1–50000, default 500). (default: 500) |
poi_type | any | optional | Type of POI to filter by. Examples: "restaurant", "cafe", "hospital", "pharmacy", "hotel", "museum", "supermarket", "park", "ev_charger", "school", "bank", "parking". Omit t... |
max_results | integer | optional | Maximum number of results (1–100, default 20). (default: 20) |
{
"lat": 1.0,
"lon": 1.0
}search_poiSearch 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.
| Parameter | Type | Required | Description |
|---|---|---|---|
name_query | string | required | Name or partial name to search for (e.g. "Starbucks", "IKEA"). |
country_code | any | optional | 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 | integer | optional | Maximum number of results (1–50, default 20). (default: 20) |
{
"name_query": "example"
}get_poi_detailsGet 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.
| Parameter | Type | Required | Description |
|---|---|---|---|
osm_id | string | required | OSM element identifier in the format "type/id", e.g. "node/12345" or "way/67890". Obtained from nearby_pois or search_poi results. |
{
"osm_id": "example"
}count_poisCount 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.
| Parameter | Type | Required | Description |
|---|---|---|---|
min_lat | number | required | Southern boundary latitude. |
min_lon | number | required | Western boundary longitude. |
max_lat | number | required | Northern boundary latitude. |
max_lon | number | required | Eastern boundary longitude. |
poi_type | any | optional | POI type to count (e.g. "restaurant", "ev_charger"). Omit to count all named POIs. |
{
"min_lat": 1.0,
"min_lon": 1.0,
"max_lat": 1.0,
"max_lon": 1.0
}report_feedbackReport 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'.
| Parameter | Type | Required | Description |
|---|---|---|---|
feedback | string | required | |
feedback_type | string | optional | (default: "general") |
{
"feedback": "example"
}Quick Start
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}'
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())