Compare observed chain-store coverage using Crawlora Starbucks directories, live chain locators, and Google Maps business records. Use for branch counts, geographic overlap, amenity coverage, or footprint gaps within a defined area with source caps and identity uncertainty preserved.
Installs into .claude/skills of the current project.
Are you the author of chain-store-footprint-analysis?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/crawlora-org-chain-store-footprint-analysis)
---
name: chain-store-footprint-analysis
description: Compare observed chain-store coverage using Crawlora Starbucks directories, live chain locators, and Google Maps business records. Use for branch counts, geographic overlap, amenity coverage, or footprint gaps within a defined area with source caps and identity uncertainty preserved.
---
# Chain store footprint analysis
## Access and scope
Set `CRAWLORA_API_KEY` to your Crawlora key. Prefer the listed Crawlora MCP tools
when connected; otherwise use the bundled `scripts/crawlora.sh`, which sends
`x-api-key` to `https://api.crawlora.net/api/v1`. Read
[reference/endpoints.md](reference/endpoints.md) for exact methods and parameters.
Check application `code` as well as HTTP status; payloads are inside `data`.
Stop on authentication errors, back off on `429`, and retry a transient upstream
failure once. Bound calls/pages by the requested scope and credit budget. Retain
source IDs, URLs, source dates, and observation/crawl times separately.
Map observed branches for specified chains and geographic boundaries. Establish
brands/aliases, store versus kiosk/licensed location scope, cities or coordinate
boundaries, amenity criteria, source set, and collection budget before counting.
This describes observed supply, not sales, foot traffic, demand, or site profitability.
## Discover branches under matched geographic scopes
- Use stored Starbucks facets/search/nearby for brand-specific discovery and
stable `store_number`. Dataset `country` is actual geography; `market=us/ca`
records crawl-host provenance and must not be mistaken for a geographic filter.
Preserve exact country/state/city and coordinate evidence.
- Refresh selected locations with live Starbucks locator/nearest-store calls.
Either `place` or a coordinate pair is needed. Its cap is 50 without pagination;
`result_capped` means the local result is incomplete. Distinguish a failed
geocode (`place_not_found`) from a successful search with no returned branches.
Canadian operational data should use the Canadian host when requested.
- Other brands can use stored Google Maps business search/facets/nearby, followed
by selected live search/place verification. A name-text match is not a verified
chain affiliation; check canonical brand/site, address, and location evidence.
Google Maps category/country values differ from Starbucks taxonomy/codes.
- McDonald's coordinate locator is a separate source with its own accepted markets,
cap, and radius in miles; dataset nearby radii are meters. Convert explicit
geographic scopes rather than copying identical numeric radius values. A
capped live locator alone cannot establish a whole-country store count.
- Keep a boundary/query ledger, requested/returned pages, cap flags, search result
counts, and crawl times. The stored indexes are not automatically an official
census of every branch or a proof that a competing chain is absent.
```sh
scripts/crawlora.sh /datasets/starbucks-stores/facets facet=country
scripts/crawlora.sh /datasets/starbucks-stores/search country=US city=Seattle page=1 page_size=100
scripts/crawlora.sh /starbucks/stores place="Seattle, WA" market=us
scripts/crawlora.sh /datasets/google-map-businesses/search q="Starbucks" city=Seattle page=1 page_size=10
```
## Reconcile locations and report coverage
Deduplicate the same brand/store ID first; cross-source matches need address and
coordinate corroboration. Similar names are not sufficient, and two units/kiosks
inside a complex can be distinct branches. Keep relocated, permanently-closed,
licensed, and company-operated locations explicit when fields support the labels.
An empty schedule/amenity field can mean not published for that market, not closed
or unsupported. Mobile-order readiness differs from static capability codes.
Use unique matched branches for area counts. For overlapping radius queries,
count each branch once and keep the union boundary explicit; dividing by the
sum of overlapping circle areas produces a misleading density. Area density
requires a defined area, and per-capita measures require a separately sourced
population with matching geography/date. Counts alone are not market share.
Return a branch evidence ledger, deduplicated area/brand matrix, source coverage,
observed amenity/ownership breakdowns, and unknown or incomplete areas. A missing
branch in a capped/partial sample is an observed coverage gap, not proof of closure
or unmet demand. Historical expansion/contraction claims require comparable
saved observations and verified changes. Do not contact stores, submit leads,
or choose an investment/site solely from this footprint.