# Shopify Scraper - Extract Products, Emails & Tech Stack (`leado/shopify-store-scraper`) Actor

Scrape any Shopify store to extract products, prices, emails, phone numbers, and detect tech stack. Perfect for lead generation and competitor analysis.

- **URL**: https://apify.com/leado/shopify-store-scraper.md
- **Developed by:** [Leado](https://apify.com/leado) (community)
- **Categories:** E-commerce, Lead generation, Automation
- **Stats:** 51 total users, 1 monthly users, 100.0% runs succeeded, 2 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.0005 / actor start

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Shopify Scraper - Extract Products, Emails & Tech Stack

[![Leado](https://img.shields.io/badge/Developed_by-Leado-FF6B00?style=for-the-badge\&logo=leado)](https://leado.co)

Extract **emails**, **phone numbers**, **social profiles**, and **tech stack** (Klaviyo, Yotpo, Recharge) from any Shopify store. Spy on competitors' products, best sellers, and pricing. Perfect for **lead generation**, **competitor analysis**, and **marketing agencies**.

### What does this Shopify scraper do?

This Actor analyzes Shopify stores to extract valuable business intelligence:

- **📧 Contact Information** - Emails, phone numbers, and social media profiles (Facebook, Instagram, TikTok, Twitter, Pinterest, YouTube)
- **🔧 Tech Stack Detection** - Identifies 80+ apps including Klaviyo, Gorgias, Klarna, Yotpo, Recharge, Nosto, Algolia, and more
- **📦 Product Catalog** - Complete product list with pricing, variants, images, and best sellers
- **💰 Pricing Intelligence** - Average prices, price ranges, compare-at prices
- **🏪 Store Insights** - Single product or collection analysis

### Why use Shopify Scraper - Extract Products, Emails & Tech Stack?

#### For Lead Generation

- Find decision-maker emails from Shopify stores
- Build targeted lists of e-commerce businesses
- Identify stores using specific apps (e.g., all Klaviyo users)

#### For Competitor Analysis

- Spy on competitor product catalogs and pricing
- Track what apps your competitors are using
- Monitor best sellers and product changes

#### For Marketing Agencies

- Research potential clients' tech stacks
- Prepare personalized pitches with relevant insights
- Identify stores that need your services

#### For Dropshipping Research

- Find successful stores in your niche
- Analyze pricing strategies
- Discover trending products

### Features

| Feature                  | Description                                                  |
| ------------------------ | ------------------------------------------------------------ |
| ✅ Email Extraction      | Finds all emails from mailto: links and page content         |
| ✅ Phone Numbers         | Extracts phone numbers from tel: links                       |
| ✅ Social Profiles       | Facebook, Instagram, TikTok, Twitter, Pinterest, YouTube     |
| ✅ 80+ App Detection     | Klaviyo, Gorgias, Klarna, Nosto, Algolia, Fomo, and 75+ more |
| ✅ Full Product Catalog  | All products with pricing, images, variants                  |
| ✅ Best Sellers          | Top 3 products (by Shopify's default ordering)               |
| ✅ Single Product Lookup | Fetch specific product by handle                             |
| ✅ Collection Scraping   | Get all products from a specific collection                  |
| ✅ Cloudflare Bypass     | Browser impersonation to avoid blocks                        |
| ✅ JSON/CSV Export       | Easy integration with your tools                             |

### Detected Apps & Tech Stack (80+ Apps)

#### Email Marketing

- Klaviyo, Mailchimp, Omnisend, Attentive, HubSpot, Resend, Drip, ConvertKit, ActiveCampaign, Sendlane

#### SMS Marketing

- Postscript, SMSBump, Attentive SMS, Voyage SMS, Recart

#### Reviews & UGC

- Yotpo, Loox, Judge.me, Okendo, Stamped, Reviews.io, Trustpilot

#### Subscriptions

- Recharge, Bold Subscriptions, Skio, Yotpo Subscriptions, Appstle

#### Analytics & Tracking

- Facebook Pixel, Google Analytics 4, Universal Analytics, TikTok Pixel, Triple Whale, Segment, Heap, Hotjar, Lucky Orange, Microsoft Clarity

#### Buy Now Pay Later (BNPL)

- PayPal, Klarna, Afterpay, Affirm, Shop Pay, Amazon Pay, Sezzle, Zip (Quadpay)

#### Customer Support & Live Chat

- Gorgias, Tidio, Intercom, Zendesk, Crisp, Re:amaze, Drift, LiveChat

#### Loyalty & Rewards

- Smile.io, LoyaltyLion, Yotpo Loyalty, Rise.ai, Stamped Loyalty

#### Shipping & Tracking

- AfterShip, Route, Narvar, Malomo, ShipBob

#### Upsell & Cross-sell

- Privy, Justuno, ReConvert, OptinMonster, Wheelio, Rebuy, Zipify, Bold Upsell

#### Search & Discovery

- Searchanise, Klevu, SearchSpring, Algolia, Boost Commerce

#### Personalization

- Nosto, Dynamic Yield, LimeSpot, Barilliance

#### Social Proof

- Fomo, Prove Source, Nudgify, Sales Pop

### Input Configuration

| Parameter          | Required            | Description                             |
| ------------------ | ------------------- | --------------------------------------- |
| `startUrls`        | ✅                  | List of Shopify store URLs to analyze   |
| `mode`             | No                  | Extraction mode (default: FULL\_PROFILE) |
| `productHandle`    | For PRODUCT mode    | Product slug from URL                   |
| `collectionHandle` | For COLLECTION mode | Collection slug from URL                |

#### Extraction Modes

- **FULL\_PROFILE** - Best value! Gets products, tech stack, and contacts
- **PRODUCTS** - Just the product catalog and pricing
- **TECH** - Only tech stack detection
- **CONTACTS** - Only emails and social profiles
- **PRODUCT** - Single product by handle
- **COLLECTION** - All products in a collection

### Output Example

```json
{
  "url": "https://allbirds.com/",
  "mode": "FULL_PROFILE",
  "success": true,
  "data": {
    "products": {
      "product_count": 250,
      "average_price": 72.68,
      "currency": "USD",
      "price_range": { "min": 8, "max": 160 },
      "best_sellers": [
        {
          "title": "Women's Tree Runners",
          "price": 98,
          "handle": "womens-tree-runners"
        }
      ]
    },
    "tech_stack": {
      "detected_apps": [
        { "app_name": "Klaviyo", "category": "email" },
        { "app_name": "Google Analytics 4", "category": "analytics" }
      ],
      "total_count": 2
    },
    "contacts": {
      "emails": ["help@allbirds.com", "privacy@allbirds.com"],
      "phones": ["18889638944"],
      "socials": {
        "facebook": "https://facebook.com/weareallbirds",
        "instagram": "https://instagram.com/allbirds",
        "tiktok": "https://tiktok.com/@weareallbirds"
      }
    }
  },
  "scrapedAt": "2024-12-23T00:00:00.000Z"
}
```

### How to Use

1. **Add Store URLs** - Enter one or more Shopify store URLs
2. **Select Mode** - Choose what data you want to extract
3. **Run the Actor** - Click Start to begin extraction
4. **Export Results** - Download as JSON, CSV, or integrate via API

### Integrations

Export your data to:

- **Google Sheets** - Direct export via Apify integration
- **Zapier** - Automate workflows with 5000+ apps
- **Make (Integromat)** - Advanced automation scenarios
- **Webhook** - Send results to your own API
- **Email** - Get results delivered to your inbox

### API Access

Use this Actor programmatically via the [Apify API](https://docs.apify.com/api/v2):

```javascript
import { ApifyClient } from "apify-client";

const client = new ApifyClient({ token: "YOUR_API_TOKEN" });

const run = await client.actor("leado/shopify-scraper-lead-intelligence").call({
  startUrls: ["https://allbirds.com/"],
  mode: "FULL_PROFILE",
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### Pricing

This Actor uses a **rental model** at $29/month with a 2-hour free trial.

Your subscription includes:

- Unlimited store analyses
- All extraction modes
- Priority support
- Regular updates with new app detections

### FAQ

#### Does this work with custom domains?

Yes! It works with both custom domains (allbirds.com) and .myshopify.com URLs.

#### Can it bypass Cloudflare?

Yes, we use browser impersonation to make requests look like real browsers.

#### Is this legal?

This Actor only extracts publicly available information. Always ensure your use case complies with applicable laws and terms of service.

#### How often is the tech stack detection updated?

We regularly add new apps based on user requests and market trends.

### Support

- 💬 **Questions?** Open an issue on this Actor page
- 📧 **Contact:** Reach out via Apify
- ⭐ **Like this Actor?** Please leave a rating!

***

Built with ❤️ by [Leado](https://apify.com/leado)

# Actor input Schema

## `startUrls` (type: `array`):

List of Shopify store URLs to analyze. Works with both custom domains (allbirds.com) and .myshopify.com URLs.

## `mode` (type: `string`):

What data to extract from each store

## `productHandle` (type: `string`):

Product handle/slug for PRODUCT mode. Find it in the product URL: store.com/products/THIS-PART

## `collectionHandle` (type: `string`):

Collection handle/slug for COLLECTION mode. Find it in the collection URL: store.com/collections/THIS-PART

## `maxConcurrency` (type: `integer`):

Maximum parallel requests. Lower = more reliable, Higher = faster. Recommended: 3-5

## `maxItems` (type: `integer`):

Maximum number of products to return per store. Use this to control costs and speed. Set to 0 for unlimited (up to 250).

## `proxyConfiguration` (type: `object`):

Use Apify proxies or your own custom proxies to avoid IP blocks. Recommended for large-scale scraping.

## Actor input object example

```json
{
  "startUrls": [
    "https://allbirds.com/",
    "https://gymshark.com/"
  ],
  "mode": "FULL_PROFILE",
  "productHandle": "mens-wool-runners",
  "collectionHandle": "mens-shoes",
  "maxConcurrency": 5,
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        "https://allbirds.com/",
        "https://gymshark.com/"
    ],
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("leado/shopify-store-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [
        "https://allbirds.com/",
        "https://gymshark.com/",
    ],
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("leado/shopify-store-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    "https://allbirds.com/",
    "https://gymshark.com/"
  ],
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call leado/shopify-store-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,leado/shopify-store-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/4darrt35XouN8Vpeh/builds/XxBtrnL1U48UGaCbb/openapi.json
