OSM Features API
Explore real OpenStreetMap features from the GeoJSON API. Preset buttons load curated tag filters you can inspect and edit. Results shown in map and table view.
Style
Preset
Advanced options
Actual API params that presets populate. Lower map zoom also sometimes filters tags internally.
Query Results
These tables show the query results split by geometry type. There are 0 features in view.
Show Output
The Endpoint
Send one request and get up to your plan's max_limit features with GET /v3/osm_features. Use a bounding box or a location plus radius, filter with native OpenStreetMap tags, and receive a GeoJSON FeatureCollection. The same route also serves FlatGeobuf, GeoParquet, CSV, and TSV when you set the Accept header. More information in the OSM Wiki.
| Parameter | Example | What it does |
|---|---|---|
bbox | min_lon,min_lat,max_lon,max_lat | Features that intersect this box. One of two spatial anchors, the other being location plus radius. |
location, radius | 59.334,18.063 and 500 | Point as lat,lng plus radius in metres. Tier caps differ for tagged vs tag-free queries. |
within | relation/155790 | Query features that are within this osm_id. |
tags | building or amenity=cafe|amenity=bar | Join clauses with , (or repeat tags) to AND. | is OR; group with parentheses, (a,b)|c. Quote values containing a comma: name="Ben, Jerry's". A leading ! excludes (!access=private). |
type | node, way, relation | OSM element types. Comma-separated. Omit to query all three. |
way_shape | line, polygon, or all | Geometry class for ways and relations. Nodes stay points. Example: type=way&way_shape=polygon&tags=building. |
limit | 100000 | Maximum features to return. Omitted is the plan max_limit. A lower limit truncates. A match set larger than max_limit is HTTP 400 result_too_large. |
osm_ids | 111,222,333 | Direct ID lookup. Mutually exclusive with bbox, location, and tag filters. |
Optional size filters (min_area_m2, max_area_m2, min_length_m, max_length_m) and zoom are on this playground under Advanced options. The PostGIS tables behind these params are on the schema page. Full encodings and live try-it are in the OpenAPI docs.
How It Works
GET /v3/osm_features returns a GeoJSON FeatureCollection for a bounding box or a location plus radius. Filter with OSM tags. Preset buttons fill those params so you can see exactly what the query uses.
Loading source from GitHub...
Source: Python · TypeScript
Presets cover buildings, roads and paths, parks, food and dining, shops and commerce, public transport, leisure and sports, natural features, and waterways. Edit any field to retune the live query. MapLibre renders the resulting points, lines, and polygons on the basemap style you pick.
Use the API directly with your own key for production workloads. The full reference is available in the API docs.
More examples
Counts / tag histograms
City-scale mix and totals from GET /v2/osm_features/count.
Places API Playground
Live POI search and nearby (cafes, restaurants, pharmacies, ATMs, EV chargers, etc with opening hours).
Cycling Trail Finder
Use OR-combined tag filters to find bike-permitted paths and forestry tracks.
Walking Route Planner
Build Dijkstra-based walking directions on a real OSM footway network.
Restaurant Guide
Fetch restaurants with names, cuisine types, and map pins - handling both point and polygon geometries.