Shopify & Ecommerce Store Leads avatar

Shopify & Ecommerce Store Leads

Pricing

from $0.50 / 1,000 stores

Go to Apify Store
Shopify & Ecommerce Store Leads

Shopify & Ecommerce Store Leads

Find Shopify, WooCommerce, Wix and other online stores by country, category, tools and apps, with emails, phones and social profiles. Export to a spreadsheet, or schedule it to get new stores every day.

Pricing

from $0.50 / 1,000 stores

Rating

0.0

(0)

Developer

PlatLeads

PlatLeads

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

Find online stores on Shopify, WooCommerce, Wix and other platforms, and download them as a spreadsheet. Each store comes with its country, category, products and prices, the tools and apps it uses, its social profiles and, where the store publishes them, its emails, phone numbers and WhatsApp numbers. On Apify's free plan a run returns a sample of up to 50 stores with contact details hidden; see Pricing below.

Not affiliated with Shopify, WooCommerce or Wix.

What you can use it for

  • Lead lists: stores in the countries and categories you sell to, with contact details, for an agency, an app or a service.
  • Stores that use a tool: stores running Klaviyo, Judge.me, Gorgias or a competitor of yours, picked from the Technologies list.
  • New stores every day: a store that opened this week is still choosing its apps, agencies and suppliers. Schedule a daily run with Only stores found since the last run and each run returns just the stores found since the one before.

How it works

New stores are found every day, and every store is checked again regularly. A run searches that list rather than visiting websites, so it finishes in minutes, not hours.

  1. Choose the filters. Every filter is optional, and filters combine: a store has to match all of them. A filter with several values matches any of them. Runs return stores that are open now; see status below for stores behind a password page.
  2. Set Maximum stores: the run stops there, or earlier at the maximum cost per run you set on the run's options.
  3. Start the run. Download the results as CSV, Excel, JSON or HTML, or send them on with Apify integrations such as Google Sheets, Make, Zapier or n8n.

Input example

US beauty stores on Shopify that use Klaviyo, at most 500:

{
"platform": ["shopify"],
"country": ["US"],
"category": ["beauty-cosmetics"],
"technologies": ["klaviyo"],
"maxRows": 500
}

More lead lists

LeadsSettings
Stores on a competitor's email toolTechnologies: Mailchimp, Omnisend
Shopify stores collecting reviews with Judge.meShopify apps: judgeme
Stores with live chat or a helpdeskMore filters: {"technology_category": ["customer_support"]}
Stores that started Facebook or Instagram ads in the last 30 daysMore filters: {"meta_ads": "active"}
Stores running many Meta adsMore filters: {"fb_ad_count": {"min": 20}}
Stores with a wholesale pageMore filters: {"pages": ["wholesale"]}
Established stores with a large catalogMinimum products: 500, More filters: {"followers": {"min": 10000}}

Output

One row per store, newest first unless you choose otherwise. The Output format option Nested JSON returns each store as the nested object behind these columns, with lists kept as lists and a few more details, such as followers per network and each app's icon and App Store page. Its keys differ from the column names: id for domain (there is no url), created_at for found_at, contact.email, contact.phone and contact.whatsapp for the contact columns, social.link and social.total_followers for the social columns, product for the product columns, fb_ads.count and fb_ads.last_start_date for the Meta ads columns, technologies.active and apps.active as lists of objects, and a shopify object for the shopify_ columns.

New stores are added every day, and every store is checked again regularly; updated_at says when it last was. The Source column says how each value is collected:

  • Observed: read directly from the store's website or a public source such as the Meta Ad Library.
  • Derived: calculated from observed values, such as an average price.
  • Inferred: detected by rules or an AI model. Right for most stores, but it can be wrong.
  • Estimated: an approximate number, such as a follower count shown as 1.2K on the profile.

apps and the shopify_ columns are only filled in for Shopify stores.

ColumnSourceDescription
domain, urlObservedThe store's domain and homepage.
titleObservedThe store name shown in the browser tab.
platformDerivedThe ecommerce platform, detected from the storefront code: shopify, woocommerce, wix, prestashop, bigcommerce, magento, a smaller platform under its own name, or custom for a storefront built in-house.
statusDerivedactive, or password_protected for a store behind a password page, whose other details may date from before it closed. Runs return only active stores unless you set status in More filters or tick Only stores found since the last run.
countryInferredWhere the store is based, not where it sells, as a code such as US. Shopify stores use the country registered with Shopify; on other platforms it is inferred from store settings, phone numbers, the domain and the currency.
languageInferredThe main language of the storefront, as a code such as en.
categoriesInferredCategory and subcategory, e.g. Apparel & Accessories / Shoes & Footwear, assigned by an AI model from the store's name, description and products. Stores with no products and no description are not classified.
descriptionObservedThe short description the store gives search engines.
emailsObservedEmail addresses on the store's own domain, from the homepage and contact page. Free-mail and third-party addresses are left out.
phonesObservedPhone numbers from the homepage and contact page: in international format (+…) when the site gives the country code, otherwise as written locally, so one number can appear in both forms.
whatsappObservedWhatsApp numbers from chat links and buttons, as digits with the country code and no +.
instagram, facebook, tiktok, youtube, twitter, pinterest, linkedinObservedThe store's profile on each network, when the homepage links to one.
total_followersEstimatedFollowers across the store's Facebook, Instagram, TikTok, YouTube and Pinterest profiles we could read, as precise as the profiles show them.
product_countObservedNumber of products in the catalog. Approximate on platforms that do not publish a count.
avg_price, avg_price_usdDerivedAverage product price in the store's currency, from a sample of its products, and the same average in US dollars.
currencyObservedThe currency the store sells in, e.g. USD.
meta_ads_30dEstimatedFacebook and Instagram ads the store started in the last 30 days, from the Meta Ad Library.
meta_ads_last_startedObservedStart date of the store's most recent Facebook or Instagram ad, at midnight UTC.
technologiesInferredThird-party tools detected in the storefront code, on any platform: email, reviews, subscriptions, support, search, ads and more.
appsInferredShopify apps detected in the storefront code.
is_dropshippingInferredtrue when the store's category links, Shopify apps or product vendors point to dropshipping. Empty otherwise, and not cleared once set.
is_print_on_demandInferredtrue when the store's Shopify apps or product vendors point to print on demand. Empty otherwise, and not cleared once set.
is_codInferredWhether the storefront offers cash on delivery.
has_ios_app, has_android_appInferredWhether the homepage links to the store's own app on the App Store or Google Play.
shopify_domainObservedThe store's permanent *.myshopify.com address.
shopify_themeObservedThe Shopify theme, e.g. Dawn.
shopify_registration_country, shopify_province, shopify_cityObservedThe country, state or province, and city registered with Shopify.
shopify_ships_toObservedCountries the store ships to, from its shipping settings. * means the rest of the world.
shopify_payment_methodsObservedWallets offered at checkout: SHOP_PAY, PAYPAL, APPLE_PAY, GOOGLE_PAY, AMAZON_PAY.
shopify_offers_installmentsObservedWhether checkout offers Shop Pay Installments.
found_atObservedWhen we first found the store. Runs sort by it.
updated_atObservedWhen we last checked the store.

A column is empty when the store does not have that detail. Not every store publishes an email or phone number, so keep the WhatsApp and social columns too: they reach stores that have no email.

Not in the data

  • Revenue, traffic or visit estimates.
  • Employee counts or named contacts.
  • Private data or anything behind a login.
  • Tracking pixels, the date of the newest product, the platform a store used before, pages linked from the homepage, the domain registration date and Shopify Plus. You can filter by these in More filters, but they are not in the results.

Get new stores every day

Tick Only stores found since the last run, then create a schedule for the Actor in Apify, for example every morning. Each run returns the stores found since the previous run with the same filters, oldest first, and remembers where it stopped in a key-value store in your account. A run stopped by Maximum stores or by its maximum cost leaves the rest for the next run.

  • The first run starts from Found in the last N days, or one day back if that is empty.
  • Changing any filter starts a new sequence from the first-run start.
  • Stores still behind a password page are included, because many new stores are when we find them. The status column tells them apart.
  • Each store is checked against the filters once, in the first run after it is found. Choose filters that are known from the start: platform, domain type and domain ending. Country is inferred when a store is found and, for Shopify stores, replaced soon after by the country registered with Shopify, so a sync by country can miss the few stores whose country changes. Categories, followers and ads are often filled in later, so a new store filtered on them is usually left out for good.

More filters

The More filters (JSON) field takes any of the filters below, and the form's own filters too, for example {"meta_ads": "active", "followers": {"min": 1000}} or {"platform": ["opencart"]} for a platform the form does not list. A filter set there replaces the same filter set in the form.

Filters combine with AND, except category and subcategory, whose values are pooled. A filter that takes several values matches any of them, except traits, where all must match. Values are not case-sensitive, except for theme and province. Where a description mentions unknown, send it to match stores without a value, e.g. "social_platforms": ["unknown"]. A filter shown with an example rather than its values, such as theme, province or tld, takes the value as it appears in the data; a value we do not have returns no stores rather than an error.

FilterFormatDescription
provinceArray of valuesThe state, province or region the merchant registered with Shopify, such as California or Ontario. Shopify only asks for one in some countries. Write each value as country code and name, e.g. US:California. Shopify only. Example: ["GB:England"].
subcategoryArray of valuesA subcategory. Assigned by an AI model; send unknown for stores it has not classified yet. Category and subcategory values combine: a store in any of them matches. Values: mens-clothing, womens-clothing, shoes-footwear, handbags-backpacks, hats-headwear, sunglasses-eyewear, lingerie-intimates, graphic-tees-merch, home-decor, kitchen-dining, bedding-bath, lighting, garden-outdoor, candles-fragrance, storage-organization, wall-art-prints, coffee-tea, snacks-confectionery, wine-spirits, specialty-foods, organic-special-diet, meal-kits, bakery-desserts, meat-seafood, sauces-spices, restaurant-takeaway, makeup, skincare, haircare, nail-care, fragrances, beauty-tools, bath-body, mens-grooming, marketing-seo, web-design-development, business-consulting, printing-services, real-estate-property, funeral-memorial, local-services, art-supplies, musical-instruments, craft-supplies, jewelry-making, stickers-decals, music-vinyl-records, vitamins-supplements, fitness-nutrition, medical-devices, wellness-relaxation, weight-management, pain-relief-mobility, mens-health, research-peptides, phones-tablets, computers-laptops, audio-headphones, cameras-drones, smart-home, accessories-cables, gaming-pc-components, power-solar-batteries, fine-jewelry, fashion-jewelry, watches, body-jewelry, commercial-equipment, safety-workwear, janitorial-supplies, packaging-shipping, lab-scientific, agriculture-farm, personalized-gifts, gift-baskets, novelty-gag-gifts, greeting-cards, party-supplies, holiday-decor, seasonal-costumes, online-courses, tutorials-workshops, coaching-mentoring, educational-materials, gym-fitness, outdoor-recreation, hunting-shooting, team-sports, water-sports, cycling, golf, hand-tools, power-tools, plumbing-electrical, fasteners-hardware, paint-supplies, parts-components, auto-parts, motorcycle-parts, car-accessories, tires-wheels, vehicle-electronics, physical-books, ebooks-digital, comics-manga, audiobooks, dog-supplies, cat-supplies, pet-food-treats, aquarium-reptile, pet-grooming, general-store, living-room, bedroom-furniture, office-furniture, outdoor-furniture, action-figures, board-games-puzzles, video-games, educational-toys, dolls-plush, baby-clothing, baby-gear-strollers, diapers-feeding, maternity, nursery-decor, kids-clothing, kids-school-supplies, game-credits-topup, digital-downloads, memberships-communities, vintage-antiques, trading-cards, coins-stamps, memorabilia, writing-instruments, paper-notebooks, desk-accessories, printers-ink, saas-subscriptions, mobile-apps, software-tools, themes-templates, vapes-e-cigarettes, cbd-products, cannabis-dispensary, smoking-accessories, tobacco-cigars, luggage-suitcases, travel-accessories, travel-organizers, adult-toys, sexual-wellness, erotic-lingerie, bridal-gowns, wedding-decor, wedding-favors, bridesmaids-groomsmen, wedding-invitations.
statusArray of valuesWhether visitors can open the store. Password-protected stores are usually not launched yet or temporarily closed. Only active stores are returned unless you set it. Values: active, password_protected.
currencyArray of valuesThe currency the store sells in. Values: USD, EUR, GBP, INR, CAD, AUD, BRL, IRT, PLN, MXN, PKR, VND, ZAR, JPY, TRY, COP, CHF, CLP, SEK, AED, NZD, RON, DKK, ILS, ARS, BDT, SGD, EGP, MYR, HUF, IDR, HKD, PEN, CZK, NOK, MAD, TWD, UAH, THB, NGN, PHP, IRR, KRW, SAR, DZD, RUB, RSD, CNY, XOF, KES, LKR, KWD, UYU, GTQ, CRC, TND, GHS, QAR, ISK, DOP, BGN, BYN, BAM, JOD, PYG, GEL, XAF, OMR, KZT, NPR, MKD, HNL, BHD, MDL, ALL, TTD, BOB, IQD, UGX, MUR, JMD, AMD, AZN, XPF, TZS, UZS, GNF, AOA, KHR, BSD, VES, MNT, LYD, ZMW, LBP, NAD.
ships_toArray of valuesCountries the store delivers to, from its Shopify shipping settings. * (Worldwide) matches stores that ship everywhere. Shopify only. Example: ["US"].
latest_product_at{min, max} ISO 8601When the store last added a product. Shopify & WooCommerce only.
social_platformsArray of valuesStores that link to a profile on any of the chosen networks. Send unknown for stores with no social profile. Values: instagram, facebook, youtube, tiktok, twitter, linkedin, pinterest.
followers{min, max}Followers across all of the store's social profiles.
meta_adsOne valueWhether the store advertises on Facebook and Instagram: started an ad in the last 30 days, has run ads at some point, or never seen advertising. Values: active, ever, never.
fb_ad_count{min, max}Number of Meta ads the store started in the last 30 days.
tracker_platformsArray of valuesStores with a tracking pixel from any of the chosen vendors. Send unknown for stores with no pixel at all. Values: google_analytics, google_tag_manager, google_ads, facebook, tiktok, pinterest.
business_modelArray of valuesHow the store fulfils orders: dropshipping, print on demand or cash on delivery. Dropshipping is read from a store's category links, Shopify apps and product vendors, print on demand from its Shopify apps and product vendors, and cash on delivery from page content. Values: dropshipping, pod, cod.
traitsArray of valuesStores that match every chosen trait. Shopify Plus and Offers Installments (Shop Pay Installments) apply to Shopify stores only. Values: shopify_plus, has_mobile_app, platform_changed, offers_installments.
previous_platformsArray of valuesThe platform a store ran on before its current one. Only switches seen since we started tracking the store are known. Values: woocommerce, shopify, wix, custom, magento, prestashop, bigcommerce, opencart, nuvemshop, shoplazza, youcan, shopline, fourthwall, sfcc, vtex, hostinger, jtl, magento1, zencart, cafe24, empretienda, godomall, kormozone, lightspeed, mixin, sazito, shoper, shopware, virtuemart, bigcartel, botble, epages, freewebstore, haravan, modified, nopcommerce, oxid, salla, shoptet, squarespace, volusion, webnode.
pagesArray of valuesStores that link to the chosen page types, such as wholesale, affiliate or shipping. Values: contact, privacy, about, terms, returns, shipping, faq, tracking, wholesale, affiliate.
technology_categoryArray of valuesStores running any tool in the chosen categories. Combined with technologies, a store must match both. Values: page_builder, ads_analytics, email_sms_marketing, customer_support, reviews_ugc, accessibility_compliance, upsell_conversion, search_merchandising, subscriptions_loyalty, localization, affiliate_referral, payments_bnpl, shipping_returns.
themeArray of valuesThe theme the storefront is built on, such as Dawn, Prestige or the retired Debut. Custom themes keep whatever name their developer gave them. Shopify only. Example: ["Dawn"].
domain_typeArray of valuesA custom domain, or a platform address such as myshopify.com. Values: custom, platform.
tldArray of valuesThe domain ending, such as .com or .co.uk. Example: ["com"].
domain_registered{min, max} ISO 8601When the domain was registered.

Formats:

  • Array of values: "currency": ["USD", "EUR"], up to 100 values
  • {min, max}: "followers": {"min": 1000, "max": 50000}; either bound can be left out
  • {min, max} ISO 8601: "domain_registered": {"min": "2026-01-01"}; a date without a time means midnight UTC, so a max of 2026-01-31 stops at the start of that day
  • One value: "meta_ads": "active"

Pricing

You pay for each store saved, whether or not it has contact details, at the price per 1,000 stores shown on the Pricing tab; higher Apify plans pay less. To cap what a run can cost, set Maximum stores, or the maximum cost per run in the run options.

On Apify's free plan a run returns up to 50 stores, at most 200 stores a day in all, and their contact details come back as Paid access only, so you can see which stores have them. The free credit Apify gives new accounts does not change this: full results need a paid Apify plan.

Support

Questions, problems and requests for new filters or fields go in the Issues tab. Include the run's input when something looks wrong.