OpenStreetMap Business & POI Scraper
Pricing
from $1.50 / 1,000 results
OpenStreetMap Business & POI Scraper
Scrape businesses and points of interest from OpenStreetMap via Overpass API. Extract name, address, phone, website, opening hours and GPS coordinates for any city worldwide. Free alternative to Google Maps API. No API key needed.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Logiover
Maintained by CommunityActor stats
0
Bookmarked
7
Total users
2
Monthly active users
10 hours ago
Last modified
Categories
Share
🗺️ OpenStreetMap Business & POI Scraper — Scrape Businesses & Points of Interest, No API Key

Scrape businesses and points of interest from OpenStreetMap using the free Overpass API. This OpenStreetMap scraper extracts business name, full address, phone number, website, email, opening hours, GPS coordinates and category for any city, bounding box or radius in the world. No API key, no Google Maps billing, no proxy and no browser — just clean, structured POI data from the world's most comprehensive open geographic database, ready to export to JSON, CSV or Excel.
✨ What this Actor does / Key features
- 🌍 Global coverage — query businesses and POIs in 190+ countries from the live OpenStreetMap database.
- 📍 Three search modes — by city name, by bounding box (south/west/north/east), or by radius around a point.
- 🏷️ 50+ categories — restaurants, cafes, bars, hotels, pharmacies, hospitals, supermarkets, schools, salons, fuel stations and more.
- 📇 Rich contact data — name, full address, phone, website, email and machine-readable opening hours.
- 🧭 GPS coordinates — latitude/longitude plus OSM element ID, type and direct OSM link for every POI.
- 🏢 Chain & brand info — brand, operator, cuisine, wheelchair access, plus Wikipedia/Wikidata references.
- 🎚️ Quality filters — require a name tag and/or require a street/city address to drop incomplete records.
- ⚡ No browser, no proxy — direct HTTP POST to Overpass with multiple fallback endpoints for reliability.
- 💸 Free data source — a low-cost alternative to the paid Google Maps / Places API.
🔍 Input
| Field | Type | Description |
|---|---|---|
searchMode | string | How to define the search area: city, bbox, or radius. |
city | string | City to search in. Used only when searchMode = city. |
bboxSouth | number | Southern boundary latitude. Used when searchMode = bbox. |
bboxWest | number | Western boundary longitude. Used when searchMode = bbox. |
bboxNorth | number | Northern boundary latitude. Used when searchMode = bbox. |
bboxEast | number | Eastern boundary longitude. Used when searchMode = bbox. |
centerLat | number | Center point latitude. Used when searchMode = radius. |
centerLng | number | Center point longitude. Used when searchMode = radius. |
radiusMeters | integer | Search radius in meters (100–50,000). Used when searchMode = radius. |
categories | array | Which types of POIs to search for (e.g., "restaurant", "cafe", "hotel"). |
requireName | boolean | Only return POIs that have a name tag in OSM. |
requireAddress | boolean | Skip POIs that have no street or city address. |
maxResults | integer | Maximum number of POIs to return. Set to 0 for unlimited. |
queryConcurrency | integer | How many Overpass API batches to run in parallel. Keep low (2–3) to avoid rate limiting. |
🚀 Example input
{"searchMode": "city","city": "Istanbul","categories": ["restaurant", "cafe", "hotel"],"requireName": true,"requireAddress": false,"maxResults": 500,"queryConcurrency": 3}
📦 Output
Each POI is saved as a structured item in the dataset. Export to JSON, CSV, Excel or XML, or pull via the Apify API.
| Field | Description |
|---|---|
osmId | OpenStreetMap element ID |
osmType | Element type: node, way, or relation |
name | Business / POI name |
category | Top-level category (e.g., Food & Drink) |
subcategory | OSM tag value (e.g., cafe) |
amenity | Raw OSM amenity tag |
shop | Raw OSM shop tag |
tourism | Raw OSM tourism tag |
office | Raw OSM office tag |
lat | GPS latitude |
lng | GPS longitude |
street | Street name |
houseNumber | House number |
city | City |
postcode | Postal code |
country | Country code |
fullAddress | Formatted full address |
phone | Phone number |
website | Website URL |
email | Contact email |
openingHours | OSM opening hours string |
brand | Brand name for chains |
operator | Operator or owner |
cuisine | Cuisine type |
wheelchair | Wheelchair access (yes / no / limited) |
wikipedia | Wikipedia reference |
wikidata | Wikidata reference |
osmUrl | Link to the OSM element |
scrapedAt | Scrape timestamp (ISO 8601) |
💡 Use cases
- Lead generation — build targeted business lists (restaurants, hotels, clinics, salons) with phone numbers and websites for sales outreach.
- Google Maps API alternative — get comparable geographic data for free when Maps API costs or quotas become a problem.
- Local directory sites — seed neighbourhood guides and city portals with real addresses, hours and categories.
- GIS & research — download structured POI data for spatial analysis, catchment modelling and urban planning; load directly into QGIS, PostGIS or Python.
- Real estate & site selection — find pharmacies, supermarkets and schools within a radius of a prospective site for amenity scoring.
- Market research — count businesses per neighbourhood, map competitor density and spot underserved areas.
❓ Frequently Asked Questions
Is it legal to scrape OpenStreetMap data? Yes. OpenStreetMap data is open and released under the Open Database License (ODbL). The Actor uses the public Overpass API. When you publish work using the data, attribution to "© OpenStreetMap contributors" is required.
Do I need an API key or a login? No. There is no API key, no Google Maps billing and no proxy required. You only need an Apify account to run the Actor.
How does this compare to the Google Maps API? The Google Maps / Places API charges per request and enforces quotas. The Overpass API is free with generous rate limits, and OpenStreetMap often has stronger coverage in Europe plus machine-readable opening hours that Google doesn't expose.
How up to date is the data? The Overpass API serves the live OpenStreetMap database, which is updated every few minutes. New businesses added to OSM appear in results almost immediately.
Why are some POIs missing phone numbers or websites?
OSM completeness varies — major chains are usually well-tagged, while small independent businesses may have only a name and coordinates. Enable requireAddress to filter out incomplete records.
Can I scrape an entire city or country?
Yes. Use city mode for a whole city, or bbox mode with a country's bounding box. Very large queries can time out on the public Overpass API, so the Actor automatically retries on fallback endpoints.
What does the opening hours format mean?
OpenStreetMap uses a standardised format like Mo-Fr 09:00-18:00; Sa 10:00-14:00. Libraries such as opening_hours.js can parse it into human-readable schedules or check if a place is open at a given time.
⏰ Scheduling & integration
Schedule this Actor on Apify to keep your POI datasets fresh on any cadence. Export results to JSON, CSV or Excel, sync to Google Sheets, or push to your database, GIS tools and webhooks through the Apify API.