Shopify store scraper and finder: get a list of Shopify stores by country, niche, installed app or theme from 449,000+ real stores. Each lead has public e-mails, phones, socials, apps, theme and top brands. First 25 leads free, no store billed twice. A Store Leads and BuiltWith alternative.
A restarted run never delivers or bills the same store twice. When the platform moves a run to another server or reboots it, the run now carries on where it stopped: stores it already returned or checked are skipped, with or without Only new leads. Before, a migration ended the run early and the restarted run could return and charge some stores again.
The anonymous run summary now carries the build number and a final flag, and long runs send a progress row every few minutes, so a run the platform restarts still gets counted.
The anonymous run summary sent to the developer now also says how the run was started (Console, API or schedule) and which filters were set, as counts and on/off flags. It never contains filter values, results or account identifiers.
Runs without a country filter use far less memory: a run keeps only the stores it can use while the index loads (at most Max leads, or Max stores checked, plus the stores in flight), not the whole index of ~450,000 stores. Same leads, same order, same counts in the status. A run at the 1 GB minimum no longer comes close to its memory limit as the index grows.
Fewer failed runs from how the input is typed: country names and common codes (United States, USA, UK, GBR) are read as country codes, the currency symbols $, € and £ as currency codes, and a history name with spaces gets dashes (My leads → my-leads). Values that can't be read are left out and named in the run status; the run fails only when none of them can be read. Max leads or Max stores checked over 100,000 now means 100,000 instead of a failed run. When the index has no stores in a requested country, the status says so.
Long runs finish cleanly instead of timing out: a run stops taking new stores a few minutes before its timeout, lets the stores in flight finish, then saves the results, the summary and your lead history. Before, the platform cut such runs off: the status said "Timed out" and up to ~25 leads could come again (and be billed again) on the next run.
0.4 (2026-10-08)
The store index is refreshed every month: new stores from the latest Chrome UX Report and Tranco lists, known stores re-checked, stores that left Shopify removed. Runs use the newest refresh automatically.
New field firstSeenAt (date our index first had the store) and filter Added within (days) for new stores, e.g. a weekly or monthly "new Shopify stores" list.
Theme names with /, & or quotes now read as the store declares them (on/Sight Base Theme, not on\/Sight Base Theme), and the Theme filter matches them.
0.3 (2026-10-07)
Only new leads (on by default): stores your account already received are skipped — never read, never charged — so repeat and scheduled runs return only new stores. Stores that were checked and didn't match the same app/theme/brand/e-mail filters are skipped too, so check fees are never paid twice. Separate histories per client or campaign with History name. The run status says how many matching stores are left.
Stores checked without a match are checked again after 30 days (they may have added the app or an e-mail). Runs that share a history at the same time keep each other's stores.
Only stores with a public e-mail, and more e-mails overall: when the homepage has none, the store's contact page and contact-information page are read too.
Doesn't use these apps (stores without an app) and App match: all (stores using every listed app).
Keywords now match the start of a word: pet no longer finds "carpet". Keyword lists may return slightly fewer, more relevant stores.
0.2 (2026-09-29)
Store discovery also from Google's Chrome UX Report (most visited sites of 42 countries + worldwide): 42,000+ stores
in 0.2.1, 50,000+ in 0.2.2, 200,000+ in 0.2.4, 390,000+ in 0.2.6; the index is sharded by country for faster
starts, and runs without a country filter get enough memory for the whole index.
New popularityTop / popularityScope fields ("among the top 50,000 sites in the UK"); the popularity filter and
sort use them.
0.1
Store index from public top-site lists + meta.json; filters by country, currency, catalogue size, keywords, popularity, apps, theme, brands; storefront enrichment (apps, theme, socials, public e-mails, brands, prices).
Index of ~30,000 Shopify stores (Tranco top-1M); public phones from tel: links.
App/theme/brand filters check stores in stages with early exits; one shared, adaptive request pace for all stores
(Shopify rate-limits an IP across its storefronts); ~25 app-filtered leads in about 2 minutes.
Store checks cost $0.40 per 1,000 (was $1); stores that can't be read, or are no longer needed once Max leads is
reached, are never charged.
Skip these domains (excludeDomains): leads you already have are skipped and never charged, for repeat and
scheduled lists.
Apps are also detected on one product page per store (subscription, upsell and review widgets often load only
there); Check a product page for apps turns it off for faster runs.
Fix: without app/theme/brand filters, Max stores checked no longer caps the number of leads (a 3,000-lead
run with store details stopped at 2,000).