OpenStreetMap Business & POI Scraper avatar

OpenStreetMap Business & POI Scraper

Pricing

from $1.50 / 1,000 results

Go to Apify Store
OpenStreetMap Business & POI Scraper

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

Logiover

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

2

Monthly active users

10 hours ago

Last modified

Share

🗺️ OpenStreetMap Business & POI Scraper — Scrape Businesses & Points of Interest, No API Key

OpenStreetMap Business & POI Scraper

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

FieldTypeDescription
searchModestringHow to define the search area: city, bbox, or radius.
citystringCity to search in. Used only when searchMode = city.
bboxSouthnumberSouthern boundary latitude. Used when searchMode = bbox.
bboxWestnumberWestern boundary longitude. Used when searchMode = bbox.
bboxNorthnumberNorthern boundary latitude. Used when searchMode = bbox.
bboxEastnumberEastern boundary longitude. Used when searchMode = bbox.
centerLatnumberCenter point latitude. Used when searchMode = radius.
centerLngnumberCenter point longitude. Used when searchMode = radius.
radiusMetersintegerSearch radius in meters (100–50,000). Used when searchMode = radius.
categoriesarrayWhich types of POIs to search for (e.g., "restaurant", "cafe", "hotel").
requireNamebooleanOnly return POIs that have a name tag in OSM.
requireAddressbooleanSkip POIs that have no street or city address.
maxResultsintegerMaximum number of POIs to return. Set to 0 for unlimited.
queryConcurrencyintegerHow 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.

FieldDescription
osmIdOpenStreetMap element ID
osmTypeElement type: node, way, or relation
nameBusiness / POI name
categoryTop-level category (e.g., Food & Drink)
subcategoryOSM tag value (e.g., cafe)
amenityRaw OSM amenity tag
shopRaw OSM shop tag
tourismRaw OSM tourism tag
officeRaw OSM office tag
latGPS latitude
lngGPS longitude
streetStreet name
houseNumberHouse number
cityCity
postcodePostal code
countryCountry code
fullAddressFormatted full address
phonePhone number
websiteWebsite URL
emailContact email
openingHoursOSM opening hours string
brandBrand name for chains
operatorOperator or owner
cuisineCuisine type
wheelchairWheelchair access (yes / no / limited)
wikipediaWikipedia reference
wikidataWikidata reference
osmUrlLink to the OSM element
scrapedAtScrape 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.