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
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days 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
