# Chrome Web Store Email Scraper (`leads-scraper/chrome-web-store-email-scraper`) Actor

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

- **URL**: https://apify.com/leads-scraper/chrome-web-store-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

### Chrome Web Store Email Scraper

The **Chrome Web Store Email Scraper** turns Google's public index of extension listings into a clean, deduplicated contact list of browser extension publishers.
It is built for partner recruitment, integration outreach and developer relations — not for consumer prospecting.
Every row it produces comes from a page Google already shows to anyone who searches.

Extension listings are one of the few developer surfaces where a contact address is genuinely expected to be public.
Chrome Web Store policy pushes publishers to offer a support route, so a large share of listings print a developer or support email right in the description.
That is exactly the text the Chrome Web Store Email Scraper reads.

If you have ever tried to assemble a chrome extension developer contact list by hand, you know the work: search, open listing, scroll to the support line, copy, repeat.
The Chrome Web Store Email Scraper collapses that loop into one Apify run and hands you a structured dataset instead of a spreadsheet you typed yourself.
It is a chrome web store publisher contacts pipeline rather than a browser automation toy.

In our measured test runs the Chrome Web Store Email Scraper attached an account identity to **9 of 9** sampled rows, which is as strong as this family of Actors gets.
That means you usually get a publisher name and an extension slug alongside the address, not a bare email in a vacuum.
Yield still depends on your keywords, your domain filter and your location phrase.

### What the Chrome Web Store Email Scraper actually does

The Chrome Web Store Email Scraper does **not** log into Chrome Web Store, call any Google API, or open the store website in a browser.
It builds Google queries with the `site:` operator against `chromewebstore.google.com` and `chrome.google.com`, fetches result pages through the Apify **GOOGLE_SERP** proxy, and parses the result blocks.
There is no headless browser, no JavaScript rendering, no login and no cookies.

Each result block is located structurally — the parser finds the `<h3>` title, then the smallest surrounding block — instead of depending on Google's CSS class names.
Emails are pulled from that block text with a domain-filtered regular expression, deduplicated globally, and pushed to the Apify dataset as they are found.
So a layout change on Google's side degrades detail quality rather than breaking the run outright.

This makes the Chrome Web Store Email Scraper a **publicly indexed contact discovery** tool for the browser extension ecosystem.
It surfaces what extension publishers chose to publish. Nothing more.

#### Who the Chrome Web Store Email Scraper is built for

Anyone who sells to, partners with or recruits browser extension publishers: SDK vendors, analytics platforms, security tooling companies, agencies and ecosystem teams.
Teams covering both browsers usually run this alongside the [Firefox Add-ons Email Scraper](https://apify.com/neuro-scraper/firefox-add-ons-email-scraper), since a large share of publishers ship the same product to Chrome and Firefox.
The Chrome Web Store Email Scraper is a browser extension developer leads engine for people running an ecosystem motion, and the addresses it finds were published for exactly that kind of enquiry.

### Key features of the Chrome Web Store Email Scraper

| Feature | What it means for your Chrome Web Store extension developer email list |
|---|---|
| Google `site:` targeting | Queries are scoped to `chromewebstore.google.com` and `chrome.google.com`, so results stay inside the extension marketplace |
| Query expansion | Each keyword x domain pair is searched as a base query, a quoted query, an `intitle:` query, and one variant per query modifier |
| Chrome-tuned modifiers | Defaults are `email`, `contact`, `support`, `developer`, `publisher` — the words extension listings actually use |
| Domain filtering | Only addresses ending in your `customDomains` values are kept, with or without the leading `@` |
| Global deduplication | An address is emitted once per run, no matter how many queries or pages surfaced it |
| Obfuscation handling | 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 local parts |
| 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 result block |
| Async concurrency | An `asyncio` worker pool runs several queries in parallel with a shared stop signal on `maxEmails` |
| Retries and backoff | 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 counted as empty |
| Failed-query requeue | Blocked or failed queries are re-queued once at the end of the run |
| Resumable state | Run state is stored in the key-value store keyed by an input hash, and saved on `PERSIST_STATE`, `MIGRATING` and `ABORTING` |
| Fallback parser | A whole-page fallback keeps extracting emails if Google's markup changes |
| Run summary | Logs pages fetched, blocked pages, retries and emails per page |

### How the Chrome Web Store Email Scraper works, step by step

1. Reads your input: keywords, location, email domains and run limits.
2. Builds Google queries such as `site:chromewebstore.google.com productivity extension developer "@gmail.com"`.
3. Fetches Google result pages asynchronously through the Apify GOOGLE_SERP proxy.
4. Locates each organic result block structurally and reads its visible text.
5. Applies the domain-filtered email regex, the junk filter and the soft-wrap repair.
6. Deduplicates globally and pushes every new lead straight to the dataset.

Base queries always run first, so the highest-signal results from the Chrome Web Store Email Scraper land in your dataset early.
If you stop the run at 50 emails, those 50 come from the strongest phrasings rather than from an arbitrary corner of the expansion set.
The shared stop signal means workers halt as soon as `maxEmails` is reached.

### Input reference for the Chrome Web Store Email Scraper

| Field | Type | Default | Meaning |
|---|---|---|---|
| `keywords` | array (required) | `["extension", "developer"]` | Search terms describing the extension publishers you want |
| `location` | string | `""` | Optional location phrase added to every query |
| `customDomains` | array | `["@gmail.com","@yahoo.com"]` | Only emails on these domains are kept; `@` 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 in several phrasings |
| `queryModifiers` | array | `["email","contact","support","developer","publisher"]` | 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 Chrome Web Store Email Scraper

```json
{
  "keywords": [
    "productivity extension",
    "screen recorder extension",
    "seo extension developer"
  ],
  "location": "",
  "customDomains": ["@gmail.com", "@outlook.com"],
  "maxEmails": 300,
  "countryCode": "US",
  "expandQueries": true,
  "queryModifiers": ["email", "contact", "support", "developer", "publisher"],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

Keep keywords close to how a listing describes itself.
"screen recorder extension" beats "video software", because the Chrome Web Store Email Scraper matches indexed listing text, not a taxonomy.

### Output reference: what the Chrome Web Store Email Scraper returns

Every dataset item carries 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 |
| `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/description snippet, 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 |
| `foundAt` | ISO 8601 UTC timestamp |

#### Example output from the Chrome Web Store Email Scraper

```json
[
  {
    "network": "Chrome Web Store",
    "keyword": "productivity extension",
    "query": "site:chromewebstore.google.com productivity extension \"@gmail.com\"",
    "title": "Tab Manager Pro - Chrome Web Store",
    "accountName": "Tab Manager Pro",
    "fullName": "Tab Manager Pro",
    "username": "tab-manager-pro",
    "profileUrl": "https://chromewebstore.google.com/detail/tab-manager-pro",
    "url": "https://chromewebstore.google.com/detail/tab-manager-pro",
    "description": "Group, search and restore tabs. Support: tabmanagerpro.dev@gmail.com",
    "email": "tabmanagerpro.dev@gmail.com",
    "emailDomain": "@gmail.com",
    "possiblyTruncated": false,
    "foundAt": "2026-08-31T09:12:44Z"
  },
  {
    "network": "Chrome Web Store",
    "keyword": "seo extension developer",
    "query": "site:chrome.google.com seo extension developer contact \"@outlook.com\"",
    "title": "SERP Insight Toolbar - Chrome Web Store",
    "accountName": "SERP Insight Toolbar",
    "fullName": "",
    "username": null,
    "profileUrl": "",
    "url": "https://chrome.google.com/webstore/category/extensions",
    "description": "Developer contact: serpinsight.support@outlook.com for bug reports and...",
    "email": "serpinsight.support@outlook.com",
    "emailDomain": "@outlook.com",
    "possiblyTruncated": true,
    "foundAt": "2026-08-31T09:13:02Z"
  }
]
```

The second row shows two honest realities the Chrome Web Store Email Scraper never hides: a missing handle, and `possiblyTruncated: true` because Google's ellipsis sat next to the address.
Filter on `possiblyTruncated` before you import anything into a sending tool.

Because the Chrome Web Store Email Scraper writes every field on every row, the dataset shape stays stable across runs.
That matters if you feed the output into a CRM importer or an enrichment pipeline that expects fixed columns.

### Use cases for the Chrome Web Store Email Scraper

| Use case | How the Chrome Web Store Email Scraper supports it |
|---|---|
| Extension partner recruitment | Find publishers in an adjacent category and pitch a bundle, cross-promotion or affiliate deal |
| SDK and API developer relations | Build a reachable list of extension authors who could adopt your SDK, auth provider or analytics library |
| Integration partnerships | Identify extension teams whose product would benefit from a two-way integration with yours |
| Agency and freelance sourcing | Surface independent extension developers available for contract browser-extension work |
| Competitive and market research | Map who publishes in a niche, with a contact route for interviews and surveys |
| Acquisition sourcing | Locate small extension publishers who list a direct contact address for business enquiries |
| Security and compliance outreach | Reach maintainers of extensions in scope for a disclosure or policy notice |
| Conference and community recruiting | Invite active extension authors to speak, test a beta or join a developer programme |

Mobile-first vendors often publish extensions too, so the [Google Play Email Scraper](https://apify.com/leads-scraper/google-play-email-scraper) is a useful second pass over the same companies.
Because these are business contacts published for support and partnership enquiries, a well-targeted Chrome Web Store Email Scraper list behaves like a partner pipeline.
Treat it as B2B ecosystem outreach, and write to the extension, not to a stranger.

### Tuning the Chrome Web Store Email Scraper for better yield

Widen `customDomains` first — a great many independent extension publishers use free mailbox providers, but plenty also list a company domain.
Adding entries such as `@outlook.com`, `@proton.me` or a specific company domain often doubles what the Chrome Web Store Email Scraper returns.
Domain values work with or without the leading `@`.

Keep `expandQueries` on. Google caps a single query at roughly 300 results, and expansion is precisely how the Chrome Web Store Email Scraper reaches past that ceiling.
Add category words to `queryModifiers` — `privacy`, `productivity`, `chrome extension`, `webstore` — to open fresh query surface.

Use `countryCode` when you want regionally weighted results, and `location` when the listing text itself is likely to name a place.
Raise `maxConcurrency` for speed on paid plans; leave it near the default when you want a gentle run.
Resumable state means an aborted or migrated run picks up where it left off rather than restarting.

Related Actors are useful in the same motion.
Extension authors usually keep code elsewhere, so pairing this with the [GitHub Email Scraper](https://apify.com/leads-scraper/github-email-scraper) or the **npm Email Scraper** tends to enrich the same companies from a second angle.

### Expected results and honest limitations of the Chrome Web Store Email Scraper

- The Chrome Web Store Email Scraper only finds accounts whose email is **publicly visible in Google's index**. Listings that hide contact details behind a form will not appear.
- Google caps a single query at roughly 300 results. Query expansion exists to work around that, but it does not remove the cap.
- `username` and `profileUrl` are populated only when Google's result exposes a handle. Some rows carry `accountName` and `fullName` with an empty `username` and `profileUrl` — a Google limitation, not a bug.
- `possiblyTruncated: true` means Google's snippet ellipsis touched the address. Verify those 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.
- Results vary with keywords, domains, country and location. No volume is guaranteed.

The Chrome Web Store Email Scraper is not affiliated with, endorsed by or supported by Google or the Chrome Web Store.
It reads public search results only.

### Legal and ethical use of Chrome Web Store Email Scraper output

The Chrome Web Store Email Scraper collects data; you are responsible for how you contact people.
Under GDPR, CAN-SPAM, CASL and similar regimes, a published business support address does not automatically license bulk marketing — check your basis before you send.
Honour opt-outs, identify yourself clearly, and keep messages relevant to the recipient's extension.

### FAQ about the Chrome Web Store Email Scraper

#### Does the Chrome Web Store Email Scraper log into Chrome Web Store?

No. It never authenticates, never opens the store site and never uses a Google or Chrome Web Store API. It reads publicly indexed Google search results only.

#### Where do the emails the Chrome Web Store Email Scraper returns come from?

From the visible text of Google result blocks — titles, snippets and site labels — for pages on `chromewebstore.google.com` and `chrome.google.com`.

#### Why does the Chrome Web Store Email Scraper sometimes return `username: null`?

Google does not always print a handle in the result. When it does not, the row still carries `accountName`, `fullName`, `description` and the email, but `username` is `null` and `profileUrl` is empty.

#### How many emails can one run of the Chrome Web Store Email Scraper return?

`maxEmails` accepts 1 to 10000. Free Apify plans stop at 100 emails per run; paid plans are uncapped. Actual yield depends on your keywords and domain filter.

#### What does `possiblyTruncated` mean?

Google's snippet cut text with an ellipsis right at the email. The address may be incomplete, so treat those rows as needing verification.

#### Can I target company domains instead of free mailboxes?

Yes. Put any domain into `customDomains` — `@acme.io`, `example.com`, anything. Only matching addresses are kept, and boundary-correct matching prevents false positives like `@gmail.company`.

#### Do I need a proxy to run the Chrome Web Store Email Scraper?

Yes. It runs on the Apify GOOGLE_SERP proxy and will not work without Apify proxy credentials.

#### Is a run resumable?

Yes. State is persisted in the key-value store keyed by a hash of your input, and saved on Apify's `PERSIST_STATE`, `MIGRATING` and `ABORTING` events.

#### Why did my Chrome Web Store Email Scraper run return fewer results than expected?

Usually a narrow domain filter or overly generic keywords. Broaden `customDomains`, add category words to `queryModifiers`, and keep `expandQueries` enabled.

#### Are these consumer contacts?

No. They are extension publishers, agencies and integration partners who published a support or developer address on a store listing. Frame outreach as partnership, not consumer prospecting.

#### Does the Chrome Web Store Email Scraper handle obfuscated addresses?

Yes. `name [at] domain [dot] com`, `name (at) domain`, spaced `@`, `domain .com`, zero-width characters and the full-width `＠` are all normalised.

#### How do I export Chrome Web Store Email Scraper results?

Through the standard Apify dataset export: JSON, CSV, Excel, XML or the Apify API.

#### Can I schedule the Chrome Web Store Email Scraper?

Yes. Use Apify Schedules to re-run it weekly; global deduplication runs per run, so compare against your own CRM to spot newly published extension developer email contacts.

### Related Actors

| Actor | What it collects |
|---|---|
| [Chrome Web Store Email and Phone Number Scraper](https://apify.com/neuro-scraper/chrome-web-store-email-and-phone-number-scraper) | Emails and phone numbers from Chrome Web Store |
| [Chrome Web Store Phone Number Scraper](https://apify.com/neuro-scraper/chrome-web-store-phone-number-scraper) | Public phone numbers from Chrome Web Store |
| [App Store Email Scraper](https://apify.com/leads-scraper/app-store-email-scraper) | Public contact emails from App Store |
| [Atlassian Marketplace Email Scraper](https://apify.com/leads-scraper/atlassian-marketplace-email-scraper) | Public contact emails from Atlassian Marketplace |
| [Bitbucket Email Scraper](https://apify.com/neuro-scraper/bitbucket-email-scraper) | Public contact emails from Bitbucket |
| [CodePen Email Scraper](https://apify.com/neuro-scraper/codepen-email-scraper) | Public contact emails from CodePen |
| [Confluence Email Scraper](https://apify.com/neuro-scraper/confluence-email-scraper) | Public contact emails from Confluence |
| [Dev.to Email Scraper](https://apify.com/neuro-scraper/dev-to-email-scraper) | Public contact emails from DEV Community |
| [Docker Hub Email Scraper](https://apify.com/neuro-scraper/docker-hub-email-scraper) | Public contact emails from Docker Hub |
| [Figma Community Email Scraper](https://apify.com/neuro-scraper/figma-community-email-scraper) | Public contact emails from Figma Community |
| [Firefox Add-ons Email Scraper](https://apify.com/neuro-scraper/firefox-add-ons-email-scraper) | Public contact emails from Firefox Add-ons |
| [GitHub Email Scraper](https://apify.com/leads-scraper/github-email-scraper) | Public contact emails from GitHub |
| [GitLab Email Scraper](https://apify.com/neuro-scraper/gitlab-email-scraper) | Public contact emails from GitLab |
| [Google Play Email Scraper](https://apify.com/leads-scraper/google-play-email-scraper) | Public contact emails from Google Play |
| [Hashnode Email Scraper](https://apify.com/neuro-scraper/hashnode-email-scraper) | Public contact emails from Hashnode |
| [HubSpot Marketplace Email Scraper](https://apify.com/leads-scraper/hubspot-marketplace-email-scraper) | Public contact emails from HubSpot Marketplace |
| [Hugging Face Email Scraper](https://apify.com/leads-scraper/hugging-face-email-scraper) | Public contact emails from Hugging Face |
| [Jira Email Scraper](https://apify.com/neuro-scraper/jira-email-scraper) | Public contact emails from Jira |
| [Maven Central Email Scraper](https://apify.com/neuro-scraper/maven-central-email-scraper) | Public contact emails from Maven Central |
| [Microsoft AppSource Email Scraper](https://apify.com/neuro-scraper/microsoft-appsource-email-scraper) | Public contact emails from Microsoft AppSource |
| [Salesforce AppExchange Email Scraper](https://apify.com/leads-scraper/salesforce-appexchange-email-scraper) | Public contact emails from Salesforce AppExchange |
| [Shopify App Store Email Scraper](https://apify.com/leads-scraper/shopify-app-store-email-scraper) | Public contact emails from Shopify App Store |
| [Slack App Directory Email Scraper](https://apify.com/leads-scraper/slack-app-directory-email-scraper) | Public contact emails from Slack App Directory |
| [SourceForge Email Scraper](https://apify.com/leads-scraper/sourceforge-email-scraper) | Public contact emails from SourceForge |
| [Stack Overflow Email Scraper](https://apify.com/leads-scraper/stack-overflow-email-scraper) | Public contact emails from Stack Overflow |
| [Unity Asset Store Email Scraper](https://apify.com/leads-scraper/unity-asset-store-email-scraper) | Public contact emails from Unity Asset Store |
| [Unreal Engine Marketplace Email Scraper](https://apify.com/leads-scraper/unreal-engine-marketplace-email-scraper) | Public contact emails from Unreal Engine Marketplace |
| [WordPress Plugin Directory Email Scraper](https://apify.com/neuro-scraper/wordpress-plugin-directory-email-scraper) | Public contact emails from WordPress Plugin Directory |
| [WordPress Theme Directory Email Scraper](https://apify.com/leads-scraper/wordpress-theme-directory-email-scraper) | Public contact emails from WordPress Theme Directory |
| [Zapier App Directory Email Scraper](https://apify.com/leads-scraper/zapier-app-directory-email-scraper) | Public contact emails from Zapier App Directory |
| [App Store Email and Phone Number Scraper](https://apify.com/leads-scraper/app-store-email-and-phone-number-scraper) | Emails and phone numbers from App Store |
| [Atlassian Marketplace Email and Phone Number Scraper](https://apify.com/neuro-scraper/atlassian-marketplace-email-and-phone-number-scraper) | Emails and phone numbers from Atlassian Marketplace |
| [Bitbucket Email and Phone Number Scraper](https://apify.com/neuro-scraper/bitbucket-email-and-phone-number-scraper) | Emails and phone numbers from Bitbucket |
| [CodePen Email and Phone Number Scraper](https://apify.com/neuro-scraper/codepen-email-and-phone-number-scraper) | Emails and phone numbers from CodePen |
| [Confluence Email and Phone Number Scraper](https://apify.com/neuro-scraper/confluence-email-and-phone-number-scraper) | Emails and phone numbers from Confluence |
| [DEV Community Email and Phone Number Scraper](https://apify.com/neuro-scraper/dev-to-email-and-phone-number-scraper) | Emails and phone numbers from DEV Community |
| [Docker Hub Email and Phone Number Scraper](https://apify.com/neuro-scraper/docker-hub-email-and-phone-number-scraper) | Emails and phone numbers from Docker Hub |
| [Figma Community Email and Phone Number Scraper](https://apify.com/neuro-scraper/figma-community-email-and-phone-number-scraper) | Emails and phone numbers from Figma Community |
| [Firefox Add-ons Email and Phone Number Scraper](https://apify.com/neuro-scraper/firefox-add-ons-email-and-phone-number-scraper) | Emails and phone numbers from Firefox Add-ons |
| [GitHub Email and Phone Number Scraper](https://apify.com/leads-scraper/github-email-and-phone-number-scraper) | Emails and phone numbers from GitHub |
| [GitLab Email and Phone Number Scraper](https://apify.com/neuro-scraper/gitlab-email-and-phone-number-scraper) | Emails and phone numbers from GitLab |
| [Google Play Email and Phone Number Scraper](https://apify.com/leads-scraper/google-play-email-and-phone-number-scraper) | Emails and phone numbers from Google Play |

### Leave a review

If the Chrome Web Store 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 of the Chrome Web Store Email Scraper? Email **neurodata.apify@gmail.com**.

# Actor input Schema

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

Search terms describing the Chrome Web Store 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 Chrome Web Store.

## `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": [
    "extension",
    "developer"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "maxEmails": 20,
  "countryCode": "",
  "expandQueries": true,
  "queryModifiers": [
    "email",
    "contact",
    "support",
    "developer",
    "publisher"
  ],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

# Actor output Schema

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

Records produced by Chrome Web Store 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": [
        "extension",
        "developer"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com"
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "support",
        "developer",
        "publisher"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("leads-scraper/chrome-web-store-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": [
        "extension",
        "developer",
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com",
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "support",
        "developer",
        "publisher",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("leads-scraper/chrome-web-store-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": [
    "extension",
    "developer"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "countryCode": "",
  "queryModifiers": [
    "email",
    "contact",
    "support",
    "developer",
    "publisher"
  ]
}' |
apify call leads-scraper/chrome-web-store-email-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,leads-scraper/chrome-web-store-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/m27ydVlIbJcTofAWu/builds/SjAG7N3NDSqofXsg5/openapi.json
