# Best Buy Seller Email Scraper (`leads-scraper/best-buy-seller-email-scraper`) Actor

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

- **URL**: https://apify.com/leads-scraper/best-buy-seller-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

### Best Buy Seller Email Scraper

The **Best Buy Seller Email Scraper** collects publicly indexed contact emails that appear alongside Best Buy brand, supplier and product pages in Google's search index, across both `bestbuy.com` and `bestbuy.ca`.

The honest framing comes first, because it decides whether this Actor is right for you. BestBuy.com is a **first-party consumer-electronics retailer**, not an open marketplace like Amazon or eBay.

Best Buy does not publish an inbox for every merchant on its site, so the **Best Buy Seller Email Scraper** does not return marketplace-seller mailboxes. What it realistically finds are **supplier, brand, vendor-relations and press contacts published on Best Buy's own pages**, plus the manufacturer and brand pages behind the electronics the chain stocks.

Volume is the second caveat, and it is a real one. In live testing this Actor surfaced only **3 result blocks** in total.

That is a very small dataset by any standard. If you need a lead list with hundreds of rows, this is not the tool — go to a marketplace Actor instead, and see the [Expected yield](#expected-yield-what-the-best-buy-seller-email-scraper-realistically-returns) section before you commit compute to a run.

Where the Best Buy Seller Email Scraper does earn its place is as a **vendor-relations and supplier-research tool** for consumer electronics: mapping which brands hold shelf space, tracking assortment shifts, and surfacing publicly listed partnership or press contacts.

#### What the Best Buy Seller Email Scraper actually does

The Best Buy Seller Email Scraper builds Google queries with the `site:` operator against `bestbuy.com` and `bestbuy.ca`, fetches result pages through the Apify **GOOGLE\_SERP** proxy, and extracts every email matching your chosen domains.

It parses each result block structurally — finding the `<h3>` title, then the smallest surrounding block — rather than relying on Google's CSS class names, which change often.

Every email is lower-cased, normalised, junk-filtered and globally deduplicated before the lead reaches the dataset.

#### What the Best Buy Seller Email Scraper does not do

It does **not** log into Best Buy, use any Best Buy API, open the site in a browser, render JavaScript, or use cookies or authentication. No private data is accessed.

All output comes from publicly indexed Google search results: titles, snippets and site labels. If Google has not indexed it, the Best Buy Seller Email Scraper cannot return it.

### Key features of the Best Buy Seller Email Scraper

Each row below describes behaviour that is genuinely implemented in the Actor.

| Feature | What it means in practice |
|---|---|
| Dual-domain `site:` targeting | Queries cover `bestbuy.com` and `bestbuy.ca`, so US and Canadian pages are both in scope |
| Query expansion | Base, quoted and `intitle:` phrasings plus one variant per query modifier; base queries run first |
| Domain filtering | Only emails on the domains you list survive (`@gmail.com` and `@yahoo.com` by default) |
| Global deduplication | Each unique email is emitted once across every query and page in the run |
| Email normalisation | Handles `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 | Drops a hit that is only the tail of another email in the same block |
| Async concurrency | An `asyncio` worker pool with a shared stop signal once `maxEmails` is reached |
| Retries and backoff | Up to 3 attempts per page, exponential backoff, a fresh proxy session per request |
| Block detection | CAPTCHA, "unusual traffic" and consent pages are detected and retried, not counted as empty |
| Re-queueing | Blocked or failed queries are retried once at the end of the run |
| Resumable state | Run state lives in the key-value store keyed by an input hash, saved on `PERSIST_STATE`, `MIGRATING` and `ABORTING` |
| Fallback parser | If Google's markup changes, the run degrades to "emails without account details" rather than "no emails" |
| Run summary | Logs pages fetched, blocked pages, retries and emails per page |

### How the Best Buy Seller Email Scraper works

The pipeline is short and deliberately transparent.

1. **Read input** — keywords, optional location, email domains and limits.
2. **Build queries** — combine each keyword with each domain using `site:bestbuy.com` and `site:bestbuy.ca`, expanding into several phrasings when `expandQueries` is on.
3. **Fetch pages** — request Google result pages asynchronously through the Apify GOOGLE\_SERP proxy with `aiohttp`.
4. **Parse blocks** — locate each `<h3>` and the smallest block around it to recover title, label and snippet.
5. **Extract emails** — apply a domain-filtered regex to the block text.
6. **Deduplicate and push** — emit each new lead immediately, so partial results survive an abort.

Google caps a single query at roughly 300 results. Query expansion is how the Best Buy Seller Email Scraper reaches past that ceiling — though on this retailer the binding constraint is what Google has indexed, not the cap.

### Input reference for the Best Buy Seller Email Scraper

| Field | Type | Default | Meaning |
|---|---|---|---|
| `keywords` | array (required) | `["supplier", "brand"]` | Search terms describing what 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 kept; the leading `@` is optional |
| `maxEmails` | integer 1-10000 | `20` | Stop after this many unique emails |
| `countryCode` | string | `""` | Two-letter country for the search proxy (US, GB, DE...) |
| `expandQueries` | boolean | `true` | Search each keyword x domain pair in several phrasings |
| `queryModifiers` | array | `["email","contact","wholesale","customer service","inquiries"]` | Extra words combined with each keyword when expansion is on |
| `maxPagesPerQuery` | integer 1-50 | `30` | Page cap per query |
| `maxConcurrency` | integer 1-20 | `5` | Parallel queries |

#### Example input for the Best Buy Seller Email Scraper

A consumer-electronics research run aimed at brand and vendor pages rather than shopper support:

```json
{
  "keywords": ["supplier", "brand", "audio manufacturer", "smart home vendor"],
  "location": "",
  "customDomains": ["@gmail.com", "@yahoo.com", "@outlook.com"],
  "maxEmails": 100,
  "countryCode": "US",
  "expandQueries": true,
  "queryModifiers": ["email", "contact", "wholesale", "customer service", "inquiries"],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

Keep `maxEmails` modest here. Given the observed yield, a high cap will not produce more rows — it will only lengthen the run while the Best Buy Seller Email Scraper exhausts its queries.

### Output reference for the Best Buy Seller Email Scraper

Every dataset item produced by the Best Buy Seller Email Scraper carries all fourteen 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 (handle or display name) |
| `fullName` | Display name parsed from a profile-style title; empty for non-profile results |
| `username` | URL-safe handle when the platform exposes one; otherwise `null` |
| `profileUrl` | Canonical account URL when a handle is known; otherwise empty |
| `url` | Direct platform link when exposed, else the profile URL |
| `description` | Bio or snippet text, cleaned of labels and 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 |

#### Example output from the Best Buy Seller Email Scraper

Two rows, one with a handle and one without — which reflects how thin identity data is on this retailer.

```json
[
  {
    "network": "Best Buy",
    "keyword": "brand",
    "query": "site:bestbuy.com brand contact \"@gmail.com\"",
    "title": "Northline Audio - Best Buy",
    "accountName": "northline-audio",
    "fullName": "Northline Audio",
    "username": "northline-audio",
    "profileUrl": "https://www.bestbuy.com/site/brands/northline-audio",
    "url": "https://www.bestbuy.com/site/brands/northline-audio",
    "description": "Shop Northline Audio at Best Buy. Dealer and partnership enquiries: northline.dealers@gmail.com",
    "email": "northline.dealers@gmail.com",
    "emailDomain": "@gmail.com",
    "possiblyTruncated": false,
    "foundAt": "2026-08-31T10:44:02.610Z"
  },
  {
    "network": "Best Buy",
    "keyword": "supplier",
    "query": "site:bestbuy.ca supplier wholesale \"@yahoo.com\"",
    "title": "Vantage Peripherals Wireless Keyboard - Best Buy Canada",
    "accountName": "Vantage Peripherals",
    "fullName": "",
    "username": null,
    "profileUrl": "",
    "url": "https://www.bestbuy.ca/en-ca/product/vantage-peripherals-wireless-keyboard",
    "description": "Vantage Peripherals wireless keyboard. Supplier and press enquiries vantage.supply@yahoo.com ...",
    "email": "vantage.supply@yahoo.com",
    "emailDomain": "@yahoo.com",
    "possiblyTruncated": true,
    "foundAt": "2026-08-31T10:44:37.155Z"
  }
]
```

When a handle is exposed, `profileUrl` follows the `https://www.bestbuy.com/site/brands/{username}` shape. Otherwise you get `accountName` and the email, and nothing more.

### Use cases for the Best Buy Seller Email Scraper

| Use case | How the Best Buy Seller Email Scraper helps |
|---|---|
| Supplier research | Identify who to approach about becoming a Best Buy supplier, from publicly listed vendor contacts |
| Assortment tracking | Build a list of the electronics brands stocked in a category |
| Competitive analysis | Compare Best Buy's brand mix against Newegg, Amazon or a regional electronics chain |
| Manufacturer outreach | Reach the makers behind stocked products about distribution or co-marketing |
| US vs Canada comparison | Diff `bestbuy.com` and `bestbuy.ca` coverage for the same category |
| Press and PR | Surface publicly listed press and communications contacts attached to brand pages |
| Distributor prospecting | Find electronics brands with retail presence that may still need regional distribution |
| Category entry research | See which consumer-electronics niches are crowded and which look under-served |

These are **research** workflows first. Given the yield, treating the Best Buy Seller Email Scraper as a lead-generation engine will disappoint; treating it as an assortment lens will not.

#### Consumer-electronics vendor relations

If your goal is a Best Buy vendor-relations conversation, the official route runs through the retailer's own partner and supplier onboarding process — not a cold email. The Best Buy Seller Email Scraper supports that work by showing which manufacturers already occupy your category.

Walking into that conversation with the current brand line-up in hand beats a generic pitch.

#### US and Canadian coverage

Because the Best Buy Seller Email Scraper queries both `bestbuy.com` and `bestbuy.ca`, you can compare which brands appear in one market and not the other.

That cross-border diff is one of the few things the Best Buy Seller Email Scraper does that a single-domain scraper cannot.

Category managers, distributors and procurement researchers get more from the Best Buy Seller Email Scraper than a sales team would, precisely because the output is small and specific.

### Worked examples with the Best Buy Seller Email Scraper

**Audio and headphones.** Keywords `["audio brand", "headphone manufacturer", "speaker supplier"]`, `maxEmails: 100`, expansion on.

**Smart home and IoT.** Keywords `["smart home brand", "security camera manufacturer", "smart lighting supplier"]` with `countryCode: "US"`.

**PC and gaming peripherals.** Keywords `["gaming peripheral brand", "monitor manufacturer", "keyboard supplier"]` plus your prospects' corporate domains in `customDomains`.

**Press and partnership pass.** Keywords `["press", "media inquiries", "partnerships"]`, `maxEmails: 50`. Very low volume from the Best Buy Seller Email Scraper, but precise when anything lands.

### Expected yield: what the Best Buy Seller Email Scraper realistically returns

Set expectations low. In live testing the Best Buy Seller Email Scraper surfaced only **3 result blocks**, which is among the thinnest yields of any Actor in this family.

The reason is structural rather than technical: Best Buy is a first-party retailer that publishes almost no contact addresses on its product and brand pages, so there is very little for Google to index in the first place.

If you need supplier or seller contacts at real volume, use the marketplace Actors instead — the [Amazon Email Scraper](https://apify.com/leads-scraper/amazon-email-scraper), the [eBay Email Scraper](https://apify.com/leads-scraper/ebay-email-scraper), the [Etsy Email Scraper](https://apify.com/leads-scraper/etsy-email-scraper) and the [Faire Email Scraper](https://apify.com/leads-scraper/faire-email-scraper) all cover platforms where sellers publish contact details as a matter of course.

For electronics specifically, the [Newegg Email Scraper](https://apify.com/leads-scraper/newegg-email-scraper) covers the same vertical on a platform with genuine third-party sellers.

### Limitations of the Best Buy Seller Email Scraper

- **Best Buy is a first-party retailer.** This Actor finds supplier and brand contacts published on its pages rather than marketplace-seller inboxes, and volume is low — a single test run returned only 3 result blocks.
- Only accounts whose email is **publicly visible in Google's index** can be found. No private data is accessed.
- Google caps a single query at roughly **300 results**, which is why query expansion exists. Leave `expandQueries` on.
- `possiblyTruncated: true` means Google's snippet ellipsis touched the address; verify before sending.
- The Actor **requires the Apify GOOGLE\_SERP proxy** and cannot run without Apify proxy credentials.
- **Free Apify plans are capped at 100 emails per run.** Paid plans are uncapped — though on this retailer the cap is unlikely to be the binding constraint.
- `username` and `profileUrl` are populated only when Google exposes a handle. Many rows will carry `null` and `""` — a Google limitation, not a bug.
- Results vary with keywords, domains and location. No volume is guaranteed.

### Responsible use: GDPR and CAN-SPAM

The Best Buy Seller Email Scraper only collects addresses that are already published publicly. That alone does not make every downstream use lawful.

Under **GDPR**, a business email that identifies a person is personal data. You need a lawful basis, you must honour access and erasure requests, and you should be able to say where the address came from.

Under **CAN-SPAM**, commercial email needs accurate headers, a valid physical postal address and a working unsubscribe that you action promptly. Canadian recipients also fall under **CASL**, which is stricter than CAN-SPAM and generally requires consent.

In practice: keep outreach relevant to the recipient's role, suppress opt-outs immediately, never resell scraped lists, and verify `possiblyTruncated` rows before contact.

### Tips for better results from the Best Buy Seller Email Scraper

Add corporate domains. Electronics vendor contacts are almost always on company domains, so the default free-webmail pair limits you badly here.

Use specific product-category keywords. `"gaming peripheral brand"` will outperform the generic default `"brand"`.

Keep `maxEmails` low and `maxPagesPerQuery` high. With this yield, depth costs little and a large cap simply extends the run.

Because the Best Buy Seller Email Scraper records the exact `query` on every row, you can see which phrasings produced anything at all and drop the ones that never do.

### Related Actors

| Actor | What it collects |
|---|---|
| [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 |
| [Best Buy Phone Number Scraper](https://apify.com/neuro-scraper/best-buy-seller-phone-number-scraper) | Public phone numbers from Best Buy |
| [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 |
| [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 |
| [Wix Stores Email Scraper](https://apify.com/leads-scraper/wix-stores-email-scraper) | Public contact emails from Wix Stores |
| [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 |

### FAQ about the Best Buy Seller Email Scraper

#### How many results should I expect from the Best Buy Seller Email Scraper?

Very few. A live test returned only 3 result blocks. This is one of the lowest-yield Actors in the family, and you should plan around a handful of rows rather than a list.

#### Does the Best Buy Seller Email Scraper return marketplace-seller inboxes?

No. BestBuy.com is a first-party retailer and does not publish per-seller mailboxes the way Amazon or eBay do. This Actor returns supplier, brand, vendor-relations and press contacts already published on Best Buy pages.

#### Should I use this Actor for lead generation?

Only as a supplement. For volume, use Amazon, eBay, Etsy, Faire or Newegg — all of them cover platforms where sellers publish contact details openly.

#### Does it cover Best Buy Canada?

Yes. Queries target both `bestbuy.com` and `bestbuy.ca`.

#### Why is `username` sometimes `null`?

Because Google did not expose a handle in that result block. When it does, `profileUrl` takes the form `https://www.bestbuy.com/site/brands/{username}`.

#### Where does the Best Buy Seller Email Scraper get its data?

Entirely from publicly indexed Google search results — titles, snippets and site labels — fetched through the Apify GOOGLE\_SERP proxy.

#### Does the Best Buy Seller Email Scraper log into Best Buy?

No. There is no login, no API use, no browser, no JavaScript rendering and no cookies.

#### Is the Best Buy Seller Email Scraper affiliated with Best Buy?

No. It is an independent tool, not supported, endorsed or affiliated with the retailer.

#### What does `possiblyTruncated` mean?

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

#### Can I run the Best Buy Seller Email Scraper without Apify proxy credentials?

No. The GOOGLE\_SERP proxy is required.

#### Why does my run stop at 100 emails?

Free Apify plans are capped at 100 emails per run. Paid plans are uncapped, though this retailer rarely produces enough rows to reach either limit.

#### Can I export the dataset the Best Buy Seller Email Scraper produces?

Yes. Apify datasets export to JSON, CSV, XLSX and other formats, and are reachable through the Apify API.

### Leave a review

If the Best Buy Seller 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, a bug report, or a custom build? Email **neurodata.apify@gmail.com**.

# Actor input Schema

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

Search terms describing the Best Buy 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 Best Buy.

## `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": [
    "supplier",
    "brand"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "maxEmails": 20,
  "countryCode": "",
  "expandQueries": true,
  "queryModifiers": [
    "email",
    "contact",
    "wholesale",
    "customer service",
    "inquiries"
  ],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

# Actor output Schema

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

Records produced by Best Buy Seller 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": [
        "supplier",
        "brand"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com"
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "wholesale",
        "customer service",
        "inquiries"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("leads-scraper/best-buy-seller-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": [
        "supplier",
        "brand",
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com",
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "wholesale",
        "customer service",
        "inquiries",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("leads-scraper/best-buy-seller-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": [
    "supplier",
    "brand"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "countryCode": "",
  "queryModifiers": [
    "email",
    "contact",
    "wholesale",
    "customer service",
    "inquiries"
  ]
}' |
apify call leads-scraper/best-buy-seller-email-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,leads-scraper/best-buy-seller-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/sMW6Uf1B93LDq9vLm/builds/FTEXCM9bR3sAj6DiT/openapi.json
