Chrome Web Store Scraper avatar

Chrome Web Store Scraper

Pricing

from $4.99 / 1,000 results

Go to Apify Store
Chrome Web Store Scraper

Chrome Web Store Scraper

πŸ”Ž Chrome Web Store Scraper extracts app details from Chrome Web Storeβ€”titles, ratings, pricing, reviews, screenshots & more. ⚑ Automate competitor research, SEO analysis & lead gen with reliable scraping. Perfect for developers & marketers. πŸš€

Pricing

from $4.99 / 1,000 results

Rating

0.0

(0)

Developer

Scraper Engine

Scraper Engine

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Chrome Web Store Extension Scraper β€” Ratings, Users and Manifest Data

Chrome Web Store Extension Scraper pulls a full structured record for any Chrome extension or theme β€” rating, install count, developer contact block, permissions, and the complete manifest.json β€” straight from chromewebstore.google.com into clean JSON, with no HTML parsing on your end. Feed it a category URL, a search keyword, or a list of listing URLs and it returns one record per extension, including fields the store page never renders as visible text. Start a run from the Apify Console or call it from your own code with the examples below.


What is Chrome Web Store Scraper?

Chrome Web Store Scraper is an Apify Actor that crawls Chrome Web Store category, collection, and search pages, then opens each extension's own detail page to pull its full record β€” ratings, install counts, manifest, and developer contact details β€” into an Apify dataset. It reads the store's own server-rendered page data and internal RPC endpoints directly, so no Chrome Web Store account or Google login is needed to run it. It's built for browser-extension market researchers, security and IT teams auditing what's installed across an org, and developers assembling extension directories or AI training/RAG datasets.


What Chrome Web Store extension data is publicly available to scrape?

Everything Chrome Web Store Scraper returns is visible to any visitor without signing in β€” the store bakes extension name, rating, install count, manifest, and developer contact details into the page's own data before a login wall ever appears.

Data CategoryPublicly available (no login)Restricted
Listing basics β€” name, category, short/full description, icon, screenshotsβœ…
Quality signals β€” rating, ratingCount, users, Featured / Established Publisher badgesβœ…
Manifest & permissions β€” version, manifestVersion, permissions, full manifest.jsonβœ… (embedded in the page's own data before rendering)
Developer contact block β€” email, address, phone, legal entity, registration numberβœ… (Google's publisher-transparency disclosure)
Individual review text and reviewer names❌ β€” not exposed on the pages this Actor reads
Install analytics, revenue, developer-dashboard metrics❌ β€” Chrome Web Store Developer Dashboard login only
Packaged extension source code (.crx contents)❌ β€” outside what a listing page serves

Chrome Web Store Scraper only returns publicly visible data β€” what any visitor's browser already downloads. Nothing behind a login wall.


What data can I extract with Chrome Web Store Scraper?

Chrome Web Store Scraper returns three groups of fields for every extension: listing/identity fields, ratings and trust signals, and manifest/developer fields.

🧩 Listing & identity fields

FieldDescription
extensionIdThe extension's 32-character Chrome Web Store ID
nameExtension name, whitespace-normalized
categoryStore category the extension is listed under
shortDescriptionOne-line summary shown on listing/search cards
descriptionFull description text from the extension's detail page
urlCanonical https://chromewebstore.google.com/detail/{extensionId} link
websiteUrlDeveloper-supplied website link surfaced on the listing card
iconUrlExtension icon image URL
promoTileUrlSmall promotional tile image URL, when the listing has one
marqueeTileUrlLarge marquee/banner image URL, when the listing has one
screenshotsArray of screenshot image URLs from the detail page

πŸ“Š Ratings, install and trust signals

FieldDescription
ratingAverage star rating (0–5)
ratingCountNumber of ratings the average is based on
usersInstall count, as Chrome Web Store reports it
isFeaturedtrue if the listing carries the store's "Featured" badge
isEstablishedPublishertrue if Google's established-publisher badge ("no history of violations") is present
scrapedAtISO-8601 UTC timestamp, millisecond precision, of when the record was captured

βš™οΈ Manifest & developer fields

FieldDescription
versionExtension version string, read from the manifest
manifestVersionChrome extension manifest version (2 or 3)
permissionsArray of permission strings declared in the manifest
manifestFull manifest.json dictionary β€” present only when extractManifest is true; the key is omitted entirely, not set to null, when it's false
authorManifest-declared author; falls back to the developer's disclosed email when the manifest doesn't declare one
developerObject with the store's publisher-transparency fields: email, displayName, address, phone, legalEntity, registrationNumber, developerId
developerWebsiteDeveloper's website link from the transparency block
privacyPolicyUrlExtension's privacy policy URL

πŸ€– Add-on: Need additional Chrome Web Store data?

Need the same install-count-and-rating pattern for Android apps instead of browser extensions? Google Play Scraper covers that ground. If your workflow also needs raw Google result pages alongside your extension research, Google Search Results Scraper and Google Search Results (SERP) Scraper pull structured search data from the same account.


Why not build this yourself?

Chrome Web Store's own Chrome Web Store API only lets a developer publish and manage extensions they own β€” there's no endpoint for browsing or reading other publishers' listings, ratings, or manifests. There is no official, public read API for the data this Actor returns.

Building this in-house means reverse-engineering Google's AF_initDataCallback bootstrap format and the batchexecute RPC protocol the store's own frontend uses for pagination β€” both unversioned, and both prone to silent minified-key renames. You'd also need to build and maintain a proxy-escalation ladder for when Google starts blocking the scraping IP, and re-test the parser every time the store ships a frontend update. Chrome Web Store Scraper already does all three: it discovers the RPC IDs and session identifiers at runtime instead of hardcoding them, and it auto-escalates through direct β†’ datacenter β†’ residential proxy tiers when it hits a block.


How to use Chrome Web Store Scraper

Chrome Web Store Scraper runs as an Apify Actor β€” no separate signup or API key beyond your Apify account.

  1. Open Chrome Web Store Scraper on the Apify Store and click Run to open it in the Apify Console.
  2. Pick a Run Mode: πŸ”— URL list to paste one or more Chrome Web Store category, collection, or search-result URLs into startUrls, or πŸ”Ž Search keyword to type a searchQuery instead.
  3. In Search mode, narrow results with itemTypes, filterBy, and minimalRating; in either mode, set maxItems to cap how many extensions the run collects.
  4. Turn on extractManifest if you need the full manifest.json per record, and adjust detailConcurrency if you want the detail-fetching phase to run faster or more conservatively.
  5. Click Start. Records land in the run's dataset live, as each extension finishes parsing β€” export as JSON, CSV, or Excel once the run completes, or stream items via the API while it's still running.

How to scale to bulk extension extraction

startUrls is an array β€” add multiple category, collection, or search-result URLs to one run, and Chrome Web Store Scraper walks each of them in turn, discovering extensions up to the single maxItems cap for the whole run. Search mode builds one search URL from one searchQuery per run, so covering several keywords means either separate runs or gathering each keyword's already-built search URL into startUrls instead. detailConcurrency (default 8, max 32) controls how many detail pages fetch in parallel once discovery finishes.


What can you do with Chrome Web Store extension data?

  • πŸ”’ A browser-security engineer auditing what's installed across the org uses permissions and manifest to flag extensions requesting broad host access or clipboard permissions before they're approved.
  • πŸ“ˆ A market researcher sizing a niche uses users and ratingCount across a category to rank which extension segments have real install traction versus long-tail noise.
  • πŸ•΅οΈ A competitive analyst tracking a rival's extension uses version and scrapedAt across repeated runs to detect exactly when they ship an update.
  • πŸ“‡ A partnerships or outreach lead building a contact list uses developer.email and developerWebsite to reach publishers directly instead of hunting for a contact form.
  • πŸ€– An AI engineer building a RAG index of browser-extension capabilities feeds description, permissions, and manifest into a vector store so an agent can answer "which installed extensions can read clipboard data" from a natural-language query.

How does Chrome Web Store Scraper handle rate limits and blocking?

Every run starts direct β€” no proxy β€” and only reaches for one if the store pushes back. Requests go through a curl_cffi session that impersonates a real Chrome TLS/HTTP2 fingerprint. On an HTTP 403/429/503, or a response body that looks like Google's anti-abuse interstitial ("unusual traffic", /sorry/, a CAPTCHA page), the Actor escalates one proxy tier at a time β€” direct β†’ Apify datacenter β†’ Apify residential β€” and sticks with the first tier that works instead of re-testing lower ones. On residential, it gets three extra same-tier retries, each with a fresh exit IP, before giving up on that request. You can also pin the starting tier yourself via proxyConfiguration β€” for example, force residential from the very first request instead of waiting for the ladder to escalate there.

Network errors and 5xx responses get up to three retries with linear backoff; a 4xx status other than 429 is not retried. detailConcurrency (default 8, max 32) caps how many detail pages fetch in parallel. If one extension's detail page keeps failing after retries, that extension is skipped β€” logged, left out of the dataset, and not charged β€” while the rest of the run continues. ⚠️ The Actor does not solve CAPTCHAs; if a full residential retry budget is exhausted mid-block, remaining fetches in that batch will keep failing until the block clears.


⬇️ Input

ParameterRequiredTypeDescriptionExample Value
modeNostringurl β€” scrape one or more listing URLs. search β€” build the search URL from the keyword + filters below. Default: "url""search"
startUrlsNoarrayChrome Web Store category / collection / search-result URLs to crawl. Used only in URL mode.["https://chromewebstore.google.com/category/extensions/lifestyle/travel"]
searchQueryNostringKeyword to search the Chrome Web Store for. Used only in Search mode. Default: "ai""ai writing assistant"
itemTypesNoarrayFilter search results by item type: EXTENSION, THEME. Leave empty for no filter. Default: ["EXTENSION"]["EXTENSION"]
filterByNoarrayRestrict to featured and/or establishedPublisher listings. Leave empty for no filter. Default: []["featured"]
minimalRatingNointegerOnly include results rated at or above this many stars (0–5). 0 disables the filter. Default: 04
maxItemsNointegerHard cap on how many extensions the run collects (1–50000). Default: 10200
extractManifestNobooleanWhen true, every record carries the full manifest dictionary. When false, the manifest key is dropped (summary fields stay either way). Default: falsetrue
detailConcurrencyNointegerHow many detail pages fetch at the same time during Phase 2 (1–32). Default: 88
proxyConfigurationNoobjectOverride the starting proxy tier. Leave useApifyProxy off to start direct; turn it on and pick RESIDENTIAL to start there straight away.{"useApifyProxy": false}

Example input

{
"mode": "search",
"startUrls": [],
"searchQuery": "ai writing assistant",
"itemTypes": ["EXTENSION"],
"filterBy": ["featured", "establishedPublisher"],
"minimalRating": 4,
"maxItems": 200,
"extractManifest": true,
"detailConcurrency": 8,
"proxyConfiguration": { "useApifyProxy": false }
}

⬆️ Output

Every extension is pushed to the run's default dataset as one typed, normalized JSON record, with the same field names on every run. Export it as JSON, JSONL, CSV, or Excel from the Apify Console, or pull it through the API while the run is still going β€” records are pushed live as each detail page finishes parsing.

Example output

{
"extensionId": "kembcdlbgbcnnchcnbdhbmbhbejnedjf",
"iconUrl": "https://lh3.googleusercontent.com/example-icon-128.png",
"promoTileUrl": "https://lh3.googleusercontent.com/example-promo-440x280.png",
"marqueeTileUrl": null,
"name": "QuickDraft AI Writing Assistant",
"rating": 4.6,
"ratingCount": 3821,
"users": 200000,
"version": "3.2.1",
"category": "Productivity",
"shortDescription": "AI-powered writing assistant for emails, docs, and forms.",
"websiteUrl": "https://quickdraft.example.com",
"permissions": ["storage", "activeTab", "scripting"],
"manifestVersion": 3,
"manifest": {
"manifest_version": 3,
"name": "QuickDraft AI Writing Assistant",
"version": "3.2.1",
"permissions": ["storage", "activeTab", "scripting"],
"host_permissions": ["https://*/*"],
"author": { "email": "dev@quickdraft.example.com" }
},
"author": "dev@quickdraft.example.com",
"url": "https://chromewebstore.google.com/detail/kembcdlbgbcnnchcnbdhbmbhbejnedjf",
"scrapedAt": "2026-08-16T09:41:02.117Z",
"description": "QuickDraft drafts, rewrites, and proofreads text anywhere you type on the web, with tone and length controls built into a right-click menu.",
"screenshots": [
"https://lh3.googleusercontent.com/example-screenshot-1.png",
"https://lh3.googleusercontent.com/example-screenshot-2.png"
],
"developer": {
"email": "dev@quickdraft.example.com",
"displayName": "QuickDraft Labs Inc.",
"address": "548 Market St, San Francisco, CA 94104, US",
"phone": "+1-415-555-0114",
"legalEntity": "QuickDraft Labs Inc.",
"registrationNumber": "US-DE-7788214",
"developerId": "114782093456712345678"
},
"developerWebsite": "https://quickdraft.example.com",
"privacyPolicyUrl": "https://quickdraft.example.com/privacy",
"isFeatured": true,
"isEstablishedPublisher": true
}

How does it work?

Chrome Web Store Scraper never opens a browser. Listing pages ship their results inside Google's own AF_initDataCallback bootstrap data, and "load more" pagination runs through the store's internal batchexecute RPC β€” the same mechanism the store's own frontend uses. The Actor discovers each page's RPC ID, request template, and session identifiers (WIZ_global_data) by their shape at runtime rather than hardcoding them, so it keeps working when Google renames its minified keys. Detail pages are read the same way, from the ds:0 data block embedded in the page. Requests go out through a curl_cffi session impersonating a real Chrome TLS/HTTP2 fingerprint, with the proxy ladder above kicking in only on a block. Because everything comes from data Google's own frontend already downloads to render the page, only publicly visible information is returned, and the output schema stays the same regardless of how the store's HTML or CSS changes.


Integrations

Chrome Web Store Scraper runs on Apify, so it works with whatever already calls the Apify API in your stack.

Calling Chrome Web Store Scraper programmatically

from apify_client import ApifyClient
client = ApifyClient("<APIFY_API_TOKEN>")
run = client.actor("chrome-web-store-scraper").call(run_input={
"mode": "search",
"searchQuery": "ai writing assistant",
"maxItems": 100,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["name"], item["rating"], item["users"])

Works in Go, Ruby, Node.js, cURL β€” any language that can make an HTTP request.

MCP integration for AI agents

Chrome Web Store Scraper is reachable through Apify's Actors MCP Server, which exposes any public Apify Actor as an MCP tool. Point an MCP-compatible client (Claude Desktop, Claude Code, Cursor) at:

npx -y @apify/actors-mcp-server --actors chrome-web-store-scraper

with APIFY_TOKEN set in the environment, and the agent can call the Actor and read its dataset like any other MCP tool.

No-code tools (n8n, Make, LangChain)

In n8n, use Apify's integration node β€” or a generic HTTP Request node pointed at the Actor's run endpoint β€” to trigger a scrape from a workflow. In Make, the Apify app's "Run Actor" module does the same, feeding dataset items straight into downstream scenario steps. In LangChain, ApifyWrapper calls the Actor by name and loads its dataset directly into a document loader for RAG pipelines.


Scraping publicly available Chrome Web Store listings is generally lawful β€” this is business and product-catalogue data (extension names, ratings, manifests, publisher contact blocks), not personal data pulled from private profiles, so GDPR's data-subject framework does not attach to it. Chrome Web Store Scraper only returns what's already rendered into the store's public page data β€” nothing behind Google's Developer Dashboard login. What does apply is Google's own Chrome Web Store Terms of Service and any database rights Google holds over the catalogue, so review those before scraping at scale or redistributing the dataset. The developer block can carry an individual publisher's name, email, and phone rather than a company's, so treat bulk storage of that field with care. Consult legal counsel if your use case involves bulk storage of personal data.


Frequently asked questions

What Chrome Web Store extension fields does Chrome Web Store Scraper return?

name, rating, users, permissions, and developer are the top fields most users start with, alongside the full manifest when extractManifest is on. See What data can I extract for the complete list.

Does Chrome Web Store Scraper require a Chrome Web Store account or login?

No. Every field is read from Chrome Web Store pages fetched anonymously β€” the Actor never authenticates as a Google account.

How many extensions can I extract in one run?

Up to maxItems, which accepts 1–50,000 and defaults to 10. Detail scraping stops as soon as the cap is reached, whichever run mode you're in.

What happens if an extension is removed, unlisted, or its detail page fails to load?

That extension is skipped β€” the Actor logs it, leaves it out of the dataset, and doesn't charge for it β€” while the rest of the run keeps going. If a listing page returns zero discovered extensions at all (an empty or renamed category/search URL), the run finishes cleanly with an empty dataset rather than failing.

Can I scrape multiple Chrome Web Store listing pages at once?

Yes, in URL mode β€” startUrls is an array, and the Actor walks every URL in it. Search mode builds a single search URL from one searchQuery per run.

Does Chrome Web Store Scraper work with Claude, ChatGPT, and other AI agent tools?

Yes β€” it's reachable through Apify's Actors MCP Server (see Integrations above), and callable as a standard HTTP endpoint by any agent framework that can make a request.

How does Chrome Web Store Scraper compare to other Chrome Web Store scrapers?

As observed on the Apify Store on 2026-08-16: klondikeking's Chrome Web Store scraper also pulls reviews and charges per review event, something this Actor does not do; vujeen's version offers a fetchDetails toggle for ID-only, detail-free runs; datamule's extension scraper is ID/URL-only, with no category, collection, or search-URL crawling and no manifest or developer-contact fields documented. Chrome Web Store Scraper's category/collection/search-URL crawling plus its full manifest.json and developer-transparency block (email, phone, legalEntity, registrationNumber) together are not documented on any of the three at that date.

Does Chrome Web Store Scraper return data in a format LLMs can use directly?

Yes. Every record is typed, normalized JSON with consistent field names across runs β€” no HTML, no selectors. Pass it directly to an LLM, index it into a vector store, or feed it to an agent tool.

What happens when Chrome Web Store changes its layout or anti-bot system?

The Actor is maintained, and its output schema stays stable across store changes β€” the parser locates RPC IDs, pagination templates, and session identifiers by their shape at runtime rather than by hardcoded keys, so most minification and layout changes are absorbed automatically. No specific update turnaround time is published.

Can I use Chrome Web Store Scraper without managing proxies or browser infrastructure?

Yes. There's no headless browser to run or maintain β€” requests go through a lightweight HTTP client β€” and the built-in proxy ladder escalates automatically on a block, so you don't need to configure or rotate proxies yourself unless you want to pin a starting tier.

Which Chrome Web Store extension fields work best for AI training data and RAG indexing?

For RAG, index description, shortDescription, and permissions β€” the high-information text fields. For structured training data, extensionId, rating, ratingCount, users, and manifestVersion are the most consistently typed across records; every field returns as a typed primitive (string, number, boolean, or array), never a formatted display string.


ScraperWhat it extracts
Google Play ScraperAndroid app listings β€” install count, rating, developer, category
Google Search Results ScraperOrganic Google search result pages
Google Search Results (SERP) ScraperStructured SERP data from Google search
Google Scholar ScraperAcademic paper metadata from OpenAlex and Semantic Scholar

Your feedback

Found a bug, or need a field this record doesn't carry yet? Open an issue from the Issues tab on this Actor's Apify Store page β€” reports go straight to the Scraper-Engine maintainers, and it's the fastest way to get a fix or a field added.