# Chrome Web Store Unique Emails | $2.50 / 1k (`corent1robert/chrome-web-store-developer-contacts`) Actor

Unique Chrome Web Store publisher emails for security SaaS, DevTools and agencies. $2.50 / 1k unique publishers — not per listing. Keyword, category or official sitemap. CSV / JSON / Excel.

- **URL**: https://apify.com/corent1robert/chrome-web-store-developer-contacts.md
- **Developed by:** [Corentin Robert](https://apify.com/corent1robert) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.75 / 1,000 publisher scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### What does Chrome Web Store Developer Contacts do?

This Actor reads public [Chrome Web Store](https://chromewebstore.google.com/) listings and writes **one CRM row per publisher** (`publisherId`): the email and website Google already shows, plus a sample listing so you know who you are emailing.

Paste a **keyword** (`security`), a **32-character extension ID**, a Store **URL**, and/or a **leaf category**. Empty fields mean Google did not publish them — not a failed scrape.

### Who is this for?

This is for you if you sell to **Chrome extension publishers** — not to random “developers” on LinkedIn.

- **Security / browser / privacy SaaS** — you need the people who ship extensions (VPN, adblock, password managers), with a public support email, not a scraped listing dump.
- **DevTools / SDK / infrastructure** — same unique-publisher file you already use on [Google Play](https://apify.com/corent1robert/google-play-developer-contacts) and [Shopify](https://apify.com/corent1robert/shopify-app-developer-contacts).
- **Growth agencies** around Chrome extensions — a niche list (`security`, Privacy & security, Productivity · Tools) ready for Lemlist / Smartlead, with Gmail optionally filtered out.

Do not burn Apollo credits on lookalike LinkedIn profiles. A lot of CWS publishers publish a support/dev email on the listing. This Actor turns that into the row you actually send.

Hobby wallpaper is off by default (themes skipped, catalog `minUsers` 100). Two Avast listings under two publisher IDs stay two rows — dedup is **`publisherId`**, not email.

### Why scrape Chrome Web Store developer emails?

- Build an outreach list of extension publishers in a niche, not a spreadsheet of 10 clones of the same vendor
- Pull the **public email + website** Google already shows on the listing
- Keep a **legal name** when the publisher published one (useful for the first line, not for a lawsuit)
- Cap volume with **Max developers** so a first run stays at ~$0.05 (20 publishers)

On Apify you can **schedule** runs, download **JSON / CSV / Excel**, and push to Sheets, Make, n8n or your sequencer.

### What data can this Chrome Web Store scraper extract?

| Field | Description |
|---|---|
| `developerName`, `publisherId`, `developerUrl` | Publisher identity and Store publisher page |
| `developerEmail`, `developerWebsite` | Public listing contacts (Chrome / Google hosts are dropped) |
| `legalName`, `legalContactName` | Legal entity fields when Google shows them |
| `supportUrl`, `privacyUrl` | Public support and privacy-policy URLs when published |
| `extensionId`, `title`, `extensionUrl` | Sample listing used for this publisher row |
| `users`, `usersNumeric`, `score`, `ratingsCount` | Users and rating of the sample listing |
| `category`, `version`, `itemType` | Leaf category, version, `extension` or `theme` |
| `isConsumerEmail`, `sourceQuery`, `scrapedAt` | Gmail/Yahoo/Outlook flag and run metadata |

Not extracted (and not invented): private emails, reviews, permissions dumps, CRX files, verified-email checks, official Chrome Web Store API keys (that API is OAuth for *your* items).

### How to scrape Chrome Web Store developer emails

1. Open this Actor in Apify Console.
2. **Step 1 — Mode:** leave **Search** (a niche) or switch to **Full catalog** (official sitemap, paid). Catalog ignores keyword and category.
3. **Step 2 — Search** (Search mode only): keep `security`, or paste an extension ID / listing URL. Optionally pick a **leaf** category (parent hubs 404).
4. Leave **Max developers** at 20 for a first run, then raise it. Full catalog: raise toward 20,000.
5. Leave **Listing type** on **Extensions**. Turn on **Exclude Gmail** if you only want company inboxes.
6. Click **Start**. Download the dataset as JSON, CSV, or Excel. Use the **Publishers — Outreach** view for email columns.

In Search mode, query **or** category is required. Full catalog is paid Apify plans only.

**Be honest about coverage:**

- **Keyword search** is not the full SERP. The live RPC returns up to about **150 listings** per query. There is no reliable page 2.
- **Category** is a large first slice (high `count`, typically thousands of ids) — not a proven 100% of that leaf.
- **Full catalog** is the official sitemap plus your filters (`minUsers`, listing type), not a wallpaper dump of every theme.

See the **Input** tab for the visible options (proxy is optional and hidden).

### How much does it cost to scrape Chrome Web Store publishers?

**$2.50 per 1,000 unique publishers** on the Free plan. Actor start is **$0.00005** (invisible). You are not charged per extension listing.

Chrome Web Store scrapers on Apify typically bill **per listing**. The volume leader for CWS emails is **$4 / 1k outputs**. Email-from-ID tools sit at **$8–$11 / 1k**. Fifty Avast clones still cost fifty times. This Actor bills **one `publisherId`** — the row you actually email.

| Actor (public Store, Aug 2026) | You pay for | Free / 1k |
|---|---|---|
| [CWS extensions + emails](https://apify.com/fatihtahta/chrome-webstore-extensions-scraper) | 1 listing | **$3.99** |
| [CWS scraper](https://apify.com/gio21/chrome-web-store-scraper) | 1 listing | **$5.00** |
| [CWS email (DB)](https://apify.com/b2b_lead_generation/chrome-extension-scraper-email) | 1 listing | **$9.90** |
| [CWS listings](https://apify.com/parseforge/chrome-web-store-scraper) | 1 listing | **$11.00** |
| **This Actor** | **1 unique publisher** | **$2.50** |

Paid Apify plans go lower. Diamond is **$1.25 / 1k** unique publishers — a 20k catalog run is about **$25**, not $80 of duplicate listings.

**Free plan:** a run stops at **20 publishers** (~**$0.05**) — enough to test. Search: up to **2,000**. **Full catalog** (paid only): up to **20,000**.

| Apify plan | Per publisher | Per 1,000 unique |
|---|---|---|
| Free | **$0.0025** | **$2.50** |
| Bronze | **$0.00225** | **$2.25** |
| Silver | **$0.002** | **$2.00** |
| Gold | **$0.00175** | **$1.75** |
| Platinum | **$0.0015** | **$1.50** |
| Diamond | **$0.00125** | **$1.25** |

| Run | Approx. cost (Free) |
|---|---|
| Default / Free cap (20 publishers) | **$0.05** |
| 100 publishers | **$0.25** |
| 1,000 publishers | **$2.50** |
| 10,000 catalog (paid plan) | **$25.00** Free · **$12.50** Diamond |

Set **Max developers** and, on Apify, a **max total charge** so a run cannot exceed your budget. A row with an empty email still counts if **Require public email** is **No**.

Default memory is **512 MB** (HTTP only, no browser).

### Input

See the **Input** tab for full configuration options.

Visible Console fields:

| Field | Default | Notes |
|---|---|---|
| `coverage` | Search | **Search** = keyword/ID and/or leaf category. **Full catalog** = paid, official sitemap. Catalog ignores query and category. |
| `query` | `security` | Search mode. Keyword, 32-char id, or `/detail/` URL. Ignored in Full catalog. |
| `category` | None | Search mode, optional **leaf** only. Ignored in Full catalog. |
| `maxDevelopers` | 20 | Unique publishers (1–2000 Search, 1–20000 catalog). Free plan: 20 / run |
| `requireEmail` | `yes` | **Yes** (default) skips listings with no public email. **No** keeps them |
| `itemType` | `extension` | Themes off by default |
| `minUsers` | empty | Search: 0. Catalog: **100** if unset |
| `excludeGmail` | `no` | Optional skip of Gmail / Yahoo / Outlook / iCloud |

Proxy, delay, and retries are hidden. Datacenter IPs usually work; use Residential only if CWS serves a captcha (`/sorry/`). Store language is English (`hl=en`).

Example:

```json
{
  "query": "security",
  "category": "",
  "maxDevelopers": 20,
  "requireEmail": "yes",
  "itemType": "extension"
}
```

### Output

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

```json
{
  "developerName": "Example Labs",
  "publisherId": "u0123456789abcdef0123456789abcdef",
  "developerUrl": "https://chromewebstore.google.com/detail/cjpalhdlnbpafiamejdnhcphjbkeiagm",
  "developerEmail": "support@example.com",
  "developerWebsite": "https://www.example.com",
  "legalName": "Example Labs LLC",
  "legalContactName": null,
  "supportUrl": "https://www.example.com/support",
  "privacyUrl": "https://www.example.com/privacy",
  "extensionId": "cjpalhdlnbpafiamejdnhcphjbkeiagm",
  "extensionUrl": "https://chromewebstore.google.com/detail/cjpalhdlnbpafiamejdnhcphjbkeiagm?hl=en",
  "title": "Example Privacy Guard",
  "users": "10,000,000",
  "usersNumeric": 10000000,
  "score": 4.7,
  "ratingsCount": 120000,
  "category": "make_chrome_yours/privacy",
  "version": "1.2.3",
  "itemType": "extension",
  "isConsumerEmail": false,
  "sourceQuery": "security",
  "scrapedAt": "2026-08-16T08:00:00.000Z"
}
```

Console views: **Publishers — Overview**, **Publishers — Outreach** (email / website), **Publishers — Publisher file** (legal name / publisher ID / policy URLs).

### Tips

- A Chrome Web Store **category is not the full catalog**. Raising **Max developers** walks a larger `count` on that leaf; it does not unlock unpublished listings or a working page-2 token.
- Keyword search does not paginate reliably. Extra coverage comes from a category slice or the sitemap — not “page 2”.
- Raw sitemap without `minUsers` is mostly hobby / themes. Catalog defaults to **100 users** and **extensions only**.
- Empty `developerEmail` / `legalName` means Google did not show them on that listing.

### Related Actors

Apify only auto-recommends Actors in the same category or with a similar name. These share the publisher-leads / ads-intel ICP:

| Actor | Use it when |
|---|---|
| [Google Play Developer Contacts](https://apify.com/corent1robert/google-play-developer-contacts) | Same lead file — Android publishers instead of Chrome |
| [Shopify App Store Developer Contacts](https://apify.com/corent1robert/shopify-app-developer-contacts) | Same lead file — Shopify partners |
| [Amazon Manufacturer Emails](https://apify.com/corent1robert/amazon-manufacturer-emails) | EU GPSR manufacturer contacts on Amazon listings |
| [Google Ads Transparency Scraper](https://apify.com/corent1robert/google-ads-transparency-scraper) | Competitor Google Search / YouTube / Display creatives |
| [Facebook Ads Library Scraper](https://apify.com/corent1robert/facebook-ads-library-scraper) | Meta page ads, creatives and reach |
| [Facebook Page Contact Scraper](https://apify.com/corent1robert/facebook-page-contact-scraper) | Email, phone and website from a Facebook Page |
| [SW Website Rankings Scraper](https://apify.com/corent1robert/similarweb-scraper) | Rank the publisher site once you have the website |

### FAQ, disclaimers, and support

#### Is there a Chrome Web Store developer email API?

The official Chrome Web Store API is OAuth for **your own** items. It is not a public publisher directory. This Actor is a **Chrome Web Store developer email API alternative**: it reads the public listing Google already shows on the Store.

#### How do I find Chrome extension developer emails?

If you sell security, DevTools or browser infra: run **`security`** or the **Privacy & security** leaf. Leave **Require public email** on **Yes**. Turn on **Exclude Gmail** if you only want company inboxes. Download the **Outreach** view as CSV into Lemlist / Smartlead.

Agencies: pick a leaf (Productivity · Tools, Developer) instead of a vague keyword if you need more than ~150 listings.

#### Who should not use this?

If you need reviews, permissions, CRX files or a wallpaper dump of every theme — use a listing scraper. This Actor is a **publisher contact file**.

#### Do you also scrape Google Play / Shopify developer emails?

Yes. [Google Play Developer Contacts](https://apify.com/corent1robert/google-play-developer-contacts) and [Shopify App Store Developer Contacts](https://apify.com/corent1robert/shopify-app-developer-contacts) use the same unique-publisher model.

#### Can I scrape the whole Chrome Web Store?

**Paid plans:** set **Mode** to **Full catalog** and raise **Max developers**. That walks the **official sitemap** and dedupes publishers. With default filters it is **not** a 330k wallpaper dump.

**Free plan:** no. Full catalog is rejected; search runs stop at 20 publishers.

#### Why ~150 results on a keyword?

The Store search RPC saturates around **150** listings. HTML `/search` is disallowed by `robots.txt`, so this Actor does not scrape the SERP page. Use a category or Full catalog for more coverage.

#### Does this scrape private emails?

No. It only reads fields the publisher published on the Chrome Web Store listing.

#### Why do two extensions become one row?

Rows are unique by `publisherId`. Several listings from the same publisher share one contact file. Two publisher IDs that happen to share an email stay two rows (Avast / AVG pattern).

#### Why did I get fewer rows than Max developers?

The query ran out of publicly listed extensions, **Require public email** is **Yes**, `minUsers` filtered hobby listings, or themes were skipped. On the **Free plan**, each run is also capped at **20 publishers**. Check `OUTPUT` and `RUN_LOG`.

#### Why is an email empty?

Empty fields mean Google did not show them on that listing — not a failed scrape.

#### Do I pay an Actor-start fee?

Almost nothing: **$0.00005** per run (Apify default, first 5 seconds of compute included). The bill is the publishers written to the dataset.

#### Do I pay per extension?

No. Two listings from the same publisher = **one** `publisherId` = **one** charge. Listing scrapers on the Store typically charge **$4–$11 / 1k extensions**. This Actor is **$2.50 / 1k unique publishers**.

#### Why is this cheaper than other Chrome Web Store scrapers?

They sell **listings**. We sell **the contact file**. Same ICP, one row per `publisherId`, start fee ~$0. Other CWS email Actors charge $4, $5, $10 or $11 per 1,000 rows — and those rows still need deduping.

#### Do I pay for rows with an empty email?

Only if **Require public email** is **No**. Pricing is **per publisher scraped**, not per filled field.

#### Is a proxy required to scrape the Chrome Web Store?

No. Enable Apify Proxy (Residential) only if you see `/sorry/` captchas.

Our Actors are ethical and do not extract private user data. They only extract what the publisher has chosen to publish on the Chrome Web Store listing (public email, website, legal name). We therefore believe that our Actors, when used for ethical purposes by Apify users, are safe. However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you are unsure, consult your lawyers.

Use the **Issues** tab for bugs and feature requests. Use the **API** tab to run the Actor programmatically. Custom needs: corentin@outreacher.fr

# Actor input Schema

## `coverage` (type: `string`):

**Search (default):** use Step 2 (keyword and/or category).

**Full catalog (paid):** walks the official Chrome Web Store sitemap, then unique publishers. Not a wallpaper dump — filters still apply (`minUsers` defaults to 100, themes off). Set Max developers to how many publishers you will pay for (up to 20,000). Free Apify plans cannot use Full catalog.

## `query` (type: `string`):

Examples: `security` · `cjpalhdlnbpafiamejdnhcphjbkeiagm` · `https://chromewebstore.google.com/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm`

Leave empty if you only pick a category. **Ignored** when Mode is Full catalog.

Search returns up to **~150** listings per keyword (no reliable page 2). Combine with a category if you need a larger slice.

## `category` (type: `string`):

Optional, Search mode only. **Leaf** categories only — parent hubs (Productivity, Lifestyle) 404. Leave **None** if you already typed a query. Both query and category = union of seeds. **Ignored** when Mode is Full catalog.

A category request is a large first slice (up to ~3,000 ids), not a proven 100% of that leaf.

## `maxDevelopers` (type: `integer`):

**Global** cap of unique `publisherId` rows. Default **20** keeps first runs cheap. Search: up to **2,000**. Full catalog (paid): up to **20,000**. Search itself still caps around **150 listings per keyword**.

## `requireEmail` (type: `string`):

**Yes (default):** skip publishers with no public email. **No:** also keep publishers without an email (legal name / website still scraped when Google publishes them).

## `itemType` (type: `string`):

**Extensions (default)** skips themes. Themes are almost all hobby / wallpaper listings. Use **Themes** or **All** only if you want that catalog.

## `minUsers` (type: `integer`):

Keep publishers whose **sample listing** is at or above this user count. Leave empty: **0** in Search, **100** in Full catalog (avoids paying for hobby wallpaper). Set a higher bar (e.g. `1000`) for ICP.

## `excludeGmail` (type: `string`):

**No (default):** keep Gmail / Yahoo / Outlook / iCloud. **Yes:** skip consumer inboxes so the file is closer to company outreach.

## `proxyConfiguration` (type: `object`):

Optional. Datacenter is enough for most CWS pages. Switch to Residential only if you hit a captcha (`/sorry/`). Hidden in Console.

## `minDelayMs` (type: `integer`):

Minimum pause between every HTTP request.

## `maxRequestRetries` (type: `integer`):

Retries on block / 5xx, rotating the proxy session when a proxy is configured.

## Actor input object example

```json
{
  "coverage": "search",
  "query": "security",
  "category": "",
  "maxDevelopers": 20,
  "requireEmail": "yes",
  "itemType": "extension",
  "excludeGmail": "no",
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "minDelayMs": 400,
  "maxRequestRetries": 5
}
```

# Actor output Schema

## `overview` (type: `string`):

Name, email, website, sample extension

## `outreach` (type: `string`):

Email and website for a first outreach pass

## `publisher` (type: `string`):

Legal name, publisher ID, support / privacy URLs

## `dataset` (type: `string`):

All publisher rows

## `output` (type: `string`):

Publishers scraped, listings fetched, filters

## `runLog` (type: `string`):

Live progress

# 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 = {
    "query": "security"
};

// Run the Actor and wait for it to finish
const run = await client.actor("corent1robert/chrome-web-store-developer-contacts").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 = { "query": "security" }

# Run the Actor and wait for it to finish
run = client.actor("corent1robert/chrome-web-store-developer-contacts").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 '{
  "query": "security"
}' |
apify call corent1robert/chrome-web-store-developer-contacts --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,corent1robert/chrome-web-store-developer-contacts"
        }
    }
}

```

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/YYEV3WHaSsydHHSSS/builds/MbCwVFa2jIqdlgfGt/openapi.json
