Supermarket & Grocery Scraper – OpenStreetMap Store Data
Pricing
from $3.00 / 1,000 results
Supermarket & Grocery Scraper – OpenStreetMap Store Data
Extract supermarkets, grocery & convenience stores from OpenStreetMap by area, radius, or name. Get brand, opening hours, organic, payment methods, wheelchair access and address. No API key; open (ODbL) data.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Daniel Brenner
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Extract supermarkets, grocery & convenience stores from OpenStreetMap by area, radius, or name — no API key, no anti-bot battles, no Terms-of-Service violations. Open, legal (ODbL) data you can redistribute.
Give it an area like "Berlin, Germany" and get back tidy rows for every supermarket, grocery and convenience store: name, brand (Edeka, Lidl, Rewe, Aldi, Netto, Penny, Kaufland …) and its Wikidata id, operator, opening hours, whether it's organic, accepted payment methods, wheelchair accessibility, full address, coordinates, and the raw OpenStreetMap tags. You can also search around a point (every store within X km of an address) or filter by name/brand (e.g. every "Aldi" or "Lidl").
Why use this scraper?
- Grocery-specific fields. Not just a generic POI dump — brand + brand Wikidata id, organic flag, accepted payment methods, opening hours and wheelchair access, all straight from OpenStreetMap.
- Legal & open. OpenStreetMap data is licensed under the ODbL — redistributable with attribution. No Terms-of-Service violation, no login, no scraping a retailer's site.
- No API key. No data-provider account, no per-call quota.
- Search by area, radius, or name/brand. A whole city/country, everything within X metres of a point, or every store of one brand.
- Pick the store types. Supermarkets, convenience stores, greengrocers — or any subset.
- No duplicates. When OpenStreetMap maps one store twice (a node and an area), you get a single, richer row.
- Honest data. Every value comes straight from OpenStreetMap; anything not mapped is left empty (
null) — never guessed or padded. - Global coverage & reliable. Anywhere OSM has data; retries across multiple Overpass mirrors.
Great for
- Retail location intelligence & store-network mapping
- Brand coverage & market-share analysis (Edeka vs. Rewe vs. Lidl vs. Aldi …)
- Site selection & catchment / competition analysis for new stores
- Local-commerce, delivery and "find a supermarket near me" apps
- Lead generation for FMCG / grocery suppliers, and AI/RAG pipelines
Input
| Field | Type | Description |
|---|---|---|
area | string | Place to search within, e.g. "Berlin, Germany". Geocoded to a bounding box. |
aroundLocation | string | (optional) Address/place to search around within a radius, e.g. "Alexanderplatz, Berlin". Pair with radiusMeters. |
radiusMeters | integer | (optional) Radius in metres for around-a-location search (default 5000). |
centerPoint | object | (advanced) Explicit center { "lat":.., "lon":.. } to search around. |
boundingBox | object | (advanced) Explicit { "south":.., "west":.., "north":.., "east":.. }. Overrides area. |
storeTypes | array | (optional) Which store types to include — any of supermarket, convenience, greengrocer. Default: all of them. |
searchTerm | string | (optional) Only return stores whose name contains this text (case-insensitive), e.g. "Aldi". |
maxResults | integer | Maximum number of stores to return (default 1000). |
Example input
{"area": "Berlin, Germany","storeTypes": ["supermarket", "convenience"],"maxResults": 500}
Every Lidl within 10 km of a point:
{"aroundLocation": "Alexanderplatz, Berlin","radiusMeters": 10000,"searchTerm": "Lidl"}
Output
One row per store:
| Field | Description |
|---|---|
name | Store name |
brand, brand_wikidata, operator | Brand, its Wikidata id, and who operates the store |
branch | Branch / location name of a chain outlet (OSM branch), e.g. Times Square — disambiguates multiple outlets of one chain; null when not tagged |
brand_logo | Official brand logo image URL, from the brand's Wikidata entity (P154) when it has one; null otherwise (optional enrichment — never guessed) |
shop | OSM store type: supermarket, convenience, or greengrocer |
opening_hours | Opening hours (OSM syntax) |
organic | Organic offering when tagged (yes / only / no) |
wheelchair | Wheelchair accessibility (yes/no/limited) when tagged |
payment_methods | Array of accepted payment methods, e.g. ["cash","visa","mastercard"] |
latitude, longitude | Coordinates |
street, housenumber, city, postcode, country | Address |
state | State / province (addr:state / addr:province) — common in US/CA/AU, null where not tagged |
phone, website | Contact |
osm_id, osm_type, all_tags, source_url | OpenStreetMap identifiers, raw tags, and link |
full_address | All present address parts in one string (e.g. Main St 1, 10115 Berlin) |
map_url | Google Maps link to the coordinates |
Example output
{"name": "Edeka","brand": "Edeka","brand_wikidata": "Q701755","operator": "Edeka Müller","shop": "supermarket","opening_hours": "Mo-Sa 08:00-22:00","organic": "only","wheelchair": "yes","payment_methods": ["cash", "visa", "mastercard"],"city": "Berlin","street": "Beusselstraße","housenumber": "55","postcode": "10553","country": "DE","latitude": 52.5301,"longitude": 13.3217,"osm_type": "node","source_url": "https://www.openstreetmap.org/node/..."}
Any field is null (or an empty array) when the store hasn't tagged it in OpenStreetMap — values are never guessed.
FAQ
Do I need an API key or account? No — give it an area (plus optional radius/name/brand 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 delivery-app (Glovo/iFood) or 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. You get store locations and attributes (brand, organic, payment, hours) across all chains — not one retailer's catalogue.
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, licensed under the Open Database License (ODbL). If you publish or redistribute results, attribute "© OpenStreetMap contributors".
Notes
- Coverage and tag richness vary by region — OSM is community-mapped, so dense, well-surveyed areas (e.g. much of Europe) are richer. Brand, opening-hours and wheelchair tagging is especially strong in Germany, the UK, and the Netherlands.
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):
- OpenStreetMap Places Scraper — POI & local business, 115+ categories
- EV Charging Stations Scraper — socket types, power (kW), networks
- Hotels & Lodging Scraper — stars, rooms, brands
- Healthcare Facilities Scraper — pharmacies, doctors, dentists, clinics
- Tourist Attractions & Museums Scraper — Wikidata & Wikipedia links
- Fuel Station Scraper — fuel types, brands, payment methods
- Supermarket & Grocery Scraper — brands, organic, payment methods