Mercatus Grocery Store Locator Scraper avatar

Mercatus Grocery Store Locator Scraper

Pricing

from $10.00 / 1,000 results

Go to Apify Store
Mercatus Grocery Store Locator Scraper

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

Rafael Marcano

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

6 days ago

Last modified

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:

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 banner so 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?

FieldDescription
🏪 bannerRoot domain the record came from (e.g. brookshires.com)
🆔 idInternal store UUID
🏷️ nameStore name (e.g. "Mineral Wells #118")
🔢 retailerStoreIdStore number used internally by the banner
📫 addressLine1/2/3Street address
🏙️ city, countyProvinceState, postCode, countryLocation details
☎️ phone, emailStore contact info
🕒 openingHoursHuman-readable store hours
🌐 timeZoneStore's local time zone
📍 location.latitude / location.longitudeGeo-coordinates
🛒 shoppingModesSupported modes, e.g. Pickup, Planning
🚦 status, typeStore status (e.g. Active) and store type (e.g. Regular)
🗣️ languagesSupported storefront languages

Input

Only domains is required — everything else has a sensible default.

FieldTypeDefaultDescription
domainsArray 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
pageSizeInteger30Number 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

  1. For every domain in domains, the Actor queries that banner's storefront platform and determines the total number of stores available.
  2. It then retrieves the remaining pages of results for that domain, independently of the other domains, fetching them concurrently.
  3. Each result is tagged with its source banner and 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.