OpenStreetMap POI Extractor (Overpass API: shops, amenities) avatar

OpenStreetMap POI Extractor (Overpass API: shops, amenities)

Pricing

from $0.30 / 1,000 places

Go to Apify Store
OpenStreetMap POI Extractor (Overpass API: shops, amenities)

OpenStreetMap POI Extractor (Overpass API: shops, amenities)

OpenStreetMap POI Extractor returns shops, cafes, restaurants and any tagged place within a radius, a bounding box, or a named area — one row per point of interest, powered by the free Overpass API.

Pricing

from $0.30 / 1,000 places

Rating

0.0

(0)

Developer

Murat Uzun

Murat Uzun

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

2 days ago

Last modified

Share

What is OpenStreetMap POI Extractor?

OpenStreetMap POI Extractor is an Apify Actor that finds shops, cafes, restaurants and any other tagged place on OpenStreetMap and returns one clean row per point of interest (POI). Search by radius around a coordinate, by a bounding box, or by a named area (a city, district or country resolved automatically via Nominatim). Every lookup runs through the free, community-run Overpass API — no API key, no proxy, no headless browser. Each row carries the name, category, coordinates, address, phone, website, opening hours and any other OSM tag the place carries.

What data does OpenStreetMap POI Extractor extract?

FieldTypeDescription
osmType, osmId, osmUrlstring, integer, stringThe OSM element (node/way/relation) and a permalink to openstreetmap.org
name, categorystringThe place name and which requested key=value tag it matched, e.g. amenity=cafe
lat, lonnumberCoordinates — node position, or the computed center for a way/relation
address, street, houseNumber, postcode, city, countrystringAddress fields joined from addr:* tags
phone, email, websitestringContact details from phone/contact:phone, email/contact:email, website/contact:website
openingHours, cuisine, brand, wheelchairstringopening_hours, cuisine, brand and wheelchair tags
tagsobjectEvery other OSM tag on the element, so nothing unusual is silently dropped
query, scrapedAt, errorstringA summary of the search that produced the row, the run timestamp, and an error message on failure

How to use OpenStreetMap POI Extractor

  1. Pick a Search mode: radius (default — a point plus a distance in meters), bbox (a south,west,north,east box), or area (a free-text place name such as "Prague, Czechia" or "Brooklyn, New York").
  2. Fill in the fields for that mode — coordinates and radius, or the bbox string, or the area name.
  3. List the OSM categories to search, each as key=value, e.g. amenity=cafe, shop=supermarket, tourism=hotel. Look up tag values on the OpenStreetMap Wiki if you're not sure which one to use.
  4. Click Start. Results stream into the dataset; export as JSON, CSV, Excel or HTML.

Example input

{
"mode": "radius",
"latitude": 50.0755,
"longitude": 14.4378,
"radiusMeters": 1000,
"categories": ["amenity=cafe", "amenity=restaurant"],
"maxResults": 500
}

Example output

{
"osmType": "node",
"osmId": 296508369,
"osmUrl": "https://www.openstreetmap.org/node/296508369",
"name": "Prosekárna",
"category": "amenity=cafe",
"lat": 50.0761663,
"lon": 14.445271,
"address": "Slezská 1345/48, 12000",
"phone": null,
"website": "https://www.prosekarna.cz/",
"openingHours": "Mo-Su 10:00-22:00",
"wheelchair": null,
"query": "radius:1000m around 50.0755,14.4378 [amenity=cafe, amenity=restaurant]",
"scrapedAt": "2026-09-12T23:33:30.236Z",
"error": null
}

Input parameters

ParameterTypeDefaultDescription
modestringradiusradius, bbox or area
latitude, longitudenumber50.0755, 14.4378Center point for radius mode (defaults to Prague)
radiusMetersinteger1000Search radius in meters (max 20000)
bboxstring50.05,14.35,50.13,14.55south,west,north,east for bbox mode
areaNamestringPrague, CzechiaPlace name for area mode, resolved via Nominatim
categoriesarray["amenity=cafe","amenity=restaurant"]OSM key=value tags to search for
maxResultsinteger100Cap on rows returned (max 20000)
overpassEndpointstringhttps://overpass-api.de/api/interpreterPrimary Overpass endpoint; falls back to overpass.kumi.systems on 429/504

Pricing

OpenStreetMap POI Extractor uses pay-per-event pricing: $0.0005 per POI result, i.e. $0.50 per 1,000 rows, plus a negligible actor-start fee. A typical 1 km-radius cafe search in a city center costs a fraction of a cent. Set Maximum cost per run and the Actor trims maxResults to fit your budget automatically.

OpenStreetMap POI Extractor vs. Google Places API

Google Places charges per request and requires a billing-enabled API key with usage caps. OpenStreetMap POI Extractor reads the same category of data — business names, categories, addresses, phone numbers, websites — for free public map data, with no key and no quota to manage, at a fraction of the cost. Coverage varies by region (OSM is strongest in Europe and community-mapped cities) and some listings lack phone/website tags that a commercial directory would have — trade the completeness of a paid API for zero cost and no rate-limit headaches on moderate volumes.

Using OpenStreetMap POI Extractor with AI agents and MCP

OpenStreetMap POI Extractor is pay-per-event with limited permissions — the two requirements for an Actor to be callable through the Apify MCP server at mcp.apify.com. An agent passes a mode, a location and a category list, and gets back structured POI rows ready for a lead list, a travel itinerary, or a market-coverage map. The same run works from n8n, Make, Zapier and LangChain through Apify's integrations.

FAQ

Do I need an API key? No. Overpass and Nominatim are both free public OpenStreetMap services.

What is the OSM/ODbL attribution requirement? OpenStreetMap data is licensed under the Open Database License (ODbL). If you publish or redistribute this data, you must credit "© OpenStreetMap contributors" and note that the data is available under the ODbL — the same requirement Overpass itself states in every response.

Is there a fair-use limit? Yes. The public Overpass API instances (overpass-api.de and the kumi.systems mirror this Actor falls back to) are volunteer-run and ask that clients query gently — this Actor paces requests at roughly one every 2 seconds and never runs multiple Overpass requests in parallel. Very large areas or categories can still return a 429 (rate limited) or 504 (server too busy); the Actor automatically retries on the fallback endpoint and reports whichever error message Overpass returned if both fail.

Why did I get one row with an error and nothing else? That happens when the search itself could not run — an unresolvable areaName, a malformed bbox, or both Overpass endpoints failing — so you still get exactly one row explaining what went wrong instead of a silently empty dataset.

Why is city or phone empty for some POIs? OSM tagging is contributed by volunteers and coverage is uneven — a POI only has the tags someone added. Missing fields are not a bug in this Actor.

Can I search for something other than cafes or restaurants? Yes — any key=value OSM tag works in OSM categories, e.g. shop=bakery, leisure=fitness_centre, tourism=hotel, amenity=pharmacy.

Part of the webdatatools web-intelligence suite — every Actor is pay-per-event, reads public data without a login, and returns one clean row per entity:

Browse the whole suite at webdatatools, or call ten of these Actors straight from Claude, Cursor or Cline with the webdatatools MCP server.

Website & domain intelligence

Content for AI, LLMs and RAG

Search, video and social

Leads, jobs and company data

Developer, app and research data

Support and feedback

Found a tag mapping worth adding, or a region where results look wrong? Open an issue on the Issues tab.