Shopify Store Enricher — Contacts, Products & Tech avatar

Shopify Store Enricher — Contacts, Products & Tech

Pricing

from $2.00 / 1,000 store results

Go to Apify Store
Shopify Store Enricher — Contacts, Products & Tech

Shopify Store Enricher — Contacts, Products & Tech

Bring your own Shopify store URLs: verify Shopify, get public emails, phones and socials, catalogue size, theme and apps, plus a lead score.

Pricing

from $2.00 / 1,000 store results

Rating

0.0

(0)

Developer

Zapticx

Zapticx

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

0

Monthly active users

12 days ago

Last modified

Categories

Features

Limited permissions

Share

Bring your own list of Shopify store URLs or domains and get one clean record per store: whether it really runs on Shopify, its public business emails, phone numbers and social profiles, location and currency, catalogue size with sample products, theme and detectable apps, and a transparent lead score. It works as a Shopify store scraper, Shopify contact scraper and Shopify email finder for stores you already know, and as a Shopify store verification and technology lookup for any domain list.

Pricing: from $2.00 per 1,000 verified Shopify stores ($4.00 per 1,000 on Apify's free plan). You pay only for stores confirmed as Shopify and saved to your dataset. Domains that are not Shopify, cannot be reached or are not valid store addresses still get an explanatory row, free of charge. Apify platform usage is included.

How to use this Actor

  • 👉 Register for a free Apify account — no credit card required.
  • 🎉 Just click Sign up free on Apify → and complete a quick signup.
  • 💰 A free Apify account includes $5 in monthly credits — enough to test this Actor.
  • 📝 Open the Actor and paste your store URLs or domains, one per line.
  • ▶️ Click Start and export the results to JSON, CSV or Excel, or use them through the API.

What this Shopify store scraper returns

  • Shopify store verification: shopifyDetected, a confidence level and the exact signals behind it (for example meta_json, products_json, cart_json, Shopify headers and globals)
  • Store identity: store name, website, canonical URL, domain and public myshopify.com domain
  • Contacts: public business emails and phone numbers, contact and about pages
  • Social profiles: Instagram, Facebook, TikTok, YouTube, X, LinkedIn and Pinterest
  • Location and market: storefront-published country, city, province, currency and locale
  • Shopify product intelligence: product and collection counts (exact when the store publishes them, otherwise a labelled minimum) and a short sample of products with vendor, type and price range
  • Shopify technology lookup: theme name, ID and version, and a list of detectable apps such as Klaviyo or Recharge
  • Lead qualification: leadReady and leadQuality from a deterministic, explainable rule
  • A status for every input: success, partial, password_protected, not_shopify, unreachable, blocked, timeout, invalid_domain, redirect_error or enrichment_failed, with a plain-language reason

No revenue, traffic, sales, order-volume, employee or founder estimates are generated, and nothing is invented: unavailable values are null or [].

Who it is for

  • Agencies, B2B sales and outreach teams turning a list of ecommerce domains (from a CRM, a lead database or a spreadsheet) into verified, contactable Shopify leads.
  • Shopify app, theme and service vendors who need each prospect's theme, tools, catalogue size and market before reaching out.
  • Market researchers comparing a known set of competitor stores.
  • Data teams cleaning domain lists: which are really Shopify, which are password-protected or offline.

Supported URL formats

You supplyExampleResult
Bare domainallbirds.comEnriched
Full URL, any pagehttps://www.allbirds.com/collections/mensEnriched from the store's homepage
myshopify domaineverydayoil.myshopify.comEnriched; follows the store to its custom domain
Shop marketplace linkshop.com/m/..., shop.app/m/...Rejected as invalid_domain (not a store website), not charged
Malformed or private addressnot a url, localhost, an IP addressRejected as invalid_domain, not charged

Repeated domains are processed once. If two entries lead to the same store (for example brand.com and brand.myshopify.com), the store is returned and charged once.

Input

FieldTypeMeaning
storeUrlsstring[]Required. Shopify store URLs or domains, one per entry.
maxItemsintegerMaximum number of stores to process and return (1 to 10,000). Default 10.
proxyConfigurationobjectOptional Apify proxy for the store websites. Direct HTTP is used by default.
{
"storeUrls": [
"https://www.allbirds.com",
"everydayoil.myshopify.com",
"upcirclebeauty.com"
],
"maxItems": 10
}

The prefilled examples run as they are.

How it works

For each store the Actor requests only that store's own website:

  1. The homepage.
  2. Shopify's public storefront endpoints: /meta.json, /products.json and /cart.js.
  3. Up to five contact, about and policy pages linked from the homepage, on the same domain only.

It never logs in, never touches Shopify Admin, and never requests pages on other websites.

Shopify verification

The Actor combines structured storefront endpoints, Shopify response headers, public JavaScript globals, myshopify.com references, theme metadata, cart data and Shopify assets. A Shopify CDN image alone is only a weak signal and cannot classify a store.

  • high: a valid structured Shopify endpoint or several strong signals
  • medium: one strong signal with supporting public evidence
  • low: weak evidence only; the store is returned as not_shopify
  • none: no dependable signal

Output

One row per supplied store. A real example (shortened):

{
"status": "success",
"inputUrl": "everydayoil.myshopify.com",
"storeName": "Everyday Oil",
"domain": "everydayoil.com",
"storeUrl": "https://everydayoil.com",
"myshopifyDomain": "everydayoil.myshopify.com",
"country": "US",
"city": "Black Mountain",
"province": "North Carolina",
"currency": "USD",
"emails": ["orders@everydayoil.com", "hello@everydayoil.com"],
"primaryEmail": "orders@everydayoil.com",
"socials": { "instagram": "https://www.instagram.com/everyday", "facebook": null, "tiktok": null, "youtube": null, "x": null, "linkedin": null, "pinterest": null },
"contactPage": "https://everydayoil.com/pages/contact",
"productCount": 16,
"collectionCount": 11,
"sampleProducts": [{ "title": "Incense", "url": "https://everydayoil.com/products/incense", "priceMin": 26, "priceMax": 26, "currency": "USD" }],
"theme": { "name": "Updated Logo - CR", "id": "166811861126", "version": "3.5.4", "storeId": null },
"detectedApps": ["Klaviyo", "Recharge", "Stamped"],
"shopifyDetected": true,
"shopifyConfidence": "high",
"shopifySignals": ["meta_json", "products_json", "cart_json", "powered_by_header", "shopify_shop_global", "shopify_theme_global", "myshopify_reference", "shopify_assets"],
"leadReady": true,
"leadQuality": "high"
}

A domain that is not Shopify returns "status": "not_shopify" and "shopifyDetected": false, with empty contact fields.

Dataset views

  • Leads: store, website, country, email, phone, Instagram, TikTok, products, currency, lead quality, status
  • Store intelligence: domain, myshopify domain, country, currency, products, collections, theme, detectable apps, Shopify confidence, status

Fields kept for compatibility

discoverySource is always url_input. discoveryUrl, shopRating and shopReviewCount are always null: they came from a Shop-marketplace discovery mode that has been retired, and stay in the schema so existing integrations keep working.

Lead quality rules

The score is deterministic and does not use an LLM.

  • High: high-confidence Shopify store with an active catalogue, a public email, products, and at least one more phone or social signal.
  • Medium: confirmed active Shopify store with a public email or phone.
  • Low: confirmed store with little or no public contact information, or any non-success row.

leadReady means a confirmed active Shopify store with at least one public email or phone. A public email is not a deliverability-verified email.

How much does it cost?

This Actor uses pay-per-event pricing with one event, store-result, charged once for each verified Shopify store saved to your dataset:

Apify planPer verified storePer 1,000 verified stores
Free$0.004$4.00
Bronze$0.003$3.00
Silver$0.0025$2.50
Gold and above$0.002$2.00

Apify platform usage (compute, storage) is included. Never charged: domains that are not Shopify, invalid or Shop-marketplace inputs, unreachable, blocked or timed-out stores, and repeated stores. Partial and password-protected Shopify stores are charged because they are confirmed Shopify stores with useful data.

To control spending, set maxItems, or a maximum cost per run in the run options.

API usage

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('zapticx/shopify-store-finder-lead-scraper').call({
storeUrls: ['https://www.allbirds.com', 'everydayoil.myshopify.com'],
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

storeUrls is required; a call without it is rejected before a run starts. Results can also be sent to Google Sheets, Make, Zapier, n8n, webhooks and AI or data pipelines.

FAQ

Can it find Shopify stores for me by keyword? No. It enriches the stores you supply. Use your CRM, a lead list or a domain export as the input.

Is this the Shopify API? No. It reads public storefront pages and Shopify's public storefront endpoints, without any Shopify credentials.

Are the emails verified? They are syntax-checked public business emails found on the store's own website. Deliverability is not tested.

Why do I get a row for a domain that is not Shopify? So no input disappears silently. Those rows explain what happened and are not charged.

Can I paste a Shop (shop.com / shop.app) merchant link? No. Those are marketplace pages, not the store's website, so they are returned as invalid_domain without a charge. Use the store's own domain instead.

Does it detect every installed app? No. It recognises a conservative list of public app signatures; an app missing from detectedApps may still be installed.

Do I need a proxy? Usually not. Direct HTTP is the default. If a store blocks automated access, you can enable an Apify proxy for the store websites.

Limitations

  • Some stores block automated access, hide contacts behind forms or publish no email at all.
  • Contact details shown only by JavaScript widgets may not be visible to this HTTP-based enrichment.
  • Location is what the storefront publishes; shipping regions are not presented as the merchant's location.
  • App detection is signature-based and not exhaustive. Headless Shopify storefronts may not be detected.
  • Product samples are short. Counts are exact only when the store publishes them or the full catalogue fits in one page.

Responsible use

The Actor reads publicly accessible storefront information only. It does not log in, access Shopify Admin, or collect order or customer data. You are responsible for complying with website terms, privacy and marketing law, and for honouring opt-out requests.

About Zapticx

Built and maintained by Zapticx. Need another field or a custom dataset? Open an issue on the Actor's Issues tab.

Disclaimer: This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Shopify Inc. Shopify is a trademark of Shopify Inc.