Shopify Store Leads Scraper - Emails, Apps & Store Size avatar

Shopify Store Leads Scraper - Emails, Apps & Store Size

Pricing

from $4.75 / 1,000 stores

Go to Apify Store
Shopify Store Leads Scraper - Emails, Apps & Store Size

Shopify Store Leads Scraper - Emails, Apps & Store Size

Find and qualify Shopify stores. Each lead carries the contact email, socials, country, currency, product and collection counts, theme, installed apps, price band, and the date the store last published a product - so you can tell a live brand from a dead one. Pay per store.

Pricing

from $4.75 / 1,000 stores

Rating

0.0

(0)

Developer

Blackcube Agency AB

Blackcube Agency AB

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

38 minutes ago

Last modified

Share

Shopify Store Leads Scraper

More from this account: YouTube Transcript Suite · Website Contact & Email Suite · Career Site & ATS Jobs Suite · Google News Suite · Keyword Research Suite · eBay Data Suite · Amazon Reviews Suite · Reddit · Meta Ad Library · Vinted

Find Shopify stores, and know which ones are worth contacting. Every record tells you whether the store is still trading, how big it is, where it is, who to email, and what it runs on.

You pay once per store delivered. Stores that fail your filters are free. Non-Shopify domains, dead domains, frozen stores and bot-walled sites are free. There is no run-start fee, and a run that finds nothing costs nothing.


The problem with every other Shopify lead list

A list of Shopify domains is easy to buy and mostly worthless. Half the rows are stores that stopped trading years ago, you cannot tell a one-product hobby shop from a 4,000-SKU retailer, and the same store shows up twice under two different addresses — billed twice.

This returns a qualified store instead:

You getWhy it matters
isActive, daysSinceLastProduct, newestProductAtThe store published a product 2 days ago, or 900 days ago. That is the difference between a lead and a ghost.
productCount, collectionCount, sizeBandSort a 10-product startup from a 4,000-product retailer before you write a single email.
storeId + myshopifyDomainThe store's own permanent ID. brand.com and brand.myshopify.com collapse into one record and one charge.
email, emails[], phone, socialsThe published contact route, plus Instagram, TikTok, Facebook, X, YouTube, Pinterest and LinkedIn.
themeName, apps[]What the store actually runs — target the stores that already use a tool, or the ones that don't.
country, province, city, currency, shipsToCountriesThe store's own declared market, not a guess from its language.
priceMin, priceMax, priceAverage, vendors[], productTypes[]Price band and catalogue mix, for positioning and niche sizing.

Measured field coverage

Real numbers from a 25-store discovery run, not estimates. Rerun it yourself and check.

FieldPresent on
Theme100%
Contact email72%
Active in the last year60%
Social profiles56%
Installed apps detected44%

Nothing is invented to fill a column. A store that publishes no email returns null, because a guessed address is worse than no address — it quietly poisons your outreach list.


Two ways to run it

1. Qualify stores you already have

Paste domains into Store URLs. Bare domains, full URLs and .myshopify.com handles all work.

{ "storeUrls": ["allbirds.com", "deathwishcoffee.com", "kith.com"] }

2. Find stores you don't have

Clear Store URLs and turn on Discover new stores. Discovery is broad rather than keyword-targeted, so you narrow it with the filters — and anything filtered out is free, so a tight filter costs you nothing but time.

Repeat runs bring back new stores, not the ones you already paid for. Each run samples a different slice by default; set discoverySeed if you deliberately want a run to be reproducible.

{
"discoverStores": true,
"countries": ["US", "CA"],
"minProducts": 20,
"activeWithinDays": 90,
"keywords": ["coffee", "roaster"],
"maxStores": 500
}

How to find new Shopify stores

Set launchedWithinDays to reach stores while they are still choosing their tools. It ranks by the oldest product a store ever published, so a shop that started last quarter is separable from one that started in 2014. Stores whose catalogue is too large to establish a launch date are excluded rather than guessed at.

How to find Shopify stores by country

Set countries to ISO codes — ["GB", "IE"], ["DE", "AT", "CH"]. This filters on the market the store itself declares, and each record also carries currency and shipsToCountries, so you can separate "based in Germany" from "ships to Germany".

How to find Shopify stores using a specific app

Turn on Include theme and apps and filter the output on apps[]. Every record lists the apps detected on the storefront — email, reviews, subscriptions, support, loyalty, page builders and analytics — so you can build an install-base list, or target the stores missing a category entirely.

How to get Shopify store owner emails

Turn on Include contact details. Each store returns the published contact address in email, every address found in emails[], plus phone and seven social networks. Role addresses on the store's own domain are ranked first, so you get support@brand.com rather than the owner's personal inbox where both exist.

How to check if a Shopify store is still active

isActive and daysSinceLastProduct answer this on every record. A store that has not published a product in years is still online, still resolving, and still worthless as a lead — and no other field in a lead list will tell you.

How to export a Shopify store's product catalogue summary

Turn on Include catalogue for priceMin, priceMax, priceAverage, vendors[] and productTypes[] — the catalogue's shape without the catalogue's bulk. Store size arrives on every record regardless, even for stores with tens of thousands of products.


Sample output

{
"type": "store",
"storeUrl": "https://www.deathwishcoffee.com",
"domain": "www.deathwishcoffee.com",
"myshopifyDomain": "deathwishcoffee.myshopify.com",
"storeId": 2717209,
"name": "Death Wish Coffee",
"country": "US", "province": "New York", "city": "Round Lake", "currency": "USD",
"productCount": 148, "collectionCount": 124, "sizeBand": "mid",
"isActive": true, "daysSinceLastProduct": 2,
"newestProductAt": "2026-08-18T08:56:35-04:00",
"oldestPublishedProductAt": "2014-03-12T13:35:00-04:00",
"priceMin": 5, "priceMax": 119.99, "priceAverage": 38.58,
"productTypes": ["Accessories", "Apparel", "Coffee", "Mugs", "Storage & Brewing"],
"themeName": "Dawn",
"apps": ["Gorgias", "Klaviyo", "Minmaxify", "OrderGroove", "Postscript", "Rebuy", "Smile.io"],
"email": "hey@deathwishcoffee.com",
"socials": { "instagram": "deathwishcoffee", "facebook": "deathwishcoffee", "x": "deathwishcoffee" },
"offersShopPayInstallments": true,
"discoveredVia": "input"
}

Alongside the store rows, every run also emits free error rows (one per unusable domain, with a machine-readable reason) and one free diagnostics row summarising what was scanned, delivered, filtered and skipped.


What you are charged for

One charge per store record delivered. That is the whole billing model.

Always free:

  • stores that fail any filter you set
  • domains that are not Shopify stores
  • dead, parked and unreachable domains
  • frozen or deleted stores
  • sites behind a bot wall that refuse to answer
  • any store whose data could not actually be read — a rate-limited store is a free error row, never a full-price row full of nulls
  • a domain that turns out to be served by a different shop than it claims
  • every error and diagnostics row
  • the second sighting of a store you have already been charged for in the run
  • a run that returns nothing

Cost controls built in: maxStores caps what you pay for. maxCostUsd stops the run cleanly before it exceeds a hard ceiling. maxStoresScanned bounds how far a narrow filter searches. The three enrichment switches let you trade detail for speed on a big sweep.


Setup

Apify Proxy is required — select it in the Proxy field (it is on by default). Datacenter proxy is enough; you do not need residential. Runs without a proxy return almost nothing.


FAQ

Does this work on stores with a custom domain? Yes, and it recognises them as the same store as their .myshopify.com address, so you are never billed twice for one shop.

Can I target a specific niche? Use keywords, which matches the store name, description, domain, vendors and product types. Discovery itself is broad, so a narrow keyword needs a higher maxStoresScanned — and everything rejected along the way is free.

Why is oldestPublishedProductAt sometimes null? Very large catalogues cannot be paged to the end, so the launch date genuinely cannot be established. It returns null rather than a wrong date.

Why is email null on some stores? Because that store publishes no contact address. Inventing info@ would give you a bounce and a damaged sending reputation. Addresses are also only accepted from the store's own domain — a support address belonging to some third-party tool the store happens to use is not your lead.

Will I get the same stores if I run it again? No. Each discovery run samples a different slice, so a weekly top-up brings new leads rather than re-charging you for ones you already have. Pin discoverySeed if you want a run to repeat exactly.

Is the data personal information? The contact details are business contact routes a merchant publishes on its own storefront and policy pages for exactly this purpose. Handle them under your own lawful basis and honour any opt-out you receive.


Unofficial

This is an unofficial tool. It is not affiliated with, endorsed by, or sponsored by Shopify Inc. "Shopify" is a trademark of Shopify Inc. and is used here only to describe what the tool works with. It reads only what a store publishes publicly on its own storefront — nothing private, nothing behind a login.

Use cases

  • Build a qualified lead list. Every store arrives with its contact email, country, catalogue size and price band, so the list is already filtered before you write a line.
  • Sell to a tech stack. Find the stores running a given theme or app category — or the ones missing it entirely, which is the better pitch.
  • Size a niche before entering it. Catalogue depth, price band, vendors and whether a store still ships new products tell you if a market is alive.
  • Catch new stores early. Recently launched brands are still choosing the tools they will pay for.

Run it on a schedule

A one-off pull answers a question; a schedule answers it every day without you. Open Schedules in the Apify Console, point a cron at this Actor, and the dataset keeps filling on its own — no server, no cron box, no babysitting. Everything here is built to be re-run: you are billed per store delivered, so a scheduled run that finds nothing new costs nothing.

FAQ

Where do the stores come from?

Live storefronts, read at the moment you run it — either the URLs you supply or discovery across the public web. Nothing here is a resold static list.

Is the email the store owner's?

It is the contact address the store publishes. Where a store exposes several, the most owner-facing one is preferred and the rest are kept.

Do I pay for stores that fail my filters?

No. A store that does not match your country, size or keyword filter is a free row, so you can filter aggressively without paying for it.

Can I check which apps and theme a store runs?

Yes — theme family, Theme Store ID where it has one, and the installed app categories, on the same row as the contact details.


Something wrong, or a field you need that is missing? Open an issue on the Issues tab — it is read and it gets fixed. If this saved you time, a rating on the Store page helps the next person find it.