Shopify Email Scraper: Store Leads, Phones & Socials by Domain
Pricing
from $2.80 / 1,000 shopify store leads
Shopify Email Scraper: Store Leads, Phones & Socials by Domain
Shopify and WooCommerce store leads from a domain list: public business email, phone, social links, store name, tech stack. $0.004 per store; other platforms and failed domains are free. Prefilled with 2 stores: just click Start.
Pricing
from $2.80 / 1,000 shopify store leads
Rating
0.0
(0)
Developer
Penny Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 days ago
Last modified
Categories
Features
Share
Shopify Store Leads Scraper - Business Emails, Phones & Socials
Shopify store lead generation from a list of domains: one lead row per store with the public business email, phone, social links, product count, price range, currency and detected tech stack. Plain HTTP, no browser, no proxy. Domains that are not Shopify stores, are blocked or fail are returned with an error and are not charged.
Free to try: a new Apify account includes free monthly platform credit, enough to test a few dozen stores before you pay anything.
Quickstart (one API call)
curl -X POST "https://api.apify.com/v2/acts/pennydata~shopify-store-leads-contacts/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"domains":[{"url":"gymshark.com"}],"maxConcurrency":1}'
Or open the Actor in the Console and click Start: the prefilled input (two stores) runs as-is.
Example output (real run, 2026-10-20)
Input gymshark.com, output (one row, one store-lead event):
{"input": "www.gymshark.com","domain": "gymshark.com","storeUrl": "https://www.gymshark.com","storeName": "Gymshark","description": "Unlock your full potential with our game-changing workout clothes. Shop gym clothing for the gym, running & everything in-between. Free delivery on orders over $75","myshopifyDomain": "gymsharkusa.myshopify.com","emails": ["press@gymshark.com", "support@gymshark.com"],"phones": [],"socials": {},"technologies": ["Contentful", "Amazon CloudFront", "Next.js"],"contactPagesChecked": ["/pages/about-us"],"httpStatus": 200,"capturedAt": "2026-10-20T04:40:09.275Z"}
Empty phones and socials are real: the actor returns only what the store itself publishes and never guesses.
How it works
- Reads the homepage,
/pages/contact,/pages/contact-usand/pages/about-us(only while no email is found) and the store's public/products.json. - Respects each store's
robots.txt(on by default). Shopify's default robots.txt disallows/policies/, so those pages are skipped for most stores. - Business contacts only: by default only shared mailboxes a store publishes (info@, support@, hello@, sales@ ...). No names, no personal profiling, no social-profile scraping (only the links the store itself publishes).
- Output per store: name, description, domain and
myshopifydomain, currency, theme, emails, phones, socials (Instagram, Facebook, X, TikTok, YouTube, Pinterest, LinkedIn), product count and price range, top vendors, technologies.
Pricing
| Event | When it is charged | Price |
|---|---|---|
store-lead ("Store lead") | One Shopify store successfully processed into a lead row | $0.004 |
That is $4.00 per 1,000 stores on the Free plan (paid Apify plans get tiered discounts, down to $0.0028 per store). Non-Shopify domains, robots.txt-blocked domains, rate-limited (HTTP 429) and failed stores are not charged. Set a maximum cost per run in the run options to cap spend.
Weekly Shopify app change alerts
Track which apps and themes your target stores add or drop. Turn on changeAlerts; the actor keeps a snapshot of every store from the last run (in the named key-value store shopify-store-leads-snapshots) and, on the next run with the same domains, outputs only stores whose technologies, theme, storeName, currency, emails or phones changed, plus added / removed objects (for example added.technologies: ["Gorgias"], removed.technologies: ["Klaviyo"]) and a changes list. Stores not in the previous snapshot come back with changeType: "new-store". The first run outputs all stores as the baseline. Every store is still scraped and billed at the normal per-store price.
Schedule recipe (no per-run config):
- Save a Task with your store list and
"changeAlerts": true. - Create a Schedule (Console > Schedules), daily or weekly (for example
0 7 * * 1), pointing at that Task. Nothing else to update between runs. - Send the output to Slack, Sheets or a webhook through an Apify integration. A run with no changes produces an empty dataset.
previousDatasetId is an optional override to compare against an earlier full run's dataset. Do not pass a change-alert run's dataset: it only holds changed rows.
Use cases
- Build an outreach list for apps, agencies and suppliers that serve Shopify merchants.
- Qualify a list of store domains by product count, currency and detected tech.
- Find published business emails and brand social links for a set of stores.
- Enrich an existing CRM list of storefront domains.
Limits and honesty
- Many stores publish their contact only through a form; then
emailsis empty. The actor never invents addresses. - Stores may rate-limit (HTTP 429) fast bursts. Those rows carry an
error, are not charged, and can be re-run later; the default concurrency is low for this reason. productCountreads up tomaxProductPagesx 250 products (default 4 = 1,000; set up to 100 = 25,000). When the limit is hit or a later page is rate-limited,productCountIsLowerBoundistrue.- Pagination check (2026-10-24, fashionnova.com): the store's
/products.jsonreturned full 250-product pages through page 89 (over 22,000 products); product reading goes up to 100 pages (25,000 products) per store, and a count that stops early for any reason is flaggedproductCountIsLowerBound. - You are responsible for using contact data lawfully (GDPR, CAN-SPAM, local marketing rules).
More from PennyData
- Website Tech Stack Detector: CMS, ecommerce, analytics, CDN and JS frameworks per URL. Pair it with this actor to check which domains run Shopify first.
- Bulk Email Validator (No SMTP): check the emails you collect for syntax, MX, disposable and role addresses before you send.
- Bulk Domain Availability & WHOIS/DNS Lookup: registrar, expiry and MX per domain.
FAQ
Where do the emails come from? Only addresses the store itself publishes on its homepage or contact/about pages. Nothing is guessed or generated.
Why is emails empty for some stores?
Many stores publish only a contact form. The row is still returned and charged as a lead; use phones, socials and the store data.
Can I email these contacts? You are responsible for lawful use (GDPR, CAN-SPAM, local rules). Only shared business mailboxes are returned by default.
How much does a run cost? $0.004 per store, nothing else on top. 200 stores is about $0.80.
Is it maintained? Yes. Report breakage in the Issues tab; failed rows are never billed.
Built with AI assistance (Claude); maintained by the publisher.