Shopify Store Leads Scraper - Owner Emails, Apps & Traffic avatar

Shopify Store Leads Scraper - Owner Emails, Apps & Traffic

Pricing

from $2.00 / 1,000 store search results

Go to Apify Store
Shopify Store Leads Scraper - Owner Emails, Apps & Traffic

Shopify Store Leads Scraper - Owner Emails, Apps & Traffic

Shopify store leads with decision-maker contacts: founder, owner and marketing emails, phones and LinkedIn. Filter stores by country, category, apps, pixels, traffic and Shopify Plus, or enrich domains. Ecommerce leads from a 1M+ Shopify store database. 25 free trial rows.

Pricing

from $2.00 / 1,000 store search results

Rating

0.0

(0)

Developer

StoreInspect

StoreInspect

Maintained by Community

Actor stats

0

Bookmarked

92

Total users

30

Monthly active users

5 days ago

Last modified

Share

Get Shopify store domains, names, countries, categories, detected apps and pixels, traffic and revenue tiers, and contact availability. Export the dataset as JSON, CSV or Excel. No StoreInspect account or API key is needed.

How to get Shopify store leads

In Apify Console, choose Try real stores, select a country or category, and click Start. Or paste this into the Console's JSON input editor:

{
"mode": "trial_stores",
"country": "US",
"category": "beauty",
"limit": 5
}

Open the run's Dataset tab to see real store rows. The OUTPUT record contains the remaining trial allowance and whether the response was replayed. This is a Console input, not an HTTP request body for a different service.

How much do Shopify store leads cost?

Every verified Apify account, including free-plan accounts, can receive 25 store rows in total, with at most 25 per request. The allowance is stored by StoreInspect and shared across runs and saved tasks. Changing the result count or starting concurrent runs does not reset it.

The trial includes store identity, country/category, traffic and revenue tiers, Shopify Plus signals, apps/pixels, theme, and aggregate contact availability. It does not include individual contact previews, names, emails, phone numbers or LinkedIn URLs. Traffic and revenue tiers are estimates; Plus and technology fields are detection signals.

Identical trial input returns the same saved rows, including after the allowance is used. It does not refresh the data or spend more allowance. The retrieval timestamp is in OUTPUT. Stores no longer visible in the catalog are omitted on replay. Different searches consume the remaining allowance; a partially covered request returns fewer rows. Up to 20 distinct completed trial searches are allowed, including empty searches. Empty results do not use store rows. Validation and backend failures do not consume allowance. Trial pagination is unavailable.

When no allowance remains for a new search, a standard run finishes with an apify_trial_exhausted notice and status message. A notice is not a store result. Reuse the original input to retrieve its saved rows, or choose search_stores for more data. Store rows are charged to your Apify credit, also on Apify's free plan.

No StoreInspect data events are charged for trial or sample mode. Apify's synthetic Actor-start event and platform usage can still apply according to the pricing shown in Console. The trial is available to the owner and automatic Store tests under the same quota; repeated default inputs replay their real trial rows.

Paid eventPrice
Store search result$0.004 per store ($0.0038 on Scale, $0.0035 on Business and up)
Store enrichment$0.005 per found domain
Contact preview$0.001 per preview
Contact reveal$0.075 per newly revealed contact

Until 8 November 2026, a store search result costs $0.002 on every plan. A five-store paid search costs $0.02 in StoreInspect events, plus applicable Apify charges. Only returned/covered results are delivered; an Apify charge limit can truncate a response. Set the run's maximum charge in Console. Dataset rows do not incur an additional StoreInspect data event. Check Apify's Pricing tab for current prices.

search_stores works on every Apify plan. On the free plan, store rows are charged to the $5 monthly platform credit Apify includes (about 1,250 stores). Enrichment, contact searches and reveals require a paid Apify plan. A successful run, a dataset row, or a charge attempt does not establish paid revenue.

Find Shopify stores by country, category, apps and traffic

Use Country code (such as US), Category, App (such as Klaviyo), and Result count for ordinary searches. App means the store uses that app. Blank controls add no filter. An otherwise empty trial defaults to US stores.

Advanced JSON stays available in filters. Each advanced field takes precedence over the corresponding simple control: countries replaces Country, categories replaces Category, and the entire apps object replaces App, including its any, all or none operators. Other advanced filters combine with the simple controls. An explicit empty advanced field also overrides its simple control. Simple controls work for store and contact searches; enrichment and reveal reject them.

Console input for a paid search:

{
"mode": "search_stores",
"filters": {
"countries": ["US"],
"categories": ["beauty"],
"apps": { "none": ["Klaviyo"] }
},
"limit": 5
}

Supported advanced filters include countries, category slugs, traffic/revenue tiers, Shopify Plus, apps and pixels (any/all/none), contact availability and roles, theme type/outdated status, iOS app availability, checkout signals, active Meta ad count, estimated store creation date and first discovery date. Unsupported or malformed combinations may be rejected; refer to StoreInspect's API filter reference for exact values. query remains an alias for filters in mode-based input. filters takes precedence when both are present.

Paid searches return next_cursor when another page is available. Keep the same filters and result count when passing that cursor. Do not reuse it in trial mode. Searches can return an empty dataset; broaden the filters and retry.

Three ready-to-run Console inputs

These trial examples use two, two and one row respectively, fitting well within a fresh 25-row allowance. If you already used the trial on different inputs, switch to search_stores, charged to your Apify credit. At those limits, paid store-event costs are $0.008, $0.008 and $0.004, respectively, plus applicable Apify charges. No example reveals contacts.

US beauty stores:

{"mode":"trial_stores","country":"US","category":"beauty","limit":2,"push_data":true}

Stores using Klaviyo:

{"mode":"trial_stores","app":"Klaviyo","limit":2,"push_data":true}

Shopify Plus stores with contact availability:

{"mode":"trial_stores","filters":{"shopify_plus":true,"contacts":{"has_revealable_contacts":true}},"limit":1,"push_data":true}

These are real catalog searches; availability changes. Save an input as an Apify task to reuse it. Versioned JSON and the idempotent task-provisioning command are in the repository's examples/ and scripts/example-tasks.mjs. The provisioning script supports a separate --publish step after rollout to publish those tasks with the store-intelligence dataset view.

Enrich a list of Shopify store domains

Console input:

{
"mode": "enrich_domains",
"domains": ["allbirds.com"],
"include": ["store", "technologies"]
}

Enrichment charges for found domains. Add "contact_previews" to include to request separately charged previews. contact_roles and max_contacts_per_store restrict those previews. Enrichment never implicitly reveals contact channels. The domain list controls result count; limit is a search control.

Get Shopify store owner emails and contacts

A store's contacts_summary is aggregate availability. A paid contact preview is an individual masked record with a contact ID, first name, obfuscated last name, role/title and channel-availability flags. It contains no email, phone or LinkedIn URL, even if that contact was previously revealed.

Console input for previews:

{
"mode": "search_contacts",
"country": "US",
"person": { "roles_any": ["founder", "owner"] },
"max_contacts_per_store": 1,
"limit": 3
}

For contact search, advanced store takes precedence over filters, then query. Simple controls fill absent fields in that selected object.

Copy a real contact ID from the preview, then explicitly confirm the reveal. Console input template (replace the placeholder):

{
"mode": "reveal_contacts",
"contact_ids": ["<CONTACT_ID_FROM_PREVIEW>"],
"confirm_spend_credits": true
}

This is a paid action. Available exportable channels are returned only after confirmation and charge verification. Previously revealed contacts for the same Apify user do not incur another reveal charge when StoreInspect can verify the prior reveal. A charge limit can reduce newly revealed contacts. Missing or unusable contacts can cause a request error; use current preview IDs.

Standard runs through the Apify API

The body here is the same Console input. Replace <APIFY_TOKEN> with your own token; keep it private.

curl -X POST 'https://api.apify.com/v2/acts/storeinspect~shopify-store-search/run-sync-get-dataset-items' \
-H 'Authorization: Bearer <APIFY_TOKEN>' \
-H 'Content-Type: application/json' \
-d '{"mode":"trial_stores","country":"US","limit":5}'

Output

Each run saves its response to the OUTPUT record: ok, mode, endpoint, dataset_items_written and result. Store results use result.data[], nested technologies.apps/pixels, and contacts_summary. Trial results additionally include trial.allowance, remaining, queries_remaining, replayed, retrieved_at, exhausted and store_events_charged: 0. This metadata describes the trial and is not payment confirmation.

Dataset rows retain their original nested data and add flat columns: apps become app_names, pixels become pixels, and aggregate contact count becomes contacts_count. Each row includes _storeinspect workflow metadata. push_data:false skips dataset writes; it does not skip allowance or billing.

Explicit mode:"sample" remains available for a synthetic example without live data. Empty input now runs the live trial. Existing tasks explicitly selecting sample keep that behavior.

Troubleshooting

  • Trial exhausted: reuse the original input for its saved rows, or use search_stores, charged to your Apify credit.
  • Paid-plan notice: enrichment, contact previews and reveals require a paid Apify plan.
  • Empty search: use fewer filters; no result does not imply an operational failure.
  • Invalid input: check the mode, filter structure and country code; trial does not accept a cursor.
  • Operational failure: retry the same input. Trial replays avoid consuming allowance twice. Paid quote/reveal reservations protect normal charge retries, but report charged runs with no delivered data through Issues.

For support, include the run ID, requested workflow and approximate time. Do not include tokens or revealed contact data.