Mercatus Grocery Store Locator Scraper
Pricing
from $10.00 / 1,000 results
Mercatus Grocery Store Locator Scraper
Extract store locations - addresses, phone numbers, hours, and GPS coordinates — from grocery banners built on the Mercatus e-commerce platform, including Brookshire's, Super 1 Foods, Fresh by Brookshire's, and Smart & Final.
Pricing
from $10.00 / 1,000 results
Rating
0.0
(0)
Developer
Rafael Marcano
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
6 days ago
Last modified
Categories
Share
Extract complete store location data — addresses, phone numbers, opening hours, geo-coordinates, and more — from any grocery banner built on the Mercatus storefront platform, across one or many domains in a single run. No browser rendering needed, so runs are fast and lightweight.
Confirmed working banners include:
- Brookshire's (
brookshires.com) - Super 1 Foods (
super1foods.com) - Fresh by Brookshire's (
freshbybrookshires.com) - Smart & Final (
smartandfinal.com)
Any other Mercatus-powered retailer can be added by simply supplying its domain — no code changes required.
- 🏬 Pulls every store listed in each banner's store locator
- 🏷️ Tags every record with its source
bannerso multi-domain output stays easy to filter - 📍 Includes precise latitude/longitude for mapping and geo analysis
- ⚡ Uses the JSON API directly via Crawlee's
HttpCrawler— no headless browser, minimal compute usage - 🔁 Automatically paginates through the full result set for every domain, no manual configuration required
- 📦 Outputs clean, ready-to-use JSON/CSV via the Actor's default dataset
What data does it extract?
| Field | Description |
|---|---|
🏪 banner | Root domain the record came from (e.g. brookshires.com) |
🆔 id | Internal store UUID |
🏷️ name | Store name (e.g. "Mineral Wells #118") |
🔢 retailerStoreId | Store number used internally by the banner |
📫 addressLine1/2/3 | Street address |
🏙️ city, countyProvinceState, postCode, country | Location details |
☎️ phone, email | Store contact info |
🕒 openingHours | Human-readable store hours |
🌐 timeZone | Store's local time zone |
📍 location.latitude / location.longitude | Geo-coordinates |
🛒 shoppingModes | Supported modes, e.g. Pickup, Planning |
🚦 status, type | Store status (e.g. Active) and store type (e.g. Regular) |
🗣️ languages | Supported storefront languages |
Input
Only domains is required — everything else has a sensible default.
| Field | Type | Default | Description |
|---|---|---|---|
domains | Array of strings | ["brookshires.com", "super1foods.com", "freshbybrookshires.com", "smartandfinal.com"] | Root domains to scrape. Each must belong to a retailer running the Mercatus e-commerce platform |
pageSize | Integer | 30 | Number of stores requested per page |
Example input:
{"domains": ["brookshires.com", "smartandfinal.com"],"pageSize": 30}
Output
Each item in the dataset is one store record, straight from that banner's storefront platform, with a banner field added to identify its source:
{"banner": "brookshires.com","id": "2e52ef60-c2d5-45d6-82b8-f28dcd2e3d9e","status": "Active","type": "Regular","name": "Mineral Wells #118","addressLine1": "100 SE 17th Ave","addressLine2": null,"addressLine3": null,"countyProvinceState": "TX","postCode": "76067","city": "Mineral Wells","country": "United States of America (the)","email": "storemgmt118@brookshires.com","phone": "(940) 325-9549","retailerStoreId": "118","timeZone": "America/Chicago","currency": "USD","openingHours": "Daily: 7 AM - 9 PM","location": {"latitude": 32.80875,"longitude": -98.097628},"languages": [{ "isoCode": "en-US", "isDefault": true }],"siteId": "5c049bcd-b690-4f3d-92d1-7ebc35e8f7a3","urls": [],"categoryHierarchyId": "cdb4ba70-33cf-4288-ad9f-2131b40ce818","shoppingModes": ["Pickup", "Planning"]}
Results can be downloaded from the Actor run's Dataset tab in JSON, CSV, Excel, XML, or HTML table format.
How it works
- For every domain in
domains, the Actor queries that banner's storefront platform and determines the total number of stores available. - It then retrieves the remaining pages of results for that domain, independently of the other domains, fetching them concurrently.
- Each result is tagged with its source
bannerand pushed straight to the Actor's dataset — no other transformation, so the data stays as close to the source as possible.
FAQ
Does this need an account or API key for any banner? No. The data comes from the same public service each banner's own store locator page uses in the browser — no login or key required.
How do I add a new banner?
Add its root domain to the domains input array, e.g. "staterbros.com". If that retailer runs on the Mercatus platform, it'll work with no other changes. If a domain doesn't resolve or returns an error, that banner likely isn't on Mercatus.
Why no browser/Playwright? The data is retrieved through a lightweight JSON request rather than a full page render, so a lightweight HTTP crawler is faster and cheaper than driving a headless browser.
One failed domain — does the whole run fail? No. Each domain's requests are independent; a failure on one banner is logged and the others still complete normally.
Input schema
See .actor/input_schema.json for the full input schema definition used by the Apify Console UI.