Brand Store Locator & Stockist Scraper avatar

Brand Store Locator & Stockist Scraper

Pricing

from $6.00 / 1,000 stockist / location rows

Go to Apify Store
Brand Store Locator & Stockist Scraper

Brand Store Locator & Stockist Scraper

Scrape public brand store locators, stockist/where-to-buy pages, retailer lists, and dealer locators into clean location rows for ecommerce, retail, beauty, and DTC market intelligence.

Pricing

from $6.00 / 1,000 stockist / location rows

Rating

0.0

(0)

Developer

The Product Analyst Data

The Product Analyst Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Brand Store Locator & Stockist Scraper (Beauty, Retail, DTC) ๐Ÿ›’๐Ÿ“

Scrape public brand store locators, stockist / where-to-buy pages, retailer lists, and dealer locator pages into clean location rows.

Use it to answer the buyer questions that actually matter: Where is this brand sold? Which chains carry it? Which markets are under-covered? Which stores, salons, retailers, or distributors should I target next?

What you get

  • Store locator extraction โ€” business / stockist name, address, city, state, postal code, phone, coordinates, and source URL.
  • Stockist and where-to-buy coverage โ€” works with public store-locator pages, Stockist-powered widgets, JSON-LD locations, embedded location arrays, and retailer links where available.
  • Retail chain normalization โ€” common retailers like Sephora, Ulta, Nordstrom, Sally Beauty, Target, Walmart, SalonCentric, CosmoProf, Amazon, and more are normalized when possible.
  • Metro-area searches โ€” query Stockist-style map widgets by city, latitude/longitude, and radius.
  • Lead-generation ready rows โ€” export to CSV, Excel, Google Sheets, JSON, or the Apify API for sales, distribution, territory, and market-research workflows.
  • Diagnostics instead of silent failure โ€” unsupported, blocked, or empty locator pages can emit diagnostic rows so you know what happened.

Best use cases

  • Scrape a brand's public store locator into a location dataset.
  • Map a competitor's retail footprint by city, state, or chain.
  • Find distribution gaps where a brand is missing stores, chains, or dealers.
  • Build prospect lists for retail buyers, distributors, field reps, wholesale teams, and agencies.
  • Monitor public stockist / where-to-buy pages over time.
  • Analyze beauty, wellness, DTC, retail, salon, and ecommerce distribution coverage.

Buyer-ready offer

Send 1-3 brand store-locator or where-to-buy URLs. Iโ€™ll return a clean location spreadsheet showing where the brand is sold by city, state, chain, and market.

Best buyers: brands, distributors, wholesale teams, retail analysts, agencies, and local operators comparing retail footprint or distribution gaps.

Input example

{
"brandUrls": [
"https://patternbeauty.com/pages/store-locator",
"https://olaplex.com/pages/certified-stylists"
],
"searchAreas": [
{ "label": "New York, NY", "latitude": 40.7128, "longitude": -74.0060, "radiusMiles": 25 },
{ "label": "Los Angeles, CA", "latitude": 34.0522, "longitude": -118.2437, "radiusMiles": 25 },
{ "label": "Atlanta, GA", "latitude": 33.7490, "longitude": -84.3880, "radiusMiles": 25 },
{ "label": "Chicago, IL", "latitude": 41.8781, "longitude": -87.6298, "radiusMiles": 25 }
],
"maxResultsPerBrand": 100,
"maxPagesPerBrand": 6,
"includeDiagnostics": true,
"mode": "stockist"
}
FieldWhat it controls
brandUrls requiredBrand homepages or direct store-locator / stockist / where-to-buy / dealer-locator URLs. Direct locator URLs work best.
searchAreasMetro areas used to query map widgets. Add more cities for wider coverage.
maxResultsPerBrandMaximum deduplicated location rows per brand.
maxPagesPerBrandMaximum candidate pages to fetch for each brand while discovering locator pages.
includeDiagnosticsEmit diagnostic rows for unsupported, blocked, or empty locators.
modeUse stockist for retail / where-to-buy / store-locator output.

Sample output

Representative rows from a verified cloud run:

BrandStockist / StoreTypeAddressProvider
PatternbeautySephora World Trade Centrchain retailer185 Greenwich Street, Suite LL4305 (C2), New York, NY 10007stockist
PatternbeautySephora Downtown Brooklynchain retailer210 Joralemon Street, Brooklyn, NY 11201stockist
PatternbeautyNordstrom Rack New Yorkchain retailer60 E 14th Street, New York, NY 10003stockist
OlaplexLaicalesalon129 Grand Street, New York, NY 10013stockist

Example row shape:

{
"rowType": "stockist",
"brandName": "Patternbeauty",
"brandDomain": "patternbeauty.com",
"stockistName": "Sephora Downtown Brooklyn",
"stockistType": "chain_retailer",
"retailerChainNormalized": "Sephora",
"address": "210 Joralemon Street, Space B",
"city": "Brooklyn",
"state": "NY",
"postalCode": "11201",
"latitude": 40.6924,
"longitude": -73.9905,
"locatorProvider": "stockist",
"searchAreaLabel": "New York, NY",
"sourceUrl": "https://patternbeauty.com/pages/store-locator",
"scrapedAt": "2026-07-04T17:47:03.543Z"
}

Latest verified cloud smoke:

MetricValue
Rows80 clean / 80 total
Location rows80
Diagnostic rows0
BrandsPatternbeauty 40, Olaplex 40
Runtime~4 seconds

Output fields

brandName, brandDomain, stockistName, stockistType, retailerChainNormalized, address, address2, city, state, postalCode, country, latitude, longitude, phone, buyUrl, locatorProvider, searchAreaLabel, distanceMiles, sourceUrl, scrapedAt.

How it works

This Actor scans supplied URLs for public locator pages and extracts data from:

  • Stockist-powered locator widgets.
  • JSON-LD LocalBusiness, Store, and related location data.
  • Embedded public location arrays.
  • Retailer, stockist, dealer, and store-list links where available.

For Stockist widgets, it queries public search endpoints by latitude, longitude, and radius, then deduplicates rows by business, address, and geography.

It does not log in, access private data, scrape customer accounts, or bypass paywalls.

Pricing

This Actor uses Pay per event pricing:

  • apify-actor-start: $0.00005 per run start.
  • stockist-location-row: $0.006 per real stockist / location row.
  • Diagnostic rows are emitted for transparency but are not charged as value rows.

Displayed price: from $6.00 / 1,000 location rows.

Limitations

  • Works best with direct public store-locator, stockist, dealer-locator, or where-to-buy URLs.
  • Stockist-powered locators are queried by searchAreas; add more cities for national coverage.
  • Browser-only locator platforms or private APIs may return diagnostics until provider-specific support is added.
  • Address quality depends on the source locator data.
  • Not affiliated with Stockist, Shopify, or any listed brand. Use responsibly and respect each site's terms.

Beauty Data Toolkit

This Actor is part of a focused beauty-market data toolkit:

NeedActor
Product drops, prices, variants, discountsShopify Product Feed & Price Scraper
Brand retail footprint and where-to-buy / store-locator rowsBrand Store Locator & Stockist Scraper
Salon, stylist, and certified-pro locator rowsBeauty Salon & Pro Locator Scraper

Use the three together to map what brands sell, where products are stocked, and which salons/pros carry or certify around professional lines.

FAQ

Can I use this beyond beauty brands?

Yes, when the brand exposes a compatible public locator, stockist, dealer, or where-to-buy page. Beauty and DTC brands are the main examples, but the extraction pattern also fits retail, wellness, salon, ecommerce, and distributor-location research.

Why do I need search areas?

Many locator widgets return nearby locations, not a full national dump. Add metro coordinates for the markets you care about.

Can I scrape multiple brands at once?

Yes. Add multiple brandUrls; each output row includes brandName, brandDomain, and sourceUrl.

What happens if a locator is unsupported?

With includeDiagnostics: true, the Actor emits diagnostic rows explaining what failed or what provider was detected.

Can I export the results?

Yes. Apify datasets can be exported to JSON, CSV, Excel, XML, RSS, Google Sheets integrations, or read through the API.

Quality / verification

This project now ships with a reusable sample input and standard local checks:

npm run check
cp examples/sample-input.json storage/key_value_stores/default/INPUT.json
CRAWLEE_STORAGE_DIR=./storage APIFY_LOCAL_STORAGE_DIR=./storage node src/main.js

API usage

Run from the Apify CLI:

$apify call fierce_quoll/beauty-stockist-radar --input-file examples/live-input.json

Or use the API tab on the Actor page for language-specific snippets.