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
skipPreviouslyScrapedto 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.
failOnNoShopifySignalrequires 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.