# Store Leads Scraper: Shopify and WooCommerce | $1/1K (`one_dollar_store/shopify-woocommerce-store-leads`) Actor

Store name, platform, product count, prices, contacts and social links for Shopify and WooCommerce sites from a domain list. $1 per 1,000 results, platform usage included.

- **URL**: https://apify.com/one_dollar_store/shopify-woocommerce-store-leads.md
- **Developed by:** [One Dollar Store](https://apify.com/one_dollar_store) (community)
- **Categories:** E-commerce, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 results

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

## Store Leads Scraper: Shopify and WooCommerce store facts, contacts and socials from a domain list

**$1 per 1,000 stores. Platform usage included. No rental, no minimum.**

The four most used Shopify store leads actors on Apify Store charge $3.50 to $5.99 per 1,000 stores (Store prices checked 29 October 2026). This actor costs $1. Most of those actors find stores for you; this one reads the stores you bring, so the price gap is for the enrichment step: platform, catalogue size, prices, contacts, socials and apps in one wide row per store.

[Open it in Apify Console](https://console.apify.com/actors/VrxoknR4KEDv7g66X/input)

### How much does Store Leads Scraper cost?

| Stores | This actor | Most used Shopify store leads actors on the Store |
|---|---|---|
| 1,000 | $1.00 | $3.50 to $5.99 |
| 10,000 | $10.00 | $35 to $59.90 |
| 100,000 | $100.00 | $350 to $599 |

Plus $0.001 per run. You pay only for stores that return a row: a domain that is not a store, is unreachable or shows a bot check page costs nothing. A weekly run over 2,000 store domains costs about $2.00 a run, or about $8 a month.

### What you get

Give it a list of domains. For each one the actor finds out whether the site is a Shopify store, a WooCommerce store or neither, then reads what the store itself publishes:

- **Store record.** Name, canonical domain, myshopify domain, country, city, currency, shipping countries, Shopify store ID and theme (Shopify), site name and plugins (WooCommerce).
- **Catalogue.** Product count, collection count, price minimum, median, average and maximum, share of products on sale and in stock, vendors and product types with counts, first and latest product dates.
- **Contacts.** Emails and phone numbers shown on the home page and a contact or about page, with the contact page address.
- **Social profiles.** Instagram, Facebook, X, LinkedIn, YouTube, TikTok, Pinterest and WhatsApp links.
- **Apps and tech.** Review, email, SMS, chat, payment, analytics and ad apps seen in the page.
- **Checks.** Password protected stores, whether the store's robots.txt allows its product feed, which pages were read.

A row has up to 66 fields, and Shopify stores typically fill 40 to 55 of them. Fields a store does not publish are left out, never invented.

### Why use it

- **Wide rows from public store data.** The numbers come from the store's own `/meta.json`, `/products.json` or public Store API, so product counts are exact for Shopify and prices are the store's current prices.
- **You pay for results only.** Non-stores, dead domains and bot check pages are skipped and listed in the run summary.
- **Filters that build a lead list.** Platform, country, product count range, only stores with an email or phone, only stores that use a named app such as Klaviyo or Recharge.
- **Honest scope.** It does not search for stores by niche. An optional Common Crawl mode adds a random sample of small Shopify stores. See Limits.

### How to use Store Leads Scraper

1. Open the actor, paste domains (one per line) into **Store domains**, press **Start**.
2. Or paste this input:

```json
{ "domains": ["allbirds.com", "gymshark.com", "nutribullet.com"], "maxItems": 10 }
```

3. Download the results as JSON, CSV or Excel, or read them through the API.

### Use it from code

```bash
curl -X POST "https://api.apify.com/v2/acts/one_dollar_store~shopify-woocommerce-store-leads/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"domains": ["allbirds.com", "gymshark.com"], "maxItems": 10}'
```

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("one_dollar_store/shopify-woocommerce-store-leads").call(
    run_input={"domains": ["allbirds.com", "gymshark.com"], "countryCodes": ["US"], "maxItems": 10}
)
for store in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(store["domain"], store["platform"], store.get("productCount"), store.get("emails"))
```

### Use it from an AI assistant

Claude, ChatGPT, Cursor and other assistants can call this actor through Apify's MCP server. Add it with this server address:

```
https://mcp.apify.com?tools=one_dollar_store/shopify-woocommerce-store-leads
```

Then ask, for example: "Check these 40 domains and give me the Shopify stores in Canada with an email address and more than 100 products."

### Switching from another store leads actor

Most store leads actors take a keyword or a country and return stores they found. Here the input is `domains` (a list you bring, from a CRM, an event list or a Google Maps run) and `maxItems`. The core output fields are `domain`, `platform`, `storeName`, `country`, `productCount`, `emails`, `phones` and the social links. If you need stores found by niche, use another actor for the finding and this one for the facts.

### Input

| Field | Type | Default | What it does |
|---|---|---|---|
| `domains` | list of text | none | Store domains or any store address, one per line. |
| `discoverFrom` | text | `none` | `commoncrawl` adds a random sample of Shopify store addresses (hosts that end in `.myshopify.com`) from the Common Crawl index. It does not search by niche. |
| `discoverHostsMax` | number | 100 | How many addresses to take from Common Crawl (10 to 5,000). |
| `platform` | text | `any` | `shopify`, `woocommerce` or `any`. |
| `includeOtherSites` | true or false | false | Return a row for sites that are neither Shopify nor WooCommerce (contacts, socials, tech). Off by default, so they cost nothing. |
| `skipPasswordProtected` | true or false | true | Leave out Shopify stores that show the password page. |
| `countryCodes` | list | none | Two letter codes such as `US`, `GB`, `IN`. Needs a published store country. |
| `minProducts`, `maxProducts` | number | 0 | Product count range. 0 means no limit. |
| `requireEmail`, `requirePhone` | true or false | false | Keep only stores where an email or phone number was found. |
| `usesAnyApp` | list | none | App or theme names such as `Klaviyo`, `Yotpo`, `Recharge`. Matched as text. |
| `productPages` | number | 1 | Pages of the product feed to read: 250 products a page on Shopify, 100 on WooCommerce (0 to 6). 0 reads only the store record and the product count. |
| `contactPages` | number | 2 | Contact or about pages to read besides the home page (0 to 3). They are read only when the home page did not already give an email and a phone number. |
| `maxItems` | number | 100 | Total stores for the run (10 to 100,000). |

Example for a lead list of Canadian Shopify stores that use Klaviyo:

```json
{
  "domains": ["store-one.ca", "store-two.ca", "store-three.ca"],
  "platform": "shopify",
  "countryCodes": ["CA"],
  "usesAnyApp": ["Klaviyo"],
  "requireEmail": true,
  "maxItems": 1000
}
```

### What data does Store Leads Scraper return?

| Field | Meaning |
|---|---|
| `domain`, `inputDomain`, `url` | Canonical domain, the domain as you gave it, and the home page address after redirects. |
| `platform`, `platformEvidence` | `shopify`, `woocommerce` or `other`, and how it was recognised (`meta.json`, `store-api` or `page`). |
| `storeName`, `description`, `title`, `language` | Name, description and title the store publishes. |
| `country`, `region`, `city`, `postalCode`, `addressText`, `currency` | Store location and currency. Shopify publishes country, region and city; a street address appears only where the site marks it up. |
| `shopifyStoreId`, `myshopifyDomain`, `shipsToCountries`, `shipsToCountryCount` | Shopify store ID (a stable join key), myshopify address and shipping countries. |
| `themeName`, `themeSchemaName`, `themeVersion`, `themeStoreId` | The live Shopify theme. |
| `passwordProtected`, `storeApiAvailable` | Shopify password page seen; WooCommerce Store API answered or closed. |
| `productCount`, `collectionCount`, `categoryCount` | Published products (exact), collections (Shopify), categories seen (WooCommerce). |
| `productsSampled`, `priceMin`, `priceMedian`, `priceAverage`, `priceMax` | Prices over the products read, in the store currency. Each product counts at its lowest variant price; `priceMax` is the highest variant price. |
| `onSaleShare`, `availableShare` | Share of sampled products on sale and in stock (0 to 1). |
| `vendorCount`, `topVendors`, `productTypeCount`, `topProductTypes`, `topCategories` | Vendors, product types and categories with counts. |
| `firstProductCreatedAt`, `lastProductUpdatedAt`, `lastProductPublishedAt` | Product dates in the sample (ISO 8601). A recent update date shows an active store. |
| `emails`, `emailCount`, `phones`, `phonesE164`, `contactPageUrl` | Contacts shown on the pages read. |
| `facebookUrl`, `instagramUrl`, `twitterUrl`, `linkedinUrl`, `youtubeUrl`, `tiktokUrl`, `pinterestUrl`, `whatsappUrl` | Social links found on the pages read. |
| `detectedApps`, `hasBlog` | Apps and services seen in the home page; whether it links to a blog. |
| `robotsAllowsProductsJson`, `robotsOverriddenPaths` | What the store's robots.txt says about the product feed, and any disallowed path that was read anyway. |
| `metaUrl`, `productsUrl`, `pagesRead`, `requests`, `checkedAt`, `discoveredVia` | Where the data came from and when. |

### Sample results

Real rows from test runs on 27 October 2026 (shortened: some fields and list items are cut). The third row came from the Common Crawl option.

```json
[
  {"domain": "allbirds.com", "platform": "shopify", "platformEvidence": "meta.json", "storeName": "Allbirds", "country": "US", "region": "California", "city": "Beverly Hills", "currency": "USD", "myshopifyDomain": "weareallbirds.myshopify.com", "themeName": "DNAM Theme July 2026", "productCount": 357, "collectionCount": 1346, "productsSampled": 250, "priceMin": 0.8, "priceMedian": 110, "priceMax": 165, "onSaleShare": 0.076, "availableShare": 0.992, "vendorCount": 2, "topVendors": [{"name": "Allbirds", "count": 249}], "lastProductUpdatedAt": "2026-10-27T12:01:14.000Z", "emails": ["help@allbirds.com"], "phones": ["+1 424 363 8064"], "detectedApps": ["Google Tag Manager", "Microsoft Clarity", "Shop Pay"], "robotsAllowsProductsJson": true, "checkedAt": "2026-10-27T12:01:14.542Z"},
  {"domain": "nutribullet.com", "platform": "woocommerce", "platformEvidence": "page", "storeName": "nutribullet", "currency": "USD", "productCount": 182, "categoryCount": 9, "productsSampled": 100, "priceMin": 5.99, "priceMedian": 24.99, "priceMax": 224.99, "onSaleShare": 0.02, "availableShare": 0.94, "topCategories": [{"name": "Accessories", "count": 43}, {"name": "Warranty", "count": 32}], "phones": ["+1 800 523 5993"], "contactPageUrl": "https://www.nutribullet.com/contact-us/", "instagramUrl": "https://www.instagram.com/nutribullet", "facebookUrl": "https://www.facebook.com/nutribullet", "tiktokUrl": "https://www.tiktok.com/@nutribullet", "detectedApps": ["Facebook Pixel", "Google Ads", "Google Tag", "Google Tag Manager"], "robotsAllowsProductsJson": true, "checkedAt": "2026-10-27T12:01:20.748Z"},
  {"domain": "jcthejeweler.com", "platform": "shopify", "platformEvidence": "meta.json", "storeName": "J.C.’s Jewelry & Repair", "country": "US", "region": "Illinois", "city": "O'Fallon", "currency": "USD", "myshopifyDomain": "jcthejeweler.myshopify.com", "themeName": "jcs-jewelry-website/development", "productCount": 4, "collectionCount": 0, "productsSampled": 4, "onSaleShare": 0, "availableShare": 0.25, "vendorCount": 1, "topVendors": [{"name": "J.C.’s Jewelry & Repair", "count": 4}], "lastProductUpdatedAt": "2026-10-27T12:10:48.000Z", "emails": ["jaime@jcthejeweler.com"], "phones": ["+1 618 624 3900", "+1 314 839 8100", "+1 618 530 5122"], "instagramUrl": "https://www.instagram.com/jcthejeweler", "facebookUrl": "https://www.facebook.com/jcthejeweler", "detectedApps": ["Shop Pay"], "robotsAllowsProductsJson": true, "checkedAt": "2026-10-27T12:10:50.370Z"}
]
```

### Limits

- **No search by niche.** The actor reads the domains you give it. The optional Common Crawl mode adds a random sample of Shopify store addresses (hosts ending in `.myshopify.com`) and then reads them like any other domain. It is not a search for a product or a country. The Common Crawl index server is sometimes slow or answers with errors; the actor skips a page that fails, stops asking after six failures in a row, and carries on with your own domains. If you gave no domains and Common Crawl does not answer, the run fails with a message.
- **Shopify numbers.** Product count and collection count come from the store's own `/meta.json` and are exact. Prices, vendors, product types and dates are read from the first pages of `/products.json` (250 products a page, up to 6 pages), so for a big store they describe that sample, and `productsSampled` says how many products it was. Stores can hide products from the feed or run prices per market.
- **WooCommerce.** Product data needs the public Store API (`/wp-json/wc/store/v1/products`). Many stores leave it open; some close it or return nothing. Those rows have `storeApiAvailable` false and no price or catalogue fields.
- **Bot checks.** If a site shows a bot check page (a "Just a moment" page, a security checkpoint, a captcha), the actor stops for that site, does not try to get past it, and does not charge for it. After three refusals in a row from one site it stops asking that site.
- **robots.txt.** The actor reads every store's robots.txt first. Where a path it needs is disallowed (for example `/products.json`), it still reads that public path, one request at a time and no faster than one request a second, and lists the path in `robotsOverriddenPaths`. See the answer to "Is it legal?" below.
- **Contacts.** Emails and phone numbers are what the store shows on the home page and a contact or about page. They are not verified, and many stores show a contact form only. No mobile numbers are looked up. When a store has addresses on its own domain, addresses of other companies are left out.
- **Speed and size.** The actor makes about 5 to 8 requests per store, one at a time per store, and reads up to 12 stores at once from Apify's own addresses, with no proxy. A test run over 1,746 small Shopify stores returned 1,424 rows in 739 seconds on 1 GB of memory, about 2 stores a second; 322 of the 1,746 gave no row because they were password protected, paused or gone. Some sites refuse Apify's addresses; they are skipped.
- **Free plan.** A run started from a free plan account returns the first 10 results.

### FAQ

**What is the cheapest Shopify store leads scraper on Apify?**
The four most used ones charge $3.50 to $5.99 per 1,000 stores (checked 29 October 2026). This one charges $1 per 1,000 stores with platform usage included. It reads domains you bring rather than searching for stores, so compare what you need.

**How much does it cost to check 10,000 stores?**
$10.00 plus $0.001 for the run, if every domain returns a row. Domains that return no row cost nothing.

**Do I pay for compute or proxy on top?**
No. The price per result includes platform usage, and the actor uses no proxy.

**Can it find stores for me?**
Only as a random sample: turn on Common Crawl discovery. For a store list by niche, build the domain list elsewhere (a Google Maps run, an event list, your CRM) and give it to this actor.

**How do I know a domain is a Shopify store?**
The actor tries the store's `/meta.json`, which only Shopify stores publish, and also looks for Shopify markers in the home page. `platformEvidence` tells you which one decided.

**Does it work on headless Shopify stores?**
Often, when `/meta.json` still answers. Some headless stores close it; they are then recognised only by markers in the page, with fewer fields.

**Is it legal?**
The actor collects only public data that a store shows to any visitor: its own public product feed, store record and pages. You are responsible for how you use it: follow each store's terms of use and the data protection and marketing laws that apply to you, such as GDPR and ePrivacy, especially for emails and phone numbers of people. Some stores' robots.txt files ask automated clients not to read certain paths, such as the product feed. The actor reads those public paths anyway, at no more than one request a second per store and one request at a time, and tells you which paths in `robotsOverriddenPaths`; you decide for yourself how to use the data. The Common Crawl option takes host names only, in line with Common Crawl's terms, which bar collecting personal information from it for separate use.

**Is this an official Shopify or WooCommerce product?**
No. It is an independent tool and is not affiliated with or endorsed by Shopify or WooCommerce.

**Do I need an Apify account?**
Yes. Actors run from an Apify account, and a free account is enough to start: it includes $5 of platform usage every month. You can [sign up here](https://www.apify.com?fpr=ymnoit). This is a referral link and it costs you nothing.

**Is there a limit on the free plan?**
Yes. A run started from a free plan account delivers the first 10 results, then ends with a message and a link to the plans. Any paid plan returns everything you ask for, up to your own limit. The price per result is the same on every plan.

### Feedback and support

Found a problem or want a field added? Open an issue on the Issues tab of this actor and it gets read. If the actor saved you time, an honest rating on the Reviews tab helps other people find it.

### More from The One Dollar Store

Every actor here costs $1 per 1,000 results, platform usage included. See the whole store: https://apify.com/one_dollar_store

**Shopping**

- [Amazon Reviews Scraper](https://apify.com/one_dollar_store/amazon-product-reviews-scraper): Public reviews for any Amazon product.
- [AliExpress Product Scraper](https://apify.com/one_dollar_store/aliexpress-product-search-scraper): Products with prices, orders sold and ratings.
- [Etsy Scraper](https://apify.com/one_dollar_store/etsy-listings-scraper): Listings with prices, shops and badges.
- [Carsales Scraper](https://apify.com/one_dollar_store/carsales-car-listings-scraper): Australian car listings with prices and specs.
- [Open Food Facts Scraper](https://apify.com/one_dollar_store/open-food-facts-products-scraper): Food products with nutrition and labels.
- [Kleinanzeigen Scraper](https://apify.com/one_dollar_store/kleinanzeigen-listings-scraper): Classified ads from kleinanzeigen.de.
- [VIN Decoder](https://apify.com/one_dollar_store/vin-decoder-nhtsa): Make, model, year and specs from a VIN.
- [Alibaba Scraper](https://apify.com/one_dollar_store/alibaba-suppliers-products-scraper): Alibaba.com product listings with verified supplier details, prices and minimum orders.
- [1688 Wholesale Scraper](https://apify.com/one_dollar_store/wholesale-1688-products-scraper): Wholesale product listings and supplier details from 1688.com.

### Changelog

- 29 October 2026: clearer description and headings, field details for AI tools. Price and output unchanged.
- October 2026: first release.

# Actor input Schema

## `domains` (type: `array`):

The stores to look up, one per line: a bare domain (allbirds.com) or any store address. The actor finds out whether each one is a Shopify or WooCommerce store and reads what the store publishes. Local and private addresses are refused.

## `discoverFrom` (type: `string`):

Optional. Common Crawl adds a random sample of Shopify store addresses (hosts that end in .myshopify.com) to your list. It does not search by niche. Host names only, no page content.

## `discoverHostsMax` (type: `integer`):

How many store addresses to take from Common Crawl when the option above is on. Common Crawl is read slowly, one request every 5 seconds.

## `platform` (type: `string`):

Keep only Shopify stores, only WooCommerce stores, or both.

## `includeOtherSites` (type: `boolean`):

Off by default: a domain that is neither a Shopify nor a WooCommerce store returns no row and costs nothing. Turn on to get a row with contacts and socials for those sites too.

## `skipPasswordProtected` (type: `boolean`):

Shopify stores that are not open yet (they show a password page) are left out. Turn off to keep them.

## `countryCodes` (type: `array`):

Optional. Two letter country codes such as US, GB or IN. Only stores whose published country matches are returned. Shopify stores publish a country; WooCommerce stores only when their page data states one.

## `minProducts` (type: `integer`):

Keep stores with at least this many published products. 0 means no minimum.

## `maxProducts` (type: `integer`):

Keep stores with at most this many published products. 0 means no maximum.

## `requireEmail` (type: `boolean`):

Return a store only when at least one email address was found on its pages.

## `requirePhone` (type: `boolean`):

Return a store only when at least one valid phone number was found on its pages.

## `usesAnyApp` (type: `array`):

Optional. App or theme names such as Klaviyo, Yotpo or Recharge. Only stores where at least one is detected are returned. Names are matched as text.

## `productPages` (type: `integer`):

How many pages of the product feed to read for prices and vendors: 250 products per page on Shopify, 100 on WooCommerce. 0 skips the feed and reads only the store record and product count.

## `contactPages` (type: `integer`):

How many contact or about pages to read besides the home page. They are read only when the home page did not already give an email and a phone number. 0 reads only the home page.

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

The run stops after this many results (one per store). Minimum 10.

## Actor input object example

```json
{
  "domains": [
    "allbirds.com",
    "rhodeskin.com",
    "hardandware.com",
    "nutribullet.com",
    "coraandspink.com",
    "brooklinen.com",
    "magicspoon.com",
    "tentree.com",
    "mvmt.com",
    "chubbies.com",
    "ridge.com",
    "peakdesign.com",
    "drinkolipop.com",
    "ritual.com",
    "fromourplace.com",
    "stanley1913.com",
    "rothys.com",
    "outerknown.com",
    "pangaia.com",
    "gorjana.com",
    "puravidabracelets.com",
    "flybyjing.com",
    "hydrojug.com",
    "blenderbottle.com",
    "brumate.com",
    "cutsclothing.com",
    "thesill.com",
    "harney.com",
    "ugmonk.com",
    "undefeated.com",
    "liquid-iv.com",
    "graza.co",
    "bokksu.com",
    "diasporaco.com",
    "nativecos.com",
    "jeffreestarcosmetics.com",
    "bearaby.com",
    "lovepopcards.com",
    "greats.com",
    "mrbeast.store",
    "brightland.co",
    "aloyoga.com",
    "sundayriley.com",
    "kosas.com",
    "summerfridays.com",
    "tower28beauty.com",
    "supergoop.com",
    "iliabeauty.com",
    "cocokind.com",
    "parachutehome.com",
    "greenmountaingrills.com",
    "kyliecosmetics.com",
    "colourpop.com",
    "fashionnova.com",
    "kith.com",
    "taylorstitch.com",
    "gymshark.com"
  ],
  "discoverFrom": "none",
  "discoverHostsMax": 100,
  "platform": "any",
  "includeOtherSites": false,
  "skipPasswordProtected": true,
  "minProducts": 0,
  "maxProducts": 0,
  "requireEmail": false,
  "requirePhone": false,
  "productPages": 1,
  "contactPages": 2,
  "maxItems": 50
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# 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 = {
    "domains": [
        "allbirds.com",
        "rhodeskin.com",
        "hardandware.com",
        "nutribullet.com",
        "coraandspink.com",
        "brooklinen.com",
        "magicspoon.com",
        "tentree.com",
        "mvmt.com",
        "chubbies.com",
        "ridge.com",
        "peakdesign.com",
        "drinkolipop.com",
        "ritual.com",
        "fromourplace.com",
        "stanley1913.com",
        "rothys.com",
        "outerknown.com",
        "pangaia.com",
        "gorjana.com",
        "puravidabracelets.com",
        "flybyjing.com",
        "hydrojug.com",
        "blenderbottle.com",
        "brumate.com",
        "cutsclothing.com",
        "thesill.com",
        "harney.com",
        "ugmonk.com",
        "undefeated.com",
        "liquid-iv.com",
        "graza.co",
        "bokksu.com",
        "diasporaco.com",
        "nativecos.com",
        "jeffreestarcosmetics.com",
        "bearaby.com",
        "lovepopcards.com",
        "greats.com",
        "mrbeast.store",
        "brightland.co",
        "aloyoga.com",
        "sundayriley.com",
        "kosas.com",
        "summerfridays.com",
        "tower28beauty.com",
        "supergoop.com",
        "iliabeauty.com",
        "cocokind.com",
        "parachutehome.com",
        "greenmountaingrills.com",
        "kyliecosmetics.com",
        "colourpop.com",
        "fashionnova.com",
        "kith.com",
        "taylorstitch.com",
        "gymshark.com"
    ],
    "productPages": 1,
    "contactPages": 2,
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("one_dollar_store/shopify-woocommerce-store-leads").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 = {
    "domains": [
        "allbirds.com",
        "rhodeskin.com",
        "hardandware.com",
        "nutribullet.com",
        "coraandspink.com",
        "brooklinen.com",
        "magicspoon.com",
        "tentree.com",
        "mvmt.com",
        "chubbies.com",
        "ridge.com",
        "peakdesign.com",
        "drinkolipop.com",
        "ritual.com",
        "fromourplace.com",
        "stanley1913.com",
        "rothys.com",
        "outerknown.com",
        "pangaia.com",
        "gorjana.com",
        "puravidabracelets.com",
        "flybyjing.com",
        "hydrojug.com",
        "blenderbottle.com",
        "brumate.com",
        "cutsclothing.com",
        "thesill.com",
        "harney.com",
        "ugmonk.com",
        "undefeated.com",
        "liquid-iv.com",
        "graza.co",
        "bokksu.com",
        "diasporaco.com",
        "nativecos.com",
        "jeffreestarcosmetics.com",
        "bearaby.com",
        "lovepopcards.com",
        "greats.com",
        "mrbeast.store",
        "brightland.co",
        "aloyoga.com",
        "sundayriley.com",
        "kosas.com",
        "summerfridays.com",
        "tower28beauty.com",
        "supergoop.com",
        "iliabeauty.com",
        "cocokind.com",
        "parachutehome.com",
        "greenmountaingrills.com",
        "kyliecosmetics.com",
        "colourpop.com",
        "fashionnova.com",
        "kith.com",
        "taylorstitch.com",
        "gymshark.com",
    ],
    "productPages": 1,
    "contactPages": 2,
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("one_dollar_store/shopify-woocommerce-store-leads").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 '{
  "domains": [
    "allbirds.com",
    "rhodeskin.com",
    "hardandware.com",
    "nutribullet.com",
    "coraandspink.com",
    "brooklinen.com",
    "magicspoon.com",
    "tentree.com",
    "mvmt.com",
    "chubbies.com",
    "ridge.com",
    "peakdesign.com",
    "drinkolipop.com",
    "ritual.com",
    "fromourplace.com",
    "stanley1913.com",
    "rothys.com",
    "outerknown.com",
    "pangaia.com",
    "gorjana.com",
    "puravidabracelets.com",
    "flybyjing.com",
    "hydrojug.com",
    "blenderbottle.com",
    "brumate.com",
    "cutsclothing.com",
    "thesill.com",
    "harney.com",
    "ugmonk.com",
    "undefeated.com",
    "liquid-iv.com",
    "graza.co",
    "bokksu.com",
    "diasporaco.com",
    "nativecos.com",
    "jeffreestarcosmetics.com",
    "bearaby.com",
    "lovepopcards.com",
    "greats.com",
    "mrbeast.store",
    "brightland.co",
    "aloyoga.com",
    "sundayriley.com",
    "kosas.com",
    "summerfridays.com",
    "tower28beauty.com",
    "supergoop.com",
    "iliabeauty.com",
    "cocokind.com",
    "parachutehome.com",
    "greenmountaingrills.com",
    "kyliecosmetics.com",
    "colourpop.com",
    "fashionnova.com",
    "kith.com",
    "taylorstitch.com",
    "gymshark.com"
  ],
  "productPages": 1,
  "contactPages": 2,
  "maxItems": 50
}' |
apify call one_dollar_store/shopify-woocommerce-store-leads --silent --output-dataset

```

## MCP server setup

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

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/VrxoknR4KEDv7g66X/builds/6u0dqo1VEuilbefjS/openapi.json
