# Firefox Add-ons · Developer Emails (`corent1robert/firefox-addons-developer-contacts`) Actor

Export unique Firefox add-on developers for partnership and outreach. Public support email, homepage, AMO profile and extension portfolio — one publisher per row, not per listing. Keyword, category, add-on URL, or full catalog. No login. No API key.

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

## Pricing

from $1.05 / 1,000 unique primary developers

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

## Firefox Add-ons · Unique Developer Emails

Export **unique Firefox Add-ons (AMO) primary developers** — public support email, homepage, AMO profile and extension portfolio — **one publisher per row**, not one row per listing.

**No login. No API key. No Mozilla account.**

### Who is this for?

| You are… | Typical goal | Suggested setup |
|---|---|---|
| Browser / security SaaS | Publishers already shipping Firefox extensions in your niche | Search `privacy` or category **Privacy & Security**, Require email = Yes |
| DevTools / productivity vendor | Co-marketing and partnership lists | Category **Web Development** or keyword `tabs` |
| Agency selling to extension makers | CRM-ready inbox + site | **Developers — Outreach** view, CSV |
| Market research | Who publishes several AMO listings | Raise Max unique developers; sort export by `addonCount` |
| Same ICP as Chrome Web Store outreach | Expand beyond CWS | Mirror your CWS keyword here |

**What you get by default:** unique **primary** author (first author on the listing), public support inbox when listed, homepage, AMO profile, sample listing users/rating — **only fields AMO already shows**.

**Typical fill (public niches, Aug 2026):** roughly **half to six in ten** listings expose a support email before dedupe. With **Require public email = Yes** (default) you only pay for rows that have an inbox.

**Primary author only:** co-authors are not exported as separate rows. Two extensions from the same primary developer collapse to **one charge**.

### How to scrape Firefox Add-ons developers

1. Open this Actor in Apify Console.
2. **Step 1 — Mode:** leave **Search** (a niche) or switch to **Full catalog** (unique developers across every Firefox extension category, paid).
3. **Step 2 — Search** (Search mode only): keep `privacy`, or paste an AMO listing URL. Optionally pick a category.
4. Leave **Max unique developers** at 20 for a first run, then raise it.
5. Click **Start**. Download JSON / CSV / Excel. Use **Developers — Outreach** for the inbox; **Overview** for portfolio size.

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

### Ready-made examples (published tasks)

| Example | What you get |
|---|---|
| [Find Firefox privacy extension publishers with emails](https://apify.com/corent1robert/firefox-addons-developer-contacts/examples/privacy-firefox-publishers-emails) | Unique Privacy & Security developers, public inbox, CRM-ready |
| [Export Firefox productivity add-on vendors for CRM](https://apify.com/corent1robert/firefox-addons-developer-contacts/examples/productivity-firefox-addon-vendors) | Tabs / workflow niche, one primary developer per row |
| [Refresh Firefox developer contacts from an add-on URL](https://apify.com/corent1robert/firefox-addons-developer-contacts/examples/addon-url-developer-refresh) | Paste a listing URL, get the primary developer row |
| [Firefox AI extension publishers for cold outreach](https://apify.com/corent1robert/firefox-addons-developer-contacts/examples/ai-firefox-publishers-outreach) | AI / assistant keyword niche, outreach view |

### What data can this Firefox Add-ons scraper extract?

| Field | Why it matters for ICP |
|---|---|
| `developerEmail`, `emails` | Public support inbox on the listing |
| `developerWebsite`, `developerDomain` | Company site + clean host for CRM match |
| `developerName`, `developerUsername`, `developerProfileUrl` | Primary author identity on AMO |
| `supportUrl` | Another public way in |
| `categories`, `addonCount`, `addonNames` | Portfolio in this run |
| `sampleAddonName`, `sampleUsers`, `sampleRating`, `listingUrl` | Qualify before outreach |
| `sourceQuery`, `scrapedAt` | Run metadata |

Not extracted (and not invented): private Mozilla Hub contacts, guessed emails from the marketing site, co-author rows.

### How much does it cost to scrape Firefox Add-ons developers?

This Actor uses **pay-per-event** pricing. **Actor start is $0.00005**. You only pay per **unique primary developer** written to the dataset — not per extension listing. Paid Apify plans get a lower price per developer.

**Free plan:** a run stops at **20 unique developers** — enough to test. Search: paid plans can raise Max unique developers up to **2,000**. **Full catalog** (paid only) goes up to **5,000**.

| | Free | Bronze | Silver | Gold | Platinum | Diamond |
|---|---|---|---|---|---|---|
| Per unique developer | $0.0015 | $0.00135 | $0.0012 | $0.00105 | $0.0009 | $0.00075 |
| 20 developers (Try) | **$0.03** | $0.03 | $0.02 | $0.02 | $0.02 | $0.02 |
| 1,000 developers | **$1.50** | $1.35 | $1.20 | $1.05 | $0.90 | $0.75 |

Totals include the $0.00005 start. Live AMO scrapers on Apify often charge **per listing** (~$1–$4 / 1k rows). Here two extensions from the same primary developer are **one charge**.

Set **Max unique developers** and, on Apify, a **max total charge** so a run cannot exceed your budget.

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

### Is it legal to scrape Firefox Add-ons?

This Actor only accesses data that Mozilla makes **publicly available** on [addons.mozilla.org](https://addons.mozilla.org) (support email, homepage, author profile the publisher chose to show). As with any data containing personal information, ensure your use complies with GDPR and relevant regulations. Do not scrape personal data unless you have a legitimate reason to do so. Not affiliated with or endorsed by Mozilla.

### Input

| Field | Required | Notes |
|---|---|---|
| Mode | yes | Search (default) or Full catalog (paid) |
| Keyword or AMO add-on URL | Search | `privacy`, or a `/addon/…` URL |
| Firefox category | Search | Optional. Combine with a keyword or use alone |
| Max unique developers | no | Default 20. Cap 2,000 (search) / 5,000 (catalog) |
| Require public email | no | Default yes |
| Exclude consumer inboxes | no | Default no — set Yes to drop Gmail/Yahoo/Outlook/etc. |
| Listing type | no | Extensions (default), Themes, or All |
| Min users (sample listing) | no | Empty → 0 in Search, 100 in Full catalog |

**API-only:** `proxyConfiguration`, `minDelayMs`, `maxRequestRetries`, `language`, `verboseLogs`.

### Output example

```json
{
  "developerName": "Bitwarden Inc.",
  "developerUsername": "bitwarden",
  "developerId": "12533945",
  "developerProfileUrl": "https://addons.mozilla.org/en-US/firefox/user/12533945/",
  "developerWebsite": "https://bitwarden.com",
  "developerDomain": "bitwarden.com",
  "developerEmail": "hello@bitwarden.com",
  "emails": ["hello@bitwarden.com"],
  "supportUrl": "https://bitwarden.com/help/",
  "categories": ["privacy-security"],
  "addonCount": 1,
  "sampleAddonName": "Bitwarden Password Manager",
  "sampleUsers": 935888,
  "sampleRating": 4.5,
  "listingUrl": "https://addons.mozilla.org/en-US/firefox/addon/bitwarden-password-manager/",
  "sourceQuery": "privacy",
  "scrapedAt": "2026-08-17T12:00:00.000Z"
}
```

### Important / limitations

- **Primary author only** — first author on the AMO listing; co-authors are skipped.
- **Email** = public `support_email` on the listing, not a guessed personal inbox.
- **Full catalog** walks every public **Firefox extension category**, then keeps unique primary developers. You are charged once per developer even if they publish many add-ons or an add-on sits in several categories.
- Themes are off by default (set Listing type if you need them).

### Also available

- **[Chrome Web Store Unique Emails](https://apify.com/corent1robert/chrome-web-store-developer-contacts)** — unique CWS publishers ($2.50 / 1k).
- **[Slack Marketplace Unique Developer Emails](https://apify.com/corent1robert/slack-app-directory-developer-contacts)** — unique Slack app publishers ($1 / 1k).

### Local development

```bash
npm install
apify run --purge --input-file=./input.json
```

Default `.actor/INPUT.json` matches Console Try (`privacy`, 20 unique developers). Root `input.json` is merged locally; KV / CLI input wins on overlap.

### Support

Contact <corentin@outreacher.fr> if you need a custom scraper or tailored automation.

# Actor input Schema

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

**Search (default):** use Step 2 (keyword, add-on URL and/or category).

**Full catalog (paid):** walks every public Firefox extension category on AMO into unique primary developers. Leave Step 2 empty — it is ignored. Set Max unique developers to how many rows you will pay for. Free Apify plans cannot use Full catalog.

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

Examples: `privacy` · `password manager` · `https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/`

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

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

Optional, Search mode only. Leave **None** if you already typed a query. **Ignored** when Mode is Full catalog.

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

**Global** cap of unique primary-developer rows (one author, many add-ons). Default **20** keeps first runs cheap. Search: up to **2,000**. Full catalog (paid): up to **5,000**.

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

**Yes (default):** skip developers with no public support inbox on their listings. **No:** also keep developers with only a homepage or AMO profile.

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

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

## `addonType` (type: `string`):

**Extensions (default)** skips themes. Use **Themes** or **All** only if you want that catalog.

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

Keep developers whose **strongest listing in this run** is at or above this average daily user count. Leave empty: **0** in Search, **100** in Full catalog.

## Actor input object example

```json
{
  "coverage": "search",
  "query": "privacy",
  "category": "",
  "maxDevelopers": 20,
  "requireEmail": "yes",
  "excludeGmail": "no",
  "addonType": "extension"
}
```

# Actor output Schema

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

Who to contact: outreach email, add-on count, sample listing

## `outreachCrm` (type: `string`):

Inbox, website and AMO profile for a first email

## `marketResearch` (type: `string`):

Users, ratings and portfolio size

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

All developer rows

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

Developers scraped, add-ons scanned, 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": "privacy"
};

// Run the Actor and wait for it to finish
const run = await client.actor("corent1robert/firefox-addons-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": "privacy" }

# Run the Actor and wait for it to finish
run = client.actor("corent1robert/firefox-addons-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": "privacy"
}' |
apify call corent1robert/firefox-addons-developer-contacts --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,corent1robert/firefox-addons-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/YfXuUDvZSQ7loqEFu/builds/lin9Ox3g87ijfVjqT/openapi.json
