# Shopify Store Leads, Contacts, Pixels & Products Scraper (`ramgoxxx/shopify-store-leads-products-scraper`) Actor

Extract verified emails, social links, ad pixels (Meta, TikTok, Klaviyo, Google Ads), pricing stats, and full product catalogs from any list of Shopify stores without headless browser overhead.

- **URL**: https://apify.com/ramgoxxx/shopify-store-leads-products-scraper.md
- **Developed by:** [Antonio Ramos Gómez](https://apify.com/ramgoxxx) (community)
- **Categories:** Lead generation, E-commerce, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.50 / 1,000 store or product rows

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Shopify Store Leads, Contacts, Pixels & Products Scraper do?

**Shopify Store Leads, Contacts, Pixels & Products Scraper** turns raw e-commerce URLs into enriched **B2B sales leads** or structured **product & pricing catalogs**. Given any list of Shopify domains, it extracts **public contact emails**, **phone numbers**, **social media profiles**, **installed ad & retention pixels** (*Meta Pixel, TikTok Pixel, Google Ads/GTM, Klaviyo, Pinterest, Snapchat, Shopify Analytics*), currency, average product pricing, and full SKU/variant inventory.

Built as a Dual-Mode **Shopify Lead Generation API** and **E-Commerce Catalog Scraper**, it powers cold outreach enrichment, agency prospecting, dropshipping/supplier research, and competitor price monitoring.

- **Pay-Per-Event pricing:** `$1.50 per 1,000 enriched store leads or product rows` (`$0.0015` per item). Compute is included free.
- **3,333 Free Leads / Month:** Apify's `$5.00/month` free credit gives you **3,333 enriched Shopify store leads or product records every month at `$0`**.
- **Two dedicated modes in one Actor:** Switch between `store_leads` (1 rich B2B company row per domain) and `products` (granular SKU, variant, vendor, stock & price rows).

***

### Why scrape Shopify store leads, pixels, and product catalogs?

Generic B2B databases miss fast-growing DTC brands or charge `$99–$299/month` (StoreLeads, BuiltWith, Clay credits) just to check whether a store runs Klaviyo or Meta Ads. Inspecting the live storefront and public `/products.json` feed gives you **real-time technographics, live pricing, and verified store contact channels** on demand.

#### High-ROI use cases

1. **Agency & SaaS Prospecting by Tech Stack:** Identify Shopify brands running **Meta Pixel** or **Google Ads** that are *missing* **Klaviyo** or **TikTok Pixel** — instant, hyper-relevant outreach hooks for retention or paid-social agencies.
2. **Cold Email & Multi-Channel Enrichment (Clay, Smartlead, Instantly, n8n):** Enrich domain lists with public support/press emails, Instagram/TikTok/YouTube handles, product count, and average order price (`avgPrice`) to qualify high-ticket brands vs low-AOV stores.
3. **Competitor Price & Stock Monitoring:** Run `products` mode daily to track rival SKU launches, discount markdowns (`compare_at_price`), and variant stockouts.
4. **Wholesale & Supplier Discovery:** Extract vendor names, product types, and catalog breadth across ratusan of niche Shopify storefronts.

***

### What data can this Shopify Scraper extract?

#### Mode 1: `store_leads` (B2B Storefront & Technographic Enrichment)

| Field Name | Type | Description |
| :--- | :--- | :--- |
| `domain` | `string` | Normalized store root domain (e.g., `allbirds.com`). |
| `storeTitle` | `string \| null` | Brand title extracted from storefront metadata. |
| `isShopify` | `boolean` | Confirms verified Shopify storefront signature / `products.json` availability. |
| `currency` | `string \| null` | Active storefront ISO currency code (`USD`, `EUR`, `GBP`, `CAD`, `AUD`). |
| `emails` | `array<string>` | Public contact, support, wholesale, or press email addresses found on homepage & contact pages. |
| `phones` | `array<string>` | Public business phone numbers detected on storefront/contact pages. |
| `socials` | `object` | Direct social profile URLs (`instagram`, `tiktok`, `facebook`, `youtube`, `twitter`, `linkedin`, `pinterest`). |
| `pixelsDetected` | `array<string>` | Detected marketing & CRM tags (`meta_pixel`, `tiktok_pixel`, `google_ads_gtm`, `klaviyo`, `pinterest_tag`, `snap_pixel`). |
| `productCountSampled` | `integer` | Number of live catalog products sampled up to `maxProductsPerStore`. |
| `avgPrice` | `number \| null` | Average product price across sampled catalog — instant filter for premium DTC brands. |

#### Mode 2: `products` (Full Product & Variant Catalog)

Outputs individual product records including `title`, `handle`, `productUrl`, `vendor`, `productType`, `tags`, `priceMin`, `priceMax`, `compareAtPrice`, `available`, `images`, and `variantsCount`.

***

### How to scrape Shopify stores (Step-by-Step)

1. Open **Shopify Store Leads, Contacts, Pixels & Products Scraper** in Apify Console.
2. Paste one or hundreds of URLs/domains into **Shopify Store Domains or URLs** (`storeDomains`, e.g., `["allbirds.com", "gymshark.com"]`).
3. Choose **Extraction Mode** (`mode`):
   - `store_leads` — 1 enriched B2B company profile row per domain (emails, socials, ad pixels, average price).
   - `products` — 1 row per product SKU for catalog & price analysis.
4. Set **Max Products per Store** (`maxProductsPerStore`, default `50`) and click **Start**.
5. Export directly to **CSV, Excel, JSON**, Clay, HubSpot, Google Sheets, or Airtable.

***

### How much does it cost to scrape Shopify stores?

Charged strictly **Pay-Per-Event (`$1.50 / 1,000` rows)** with zero platform compute fees:

| Dataset Rows | Total Cost | Covered by Apify `$5/mo` Free Credit? |
| :--- | :--- | :---: |
| **100 enriched Shopify leads** | **`$0.15`** | Yes (`$0`) |
| **1,000 enriched Shopify leads** | **`$1.50`** | Yes (`$0`) |
| **3,333 leads or products / month** | **`$5.00`** | **100% Free every month** |
| **10,000 leads or products** | **`$15.00`** | Fraction of StoreLeads / BuiltWith subscriptions |

***

### Use with AI Assistants & MCP (Claude, Cursor, VS Code, ChatGPT)

Let Claude, Cursor, or ChatGPT audit any e-commerce store's tech stack, pricing, and contact channels live via MCP:

```json
{
  "mcpServers": {
    "shopify-leads": {
      "url": "https://mcp.apify.com/?actors=ramgoxxx/shopify-store-leads-products-scraper",
      "headers": {
        "Authorization": "Bearer YOUR_APIFY_API_TOKEN"
      }
    }
  }
}
```

Prompt ideas:

- *"Enrich `allbirds.com`, `chubbies.com`, and `brooklinen.com`: tell me their average product price, social links, and which ad pixels each brand uses."*
- *"Pull the top 30 products from `gymshark.com` and summarize their price range by category."*

***

### Input examples

#### Example 1: B2B Agency Lead Enrichment (`store_leads`)

```json
{
  "storeDomains": [
    "allbirds.com",
    "brooklinen.com",
    " Beardbrand.com"
  ],
  "mode": "store_leads",
  "maxProductsPerStore": 50
}
```

#### Example 2: Competitor Product & Price Export (`products`)

```json
{
  "storeDomains": ["allbirds.com"],
  "mode": "products",
  "maxProductsPerStore": 250
}
```

***

### Output example (`store_leads` mode)

```json
[
  {
    "domain": "allbirds.com",
    "storeTitle": "Allbirds: Comfortable, Sustainable Shoes & Apparel",
    "isShopify": true,
    "currency": "USD",
    "emails": ["help@allbirds.com", "press@allbirds.com"],
    "phones": ["1-888-963-8944"],
    "socials": {
      "instagram": "https://www.instagram.com/allbirds",
      "tiktok": "https://www.tiktok.com/@weareallbirds",
      "youtube": "https://www.youtube.com/c/allbirds"
    },
    "pixelsDetected": ["meta_pixel", "google_ads_gtm", "tiktok_pixel", "klaviyo"],
    "productCountSampled": 50,
    "avgPrice": 118.4
  }
]
```

***

### Use in Clay, n8n, Make & Python

#### Python (`apify-client`)

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_API_TOKEN")
run = client.actor("ramgoxxx/shopify-store-leads-products-scraper").call(
    run_input={
        "storeDomains": ["allbirds.com"],
        "mode": "store_leads",
        "maxProductsPerStore": 50,
    }
)

for lead in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(lead["domain"], lead["avgPrice"], lead["pixelsDetected"], lead["emails"])
```

#### Clay / n8n HTTP Request (`run-sync-get-dataset-items`)

```bash
curl -X POST "https://api.apify.com/v2/acts/ramgoxxx~shopify-store-leads-products-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"storeDomains":["allbirds.com"],"mode":"store_leads","maxProductsPerStore":30}'
```

***

### Frequently Asked Questions & GDPR Notice

#### What happens if one URL in my list is not a Shopify store?

The Actor handles non-Shopify or offline domains gracefully without crashing your batch, flagging `isShopify: false` while still extracting available public storefront metadata and contact links.

#### Legal & GDPR Disclaimer

> Our Actors only inspect publicly accessible company pages (`/`, `/pages/contact`, `/products.json`) published openly by commercial e-commerce businesses. Business contact channels (`support@`, `info@`, `press@`) and product catalogs are public commercial disclosures; however, always ensure your B2B outreach complies with GDPR, CAN-SPAM, and PECR regulations in your jurisdiction.

# Actor input Schema

## `storeDomains` (type: `array`):

List of Shopify store domains or URLs (e.g. 'allbirds.com', 'gymshark.com').

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

'store_leads' returns 1 enriched B2B lead row per store (contacts, socials, pixels, catalog stats); 'products' returns individual product & variant rows.

## `maxProductsPerStore` (type: `integer`):

Maximum products to inspect or export per store.

## Actor input object example

```json
{
  "storeDomains": [
    "allbirds.com"
  ],
  "mode": "store_leads",
  "maxProductsPerStore": 50
}
```

# Actor output Schema

## `records` (type: `string`):

Every enriched Shopify store lead or product catalog row.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("ramgoxxx/shopify-store-leads-products-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("ramgoxxx/shopify-store-leads-products-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 '{}' |
apify call ramgoxxx/shopify-store-leads-products-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ramgoxxx/shopify-store-leads-products-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/jZ4Rau0o5VIzks4QF/builds/Hi1cEuY0VIeW5l7oq/openapi.json
