VOOZH about

URL: https://apify.com/dataquarry/osm-places-scraper

⇱ OpenStreetMap Places Scraper – Points of Interest & POI Data Β· Apify


πŸ‘ OpenStreetMap Places Scraper – Points of Interest & POI Data avatar

OpenStreetMap Places Scraper – Points of Interest & POI Data

Pricing

from $3.00 / 1,000 results

Go to Apify Store

OpenStreetMap Places Scraper – Points of Interest & POI Data

Extract clean points of interest (POI) & local business data from OpenStreetMap by area and category. No Overpass QL, no API key; data is open (ODbL) and legally redistributable.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

πŸ‘ Daniel Brenner

Daniel Brenner

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

0

Monthly active users

2 days ago

Last modified

Share

Extract clean, structured points of interest (POI) and local business data from OpenStreetMap by area and category β€” no Overpass query language, no API key, no anti-bot battles. A legal, open-data alternative to Google Maps scrapers.

Give it an area like "Berlin, Germany" and categories like ["restaurant", "cafe"], and get back tidy rows: name, brand, address, coordinates, phone, email, website, opening hours, cuisine, and the full OpenStreetMap tag set. You can also search by name (find every "Starbucks" or all "Aldi" supermarkets in a city) or search around a point (every cafΓ© within 800 m of a hotel).

Why use this scraper?

  • Legal & open. OpenStreetMap data is licensed under the ODbL β€” you can redistribute it (with attribution). No Terms-of-Service violations and no scraping behind logins.
  • No API key, no setup. Just give it an area and the categories you want.
  • Global coverage. Anywhere OpenStreetMap has data β€” worldwide.
  • Search by area, radius, or name. A whole city/region, everything within X metres of a point, or every location of a brand.
  • Clean, flat output. Ready for CSV / Excel / JSON, plus the raw OSM tags when you need more detail.
  • No Overpass QL required. It builds and runs the query for you.
  • No duplicates. When OpenStreetMap maps one place twice (a node and a building outline), you get a single, richer row β€” not two.
  • Honest data. Every value comes straight from OpenStreetMap; a field that isn't mapped is left empty (null) β€” never guessed or padded.
  • Reliable. Automatically retries across multiple Overpass mirrors to handle transient timeouts.

What you can extract

115+ place categories across food & drink, retail shops, hotels & lodging, health & beauty, finance, automotive (including EV charging stations), education, public services, leisure, tourism & attractions, professional offices, and trades β€” restaurants, cafΓ©s, bars, hotels, supermarkets, pharmacies, dentists, banks, fuel stations, museums, real-estate agents and many more (full list below). Great for:

  • Points of interest (POI) / local business datasets for analysis, lead generation, or store-locator features
  • Market research, competitor mapping, and location intelligence
  • Real-estate, retail site selection, and territory planning
  • Feeding AI / RAG pipelines with structured place data
  • A clean, legal alternative to "Google Maps scraper" tools

Common uses

  • "Get every restaurant / cafΓ© / bar in a city" for a directory or delivery app
  • "List all dentists / doctors / pharmacies in a region" for healthcare outreach
  • "Export EV charging stations and fuel stations" for mobility products
  • "Find real-estate agents, lawyers, or accountants" for B2B lead lists
  • "Map hotels, museums, and attractions" for travel and tourism datasets

Input

FieldTypeDescription
areastringPlace to search within, e.g. "Berlin, Germany". Geocoded to a bounding box via Nominatim.
categoriesarrayPlace categories to extract, e.g. ["restaurant","cafe","hotel"].
searchTermstring(optional) Only return places whose name contains this text (case-insensitive), e.g. "Starbucks". Combine with categories to narrow (supermarkets named "Aldi"), or use alone to find a brand across all place types.
aroundLocationstring(optional) An address or place to search around within a radius, e.g. "Times Square, New York". Geocoded to a center point; pair with radiusMeters.
radiusMetersinteger(optional) Radius in meters for the around-a-location search (default 1000).
centerPointobject(advanced) Explicit center { "lat":.., "lon":.. } to search around. Overrides aroundLocation.
maxResultsintegerMaximum number of POIs to return (default 1000).
boundingBoxobject(advanced) Explicit { "south":.., "west":.., "north":.., "east":.. }. Overrides area when set.

Choosing a search area: use area for a whole city/region (bounding box), or aroundLocation + radiusMeters for everything within X meters of a point (e.g. "cafΓ©s within 1 km of a hotel"). boundingBox and centerPoint are explicit-coordinate alternatives.

Example input

{
"area":"Heidelberg, Germany",
"categories":["cafe","restaurant"],
"maxResults":200
}

To find every location of a brand, use searchTerm (with or without categories):

{
"area":"Berlin, Germany",
"categories":["supermarket"],
"searchTerm":"Aldi"
}

To find places within a radius of a point, use aroundLocation + radiusMeters:

{
"aroundLocation":"Times Square, New York",
"categories":["cafe","restaurant"],
"radiusMeters":800
}

Output

One row per place:

FieldDescription
namePlace name
categoryPrimary category (e.g. cafe, lawyer, charging_station)
brandBrand / chain name when tagged β€” useful for competitor & chain mapping
brand_wikidataWikidata id of the brand (e.g. Q38076) β€” a stable entity id for brand / market-share analysis
brand_logoOfficial brand logo image URL (from the brand's Wikidata entry) when one exists β€” handy for directories/UIs; null otherwise
latitude, longitudeCoordinates
street, housenumber, city, postcode, countryAddress parts (see Field coverage below for fallbacks)
phone, email, website, opening_hoursContact details and hours
cuisineCuisine type(s) for food places, e.g. italian;pizza
operatorWho operates the place (chains, councils, franchises)
wheelchairAccessibility: yes / no / limited
osm_id, osm_typeOpenStreetMap identifiers
all_tagsFull raw OpenStreetMap tag object
source_urlLink to the element on openstreetmap.org
full_addressAll present address parts in one string (e.g. Main St 1, 10115 Berlin) β€” convenient for CRM/mail-merge
map_urlGoogle Maps link to the coordinates

Example output

{
"name":"Cafe Frisch",
"category":"cafe",
"brand":null,
"latitude":49.4128139,
"longitude":8.678372,
"street":"Jahnstraße",
"housenumber":"34",
"city":"Heidelberg",
"postcode":"69120",
"phone":null,
"email":null,
"website":"https://www.cafe-frisch.de",
"opening_hours":"Mo-Fr 06:00-18:00; Sa 06:00-12:00; Su,PH 08:00-17:00",
"cuisine":"coffee_shop",
"operator":null,
"wheelchair":"yes",
"osm_id":305963168,
"osm_type":"node",
"source_url":"https://www.openstreetmap.org/node/305963168"
}

Any field is null when the place hasn't tagged it in OpenStreetMap. brand and email are populated for many chains and businesses (coverage varies by region) β€” and all_tags always carries every raw tag if you need more.

Field coverage

OpenStreetMap is community-mapped, so coverage varies by place and region. To maximise filled fields without ever inventing data, several fields fall back to alternate OSM tags on the same record:

  • street β†’ addr:street, else addr:place
  • housenumber β†’ addr:housenumber, else addr:housename
  • city β†’ addr:city, else addr:town / addr:village / addr:suburb / addr:municipality / addr:hamlet
  • postcode β†’ addr:postcode, else postal_code
  • website β†’ website, else contact:website / url / contact:url
  • phone β†’ phone, else contact:phone / contact:mobile
  • email β†’ email, else contact:email
  • country β†’ the place's own addr:country / addr:country_code when present; otherwise the country of the area you searched (an area / aroundLocation name resolved via Nominatim). Raw boundingBox / centerPoint searches don't fill it.
  • state β†’ addr:state, else addr:province (common in the US / Canada / Australia; null where not tagged)
  • branch β†’ a chain outlet's branch/location name (OSM branch), e.g. "Times Square" for a specific Starbucks; null when not a tagged branch

Every value comes straight from OpenStreetMap (or, for the country fallback, from the geocoded area you searched). Fields that aren't mapped stay null β€” this scraper never guesses or fabricates a value.

Supported categories

Pass any of these in categories (use the exact key). 115+ categories grouped by theme:

Food & drink: restaurant, cafe, bar, pub, fast_food, food_court, ice_cream, biergarten

Lodging: hotel, hostel, guest_house, motel, apartment, camp_site

Groceries & food shops: supermarket, convenience, bakery, butcher, greengrocer, deli, confectionery, beverages, alcohol, kiosk, marketplace

Retail: clothes, shoes, jewelry, books, stationery, gift, toys, furniture, electronics, computer, mobile_phone, hardware, doityourself, garden_centre, florist, sports, outdoor, bicycle, pet, optician, variety_store, department_store, mall, tobacco

Health & beauty: pharmacy, chemist, hospital, clinic, doctors, dentist, veterinary, beauty, cosmetics, hairdresser

Services: laundry, dry_cleaning, travel_agency

Finance: bank, atm, bureau_de_change

Automotive & transport: fuel, charging_station, parking, car, car_repair, car_parts, car_rental, car_wash, taxi, bicycle_rental

Education: school, university, college, kindergarten, library, driving_school, language_school

Public & civic: post_office, police, fire_station, townhall, courthouse, place_of_worship, community_centre

Leisure, sport & tourism: gym, sports_centre, swimming_pool, stadium, golf_course, park, playground, marina, cinema, theatre, nightclub, museum, gallery, attraction, theme_park, zoo, viewpoint

Offices (B2B): estate_agent, lawyer, accountant, insurance, architect, it, employment_agency, company, coworking

Trades: electrician, plumber, carpenter, painter

More OpenStreetMap categories can be added on request.

FAQ

Do I need an API key or account? No β€” give it an area (plus optional categories/filters) and run. No data-provider key, no quota, no setup.

Is the data legal to use and redistribute? Yes. It comes from OpenStreetMap under the Open Database License (ODbL): public data you can redistribute with attribution (Β© OpenStreetMap contributors). No logins, no Terms-of-Service violations.

How is this different from a Google Maps scraper? It uses open OpenStreetMap data instead of scraping a site behind anti-bot defenses and Terms of Service β€” so it's legal, needs no API key, and returns an honest null for anything OSM hasn't mapped instead of guessing.

How much does it cost? Pay-per-result: $3 per 1,000 results β€” you only pay for the rows you actually get.

Which countries does it cover? Worldwide β€” anywhere OpenStreetMap has data.

How fresh is the data? It's pulled live from OpenStreetMap at run time, so it reflects the current map.

Data source & license

Data comes from OpenStreetMap via the public Nominatim (geocoding) and Overpass (querying) APIs. OpenStreetMap data is Β© OpenStreetMap contributors and licensed under the Open Database License (ODbL). If you publish or redistribute results, please attribute "Β© OpenStreetMap contributors".

Notes

  • Coverage and detail vary by region β€” OpenStreetMap is community-mapped, so dense urban areas are richer than remote ones.
  • Larger areas + many categories return more results and take longer; use maxResults to cap output.

More OpenStreetMap data actors

Part of dataquarry's family of clean, ODbL OpenStreetMap extractors β€” same flexible area / radius / bounding-box / name search, same honest-null data (a field that isn't mapped is left empty, never guessed):

Prefer a hosted REST API to running an actor? The same OpenStreetMap place data is available as the OpenStreetMap Places API on RapidAPI β€” one GET request, JSON back, with a free tier to start.

You might also like

OpenStreetMap Places & POI Scraper

crawlerbros/openstreetmap-places-scraper

Scrape Points of Interest (POIs) and business listings from OpenStreetMap via the free Overpass API. Search by location, category, or keyword which returns name, address, coordinates, phone, website, opening hours, and OSM link. No API key required.

OpenStreetMap Scraper β€” Business & POI Data, No Key

logiover/openstreetmap-business-poi-scraper

OpenStreetMap POI scraper & Overpass API alternative. Export OSM business data (name, address, phone, website) to CSV/JSON without an API key.

OpenStreetMap POI Search

ryanclinton/osm-poi-search

Search and extract points of interest (POIs) near any location worldwide using OpenStreetMap data via the Overpass API. Find restaurants, cafes, banks, pharmacies, hotels, museums, and more within a configurable radius.

16

OpenStreetMap Business Search (Overpass)

crawlerbros/openstreetmap-business-search

Search for businesses, amenities, and points of interest from OpenStreetMap using the free Overpass API. Find restaurants, hotels, pharmacies, hospitals, and 20+ other amenity types near a location or in any city worldwide.

OpenStreetMap POI Extractor

automation-lab/openstreetmap-poi-extractor

Extract POIs from OpenStreetMap via Overpass API. Search by location + radius or bounding box. Filter by 20+ categories (restaurants, hotels, hospitals, parks, shops). Outputs name, coords, address, phone, website, opening hours. No API key needed.

πŸ‘ User avatar

Stas Persiianenko

27

OpenStreetMap Points of Interest Scraper

parseforge/overpass-osm-poi-scraper

Turn any city into a clean list of places from OpenStreetMap. Pick a place name or a coordinate with a radius, choose from 45 categories, and gather names, addresses, phones, websites, opening hours, and coordinates. Great for lead generation, competitor mapping, and location datasets.

OpenStreetMap POI Intelligence

benthepythondev/osm-poi-intelligence

Extract business listings and local leads from OpenStreetMap's global database. Get real estate agents, car dealers, restaurants, hotels, shops, gyms, banks, pharmacies, and 19+ business types with phone numbers, websites, addresses, and coordinates. Search any location worldwide by radius.