store-locator-monitor avatar

store-locator-monitor

Deprecated

Pricing

from $3.00 / 1,000 store location scrapeds

Go to Apify Store
store-locator-monitor

store-locator-monitor

Deprecated

Turn any chain's store locator into clean location data: names, addresses, phone numbers, coordinates, and opening hours. Runs daily checks for new openings, closures, and updates. Works with hundreds of Yext Pages locators, like Petco, Taco Bell, and Advance Auto Parts.

Pricing

from $3.00 / 1,000 store location scrapeds

Rating

0.0

(0)

Developer

Ben Purvis

Ben Purvis

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a month ago

Last modified

Categories

Security

Limited permissions

Share

Store Locator Monitor (Apify Actor)

Crawls a chain's Yext Pages store locator and outputs every location as normalized JSON — then diffs against the previous run and emits store.opening / store.closing / store.updated events.

What it extracts

FieldExample
idYext entity id (stable across runs)
namePetco
phone+15735146404
addressline1/line2, city, region, postalCode, country
latitude, longitudewhen the source exposes them
hoursfull open-interval JSON per weekday
sourceUrlthe locator URL crawled

Sample input

{
"locatorUrls": ["https://stores.petco.com"],
"maxLocations": 1000,
"diffEnabled": true,
"crawlDelaySec": 1
}

Sample output (locations dataset)

{
"id": "2636",
"brand": "Petco",
"name": "Petco",
"phone": "+15735146404",
"line1": "400 N Stadium Blvd",
"city": "Columbia",
"region": "MO",
"postalCode": "65203",
"hours": "{\"monday\": {\"openIntervals\": [{\"end\": \"21:00\", \"start\": \"09:00\"}]}, ...}"
}

Use cases

  1. Commercial real estate: monitor retail footprints — new openings and closures by brand, city, or state.
  2. Market research: track chain expansion rates over time.
  3. Competitive intelligence: get an alert the day a competitor opens near your market.

Honest limits (v1)

  • Yext Pages locators only in v1 (hundreds of brands: Petco, and most retail/food brands using Yext Listings). The actor auto-detects the pattern; non-Yext locators are skipped with a clear log message.
  • Latitude/longitude depend on what the source page exposes; some brands include them only on detail pages.
  • Politeness delay defaults to 1s — a full ~10k-location brand takes a few hours by design. Raise crawlDelaySec for polite crawling of small sites.

Development

  • src/extract.py — pure parsing (offline-testable)
  • main.py — crawl + diff + storage
  • Test locally: python3 -c "import sys; sys.path.insert(0,'src'); from extract import extract_directory_children; print(len(extract_directory_children(open('page.html').read())))"