Shopify Klaviyo Gap Leads Scraper
Pricing
Pay per event
Shopify Klaviyo Gap Leads Scraper
Find contactable Shopify stores that do not show visible Klaviyo/email-SMS retention tools. Enrich leads with products, contacts, socials, and scoring.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
Find public Shopify stores that appear contactable but do not show visible Klaviyo or email/SMS retention instrumentation. The actor enriches each store with Shopify evidence, product samples, contact signals, social links, detected retention tools, a gap reason, and an opportunity score.
What does Shopify Klaviyo Gap Leads Scraper do?
This actor checks public ecommerce storefronts and returns one lead row per store.
It helps you answer:
- ๐๏ธ Is this domain a public Shopify store?
- ๐ฆ Does
/products.jsonexpose product and price signals? - ๐ง Is there a visible contact email, phone number, contact page, or policy page?
- ๐ฌ Is Klaviyo visible in public HTML/scripts?
- ๐งฐ Are competing retention tools visible instead?
- ๐ฏ Is this a good outreach opportunity for lifecycle, email, or SMS services?
The actor is HTTP-only. It does not log in, use private APIs, or require a browser.
Who is it for?
Ecommerce retention agencies
Use it to build a prospect list of Shopify merchants that may need Klaviyo setup, migration, lifecycle strategy, or SMS/email automation help.
B2B lead-generation teams
Use it to enrich Shopify domains with contact and technology signals before outreach.
Shopify app vendors
Use it to find stores that appear to lack visible retention tooling and could be a fit for your app.
Sales operations teams
Use it to score and prioritize a merchant list before pushing leads into a CRM.
Why use it?
Generic Shopify lead scrapers tell you that a store exists. This actor focuses on a specific buyer pain: missing visible retention/email-SMS instrumentation.
That makes the output more actionable for agencies and SaaS vendors selling lifecycle marketing services.
How the detection works
For each domain, the actor:
- Normalizes the URL.
- Fetches the public homepage.
- Checks Shopify markers such as
cdn.shopify.com,Shopify.theme,myshopify.com, and cart/product endpoints. - Fetches
/products.jsonwhen available. - Scans contact/about/policy pages.
- Extracts public emails, phones, social links, and legal/address hints.
- Searches public HTML/scripts for Klaviyo and related retention tools.
- Calculates
gapReasonandopportunityScore.
What retention tools are detected?
The actor checks public HTML/script markers for:
- Klaviyo
- Attentive
- Omnisend
- Mailchimp
- Postscript
- Yotpo SMS / SMSBump
- Privy
- Justuno
- Sendlane
- Drip
Tool detection is based on visible public scripts/domains and should be treated as a strong public signal, not a complete private-tech-stack audit.
Data you can extract
| Field | Description |
|---|---|
storeUrl | Input/normalized storefront URL |
domain | Store domain |
status | ok, not_shopify, blocked, or error |
isShopify | Whether public evidence indicates Shopify |
platformEvidence | Signals proving Shopify detection |
productCount | Count of sampled products from /products.json |
sampleProducts | Product title, handle, URL, type, vendor, price range, availability |
currency | Currency marker when visible |
priceMin, priceMax | Price range from sampled products |
emails, phones | Public contact signals |
contactUrls, aboutUrls, policyUrls | Useful public store pages |
socialLinks | Public social profile URLs |
addressHints | Legal/address snippets when visible |
klaviyoDetected | Whether Klaviyo markers are visible |
retentionToolsDetected | Other retention tools detected |
gapReason | Human-readable reason for the lead status |
opportunityScore | 0-100 score for outreach fit |
pagesScanned | Number of pages fetched and scanned |
scannedAt | ISO timestamp |
How much does it cost to find Shopify Klaviyo gap leads?
The actor uses pay-per-event pricing:
- Start event: $0.005 per run.
- Store lead saved event: tiered per result row. BRONZE is $0.00034302 per store row (about $0.34 per 1,000 rows), with lower prices on higher Apify tiers.
The default test input is intentionally small so your first run is inexpensive. For large prospecting lists, set maxStores to the number of domains you want to analyze.
Input options
storeUrls
Add Shopify store domains or URLs directly.
Examples:
[{ "url": "https://www.allbirds.com" },{ "url": "gymshark.com" }]
discoveryUrls
Optional public pages to scan for outbound merchant links. This is useful when you have a directory page or a list of brand websites.
maxStores
Caps unique store domains processed in the run.
maxProductsPerStore
Controls product sampling depth from /products.json.
maxPagesPerStore
Controls how many public pages are scanned for contact, social, policy, and retention-tool signals.
proxyConfiguration
Optional. Start without proxy. If some stores block direct requests, use Apify proxy settings.
Example input
{"storeUrls": [{ "url": "https://www.allbirds.com" },{ "url": "https://www.gymshark.com" }],"maxStores": 2,"maxProductsPerStore": 5,"maxPagesPerStore": 4,"requestTimeoutSecs": 20,"proxyConfiguration": { "useApifyProxy": false }}
Example output
{"storeUrl": "https://www.allbirds.com","domain": "allbirds.com","status": "ok","isShopify": true,"klaviyoDetected": false,"retentionToolsDetected": [],"gapReason": "Shopify store appears contactable and no visible retention/email-SMS tool was detected.","opportunityScore": 85,"emails": ["help@example.com"],"productCount": 5}
How to run on Apify
- Open the actor on Apify.
- Paste Shopify store domains into
storeUrls. - Keep the default limits for a quick test.
- Click Start.
- Download the dataset as JSON, CSV, Excel, or use the API.
Tips for better results
- โ Provide clean store domains when possible.
- โ
Keep
maxPagesPerStoreat 4-8 for fast enrichment. - โ Use direct store lists for the highest precision.
- โ
Review
gapReasonbefore outreach. - โ ๏ธ Treat missing Klaviyo as a public visibility signal, not a guarantee that the merchant has no private integrations.
Integrations
You can connect the output to:
- Google Sheets for prospect review.
- HubSpot or Salesforce for sales workflows.
- Clay for enrichment and email finding.
- Make or Zapier for automated routing.
- A data warehouse for market mapping.
API usage with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/shopify-klaviyo-gap-leads-scraper').call({storeUrls: [{ url: 'https://www.allbirds.com' }],maxStores: 1});console.log(run.defaultDatasetId);
API usage with Python
from apify_client import ApifyClientclient = ApifyClient('MY-APIFY-TOKEN')run = client.actor('automation-lab/shopify-klaviyo-gap-leads-scraper').call(run_input={'storeUrls': [{'url': 'https://www.allbirds.com'}],'maxStores': 1,})print(run['defaultDatasetId'])
API usage with cURL
curl "https://api.apify.com/v2/acts/automation-lab~shopify-klaviyo-gap-leads-scraper/runs?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"storeUrls":[{"url":"https://www.allbirds.com"}],"maxStores":1}'
MCP usage
Use this actor from Claude or other MCP clients through Apify MCP:
https://mcp.apify.com/?tools=automation-lab/shopify-klaviyo-gap-leads-scraper
Add the Apify MCP server in Claude Desktop or Claude Code:
$claude mcp add apify --url "https://mcp.apify.com/?tools=automation-lab/shopify-klaviyo-gap-leads-scraper"
JSON configuration example:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?tools=automation-lab/shopify-klaviyo-gap-leads-scraper"}}}
Example prompts:
- "Check these Shopify domains for visible Klaviyo and rank them by opportunity score."
- "Find contactable Shopify stores that do not show Klaviyo scripts."
- "Summarize which stores already use competing SMS/email tools."
Legality and ethical use
This actor collects publicly available website data. You are responsible for using the results lawfully, respecting applicable privacy, marketing, anti-spam, and data-protection rules, and honoring opt-out requests.
FAQ
Is this a private Klaviyo audit?
No. It only checks public storefront HTML, scripts, links, and Shopify endpoints. Treat the output as a public lead signal, not proof of a merchant's private marketing stack.
Can I use this for cold outreach?
You are responsible for complying with applicable email, SMS, privacy, and anti-spam rules in your jurisdiction. Use the data for legitimate business research and honor opt-out requests.
Troubleshooting
Why is a known Shopify store marked blocked?
Some merchants block automated requests or geographies. Try enabling Apify proxy, reduce request depth, or run again later.
Why is klaviyoDetected false when the brand uses Klaviyo?
The actor detects public HTML/script markers. A brand may use server-side, tag-manager-only, or region-specific integrations that are not visible in the fetched public pages.
Why are there no emails?
Many stores hide emails behind contact forms. Check contactUrls and socialLinks for alternative outreach paths.
Related scrapers
- https://apify.com/automation-lab/shopify-store-leads-scraper
- https://apify.com/automation-lab/myip-ms-shopify-stores-scraper
- https://apify.com/automation-lab/website-tech-stack-detector
Output quality notes
The actor favors explicit status fields over hard failures. If one store is blocked or not Shopify, the run continues and saves a diagnostic row.
Performance notes
The implementation is HTTP-only and runs at 512 MB by default. It avoids Playwright to keep costs low and throughput high.
Changelog
0.1Initial build: direct store/domain input, optional discovery URL scanning, Shopify evidence, product samples, contact/social extraction, retention-tool detection, gap reason, and opportunity scoring.