OpenStreetMap POI Bulk Extractor
OpenStreetMap POI Bulk Extractor
Pull every POI of a given type within a bounding box from OpenStreetMap via the public Overpass API. Maps to "give me every cafe / clinic / EV charger / pharmacy in this geographic area" briefs — common in local-listings, real-estate, field-sales, and competitive-density-analysis projects.
Built 2026-05-03 as Demo #16. Different brief class — geographic / location-intelligence, not e-commerce or content.
Run
. ~/freelance/.venv/bin/activate
cd ~/freelance/portfolio_demos/osm_poi_extractor
python extract.py # all targets in targets.json
python extract.py --target cafes_lower_manhattan # one target
Result (3 sample regions × 3 categories)
- 42 cafes · lower Manhattan ✅
- 2 EV charging stations · downtown SF ✅
- 10 pharmacies · central London ✅
- 54 POIs total with addresses, phones, websites, opening hours, wheelchair access ✅
- Auto-fallback to
overpass.kumi.systemsmirror if primary endpoint is throttled ✅ - 2-second politeness sleep between queries (Overpass is a free public service) ✅
Why Overpass beats paid alternatives
For breadth POI coverage in most countries, OpenStreetMap density rivals or exceeds SafeGraph / Foursquare API at $0/month. The trade-off is data freshness and proprietary metadata (e.g., visit counts) — but for use cases like "find every car wash in this metro" or "build a heatmap of cafe density," OSM via Overpass is the right tool.
Adding a new target
Add an entry to targets.json:
{
"name": "schools_berlin_mitte",
"bbox": [52.5100, 13.3800, 52.5400, 13.4100],
"tag_key": "amenity",
"tag_value": "school"
}
Tag keys/values follow OSM's wiki — amenity, shop, leisure, tourism, office, healthcare, etc.
Hire me to build this for your stack
Same patterns, your target site. Send the brief and I'll quote fixed-price within 24 hours.
info@luba.media