Shopify stores are publicly accessible websites. That means store names, product listings, and contact information published on the storefront are generally available for collection. Most stores display an email in their footer, contact page, or "About Us" section.
What you typically get from scraping:
What you won't get from storefront scraping alone: the store owner's personal email, revenue data, or internal team contacts. Those require different approaches.
Apify offers pre-built scrapers specifically designed for Shopify stores. The most popular one is the Shopify Shops Email Leads Scraper by xmiso_scrapers.
language: en — English-language storescurrency: USD — US-based storeshas_email: true — Only stores with a published emailmax_results: 1000 — Limit per runExpect around $0.60 per 1,000 stores scraped. Verification adds another $2-4 per 1,000 emails via ZeroBounce or similar services.
Apify handles the technical complexity. You don't need to write code or manage proxies. The scraper respects rate limits and handles pagination automatically. On the downside, you're limited by the scraper's configuration options and Apify's pricing structure for high volumes.
If you want full control, a custom script gives you flexibility that pre-built tools can't match.
The workflow goes like this: discover Shopify stores through search engines, visit each store's website, extract the contact email from the page HTML, and save results to a CSV file.
Use Google's site: operator with Shopify-specific footprints. The string "myshopify.com" appears in many Shopify store URLs during setup. Searching for site:myshopify.com "contact" "@gmail.com" or site:myshopify.com "contact us" can surface relevant stores.
Alternatively, use Google's Custom Search API to automate discovery at scale.
For each discovered URL, use Python with requests and BeautifulSoup to:
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/pages/contact route if the homepage doesn't reveal an emailDon't hammer servers. Add random delays between 2-5 seconds between requests. Use rotating proxies if you're scraping more than a few hundred stores. Most web hosts will temporarily block IPs making rapid sequential requests.
For manual prospecting at smaller scale, browser extensions work fine.
These tools work well for building lists of 50-200 contacts. Beyond that, the manual effort becomes prohibitive.
Raw scraped emails have a 20-40% bounce rate depending on the source. Sending to unverified addresses will destroy your domain reputation within hours.
Run every list through a verification service before using it:
Expect to lose 15-25% of scraped emails during verification. Budget accordingly.
Scraping publicly available data from websites is generally legal in the US and EU, with some caveats:
Building your own scraping pipeline takes technical knowledge, time, and ongoing maintenance. If your core business isn't data collection, the cost of engineering time usually exceeds the cost of buying a verified list.
Pre-verified lists start around $29 per 1,000 contacts. Compare that to the hours spent setting up scrapers, maintaining proxies, running verification, and cleaning data — and the economics of buying become clear for most outreach teams.