Shopify Store Leads Scraper

Enrich public Shopify merchant domains with contacts, social links, public pages, storefront diagnostics, and bounded product context.

Data fields

FieldTypeDescription
domainstringValue exported as domain.
storeUrlstringValue exported as storeUrl.
sourceUrlstringValue exported as sourceUrl.
sourceRankintegerValue exported as sourceRank.
myshopifyDomainstring | nullValue exported as myshopifyDomain.
shopifyDetectedbooleanValue exported as shopifyDetected.
titlestring | nullValue exported as title.
descriptionstring | nullValue exported as description.

Input preview

startUrlsShopify Examples pages
maxItemsMaximum leads
enrichStorefrontsEnrich storefronts
maxEnrichmentPagesPerStoreExtra pages per store
skipPreviouslyScrapedSkip previously scraped domains
requestTimeoutSecsRequest timeout (seconds)

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

Ready-to-run examples

Open a saved Apify example, adjust the input, and run the actor in your own Apify account.

View all examples

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Discover public Shopify merchant domains and export contact-ready lead rows with source provenance, storefront metadata, emails, phones, and social profiles. Use repeat runs to refresh ecommerce prospect lists without accessing Shopify admin, customers, orders, checkout, or account data.

Who is it for

Built for B2B sales teams, Shopify app vendors, ecommerce agencies, partnership teams, and market researchers who need repeatable public merchant lead exports.

What you get

  • Curated public Shopify merchant domains from Shopify's official Examples directory
  • Shopify Examples source URL and deterministic document-order rank on every lead
  • Normalized storefront URL and public Shopify detection
  • Public storefront title, description, emails, phones, and directly linked social profiles
  • Explicit enrichment status and failure reason, so partial leads are preserved rather than silently dropped
  • Persistent domain deduplication for scheduled lead-list refreshes

Example input

{
  "startUrls": [{ "url": "https://www.shopify.com/examples" }],
  "maxItems": 10,
  "enrichStorefronts": true,
  "maxEnrichmentPagesPerStore": 2,
  "skipPreviouslyScraped": false
}

Example output

{
  "domain": "mollyjogger.com",
  "storeUrl": "https://www.mollyjogger.com/",
  "sourceUrl": "https://www.mollyjogger.com/",
  "sourceRank": 1,
  "myshopifyDomain": null,
  "shopifyDetected": true,
  "title": "Fashion Nova | Trendy Clothes for Women, Men & Plus Sizes",
  "description": "Trend-first fashion for every body.",
  "emails": [],
  "phones": [],
  "socialLinks": {
    "instagram": ["https://www.instagram.com/fashionnova/"],
    "facebook": ["https://www.facebook.com/Fashionnova/"]
  },
  "enrichmentStatus": "ok",
  "failureReason": null,
  "scrapedAt": "2026-08-20T22:13:36.669Z",
  "sourceCapturedAt": "2026-08-20T22:13:35.830Z"
}

Shopify lead scraper use cases

Use the Actor as a Shopify lead scraper, a scheduled Shopify stores scraper, or a public-data alternative to a Shopify store finder API.

  • Shopify app sales: refresh merchant prospect lists for public, relevant outreach.
  • Ecommerce agencies: identify storefronts that may need design, development, SEO, or retention services.
  • Partnership teams: export merchant domains and public social profiles for partner research.
  • Market research: compare public Shopify-hosted merchant populations over time.
  • Scheduled lead refreshes: enable skipPreviouslyScraped to avoid saving and charging duplicate domains across runs that share the same key-value store.

Input settings

Setting JSON key Description Default
Shopify Examples pages startUrls Optional Shopify-owned public Examples URLs. https://www.shopify.com/examples
Maximum leads maxItems Unique lead rows to save. 25
Enrich storefronts enrichStorefronts Fetch public storefront pages for metadata and contacts. true
Extra pages per store maxEnrichmentPagesPerStore Maximum same-site contact/about/support pages. 2
Skip previous domains skipPreviouslyScraped Persist and skip domains already saved in the same key-value store. false
Request timeout requestTimeoutSecs Per-request timeout in seconds. 20
Require Shopify signal failOnNoShopifySignal Save only enriched storefronts with a public Shopify marker. false

Tips and limits

  • Start with source-only mode for fast domain exports; enable enrichment when contact and social signals are needed.
  • Public storefront fields vary. Empty contact arrays mean no matching public value was found within the configured page limit.
  • failOnNoShopifySignal requires enrichment and may reduce output when storefronts block requests.
  • The Actor discovers curated merchant examples from Shopify-owned public Examples pages. It deduplicates domains and fails clearly when a source page unexpectedly contains no merchant links.
  • This Actor does not provide keyword/category/country search, verified emails, payment methods, private analytics, full products, customer data, or order data.

API usage

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/shopify-store-leads-scraper').call({
  maxItems: 10,
  enrichStorefronts: true
});
console.log(run.defaultDatasetId);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('fetch_cat/shopify-store-leads-scraper').call(run_input={
    'maxItems': 10,
    'enrichStorefronts': True,
})
print(run['defaultDatasetId'])

cURL

curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~shopify-store-leads-scraper/runs?token=YOUR_APIFY_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"maxItems":10,"enrichStorefronts":true}'

MCP and AI agents

Connect through the Apify MCP Server:

claude mcp add apify --transport http 'https://mcp.apify.com?tools=fetch_cat/shopify-store-leads-scraper'

Or add the server to your MCP client configuration:

{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=fetch_cat/shopify-store-leads-scraper"
    }
  }
}

Example prompts:

  • “Export 25 public Shopify merchant leads with contact enrichment.”
  • “Refresh this scheduled Shopify lead dataset and skip domains already saved.”
  • “Show leads with public Instagram profiles and successful enrichment.”

Support

Open an issue from the Actor page and include the run URL, input, expected behavior, and one reproducible public source or storefront URL.

Common questions

Questions and answers reused from the canonical actor README.

What data can I export with Shopify Store Leads Scraper?

You can export merchant domains, storefront URLs, source provenance, public metadata, emails, phones, social profiles, Shopify detection, and enrichment diagnostics as JSON, CSV, Excel, XML, or through the dataset API.

Can I run Shopify Store Leads Scraper through an API, schedule, or MCP client?

Yes. Use the API and MCP examples above, or create an Apify schedule with persistent storage to refresh leads and skip previously saved domains.

How much does it cost to use Shopify Store Leads Scraper?

The Actor charges once when a run starts and once per unique result saved. Current plan-specific rates and volume discounts are shown on the live Pricing tab.

Can I export the leads to CSV or Excel?

Yes. Apify datasets can be downloaded as JSON, CSV, Excel, XML, or accessed through the API.

Why is a lead marked partial or failed?

A storefront or one of its public contact pages may time out, block access, or omit expected fields. The source lead is retained with enrichmentStatus and failureReason so discovery work is not lost.