Extract public OpenStreetMap points of interest by area, category, and optional name keyword.
Use this Actor for local business lists, POI mapping, site-selection research, neighborhood amenity checks, travel datasets, and geospatial enrichment workflows.
At a glance
- Best for: local POI exports, lead generation, market mapping, real-estate research, logistics planning, and public geospatial datasets.
- Inputs: bounding box or place name, amenity/shop/tourism tags, optional name keyword, raw tag toggle, and maximum POIs.
- Outputs: one OpenStreetMap object per row with name, category, coordinates, address, phone, website, opening hours, brand/operator, accessibility, and source URL when available.
- Exports: download CSV, JSON, Excel, XML, RSS, or use the Apify Dataset API.
- Cost:
$0.005per run plus theitemevent for each saved POI row.
Input recipes
Use these concrete input patterns when starting a new run:
- Cafes in SoHo:
{"placeName":"SoHo, New York, USA","amenityTags":["cafe"],"maxItems":25} - Hotels near a district:
{"bbox":"40.720,-74.005,40.730,-73.995","tourismTags":["hotel"],"maxItems":20} - Supermarkets by bounding box:
{"bbox":"51.500,-0.130,51.510,-0.110","shopTags":["supermarket"],"maxItems":50} - Accessible restaurants with raw tags:
{"placeName":"Mitte, Berlin, Germany","amenityTags":["restaurant"],"includeRawTags":true,"maxItems":30}
What can it do?
OpenStreetMap POI Extractor turns public OpenStreetMap places into a clean dataset.
- Extract bounded OpenStreetMap POIs: provide a small bounding box or place name and collect matching public OSM objects.
- Filter by OSM categories: use amenity, shop, and tourism tags such as
cafe,restaurant,supermarket,hotel, ormuseum. - Collect contact and location fields: save names, coordinates, category tags, address fields, phone, website, opening hours, and source URLs when available.
- Inspect advanced tags: enable
includeRawTagswhen you need full OSM tag metadata for GIS or enrichment workflows. - Use as an OSM data API workflow: run through Apify API, export CSV/Excel/JSON, schedule repeat extracts, or connect AI agents through Apify MCP.
Who is it for?
- Local lead generation teams: build public prospect lists by area and category.
- Site-selection teams: compare neighborhood amenities.
- Logistics teams: map nearby services and pickup points.
- Real-estate analysts: research local surroundings and nearby services.
- Market researchers: compare category density by area.
- Travel and mobility teams: enrich maps with public POIs.
Why use this actor?
OpenStreetMap is a strong alternative when you need public geographic data without scraping search engines or map apps.
This actor is designed for repeatable, bounded extraction jobs that produce structured rows you can export to CSV, Excel, JSON, Google Sheets, or an API pipeline.
How to use it
- Choose a small area.
- Enter either a
bbox(south,west,north,east) or aplaceName. - Add one or more OSM tag values under amenity, shop, or tourism.
- Optionally add a name keyword filter.
- Set
maxItems. - Run the actor.
- Export the dataset or connect it to your workflow.
Example input
{
"bbox": "40.720,-74.005,40.730,-73.995",
"amenityTags": ["cafe", "restaurant"],
"shopTags": [],
"tourismTags": [],
"maxItems": 50,
"includeRawTags": false
}
Example output
{
"osmId": 123456789,
"osmType": "node",
"name": "Example Cafe",
"categoryKey": "amenity",
"categoryValue": "cafe",
"lat": 40.7251,
"lon": -74.0001,
"address": "10 Example Street, New York 10001, US",
"city": "New York",
"postcode": "10001",
"country": "US",
"phone": "+1 555 0100",
"website": "https://example.com",
"openingHours": "Mo-Fr 08:00-18:00",
"brand": null,
"operator": null,
"wheelchair": "yes",
"sourceUrl": "https://www.openstreetmap.org/node/123456789"
}
Tips for better results
- Start with one or two categories: confirm the tag values before adding a broader list.
- Use a small area first: neighborhood-level runs are more reliable than city-wide exports.
- Use exact OSM tag values:
cafe,restaurant, andsupermarketwork better than free-form category names. - Increase
maxItemsgradually: scale only after confirming the output shape. - Enable raw tags only when needed:
includeRawTagsis useful for GIS workflows but makes rows heavier.
Common workflows
- Local lead lists: extract cafes, restaurants, shops, or pharmacies in a target neighborhood.
- Real-estate enrichment: measure nearby services around a building, parcel, or rental area.
- Market mapping: compare the number and density of similar places across areas.
- Logistics research: find service points, fuel stations, convenience stores, or nearby amenities.
Integrations
Use the dataset with:
- Google Sheets exports
- CSV and Excel workflows
- CRM enrichment pipelines
- BI dashboards
- Geospatial tools
- Apify API automations
- Webhooks after run completion
API usage with Node.js
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/openstreetmap-poi-extractor').call({
bbox: '40.720,-74.005,40.730,-73.995',
amenityTags: ['cafe'],
maxItems: 25
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
API usage with Python
from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/openstreetmap-poi-extractor').call(run_input={
'bbox': '40.720,-74.005,40.730,-73.995',
'amenityTags': ['cafe'],
'maxItems': 25,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
API usage with cURL
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~openstreetmap-poi-extractor/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"bbox": "40.720,-74.005,40.730,-73.995",
"amenityTags": ["cafe"],
"maxItems": 25
}'
MCP and AI agents
Connect this Actor to AI tools through the official Apify MCP server. The default server can search and run Actors; the focused URL exposes only this Actor.
MCP URL:
https://mcp.apify.com?tools=fetch_cat/openstreetmap-poi-extractor
Claude Code example:
claude mcp add --transport http apify-osm-pois "https://mcp.apify.com?tools=fetch_cat/openstreetmap-poi-extractor"
Claude Desktop example:
{
"mcpServers": {
"apify-osm-pois": {
"url": "https://mcp.apify.com?tools=fetch_cat/openstreetmap-poi-extractor"
}
}
}
Example prompts:
- "Find cafes in this bounding box and return a CSV-ready table."
- "Extract hotels around this district and summarize addresses and websites."
- "Compare supermarkets in two neighborhoods using separate actor runs."
Limits and fair use
OpenStreetMap and Overpass are community resources.
This actor intentionally enforces conservative limits:
- Small bounding boxes only
- Maximum 1,000 saved POIs per run
- Short public API timeouts
- Limited retries
If you need very large OSM extracts, use official planet/regional extracts or your own Overpass infrastructure.
Legality and attribution
This actor extracts public OpenStreetMap data.
OpenStreetMap data is available under the Open Database License (ODbL). You are responsible for complying with OSM attribution and share-alike requirements for your use case.
A practical attribution line is:
OpenStreetMap contributors
Review the OpenStreetMap copyright and license pages before redistributing derived databases.
Troubleshooting
Why did my run fail with a large bounding box?
The actor rejects large areas to protect public API resources and avoid expensive runs.
Use a smaller neighborhood-level bounding box or split the area into several runs.
Why are some fields empty?
OpenStreetMap is community-contributed data. Some POIs have complete address and contact tags; others only have names and coordinates.
Enable includeRawTags to inspect all available tags.
Why did I get fewer items than maxItems?
The selected area and categories may contain fewer matching POIs than your requested maximum.
Try a broader category or a nearby area.
Support
If a run fails, returns no data, or a field looks wrong, open an issue from the Actor page.
Please include the Apify run ID or run URL, input JSON, one example public URL, query, or input item, what you expected, and what the dataset returned. Small reproducible inputs make parsing or site-layout issues much faster to fix.