Firefox Add-ons Scraper avatar

Firefox Add-ons Scraper

Pricing

from $1.19 / 1,000 results

Go to Apify Store
Firefox Add-ons Scraper

Firefox Add-ons Scraper

Scrape Firefox extensions from Mozilla's public API by search term, category, or add-on URL. Get names, authors, user counts, ratings, versions, permissions, categories, and download URLs. The Actor deduplicates results across targets and requires no login.

Pricing

from $1.19 / 1,000 results

Rating

0.0

(0)

Developer

Axiom Works

Axiom Works

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Returns: one row per Firefox extension with name, slug, authors, users, ratingAverage, version, and downloadUrl. Input: {"searchQueries":["ad blocker"],"maxItems":20} Best for: extension research, catalog monitoring, and comparing add-on adoption.

{"id":"607454","name":"uBlock Origin","slug":"ublock-origin","authors":["Raymond Hill"],"users":11432495,"ratingAverage":4.8017,"version":"1.75.0"}

What does Firefox Add-ons Scraper do?

Firefox Add-ons Scraper extracts public extension records from the Mozilla Add-ons API. Search by words, browse a category, or provide an add-on page URL, slug, numeric ID, or GUID. Each result is a structured row with a stable add-on ID and the API endpoint used as its source URL. The Actor needs no login. By default it reads the Firefox extension catalog; set addonType to collect themes, dictionaries, or language packs instead. It does not collect add-ons for a different browser.

This Firefox scraper is useful when you need to compare extensions in a topic, track the visible catalog over time, or create an internal reference list. The Firefox Add-ons API provides the fields directly, including usage, downloads, ratings, current version, permissions, categories, and file metadata. The Actor preserves missing values as null when the API does not publish them. It does not fabricate a value to fill a spreadsheet cell.

Searches can overlap. A single extension may match several terms or categories, but its Mozilla ID appears only once in a run. You can combine all three target inputs, and the Actor processes them until it reaches maxItems or exhausts the targets. Results are collected at run time; schedule repeated runs if you need a history of changes.

What data can you get?

The dataset includes the following fields. Numeric values and metadata reflect Mozilla's API response when the Actor ran. Localized text uses English when available, then another available locale. Descriptions and release notes decode HTML entities and preserve line breaks between paragraphs and list entries. Arrays can be empty when the API reports no values. A URL in a field is data from the API; the Actor does not visit outside sites linked by an extension.

FieldDescriptionExample
idStable Mozilla add-on ID, stored as text607454
sourceUrlAPI endpoint that supplied this recordhttps://addons.mozilla.org/api/v5/addons/addon/ublock-origin/?lang=en-US
nameLocalized extension nameuBlock Origin
slugSlug used in the add-on URLublock-origin
guidExtension identifier in the APIuBlock0@raymondhill.net
summaryShort extension summaryFinally, an efficient wide-spectrum content blocker.
authorsListed author names["Raymond Hill"]
authorUrlsListed Mozilla author profile URLs[...]
usersAverage daily users reported by Mozilla11432495
weeklyDownloadsWeekly downloads reported by Mozilla242563
ratingAverageAverage user rating4.8017
ratingCountNumber of ratings22174
versionCurrent version label1.75.0
permissionsPermissions listed for the current file["storage","tabs"]
categoriesDirectory category slugs["privacy-security"]
tagsDirectory search tags["privacy"]
createdAdd-on creation time2015-04-25T07:26:22Z
lastUpdatedLast update time shown by the API2026-09-26T16:26:20Z
licenseCurrent version's license nameGNU General Public License v3.0 only
homepageAuthor-supplied homepage URLhttps://github.com/gorhill/uBlock#ublock-origin
iconUrlIcon URL listed by Mozillahttps://addons.mozilla.org/user-media/addon_icons/607/607454-64.png?modified=mcrushed
promotedPromotion category (recommended, spotlight, ...), or none when not promotedrecommended
fileSizeCurrent downloadable file size in bytes4650100
addonTypeAdd-on type reported by Mozillaextension
addonUrlPublic add-on pagehttps://addons.mozilla.org/en-US/firefox/addon/ublock-origin/
descriptionFull description, HTML tags removed and entities decodeduBlock Origin is not an "ad blocker"...
supportUrlDeveloper support sitehttps://old.reddit.com/r/uBlockOrigin/
supportEmailDeveloper support email, null when not publicnull
requiresPaymentWhether payment is requiredfalse
hasPrivacyPolicyWhether a privacy policy existstrue
isExperimentalExperimental flagfalse
ratingBayesianAverageBayesian average rating4.8014
textReviewCountRatings that include review text5867
releaseNotesCurrent version release notes as plain text, null when nonenull
minFirefoxVersion / minAndroidVersionMinimum supported versions115.0
optionalPermissions / hostPermissions / dataCollectionPermissionsFurther permission lists of the current file["<all_urls>"]
screenshotUrlsFull-size screenshot URLs["https://addons.mozilla.org/user-media/previews/full/238/238546.png"]
downloadUrlCurrent XPI file URLhttps://addons.mozilla.org/firefox/downloads/file/5034826/ublock_origin-1.75.0.xpi

A field such as ratingAverage is a point-in-time measurement, not a prediction. users is the API's average daily users value, while weeklyDownloads is its separate weekly download count. Those quantities should not be added together. A promoted value of none means the API lists no promotion for that item. The record still remains useful through its other fields.

How to use

Open the Actor in Apify Console. Enter at least one search query, category slug, or add-on URL/slug in the Input form. A search such as ad blocker returns matching extensions. A category such as privacy-security browses that section of the directory. A direct slug such as ublock-origin retrieves a particular add-on. Set the sort order and maximum result count, then start the run. Open the Dataset tab when it finishes to review or export the records as JSON, CSV, Excel, or another available dataset format.

Start with a modest maxItems while checking whether a term gives the right results. Increase it for a broader collection. The Actor stops as soon as the limit is reached, even when a search has another page. A repeated add-on ID from another query does not use a result slot. For a focused comparison, direct add-on URLs usually make the input easier to audit than a broad search term.

Search and category results use the API's paginated search endpoint. The Actor follows pages until no next page is provided or it has enough unique items. It spaces requests at about two per second and retries temporary blocks with backoff. Proxy use is optional; the default is no proxy. If a run is persistently blocked, enable Apify Proxy in the input and try again. A nonexistent add-on or an unmatched search produces no placeholder row.

Input

Provide at least one of the three target fields. All other fields are optional. A direct URL must be an HTTPS Firefox add-on page on addons.mozilla.org; a slug, numeric ID, or GUID can be supplied without the URL. Search queries and category slugs can be combined, and duplicates in each list are removed before requests begin.

FieldTypeRequiredHow it works
searchQueriesstring arrayOne target fieldTerms searched in the Firefox extension catalog; prefilled with ad blocker in Console.
categoriesstring arrayOne target fieldMozilla Add-ons category slugs to browse; default empty.
addonUrlsstring arrayOne target fieldAdd-on page URLs (any sub-page), slugs, numeric IDs, or GUIDs for direct lookups; default empty.
addonTypeenumNoextension, statictheme, dictionary, language, or any (searches only; categories always use extension for any); default extension.
sortenumNousers, rating, updated, created, or hotness; default users.
maxItemsintegerNoNumber of unique records to return, from 1 to 10000; default 50.
proxyConfigurationobjectNoApify Proxy settings; default uses no proxy.
{
"searchQueries": ["ad blocker", "privacy tools"],
"categories": ["privacy-security"],
"addonUrls": ["https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/"],
"sort": "users",
"maxItems": 50,
"proxyConfiguration": {"useApifyProxy": false}
}

The lists are processed in this order: queries, categories, then direct add-ons. That matters when maxItems is smaller than the combined number of matches. For a direct comparison of a few known extensions, leave the query and category arrays empty. For discovery, use a query or category first and narrow it based on the returned names, categories, and summaries.

Output

These are two real records from a local direct lookup run. This compact example shows a subset of their fields; the actual dataset includes every field in the table above. Values change as Mozilla updates listings and as authors publish new versions.

[
{"id":"607454","sourceUrl":"https://addons.mozilla.org/api/v5/addons/addon/ublock-origin/?lang=en-US","name":"uBlock Origin","slug":"ublock-origin","guid":"uBlock0@raymondhill.net","authors":["Raymond Hill"],"users":11432495,"weeklyDownloads":242563,"ratingAverage":4.8017,"version":"1.75.0","categories":["privacy-security"]},
{"id":"506646","sourceUrl":"https://addons.mozilla.org/api/v5/addons/addon/privacy-badger17/?lang=en-US","name":"Privacy Badger","slug":"privacy-badger17","authors":["EFF Technologists"],"categories":["privacy-security"]}
]

Each row contains sourceUrl so you can trace it to the exact API request. The stable id lets you join snapshots from separate runs, while slug is useful for readable reports. Store a run date alongside an exported dataset if you intend to compare changing counts or versions later. The Actor itself returns current records and does not calculate changes between runs.

How much does it cost?

The Actor is charged per result returned. maxItems caps the number of results and therefore caps the number of result events from a run. Repeated IDs are removed and are not returned twice. See the Pricing tab for the current rate and billing details. Test a small target set first if you are estimating how many records a larger search might return.

Use with AI agents (MCP)

An AI agent can discover and run this Actor through Apify MCP. Add the following server configuration to a compatible MCP client. The tool path is the Actor's Store path. Keep authentication in your client's normal secure settings rather than placing a token in the URL.

{"mcpServers":{"apify":{"url":"https://mcp.apify.com/?tools=axiomworks/firefox-addons-scraper"}}}

You can ask an agent to search Firefox extensions about password management and compare their users, ratingAverage, and version. You can ask it to fetch a list of known add-on slugs and return their permissions and license. You can also ask it to review a privacy category dataset and group records by authors or categories. The agent receives structured rows, so ask it to cite the sourceUrl for any finding it presents.

An agent should pass at least one target list in its API call. Console prefills help a person try the Actor, but they do not add a target automatically to an API call. The descriptions in the input schema explain valid values and the maxItems range. A narrow prompt and a small limit are usually easiest to inspect before starting a larger collection.

Integrations and API

Use the Actor from an Apify API client or your own HTTP client. Set your API token in the client's authentication settings or an authorization header. The examples below fetch returned dataset items, which have the same field names as the Output table. Replace the query with a category or a direct slug to collect a different slice of the catalog.

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("axiomworks/firefox-addons-scraper").call(
run_input={"searchQueries": ["ad blocker"], "maxItems": 20}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["id"], item["name"], item["sourceUrl"])

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('axiomworks/firefox-addons-scraper').call({
searchQueries: ['ad blocker'], maxItems: 20,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

cURL

curl -X POST "https://api.apify.com/v2/acts/axiomworks~firefox-addons-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchQueries":["ad blocker"],"maxItems":20}'

Apify integrations can route completed datasets to other services, including spreadsheets, automation workflows, and webhooks. Configure those in the Integrations tab of the Actor. The same output schema is used whether a run starts in Console, through MCP, or with the API. If you need periodic records, schedule runs and store each dataset separately with its run date.

FAQ

Can I request one exact extension? Yes. Put its Mozilla add-on page URL or slug in addonUrls. The Actor uses the slug in the public add-on API endpoint. A page URL for another site or browser is rejected as input.

Why did my run return zero items? Check that your query or category has Firefox extension matches, or that a direct slug still exists. A temporary API block can also prevent results. The run log reports the target failure; try again later or enable a proxy if access remains blocked.

Can I get more than one page? Yes. Search and category collections move through pages while there are more results and the run has room under maxItems. A very broad search may have more matches than you ask the Actor to return.

Why are some fields null or empty? Mozilla may omit optional metadata on an extension, including a homepage, promotion category, or tags. The Actor keeps that distinction visible. It does not create a homepage or infer a license from unrelated text.

How current are the numbers? users, downloads, and ratings are read when the Actor runs. The API decides when those values change. A scheduled run is a practical way to keep a recurring snapshot, but each run only represents what the API supplied at that time.

Does it download extension files? No. It returns the downloadUrl and fileSize fields from the API. The Actor does not fetch or inspect XPI contents. Permissions are copied from the current file metadata supplied by Mozilla.

What if a direct URL contains a language prefix? Standard add-on URLs with or without the locale segment work. The Actor extracts the final add-on slug and asks the API for English localized fields when available.

This Actor reads publicly available Mozilla Add-ons API data without logging in. You are responsible for using the results in line with applicable law and your obligations for personal data, including author names and profile URLs. This Actor is independent and is not affiliated with or endorsed by Mozilla. This paragraph is general information, not legal advice.

Feedback

If a field is missing, a category behaves unexpectedly, or a public add-on lookup fails, open an issue on the Actor's Issues tab. Include the input you used, the run ID, and the affected sourceUrl so the behavior can be reproduced. Avoid putting private information in a public issue. Suggestions for clearer field names and examples are welcome.