Chrome Web Store Scraper — Permissions, Users & Category Rank avatar

Chrome Web Store Scraper — Permissions, Users & Category Rank

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Chrome Web Store Scraper — Permissions, Users & Category Rank

Chrome Web Store Scraper — Permissions, Users & Category Rank

Scrape Chrome Web Store extensions with their PARSED manifest permissions, host permissions and manifest version, plus install count, rating, version, last-updated date, size and rank within a category. For extension risk review, competitor tracking and browser-extension governance.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

mochi

mochi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

Extract Chrome Web Store extensions with their parsed manifest permissions — plus install count, rating, version, last-updated date, package size and position within a category.

Most extension scrapers hand you the marketing fields. This one also opens the extension's own manifest.json, which the store ships inline with every listing, and gives you permissions, host_permissions, content_scripts match patterns and manifest_version as structured arrays you can filter on — the fields an extension-review or browser-governance policy is actually written against.


What you get per extension

FieldDescription
extensionId · name · urlIdentity. url is rebuilt from the ID, so it is always canonical
publisher · publisherWebsiteWho ships it, and their site
usersGoogle's published install count
rating · ratingCountStar average and number of ratings
rankInCategoryPosition on the category page — the store's own ranking (category mode)
categorySlug · category · subCategorye.g. productivity/workflow
version · lastUpdated · firstPublishedRelease cadence at a glance
sizeText · sizeBytesPackage size, as published and as a number
minimumChromeVersion · languagesCompatibility and locale coverage
permissionsAPI permissions from the manifest, e.g. ["storage","scripting","cookies"]
hostPermissionsSite-access patterns, normalised across Manifest V2 and V3
contentScriptMatchesWhere its content scripts inject
optionalPermissionsWhat it can ask for later
requestsAllUrlstrue if it asks for <all_urls> or *://*/*
permissionCount · hostPermissionCount · manifestVersion · manifestParsedQuick filters
shortDescription · descriptionListing text
supportUrl · privacyPolicyUrl · iconUrlLinks
detailFetched · matchedCategory · storefrontCountry · source · scrapedAtProvenance
{
"extensionId": "nkbihfbeogaeaoehlefnkodbefgpgknn",
"name": "MetaMask",
"publisher": "metamask",
"users": 12000000,
"rating": 2.67,
"ratingCount": 5902,
"rankInCategory": 4,
"categorySlug": "productivity/workflow",
"version": "13.42.0",
"lastUpdated": "2026-08-04T00:00:00.000Z",
"sizeText": "21.13MiB",
"sizeBytes": 22156411,
"manifestVersion": 3,
"permissions": ["activeTab", "alarms", "clipboardWrite", "notifications", "scripting", "storage"],
"hostPermissions": ["https://*/*", "http://*/*"],
"requestsAllUrls": true,
"minimumChromeVersion": "123"
}

Three ways to find extensions

ModeWhat it does
category (default)Browses a store category in the store's ranked order and fills rankInCategory. Give it several categories and results are round-robined, so one busy category cannot eat your whole result budget
extensionsLooks up exactly the extensions you list, by ID or store URL. This is the monitoring mode — point it at your watchlist on a schedule
discoverWalks the store's own published sitemap for catalogue-wide sampling

There is no keyword search, on purpose

The Chrome Web Store's robots.txt contains Disallow: /search, so this actor has no keyword-search mode and never requests that path. The same applies to the /reviews, /privacy, /support, /related and /report sub-pages. This is enforced in code — a disallowed URL throws before any request is made — not just promised in documentation. Discovery therefore runs through categories and the sitemap that the store publishes for crawlers.

If you need keyword search, this is not the actor for you, and we would rather say so here than have you find out after a run.


The catalogue is region-specific — read this before you schedule anything

The Chrome Web Store shows a different catalogue in different countries, and every response is HTTP 200 either way. Measured 2026-08-05: Capital One Shopping returns a full record through a US exit and an empty page through Germany or Singapore; SwagButton resolves from US and Germany but not Singapore. Six extensions listed on a single category page were unreadable from a Singapore exit and all six resolved normally from the US.

So this actor pins the storefront country (country, default US) instead of letting whichever proxy IP it happened to draw decide your results, stamps storefrontCountry on every row, and reports unavailableInRegion in RUN_SUMMARY. Extensions that your chosen country cannot see are still returned — with detailFetched: false and whatever the category page carried — rather than silently disappearing from your row count.

If you are comparing runs over time, keep country fixed. If a competitor's extension suddenly looks "gone", check unavailableInRegion before concluding it was pulled.

Coverage — measured, not assumed

From a live sample of 8 captured detail pages and a full 32-extension category page (2026-08-05):

FieldPopulatedNote
permissions / manifest fields100%the manifest parsed on every extension tested, on both page types
users31 of 32Google publishes no install count for some first-party extensions. Fetching the detail page does not recover it — verified. users is null there, never 0
publisher, version, lastUpdated, size, languagesdetail pages onlyabsent from category tiles; detailFetched: false tells you which rows those are
publisherWebsite, privacyPolicyUrlvariesmany publishers list neither; null means they did not, not that we missed it

fetchDetails (default ON) costs one extra request per extension. Turning it OFF is dramatically faster and still returns the ID, name, users, rating, category, rank, description and the full permission set — because the category page carries the same core record the detail page does. Turn it ON when you need version, publisher, last-updated or size.


Privacy

Chrome Web Store listings carry a developer contact email, and publisher-written descriptions frequently contain support addresses too. This actor emits no email addresses at all: the contact field is dropped, free-text fields are redacted to [email removed], and a mailto: link in a URL field becomes null. Company/organisation-level data only.

One thing to know: publisher is the publisher-of-record shown on the public listing. For large extensions that is a company; for long-tail extensions it is sometimes an individual developer's chosen handle, exactly as the store displays it.


Reliability

  • A partial run is never reported as a complete one. RUN_SUMMARY records pagesFetched, detailFetched, detailFailed, shellResponses, unavailableInRegion, rejectedInputs, errors and complete.
  • Bad input is reported, not swallowed. An ID or URL we cannot parse comes back in RUN_SUMMARY.rejectedInputs instead of vanishing from your row count.
  • An extension the store will not serve you is distinguished from a broken parser. The store answers HTTP 200 even for an extension it will not show you, so status codes alone cannot tell the two apart. That case has a measurably different payload shape and is counted as unavailableInRegion; a genuinely unreadable page is counted as an error and logged loudly.
  • Retries draw a fresh proxy IP each attempt, which is what keeps rate-limiting from turning into silent data loss.

Example — extensions that can read every site you visit

{
"mode": "category",
"categories": ["productivity/workflow", "productivity/tools"],
"maxResults": 200,
"onlyRequestsAllUrls": true,
"minUsers": 100000
}

Returns every widely-installed extension in those categories whose manifest requests <all_urls> or *://*/* — the broad-access permission most extension-review policies flag first — with its full permission list, publisher, version and last-updated date.

Example — weekly watchlist monitoring

{
"mode": "extensions",
"extensions": [
"nkbihfbeogaeaoehlefnkodbefgpgknn",
"https://chromewebstore.google.com/detail/grammarly-ai-writing-assi/kbfnbcaeplbcioakkpcpgfkobkghlhen"
],
"maxResults": 50
}

Run it on a schedule and diff the results: a jump in permissionCount, a new hostPermissions entry, a change of publisher, or a version bump after a long quiet period are all things extension-risk reviewers watch for.


Source: chromewebstore.google.com — public listing pages only, within what its robots.txt allows.