Shopify Merchant Scraper: Verified Contacts & Lead Rating avatar

Shopify Merchant Scraper: Verified Contacts & Lead Rating

Pricing

from $4.99 / 1,000 results

Go to Apify Store
Shopify Merchant Scraper: Verified Contacts & Lead Rating

Shopify Merchant Scraper: Verified Contacts & Lead Rating

Shopify Merchant Scraper finds Shopify store owners and merchants, extracting verified business contacts, emails, store details, social profiles, and lead ratings. Build targeted ecommerce lead lists for sales, outreach, prospecting, and market research.

Pricing

from $4.99 / 1,000 results

Rating

0.0

(0)

Developer

API Empire

API Empire

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Shopify Merchant Scraper — Contacts, Identity & Lead Scores

Shopify merchant scraper that turns a list of storefront URLs into a qualified B2B lead sheet: a verified merchant-identity block, the published email/phone and 7-platform social links each store makes public, an honest storefront-reachability status, and a non-AI lead-quality score. Every field is read live from the storefront itself — nothing is looked up in a stale contact database. Output is typed, normalized JSON with stable field names, so it drops straight into a CRM, a spreadsheet, or an LLM context window with no HTML and no parsing step. Paste in your prospect list and this actor tells you who's real, how to reach them, and which ones to call first.


What is Shopify Merchant Scraper: Verified Contacts & Lead Rating?

It's an Apify actor that qualifies Shopify storefronts as B2B leads. You give it a list of store URLs; for each one it returns a verified merchant-identity block (real merchant name, myshopify.com domain, city/region, verified published product and collection counts), the contact details and social profiles the store publishes on its own pages, and — optionally — a deterministic 0–100 lead-quality score. No Shopify account, Admin API access, or login is required: every field comes from a storefront's public, unauthenticated pages.

  • Verify merchant identity (name, myshopify domain, city/region, catalogue size)
  • Extract published email and phone contact details
  • Detect 7 social platforms per store (Instagram, Facebook, X/Twitter, TikTok, YouTube, Pinterest, LinkedIn)
  • Score and rank leads with a transparent, non-AI 0–100 quality score
  • Export as JSON, CSV, Excel or the other formats Apify datasets support

What data does Shopify Merchant Scraper: Verified Contacts & Lead Rating collect?

Every run returns one row per storefront, built from four distinct data blocks:

Data TypeKey FieldsJSON Field Names
Merchant identityVerified name, myshopify domain, city/region, catalogue size, payment optionsmerchantName, myshopifyDomain, merchantCity, merchantProvince, publishedProductsCount, publishedCollectionsCount, acceptedCardBrands, offersShopPayInstallments
Contact & social dataPublished email/phone, 7 social platform links, contactability flagsemail, phone, facebook, instagram, twitter, tiktok, youtube, pinterest, linkedin, hasEmail, hasPhone, socialPlatformCount
Lead quality scoreDeterministic score, quality tierleadQualityScore, leadQualityLabel, leadQuality
Storefront status & tech stackReachability, theme, detected appsstorefrontStatus, themeName, themeVersion, installedApps, installedAppsCount

Need more Shopify data?

If you need the products themselves rather than the merchants who sell them, pair this actor with Shopify Products Scraper By Collection & Keyword for per-listing catalogue data, Shopify Store Scraper: Product Catalogue Data for full catalogue exports, or Shopify Scraper: Stock, Images & Product Updates for stock and image-level monitoring — all published under the API-Empire account.


How does Shopify Merchant Scraper: Verified Contacts & Lead Rating differ from the official Shopify API?

Shopify's Storefront API and Admin API are both scoped to a single store: a call authenticates against one shop using an access token that shop itself issues. There is no Shopify endpoint that lets you query data about a store you don't own or administer, and no bulk mechanism for pulling the same fields across many unrelated merchants at once (confirmed against Shopify's own Storefront API documentation, checked 2026-08-15). This actor is built for the opposite use case: qualifying other people's storefronts as leads, using only what each store already publishes on its public pages.

FeatureShopify Storefront/Admin APIThis actor
Cross-merchant queryingNot supported — one token per store, issued by that storeAny number of unrelated stores in one run
Authorization neededStore-issued access token requiredNone — public pages only
Lead-quality scoringNot providedBuilt in, deterministic, optional
Social-profile detectionNot provided7 platforms per store
Output shapeRaw GraphQL/REST responses per storeOne normalized JSON row per store
SetupPer-store token issuancePaste URLs and run

If you already operate the store in question and need its own Admin/Storefront data (inventory, orders, checkout), the official API is the right tool. If you need to qualify a list of someone else's storefronts as sales or partnership leads, that's what this actor is for.


Why do developers and teams scrape Shopify merchants?

For sales and agency outbound teams

Feed in a scraped or purchased list of Shopify domains and get back a ranked, contactable shortlist. Filter with minLeadQuality: "hot" to work the best-fit accounts first, or requireContactInfo: true so every row in the dataset has a usable email or phone before a rep ever opens it.

For AI engineers and agent builders

Because output is typed JSON with stable field names (leadQualityScore, hasEmail, socialPlatformCount), a lead-qualification agent can call this actor as a tool, read the score straight into its decision logic, and route only hot leads to a CRM-write step — no HTML parsing between the scrape and the model.

For market and partnership researchers

publishedProductsCount, shipsToCountries, acceptedCardBrands and installedApps give a verified snapshot of a merchant's real scale and tech stack — useful for vetting a wholesale partner or benchmarking a competitor set before an introduction, without guessing from marketing copy.

For developers building data products

The actor's PPE-per-row pricing and stable output schema make it a clean building block for a lead-enrichment pipeline or a CRM-sync job: schedule it, pipe the dataset to a webhook, and let downstream code key off leadQualityLabel without re-parsing anything.


How to scrape Shopify merchant leads (step by step)

  1. Open Shopify Merchant Scraper: Verified Contacts & Lead Rating on its Apify Store listing and click Try for free (an Apify account is required to run any actor).
  2. Paste your storefront URLs into prospectUrls — bulk paste, file upload, or piped from another actor. No parameter is strictly required; leaving it empty and providing startUrls instead also works.
  3. Set minLeadQuality and requireContactInfo if you only want warm/hot or contactable rows kept in the dataset, and toggle includeVerifiedIdentity / includeLeadRating if you want to skip either block.
  4. Click Start and watch rows arrive in the Output tab in real time — each store's row is pushed the moment it's scraped.
  5. Download results as JSON, CSV, Excel, or any format the Apify dataset export supports, or pull them via the API.

What to do when Shopify changes its structure

The actor reads from Shopify's own storefront HTML and /meta.json endpoint, which are maintained as part of the platform's public front end. The output schema — field names and types — stays stable on your end even when the underlying page markup changes, so downstream integrations keep working without code changes.


⬇️ Input

ParameterRequiredTypeDescriptionExample Value
prospectUrlsNoarrayOne or more Shopify storefront URLs (e.g. https://kyliecosmetics.com/). Bulk paste, upload a list, or pipe from another actor.["https://kyliecosmetics.com/"]
startUrlsNoarrayKept so input files built for the base Shopify Merchant Scraper keep working unchanged. Used only when prospectUrls above is empty.[]
maxLeadsNointeger (min 1, max 10000)Hard cap on how many of the provided store URLs will be processed. Use this to keep small test runs cheap.100
maxItemsNointeger (default 100, min 1, max 10000)Legacy alias of maxLeads, kept for input files built for the base actor. Used only when maxLeads above is not set.100
concurrencyNointeger (default 10, min 1, max 50)How many storefronts are scraped at the same time. Higher = faster, but more likely to trigger a store's own rate limiting.10
requestDelayNonumber (default 0.5, min 0, max 10)A small polite pause between requests to the same storefront, in seconds.0.5
includeVerifiedIdentityNoboolean (default true)Adds myshopifyDomain, merchantName, merchantDescription, merchantCity/Province, publishedProductsCount/publishedCollectionsCount, shipsToCountries, acceptedCardBrands, theme identity and a basic installed-app inventory — all read from the same request the actor already makes for currency, at zero extra cost.true
includeLeadRatingNoboolean (default true)Adds a non-AI, non-fabricated 0-100 leadQualityScore and a cold/warm/hot leadQualityLabel, derived only from confirmed-real signals already on the row: published email, published phone, number of social platforms linked, and whether the storefront is open.true
minLeadQualityNostring, enum: any | warm | hot (default any)Drop rows below this quality tier from the dataset. Only takes effect when the score above is on."warm"
requireContactInfoNoboolean (default false)When on, a row is only kept in the dataset if the store published a usable email or phone number.false
proxyConfigurationNoobject (default {"useApifyProxy": false})Use Apify Proxy, custom proxy URLs, or no proxy.{"useApifyProxy": false}

No parameter is marked required in the input schema — the actor also accepts startUrls/maxItems, the base actor's original field names, so an input file built for the base Shopify Merchant Scraper runs unchanged.

Example JSON input:

{
"prospectUrls": ["https://kyliecosmetics.com/", "https://gymshark.com/"],
"maxLeads": 500,
"concurrency": 10,
"requestDelay": 0.5,
"includeVerifiedIdentity": true,
"includeLeadRating": true,
"minLeadQuality": "warm",
"requireContactInfo": true,
"proxyConfiguration": { "useApifyProxy": false }
}

Common pitfall: setting requireContactInfo: true or minLeadQuality above any filters rows out of the dataset entirely rather than just hiding them — those stores are still fetched (and still charged, see Output below) but their row never appears in your results, so a run against 500 URLs can legitimately return far fewer than 500 dataset rows.


⬆️ Output

Every result is typed, normalized JSON — no HTML, no selectors. Export as JSON, CSV, Excel, XML, or the other formats Apify dataset exports support.

Scraped merchant lead

{
"storeName": "Kylie Cosmetics by Kylie Jenner | Kylie Jenner Fragrances | Kylie Skin",
"domain": "kyliecosmetics.com",
"email": "customerservice@kyliecosmetics.com",
"phone": "833-545-9543",
"facebook": "https://www.facebook.com/KylieCosmetics",
"instagram": "https://www.instagram.com/kyliecosmetics",
"twitter": "https://twitter.com/kyliecosmetics",
"productCount": 238,
"currency": "USD",
"url": "https://kyliecosmetics.com/",
"scrapedAt": "2026-08-13T07:14:59.082Z",
"tiktok": "https://www.tiktok.com/@kyliecosmetics",
"youtube": null,
"pinterest": null,
"linkedin": null,
"storefrontStatus": "open",
"myshopifyDomain": "kylie-jenner-us.myshopify.com",
"merchantName": "Kylie Cosmetics",
"merchantDescription": "Shop Kylie Cosmetics by Kylie Jenner...",
"merchantCity": "New York",
"merchantProvince": "New York",
"publishedProductsCount": 238,
"publishedCollectionsCount": 226,
"moneyFormat": "${{amount}}",
"shipsToCountries": ["US", "CA", "AU", "MX"],
"acceptedCardBrands": ["visa", "master", "american_express", "discover", "diners_club"],
"offersShopPayInstallments": true,
"themeName": "KYLIE",
"themeVersion": "1473863",
"installedApps": ["attentive", "klaviyo-email-marketing-sms", "yotpo-loyalty-rewards"],
"installedAppsCount": 3,
"themeAppExtensions": ["klaviyo-email-marketing-sms"],
"appProxyHandles": ["attentive", "yotpo-loyalty-rewards"],
"appCount": 3,
"hasEmail": true,
"hasPhone": true,
"socialPlatformCount": 4,
"leadQualityScore": 100,
"leadQualityLabel": "hot",
"leadQuality": "high"
}

Every key the actor writes to a row: storeName, domain, email, phone, facebook, instagram, twitter, productCount, currency, url, scrapedAt, tiktok, youtube, pinterest, linkedin, storefrontStatus, myshopifyDomain, merchantName, merchantDescription, merchantCity, merchantProvince, publishedProductsCount, publishedCollectionsCount, moneyFormat, shipsToCountries, acceptedCardBrands, offersShopPayInstallments, themeName, themeVersion, installedApps, installedAppsCount, themeAppExtensions, appProxyHandles, appCount, hasEmail, hasPhone, socialPlatformCount, leadQualityScore, leadQualityLabel, leadQuality — 39 fields, all present on the dataset's default "Verified Leads" view. storefrontStatus is one of open, password_protected, no_public_catalogue or unreachable. leadQualityLabel (cold/warm/hot, 0–100 scale) and leadQuality (none/low/medium/high, 0–4 signal count) are two independently computed scores kept side by side for base-actor compatibility — use whichever tier system fits your pipeline. Fields the actor cannot confirm are returned as null (or []/0 for list/count fields), never guessed or fabricated.


How does Shopify Merchant Scraper: Verified Contacts & Lead Rating compare to other Shopify scrapers?

FeatureThis actorGeneric alternative
Output formatTyped, normalized JSON row per store✅/❌ varies — many DIY scripts return raw HTML or a partial dict
Lead-quality scoringDeterministic, non-AI 0–100 score built in❌ typically absent, or an opaque AI score
Entity coverage per rowIdentity + contacts + 7 socials + tech stack + score in one row❌ usually one signal type per tool, requiring multiple scrapers stitched together
Base-actor input compatibilitystartUrls/maxItems from the base Shopify Merchant Scraper still work unchanged❌ not applicable to unrelated tools
Proxy/anti-bot handlingAutomatic direct → datacenter → residential escalation on block⚠️ varies — many scripts fail outright on a 403/429

If you're building an AI agent or RAG pipeline, the output format row is the decision-maker — parsing HTML inside an agent loop is a reliability failure mode, not a feature.


How many leads can you scrape with Shopify Merchant Scraper: Verified Contacts & Lead Rating?

maxLeads (and its legacy alias maxItems) caps a single run at up to 10,000 storefronts; there is no pagination inside the actor beyond the URL list you provide — one row is produced per URL, up to that cap. Rows filtered out by requireContactInfo or minLeadQuality are excluded from the dataset (not just hidden), so the number of rows you see can be lower than the number of URLs you submitted even though every URL was fetched. No benchmark run time or throughput figure is published for this actor — actual duration depends on concurrency, requestDelay, and how quickly each target storefront responds.


Integrate Shopify Merchant Scraper: Verified Contacts & Lead Rating and automate your workflow

Shopify Merchant Scraper: Verified Contacts & Lead Rating works with any language or tool that can send an HTTP request, since it runs on the Apify platform's standard actor-run API.

REST API integration

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_API_TOKEN>")
run = client.actor("<actor-id>").call(run_input={
"prospectUrls": ["https://kyliecosmetics.com/"],
"includeLeadRating": True,
"minLeadQuality": "warm",
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["merchantName"], item["leadQualityLabel"], item["email"])

Works in Python, Node.js, Go, Ruby, cURL.

Automation platforms (n8n, Make, LangChain)

In n8n, the Apify node's "Run Actor and get dataset" operation runs this actor by ID and returns the dataset for downstream nodes. In Make, the Apify app's "Run an Actor" module does the same for a scenario. In LangChain, the ApifyWrapper calls the actor and loads its dataset directly into a document loader for agent or RAG use.


Yes — scraping publicly accessible storefront pages is generally lawful. Shopify Merchant Scraper: Verified Contacts & Lead Rating returns only data a store has already made public on its own homepage, contact pages, or /meta.json catalogue metadata; nothing behind a login or password gate is accessed (a password-protected store is flagged as password_protected, not bypassed). The primary output — merchant identity, catalogue size, tech stack — is business and product data, governed by Shopify's and each merchant's own terms of service and database rights, not personal-data regimes. Some rows also include a store's published business contact email or phone; if you use that data for outreach, apply the same care you would to any published business contact — consult legal counsel for commercial use cases involving bulk personal data.


Frequently asked questions

Does Shopify Merchant Scraper: Verified Contacts & Lead Rating work without a Shopify account?

Yes. No Shopify account, Admin API access, or login is required — every field is read from a storefront's public, unauthenticated pages (homepage, contact/policy pages, and /meta.json).

How often is the scraped data updated?

Every field is fetched live on each run — there is no cache. scrapedAt records the exact timestamp of that fetch, so re-running the actor against the same URL always reads the storefront's current state.

What happens if a store is unreachable or has no public catalogue?

The row is still returned, with storefrontStatus set to unreachable or no_public_catalogue and the fields the actor couldn't confirm left as null — never a fabricated guess. A store that gates its homepage behind a password shows storefrontStatus: "password_protected" instead of a silent empty row.

Can I scrape private or password-protected Shopify storefronts?

No. Only publicly accessible storefront pages are read. A password-gated store is detected via its own unlock-form marker and flagged as password_protected — the actor does not attempt to bypass it.

Do I need an Apify account to run this actor?

Yes. The actor runs on the Apify platform, so a free Apify account is required to start a run from the Console or via the API.

Does Shopify Merchant Scraper: Verified Contacts & Lead Rating work for AI agent workflows and LLM pipelines?

Yes. It's callable as an HTTP endpoint by any agent framework via apify_client, and every response is typed JSON with stable field names — no HTML parsing step before passing a row to an LLM or vector store.

How does the actor handle Shopify's anti-bot defenses?

It uses an escalating proxy ladder: requests start direct (no proxy), and automatically move to a datacenter tier and then a residential tier only after a store returns a blocked-style response (403/406/407/429/451/503) or a connection failure, with exponential backoff between retries. Once escalated to residential for a store, the actor stays there for the rest of that store's requests.

How does Shopify Merchant Scraper: Verified Contacts & Lead Rating compare to other Shopify scrapers?

See the comparison table above — this actor returns merchant identity, contacts, 7-platform social links, tech stack and a lead-quality score in one row, rather than requiring several single-purpose tools stitched together.

Does this actor return data in a format LLMs can use directly?

Yes. Typed, normalized JSON with stable field names — no HTML, no selectors, no parsing. Pass a row directly into an LLM context window, index it into a vector store, or route it through an agent tool.

Can I use this actor without managing proxies?

Yes. By default the actor makes requests directly (no proxy) and only escalates to Apify Proxy tiers automatically when a store starts blocking it — you don't need to configure or rotate anything yourself, though proxyConfiguration lets you opt into Apify Proxy from the start if you prefer.

What happens when Shopify changes its structure or blocks the scraper?

The actor is maintained, and the output schema stays stable on your end — field names and types don't change even if the underlying storefront markup does. No specific update turnaround is published.


Your feedback

Found a bug, or is a field missing that you need for your lead pipeline? We want to know — reach out through the Apify Console's actor issue/support channel with your run ID and we'll take a look. Reports like these are how this actor's field coverage keeps improving.