# Firefox Add-ons Scraper (`parseforge/firefox-addons-scraper`) Actor

Scrapes Firefox Add-ons by search term and returns each extension's metadata as a flat row. Export to CSV, JSON, Excel, or XML.

- **URL**: https://apify.com/parseforge/firefox-addons-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Developer tools, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $9.95 / 1,000 results

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/actors/running/actors-in-store.md#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

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### Firefox Add-ons Scraper

**Scrape Firefox Add-ons from any search query, up to a million per run.** Every extension comes with its name, author, rating, user count, and version. No browser extension or API key required. Export to CSV, JSON, Excel, or XML.

Mozilla's Firefox Add-ons marketplace has no public API for bulk data access, making large-scale research tedious. This actor searches the public extension listings directly by keyword and returns structured results. You get a clean dataset of add-on metadata without writing a single scraper.

| Who uses it | What they scrape Firefox Add-ons for |
|---|---|
| Market researchers | Analyze the competitive landscape of browser extensions for a specific keyword. |
| Extension developers | Monitor competitor ratings, user counts, and update frequency in their niche. |
| Security analysts | Audit available extensions for a given functionality to identify potential risks. |
| Content curators | Build a directory of recommended Firefox Add-ons for a blog or newsletter. |

### What it does

This Actor collects Firefox Add-ons by search term and returns each extension as a flat row with its metadata.

- 🔍 **Keyword search:** Provide any search term, like 'dark mode' or 'ad blocker', to scrape matching add-ons.
- 📊 **Structured output:** Each result is a flat row with a consistent schema, ready for analysis.
- 📈 **Scalable collection:** Set a maximum from 1 to 1,000,000 add-ons to control the size of your dataset.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with Firefox Add-ons data

**📈 Track competitor extensions.**

A developer searches for 'password manager' monthly to track how their extension's user count and rating compare to rivals.

**🔎 Discover trending tools.**

A tech blogger scrapes the top 100 results for 'productivity' to find new and popular add-ons to review.

**🛡️ Audit extension security.**

A security researcher scrapes all add-ons for 'crypto wallet' to check their permissions and last update dates.

**📋 Generate market reports.**

A market analyst scrapes thousands of add-ons across multiple search terms to size up the browser extension market.

### Why choose this scraper

| | What you get |
|---|---|
| **No API key needed** | Access public Firefox Add-ons data without registering for a Mozilla API key. |
| **Consistent schema** | Get the same fields for every add-on, making it easy to merge multiple search results. |
| **Handles pagination** | The actor automatically navigates through search result pages for you. |

### How it compares

This actor focuses on high-volume keyword search, while the other Firefox Add-ons scraper on Apify may offer different input methods or fields.

| Feature | ParseForge | Firefox Add-ons Scraper - Extension Marketplace Data |
|---|---|---|
| Search by keyword | Yes | Not listed |
| Scalable up to 1M items | Yes | Not listed |
| Add-on author name | Yes | Yes |
| Add-on rating | Yes | Yes |
| Number of users | Yes | Yes |

### Configure the run

Drive the Actor with a single search query and set a maximum number of add-ons to collect, so only the top N results reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

```json
{
 "searchQuery": "dark mode",
 "maxItems": 10
}
```

A larger pull:

```json
{
 "searchQuery": "dark mode",
 "maxItems": 200
}
```

### Pricing

Pay-per-result: **$0.011 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $1.10 |
| 1,000 results | $11.00 |
| 10,000 results | $110.00 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [Firefox Add-ons Scraper](https://apify.com/parseforge/firefox-addons-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to Firefox Add-ons through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=parseforge/firefox-addons-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results?**

Your search query might be too specific or contain a typo. Try a broader or more common term, like 'weather' instead of 'weather forecast widget'.

**The run finished but collected fewer add-ons than my maxItems setting.**

This is normal. The actor stops when it has collected your requested maximum or when there are no more search results for your query, whichever comes first.

**I'm getting an error that the search query is required.**

You must provide a value for the 'Search term for add-ons' field in the input. It cannot be left empty.

**The data looks different from what I see on the website.**

The Firefox Add-ons website may have changed its layout. If the output is missing fields, try re-running the actor. If the issue persists, it may need an update.

**The actor is timing out.**

If you are requesting a very large number of add-ons, try increasing the run's timeout setting in the Apify console, or reduce the maxItems value.

### FAQ

| Question | Answer |
|---|---|
| Can I scrape add-ons from a specific category instead of a search query? | This actor is driven by a search term. To target a category, use the category name as your search query, which typically returns relevant results. |
| What data fields does the scraper return? | The output includes the add-on name, author, rating, number of users, version, and the add-on URL. A full list of fields is available in the sample output on the Actor's page. |
| Is there a limit to how many add-ons I can scrape? | You can set the maximum number of add-ons per run up to 1,000,000. The actual number collected will depend on how many results exist for your search query. |
| Do I need a Mozilla account or API key to use this? | No. This actor scrapes the public-facing Firefox Add-ons website and requires no accounts or API keys. |
| Can I scrape all add-ons on the marketplace? | The actor is search-driven. To get broad coverage, you can run it with multiple general search terms, but there is no single 'scrape everything' input. |
| How often can I run this scraper? | You can schedule runs as frequently as you need using Apify's built-in scheduler, from every minute to once a month. |
| What format is the data exported in? | You can export your dataset in CSV, JSON, Excel, or XML formats directly from the Apify platform. |
| Does this scraper get the full description text of each add-on? | The actor focuses on structured metadata like name, author, and ratings. Check the sample output for the exact fields returned. |
| Can I filter results by rating or number of users? | The actor collects results in the order they appear on Firefox Add-ons. You can filter and sort the data after the run using the exported dataset. |
| What is the difference between this and the other Firefox Add-ons scraper on Apify? | This actor is a streamlined, search-focused scraper. The other listing may offer different input options or fields. You should compare the sample outputs of each to see which fits your needs. |

### Related actors

- [website-content-crawler](https://apify.com/parseforge/website-content-crawler?fpr=vmoqkp): Use this to scrape full text and HTML from the add-on detail pages after collecting the URLs with the Firefox Add-ons Scraper.

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Mozilla. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

## `searchQuery` (type: `string`):

Required. The search term used to find Firefox add-ons (for example dark mode, ad blocker, translate).

## `maxItems` (type: `integer`):

Maximum number of add-ons to collect per run.

## Actor input object example

```json
{
  "searchQuery": "dark mode",
  "maxItems": 10
}
```

# Actor output Schema

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

No description

# 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 = {
    "searchQuery": "dark mode",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/firefox-addons-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 = {
    "searchQuery": "dark mode",
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/firefox-addons-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 '{
  "searchQuery": "dark mode",
  "maxItems": 10
}' |
apify call parseforge/firefox-addons-scraper --silent --output-dataset

```

## MCP server setup

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