# Wix Stores Email Scraper (`leads-scraper/wix-stores-email-scraper`) Actor

Wix Stores Email Scraper SD - Wix Stores Email Scraper is a lead generation tool that extracts leads with public contact emails, account names and profile URLs from Wix Stores results by keyword, location and email domain - Wix Stores email extractor.

- **URL**: https://apify.com/leads-scraper/wix-stores-email-scraper.md
- **Developed by:** [Leads Scraper](https://apify.com/leads-scraper) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.49 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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?

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

### Wix Stores Email Scraper — Reach Wix Store Owners on Their Own Websites

The **Wix Stores Email Scraper** builds a contact list of small-business merchants running Wix Stores, using nothing but publicly indexed Google results.

You give it keywords such as `online store` or `shop`, choose the email domains you care about, and the Wix Stores Email Scraper writes a dataset of leads with shop names, page snippets and the merchant's own website address.

Wix is a site builder, not a marketplace. Every shop lives on its owner's domain or on a `wixsite.com` subdomain, so there is no directory of profiles to crawl.

That is why this Wix Stores Email Scraper searches a **footprint phrase** rather than a domain — and why the URLs it hands back are real shop websites you can open and verify.

**Important:** the Wix Stores Email Scraper never logs into Wix, never uses a Wix API and never opens a storefront directly. Every record comes from publicly indexed Google search results.

It is a Wix email extractor for agency prospecting, local-business outreach and ecommerce lead generation — not a customer-data tool and not an order scraper.

In a measured live run, **9 out of 9 sampled rows carried usable account identity** alongside a real email — the strongest identity rate of the three storefront Actors in this family.

***

### How the Wix Stores Email Scraper Finds Shops: the "Powered by Wix" Footprint

This is the most distinctive part of the Wix Stores Email Scraper, and it is worth understanding before your first run.

Most Actors in this family narrow Google with `site:example.com`. On a site builder that does not work — `beanrootcoffee.com` is a Wix shop, but nothing in the domain announces it.

So instead of a `site:` operator, the Wix Stores Email Scraper searches for the exact string:

```
"Powered by Wix"
```

That credit line sits in the footer of a very large number of Wix templates. When Google has indexed a page carrying it, that page belongs to a Wix site — and the host Google prints in the breadcrumb **is the merchant's own web address**.

A finished query therefore contains no `site:` operator at all:

```
"Powered by Wix" online store "@gmail.com" "Manchester"
```

#### Custom domains and wixsite.com subdomains both work

Because `accept_any_host` is enabled, whatever host appears in the result block is accepted as the shop.

That means the Wix Stores Email Scraper picks up brands on custom domains such as `beanrootcoffee.com` and shops still living on a free `something.wixsite.com` address, in the same run.

Both land in `profileUrl` and `url`, so you always get the page where the owner's contact details, opening hours and about text actually live.

#### The honest trade-off

Footprint search only finds shops that **still carry the "Powered by Wix" credit on a page Google has indexed**. That is a subset of the platform, not all of it.

Merchants on paid plans routinely remove the footer credit, and those shops are invisible to this method. The Wix Stores Email Scraper cannot enumerate every Wix store, and does not pretend to.

What it does very well is surface a steady, keyword-filtered slice of owner-operated shops — the ones most likely to read their own inbox.

***

### Key Features of the Wix Stores Email Scraper

The table below reflects what the Wix Stores Email Scraper genuinely does. No invented capabilities, no marketing fiction.

| Feature | What it means in practice |
|---|---|
| Footprint-based discovery | Queries search the literal phrase `"Powered by Wix"` instead of a `site:` operator, because shops run on their owners' domains |
| Merchant-domain output | The breadcrumb host is accepted as the shop, so `profileUrl` and `url` hold the real website — custom domain or `wixsite.com` subdomain |
| Query expansion | Each keyword × domain pair is searched in several phrasings: base, quoted, `intitle:`, plus one variant per query modifier |
| Domain-filtered extraction | Only emails ending in your `customDomains` list are kept |
| Global deduplication | One email appears once across every query and every page of the run |
| Obfuscation-aware parser | Understands `name [at] domain [dot] com`, `name (at) domain`, `name @ domain.com`, `domain .com`, zero-width characters and the full-width `＠` |
| Junk filter | Rejects placeholders such as `email@`, `yourname@`, `test@`, `xxx@` and single-character locals |
| Boundary-correct matching | `@gmail.com` will not match inside `@gmail.company` or `@gmail.com.br` |
| Soft-wrap repair | Discards a hit that is only the tail of another email in the same result block |
| Structural HTML parsing | Locates the `<h3>` title, then the smallest surrounding block — it does not depend on Google's CSS class names |
| Whole-page fallback parser | If Google's markup changes, the run degrades to "emails without shop metadata" rather than "no emails" |
| Concurrency | An `asyncio` worker pool runs several queries in parallel with a shared stop signal on `maxEmails` |
| Retry logic and proxy rotation | Up to 3 attempts per page with exponential backoff and a fresh proxy session per request |
| Block detection | CAPTCHA, "unusual traffic" and consent pages are detected and retried, not silently counted as empty |
| Blocked-query requeue | Failed or blocked queries are re-queued once at the end of the run |
| Resumable state | Progress is stored in the key-value store keyed by a hash of your input, saved on `PERSIST_STATE`, `MIGRATING` and `ABORTING` |
| Streaming dataset writes | Each lead is pushed to the Apify dataset the moment it is found |
| Run summary logging | Pages fetched, blocked pages, retries and emails per page are reported at the end |

***

### How the Wix Stores Email Scraper Works: Crawler and Parser Pipeline

The pipeline is short and deliberately transparent. There is no browser, no JavaScript rendering, no authentication and no cookies.

**1. Read input.** The Wix Stores Email Scraper loads your keywords, optional location, email domains and limits.

**2. Build queries.** It composes Google queries around the `"Powered by Wix"` footprint plus your keyword, email domain and optional location phrase.

**3. Fetch search result pages.** Pagination runs asynchronously with `aiohttp` through the Apify **GOOGLE\_SERP** proxy, with retry logic and a fresh proxy session on every attempt.

**4. Parse result blocks.** For each result the Wix Stores Email Scraper finds the `<h3>` title, walks up to the smallest enclosing block, and reads the title, the breadcrumb host and the snippet.

**5. Extract and normalise emails.** A domain-filtered regex pulls addresses out of the block text, then normalisation and the junk filter clean them up.

**6. Deduplicate and push.** Every unique email is written to the dataset immediately, so you can start exporting mid-run.

Base queries run first, so the earliest rows the Wix Stores Email Scraper writes are usually the highest-signal ones.

***

### What Structured Data Does the Wix Stores Email Scraper Extract?

The Wix Stores Email Scraper produces one dataset item per unique email, and every item carries the same 14 fields.

Alongside the address you get the shop label Google printed, the merchant's own web address in `profileUrl` and `url`, and the snippet the email came from.

You also get full provenance: the keyword and the exact Google query that produced the lead, plus a UTC timestamp.

Provenance is what turns a raw Wix store owner email list into something you can tune, because it shows which keywords in your niche actually return contactable shops.

Nothing outside these 14 fields is collected. The Wix Stores Email Scraper does not touch orders, revenue, apps installed or anything behind a login.

***

### Wix Stores Email Scraper Input Schema

Every field below is taken verbatim from the Wix Stores Email Scraper input schema.

| Field | Type | Default | Description |
|---|---|---|---|
| `keywords` | array (required) | `["online store", "shop"]` | Search terms describing the Wix Stores accounts you want (niche, job title, industry) |
| `location` | string | `""` | Optional location phrase added to every query |
| `customDomains` | array | `["@gmail.com", "@yahoo.com"]` | Only emails on these domains are collected; the leading `@` is optional |
| `maxEmails` | integer (1–10000) | `20` | Stop once this many unique emails have been collected |
| `countryCode` | string | `""` | Two-letter country code for the search proxy (`US`, `GB`, `DE`…) |
| `expandQueries` | boolean | `true` | Search each keyword × domain pair with several phrasings |
| `queryModifiers` | array | `["email", "contact us", "wholesale", "customer service", "stockist"]` | Extra words combined with each keyword when expansion is on |
| `maxPagesPerQuery` | integer (1–50) | `30` | Page cap per query |
| `maxConcurrency` | integer (1–20) | `5` | How many queries run in parallel |

#### JSON input example

```json
{
  "keywords": ["coffee roaster", "pottery studio shop", "florist online store"],
  "location": "Manchester",
  "customDomains": ["@gmail.com", "@yahoo.com"],
  "maxEmails": 300,
  "countryCode": "GB",
  "expandQueries": true,
  "queryModifiers": ["email", "contact us", "wholesale", "customer service", "stockist"],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

#### Why query expansion matters for footprint search

Google returns roughly 300 results for any single query, and a bare `"Powered by Wix"` search would spend that budget on noise.

With `expandQueries` on, `coffee roaster` × `@gmail.com` becomes a base query, a quoted query, an `intitle:` query and one query per modifier — `contact us`, `wholesale`, `stockist` and the rest.

Because deduplication is global, expansion can only add leads. On Wix the `contact us` and `customer service` modifiers are the most productive, since those pages carry the address.

***

### Wix Stores Email Scraper Output Schema

Every dataset item produced by the Wix Stores Email Scraper contains all 14 fields below.

| Field | Meaning |
|---|---|
| `network` | Platform name |
| `keyword` | The keyword that produced the lead |
| `query` | The exact Google query used |
| `title` | Raw result title |
| `accountName` | Account label Google prints — on a Wix shop this is the business name or the site's own host |
| `fullName` | Display name parsed from a profile-style title; empty for page titles that carry no name |
| `username` | URL-safe handle when the platform exposes one; otherwise `null` — Wix shops publish no handles, so this is often `null` |
| `profileUrl` | Canonical account URL when a handle is known; otherwise empty — on this Actor it holds the shop's own web address |
| `url` | Direct platform link when exposed, else the profile URL |
| `description` | Bio or page snippet, cleaned of labels and engagement counters |
| `email` | Lower-cased email address |
| `emailDomain` | The matched domain (e.g. `@gmail.com`) |
| `possiblyTruncated` | `true` when Google's snippet ellipsis touched the email — verify before sending |
| `foundAt` | ISO 8601 UTC timestamp |

#### JSON output example

```json
{
  "network": "Wix Stores",
  "keyword": "coffee roaster",
  "query": "\"Powered by Wix\" coffee roaster \"@gmail.com\" \"Manchester\"",
  "title": "Beanroot Coffee | Contact Us",
  "accountName": "Beanroot Coffee",
  "fullName": "Beanroot Coffee",
  "username": null,
  "profileUrl": "https://www.beanrootcoffee.com",
  "url": "https://www.beanrootcoffee.com",
  "description": "Small-batch roastery in Manchester. Wholesale and cafe enquiries: beanroot.orders@gmail.com",
  "email": "beanroot.orders@gmail.com",
  "emailDomain": "@gmail.com",
  "possiblyTruncated": false,
  "foundAt": "2026-08-31T09:42:17Z"
}
```

Export the Wix Stores Email Scraper dataset as JSON, CSV, XLSX or HTML, or pull it through the Apify API into your CRM.

***

### How to Use the Wix Stores Email Scraper

**Step 1 — open the Actor.** Launch the [Wix Stores Email Scraper](https://apify.com/leads-scraper/wix-stores-email-scraper) on the Apify platform.

**Step 2 — enter keywords.** Be specific. `pottery studio shop` and `florist online store` beat `shop`, because footprint results are full of generic template copy.

**Step 3 — pick your email domains.** Start with `@gmail.com` and `@yahoo.com`, then add `@outlook.com`, `@icloud.com` or `@hotmail.com` to widen the net.

**Step 4 — set `maxEmails` and add a location.** Wix skews heavily local, so a city or region in `location` sharpens the results more than it does on marketplace Actors.

**Step 5 — export.** Download the data, or schedule a weekly Wix Stores Email Scraper run so newly indexed shops get picked up automatically.

If you want the same footprint technique on a neighbouring platform, the **Squarespace Commerce Email Scraper** and the [Shopify Store Email Scraper](https://apify.com/leads-scraper/shopify-store-email-scraper) work identically.

***

### Use Cases for the Wix Stores Email Scraper

| Use case | How the Wix Stores Email Scraper helps |
|---|---|
| Web design and rebuild pitches | Wix shops on free `wixsite.com` addresses are obvious candidates for an upgrade |
| Agency prospecting | Find owner-operated shops that need SEO, ads or email marketing help |
| Local business outreach | Combine a niche keyword with `location` to build a city-level Wix store owner email list |
| Payments, shipping and POS sales | Reach merchants already transacting online but often under-tooled |
| Wholesale and stockist outreach | The `wholesale` and `stockist` modifiers surface shops looking for retail partners |
| Supplier lead generation | Pitch packaging, print or fulfilment to small brands with real order volume |
| Influencer and affiliate seeding | Small shops are unusually open to gifting and commission deals |
| Market research | Read `description` snippets to see how a local niche positions and prices itself |
| CRM enrichment | Match business names and shop domains to accounts you already track |
| Competitive mapping | Measure how many shops in a vertical still run a public "Powered by Wix" footer |

Wix's merchant base skews towards independent, owner-run businesses, which is exactly why a public contact address is so often sitting right there on the page.

In every one of these scenarios the Wix Stores Email Scraper does the tedious part — reading thousands of search results — and leaves the judgement to you.

***

### Why Choose This Wix Stores Email Scraper

**It is honest about its source.** The Wix Stores Email Scraper reads Google's public index. Nothing more, nothing hidden.

**It returns shop websites.** Footprint search plus `accept_any_host` means the URL in your dataset is the merchant's actual site, not a dead-end profile.

**It had the best identity rate in testing.** 9 of 9 sampled rows carried a usable shop label alongside the email.

**It is resilient.** Structural parsing plus a whole-page fallback means a Google layout change degrades output quality instead of breaking the crawler.

**It is resumable.** Migrations and aborts do not cost you a run; state is keyed by a hash of your input.

**It is part of a family.** The same engine powers dozens of sibling Actors, including the [Ecwid Store Email Scraper](https://apify.com/neuro-scraper/ecwid-store-email-scraper) for embedded storefronts and the [Etsy Email Scraper](https://apify.com/leads-scraper/etsy-email-scraper) for handmade sellers.

***

### Limitations of the Wix Stores Email Scraper

These are real constraints. Read them before you set expectations.

- **Footprint coverage is a subset.** The Wix Stores Email Scraper only finds shops that still carry `"Powered by Wix"` on a page Google has indexed. Merchants who removed the footer credit are invisible to it, so this is not a census of the platform.
- **Only publicly indexed emails.** If an address is not visible in Google's index, it cannot be found. Private data is never accessed.
- **Google's ~300-result cap.** A single query returns roughly 300 results at most. Query expansion exists precisely to work around this, so keep `expandQueries` on.
- **`possiblyTruncated`.** When Google's snippet ellipsis touches an address, this flag is set to `true`. Verify those rows before sending anything.
- **Apify GOOGLE\_SERP proxy required.** The Actor cannot run without Apify proxy credentials.
- **Free-plan cap.** Free Apify plans are limited to 100 emails per run. Paid plans are uncapped.
- **`username` and `profileUrl` availability.** These are only populated when Google's result exposes a handle. Wix shops publish no handles, so `username` is frequently `null`; `profileUrl` still carries the shop's web address whenever the breadcrumb host is present. That is a Google limitation, not a bug.
- **No guaranteed volume.** Results vary with keywords, domains and location.

Nothing here is affiliated with, endorsed by or officially supported by Wix.

***

### Related Actors

| Actor | What it collects |
|---|---|
| [AliExpress Email Scraper](https://apify.com/neuro-scraper/aliexpress-email-scraper) | Public contact emails from AliExpress |
| [Allegro Email Scraper](https://apify.com/neuro-scraper/allegro-email-scraper) | Public contact emails from Allegro |
| [Amazon Email Scraper](https://apify.com/leads-scraper/amazon-email-scraper) | Public contact emails from Amazon |
| [Best Buy Seller Email Scraper](https://apify.com/leads-scraper/best-buy-seller-email-scraper) | Public contact emails from Best Buy |
| [BigCommerce Store Email Scraper](https://apify.com/neuro-scraper/bigcommerce-store-email-scraper) | Public contact emails from BigCommerce Store |
| [Cdiscount Email Scraper](https://apify.com/neuro-scraper/cdiscount-email-scraper) | Public contact emails from Cdiscount |
| [Coupang Email Scraper](https://apify.com/neuro-scraper/coupang-email-scraper) | Public contact emails from Coupang |
| [Depop Email Scraper](https://apify.com/leads-scraper/depop-email-scraper) | Public contact emails from Depop |
| [DHgate Email Scraper](https://apify.com/neuro-scraper/dhgate-email-scraper) | Public contact emails from DHgate |
| [eBay Email Scraper](https://apify.com/leads-scraper/ebay-email-scraper) | Public contact emails from eBay |
| [Ecwid Store Email Scraper](https://apify.com/neuro-scraper/ecwid-store-email-scraper) | Public contact emails from Ecwid Store |
| [Etsy Email Scraper](https://apify.com/leads-scraper/etsy-email-scraper) | Public contact emails from Etsy |
| [Faire Email Scraper](https://apify.com/leads-scraper/faire-email-scraper) | Public contact emails from Faire |
| [Flipkart Email Scraper](https://apify.com/leads-scraper/flipkart-email-scraper) | Public contact emails from Flipkart |
| [Home Depot Seller Email Scraper](https://apify.com/leads-scraper/home-depot-seller-email-scraper) | Public contact emails from Home Depot |
| [JD.com Email Scraper](https://apify.com/leads-scraper/jd-com-email-scraper) | Public contact emails from JD.com |
| [Lazada Email Scraper](https://apify.com/neuro-scraper/lazada-email-scraper) | Public contact emails from Lazada |
| [Lowe's Seller Email Scraper](https://apify.com/leads-scraper/lowes-seller-email-scraper) | Public contact emails from Lowe's |
| [MercadoLibre Email Scraper](https://apify.com/neuro-scraper/mercadolibre-email-scraper) | Public contact emails from MercadoLibre |
| [Mercari Email Scraper](https://apify.com/neuro-scraper/mercari-email-scraper) | Public contact emails from Mercari |
| [Newegg Email Scraper](https://apify.com/leads-scraper/newegg-email-scraper) | Public contact emails from Newegg |
| [Otto Email Scraper](https://apify.com/leads-scraper/otto-email-scraper) | Public contact emails from Otto |
| [Overstock Email Scraper](https://apify.com/leads-scraper/overstock-email-scraper) | Public contact emails from Overstock |
| [Poshmark Email Scraper](https://apify.com/leads-scraper/poshmark-email-scraper) | Public contact emails from Poshmark |
| [Rakuten Email Scraper](https://apify.com/neuro-scraper/rakuten-email-scraper) | Public contact emails from Rakuten |
| [Shopee Email Scraper](https://apify.com/leads-scraper/shopee-email-scraper) | Public contact emails from Shopee |
| [Shopify Store Email Scraper](https://apify.com/leads-scraper/shopify-store-email-scraper) | Public contact emails from Shopify Store |
| [Taobao Email Scraper](https://apify.com/leads-scraper/taobao-email-scraper) | Public contact emails from Taobao |
| [Target Seller Email Scraper](https://apify.com/neuro-scraper/target-seller-email-scraper) | Public contact emails from Target |
| [Temu Email Scraper](https://apify.com/leads-scraper/temu-email-scraper) | Public contact emails from Temu |
| [Tmall Email Scraper](https://apify.com/leads-scraper/tmall-email-scraper) | Public contact emails from Tmall |
| [Vinted Email Scraper](https://apify.com/leads-scraper/vinted-email-scraper) | Public contact emails from Vinted |
| [Walmart Email Scraper](https://apify.com/leads-scraper/walmart-email-scraper) | Public contact emails from Walmart |
| [Wayfair Email Scraper](https://apify.com/neuro-scraper/wayfair-email-scraper) | Public contact emails from Wayfair |
| [Wish Email Scraper](https://apify.com/leads-scraper/wish-email-scraper) | Public contact emails from Wish |
| [WooCommerce Email Scraper](https://apify.com/neuro-scraper/woocommerce-email-scraper) | Public contact emails from WooCommerce |
| [Zalando Email Scraper](https://apify.com/leads-scraper/zalando-email-scraper) | Public contact emails from Zalando |
| [AliExpress Email and Phone Number Scraper](https://apify.com/neuro-scraper/aliexpress-email-and-phone-number-scraper) | Emails and phone numbers from AliExpress |
| [Allegro Email and Phone Number Scraper](https://apify.com/neuro-scraper/allegro-email-and-phone-number-scraper) | Emails and phone numbers from Allegro |
| [Amazon Email and Phone Number Scraper](https://apify.com/leads-scraper/amazon-email-and-phone-number-scraper) | Emails and phone numbers from Amazon |
| [Best Buy Email and Phone Number Scraper](https://apify.com/neuro-scraper/best-buy-seller-email-and-phone-number-scraper) | Emails and phone numbers from Best Buy |
| [BigCommerce Store Email and Phone Number Scraper](https://apify.com/neuro-scraper/bigcommerce-store-email-and-phone-number-scraper) | Emails and phone numbers from BigCommerce Store |

### Wix Stores Email Scraper Example Run

A web studio wants to pitch redesigns to independent food and drink shops in the north of England.

They run the Wix Stores Email Scraper with `keywords: ["coffee roaster", "bakery shop", "brewery online store"]`, `location: "Manchester"`, `customDomains: ["@gmail.com", "@outlook.com"]` and `maxEmails: 200`.

Query expansion turns three keywords into more than twenty phrasings, each anchored on `"Powered by Wix"`, and the dataset fills with business names, shop domains and addresses.

They sort by `possiblyTruncated`, drop the flagged rows, open a handful of shop sites to sanity-check fit, then export a CSV. Total setup time: under five minutes.

***

### Wix Stores Email Scraper FAQ

#### Does the Wix Stores Email Scraper find every store on Wix?

No. It finds shops whose pages still carry the `"Powered by Wix"` credit and have been indexed by Google. Merchants who removed that footer — common on paid plans — will not appear, so the output is a large sample of the platform rather than a complete list.

#### Why does it search a footprint phrase instead of `site:wix.com`?

Because Wix shops live on their owners' domains. A `site:` query would only reach Wix's own marketing pages and a slice of `wixsite.com` subdomains, missing the merchants you actually want.

#### Does the Wix Stores Email Scraper log into Wix?

No. It never logs in, never uses a Wix API and never opens a storefront. All data comes from publicly indexed Google search results.

#### Where do the emails actually come from?

From Google result titles, breadcrumb labels and snippets — usually contact pages, about pages and wholesale pages where the shop owner published an address themselves.

#### Will I get a working shop URL?

Usually yes. The host in Google's breadcrumb is the merchant's own web address, so `profileUrl` and `url` normally point straight at the live site.

#### Why is `username` often `null`?

Wix shops do not have public handles the way a marketplace seller does. When Google prints only a business name, `accountName` and `fullName` are populated and `username` stays `null`.

#### Does it pick up free `wixsite.com` shops as well as custom domains?

Yes, both. Any host that appears in the result breadcrumb is accepted, which is exactly what makes this Wix email extractor useful for spotting shops ready for an upgrade.

#### Do I need an Apify proxy?

Yes. The Wix Stores Email Scraper requires the Apify GOOGLE\_SERP proxy and cannot run without Apify proxy credentials.

#### How many emails can it collect per run?

Free Apify plans are capped at 100 emails per run. Paid plans are uncapped, bounded only by your `maxEmails` value and what Google has indexed.

#### What does `possiblyTruncated: true` mean?

Google's snippet ellipsis touched the email, so the address may be cut off. Verify those rows before sending.

#### Should I leave query expansion enabled?

Yes. Google caps a single query at roughly 300 results, and expansion is how the Wix Stores Email Scraper reaches past that ceiling.

#### Is this affiliated with Wix?

No. The Wix Stores Email Scraper is an independent tool and is not affiliated with, endorsed by or officially supported by Wix.

***

### Responsible Use and GDPR

Publicly visible does not mean consent to bulk marketing. Treat every address the Wix Stores Email Scraper returns as personal data belonging to a real small-business owner.

Follow GDPR, CAN-SPAM, PECR and any other regime that applies to you: identify yourself, state why you are contacting them, honour opt-outs immediately and delete records on request.

A relevant note to a shop that published a contact address is reasonable outreach. Blasting an unfiltered export is not, and it is the quickest way to burn your sending domain.

***

### Leave a review

If the Wix Stores Email Scraper saved you time, please leave a star rating and a short review
on the Actor page.

Reviews are how other buyers judge whether a tool works, and they tell us which features to
build next.

If something did not work, email <neurodata.apify@gmail.com>
instead - bugs get fixed faster than they get complained about.

### Support

Questions, bug reports or a custom build request? Email **neurodata.apify@gmail.com** and include your run ID so the Wix Stores Email Scraper logs can be checked quickly.

# Actor input Schema

## `keywords` (type: `array`):

Search terms describing the Wix Stores accounts you want (niche, job title, industry).

## `location` (type: `string`):

Optional location phrase added to every query (e.g. "New York").

## `customDomains` (type: `array`):

Only emails ending with one of these domains are collected. With or without the leading @. Each domain is searched separately, so more domains means more results but a longer run - remove some for a faster, narrower search, or add your own (e.g. @company.com).

## `maxEmails` (type: `integer`):

Stop once this many unique emails have been collected.

## `countryCode` (type: `string`):

Two-letter country code for the search proxy (e.g. US, GB, DE). Empty for any.

## `expandQueries` (type: `boolean`):

Search each keyword x domain pair with several phrasings. Recommended - Google caps a single query at ~300 results.

## `queryModifiers` (type: `array`):

Extra words combined with each keyword when Expand queries is on. Tuned for Wix Stores.

## `maxPagesPerQuery` (type: `integer`):

Google rarely returns more than ~30 pages for one query.

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

How many queries run in parallel.

## Actor input object example

```json
{
  "keywords": [
    "online store",
    "shop"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "maxEmails": 20,
  "countryCode": "",
  "expandQueries": true,
  "queryModifiers": [
    "email",
    "contact us",
    "wholesale",
    "customer service",
    "stockist"
  ],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

# Actor output Schema

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

Records produced by Wix Stores Email Scraper, stored in the run's default dataset.

# 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 = {
    "keywords": [
        "online store",
        "shop"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com"
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact us",
        "wholesale",
        "customer service",
        "stockist"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("leads-scraper/wix-stores-email-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 = {
    "keywords": [
        "online store",
        "shop",
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com",
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact us",
        "wholesale",
        "customer service",
        "stockist",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("leads-scraper/wix-stores-email-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 '{
  "keywords": [
    "online store",
    "shop"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "countryCode": "",
  "queryModifiers": [
    "email",
    "contact us",
    "wholesale",
    "customer service",
    "stockist"
  ]
}' |
apify call leads-scraper/wix-stores-email-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,leads-scraper/wix-stores-email-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/gvFtb5zVhTH00ZYAF/builds/JQoVNAelL7Gq6dUkf/openapi.json
