Chrome Web Store Scraper With Last Update & Size
Pricing
from $2.99 / 1,000 results
Chrome Web Store Scraper With Last Update & Size
Scrape Chrome Web Store extensions with names, ratings, reviews, categories, developer details, last update dates, sizes, permissions, and descriptions. Ideal for extension research, competitor analysis, market intelligence, and Chrome Web Store monitoring.
Pricing
from $2.99 / 1,000 results
Rating
0.0
(0)
Developer
SimpleAPI
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 hours ago
Last modified
Categories
Share
Chrome Web Store Scraper — Extensions, Last Update and Package Size
Chrome Web Store Scraper With Last Update & Size returns structured JSON for Chrome extensions and themes discovered by category URL, search keyword, or direct listing link — name, rating, ratingCount, users, version, category, permissions, developer contact, plus lastUpdatedAt, packageSizeMb, minimumChromeVersion, and listingLanguages for every extension. IT rollout owners, MSP/agency auditors, and competitive researchers use it to flag a stale or oversized extension before recommending it fleet-wide. Every record streams to the dataset the moment its detail page finishes parsing.
What is Chrome Web Store Scraper With Last Update & Size?
It's an Apify Actor that opens Chrome Web Store listing pages (category, search-result, or direct extension URLs), parses the same embedded JSON payload the store's own page uses, and follows each extension into its detail page to build one full record per extension — no Chrome Web Store account, developer login, or API key required, since every page it reads is already public. On top of the base listing fields it adds a maintenance-and-size layer read from that same detail page at zero extra requests: last-updated date, first-published date, package size, minimum installable Chrome version, and listing languages — then optionally drops any extension that fails a freshness, size, or language bar before it's ever written to the dataset.
Key capabilities:
- 🔗 Discovery by listing URL, search keyword, or both filtered by item type — category/collection/search-result URLs, or a keyword search scoped to
EXTENSION/THEMEwith quality filters - 🧩 Core identifying and popularity fields —
extensionId,name,rating,ratingCount,users,version,category,permissions - 🛠️ Maintenance & size vetting fields —
lastUpdatedAt,firstPublishedAt,packageSize/packageSizeMb,minimumChromeVersion,listingLanguages[]/listingLanguageNames[] - 📅 Pre-billing rollout filters — drop extensions by staleness (
updatedWithinDays), package size (maxPackageSizeMb), or missing listing language (listingLanguages) before a row is written or charged - 👤 Developer contact fields — email, website, address, phone, legal-entity name, privacy policy URL
- 📤 Standard Apify dataset export — JSON, CSV, Excel, XML, RSS or HTML, no separate export step
What data can I extract with Chrome Web Store Scraper With Last Update & Size?
Every field below is copied from the record-building function in the source; field names are exact.
| Field | Example value | Use case |
|---|---|---|
extensionId | "ddkjiahejlhfcafbddmgiahcphecmpfh" | Stable join key across runs |
name | "uBlock Origin Lite" | Display / dedupe key |
rating | 4.498523331364442 | Sort or threshold on quality |
ratingCount | 3386 | Confidence weight for rating |
users | 16000000 | Popularity / install-base signal |
version | "2026.811.1529" | Compare against your managed version |
category | "productivity/tools" | Segment a catalogue crawl |
shortDescription | "An efficient content blocker..." | Listing snippet |
description | "uBO Lite (uBOL) is an efficient MV3-based..." | Full listing copy |
websiteUrl | null | Extension's own homepage, when set |
permissions | ["storage", "declarativeNetRequest"] | Security review before rollout |
manifestVersion | 3 | MV2 vs MV3 compliance check |
manifest | {...} (only when extractManifest: true) | Full manifest for deep audits |
author | "ubo@raymondhill.net" | Contact for a maintenance flag |
iconUrl / promoTileUrl / marqueeTileUrl | image URLs | Listing thumbnails |
screenshots | ["https://lh3.googleusercontent.com/..."] | Listing screenshots |
developer | { "email": "...", "displayName": "...", "phone": null, ... } | Publisher contact block |
developerWebsite | "https://github.com/uBlockOrigin/uBOL-issues" | Support/repo link |
privacyPolicyUrl | "https://github.com/gorhill/uBlock/wiki/Privacy-policy" | Compliance check |
isFeatured | false | Store-curated quality signal |
isEstablishedPublisher | false | Publisher trust signal |
url | "https://chromewebstore.google.com/detail/ddkjiahejlhfcafbddmgiahcphecmpfh" | Canonical listing link |
scrapedAt | "2026-08-16T09:12:04.512Z" | Collection timestamp, ISO-8601 |
lastUpdatedAt | "2026-08-11T18:02:52.650Z" | Staleness check |
firstPublishedAt | "2022-09-08T13:10:25.814Z" | Listing age |
packageSize | "9.27MiB" | Store's own display string |
packageSizeMb | 9.72 | Numeric size for sorting/filtering |
minimumChromeVersion | "122.0" | Fleet compatibility check |
listingLanguages | ["ar", "az", "bg", "de", "en"] | Locale-code filter target |
listingLanguageNames | ["Deutsch", "English", "..."] | Human-readable locale list |
🛠️ Maintenance and size fields
lastUpdatedAt and firstPublishedAt are protobuf-style timestamps parsed straight into ISO-8601 UTC strings. ⚠️ Both are a live read against the store's own record at request time, not a cross-run change log — the Actor doesn't remember what an extension looked like on a previous run, so "changed since last time" tracking has to be built by diffing lastUpdatedAt across your own scheduled runs. packageSize keeps the store's verbatim display string ("9.27MiB"); packageSizeMb is that same string parsed into a numeric megabyte value, converting binary KiB/MiB/GiB units to decimal MB, and it is left null (never guessed) if the format doesn't match. minimumChromeVersion stays a string since Chrome version numbers aren't reliably orderable as floats. Together these five fields answer the question a rating alone can't: is this extension still maintained, how heavy is it, and will it even install on the Chrome build your fleet runs.
🎯 Targeting and segmentation fields
category, isFeatured, and isEstablishedPublisher group a catalogue crawl by store taxonomy and store-assigned trust signals. rating/ratingCount and users let you threshold on quality and reach. listingLanguages[]/listingLanguageNames[] tell you which storefront locales an extension actually supports, independent of its description language — the field the built-in listingLanguages input filter matches against.
How does Chrome Web Store Scraper With Last Update & Size differ from the official Chrome Web Store API?
Google publishes a Chrome Web Store API (developer.chrome.com/docs/webstore/api, checked 2026-08-16), but it's a Publish API: every call authenticates with OAuth 2.0 as the owner of the item being managed, and its scope only lets you read or update items your own publisher account owns. That's the hard limit for bulk work — an ownership gate, not a quota — so there's no official endpoint for listing, searching, or reading another developer's extension by ID.
| Feature | Chrome Web Store API | Chrome Web Store Scraper With Last Update & Size |
|---|---|---|
| Extensions you can query | Only items your publisher account owns | ✅ Any extension with a public store listing |
| Authentication | OAuth 2.0 + Google Cloud project | Apify token only — no Google account needed |
| Discovery by category or keyword | Not provided | ✅ mode: url (category/collection) or mode: search |
| Last-updated / first-published dates | Not exposed | ✅ lastUpdatedAt, firstPublishedAt |
| Package size / min Chrome version | Not exposed | ✅ packageSize/packageSizeMb, minimumChromeVersion |
| Data on extensions you don't own | Not available | ✅ Full record for any public listing |
| Setup requirements | Google Cloud project + OAuth consent screen | Apify account only |
Why can't I just use the Chrome Web Store API to check a competitor's extension?
Because it's a publishing-management API, not a catalog API — it authenticates you as the owner of the item, and Google hasn't published an endpoint returning another developer's install count, rating, last-update date, or package size by extension ID. That's reasonable for an API meant to let developers manage their own submissions, but it means catalogue-scale vetting data has to come from the same public listing pages a browser would read. This Actor does exactly that: it parses the store's internal batchexecute RPC payload, discovering the request template and pagination offset by shape rather than a hardcoded slot so it survives front-end changes, and runs a sticky direct → datacenter → residential proxy ladder against Google's block responses instead of a flat residential spend on every request.
Use the official Chrome Web Store API when you're publishing or managing your own extension. Use this Actor when you need data on extensions you don't own — competitors, a vendor shortlist, or an entire category — without a developer account or OAuth setup.
How to use data extracted from the Chrome Web Store?
🖥️ IT and rollout owners
Set mode to url against your candidate category or collection page, leave includeMaintenanceDetails on, and set updatedWithinDays and maxPackageSizeMb to your rollout bar. Extensions that fail either check are dropped before the dataset is written — no manual page-opening to check when an extension last shipped an update or how large its package is before it lands in your managed-Chrome policy.
🏢 MSP and IT-agency auditors
Run the same vetting pass across every client's currently-installed extension list (startUrls pointed at each extension's own detail URL), on a schedule, and diff lastUpdatedAt/packageSizeMb across runs to flag anything a client's environment has quietly let go stale — a recurring audit deliverable instead of a one-off spot check.
🔬 Market research and competitive intelligence
Use mode: search with a category keyword and itemTypes: ["EXTENSION"] to pull every competing extension in a niche, then group by category, isEstablishedPublisher, and users to see how a category is served — install-base concentration, publisher trust distribution, average maintenance cadence — without opening a single listing by hand.
🤖 AI agents and automated pipelines
Because every record is typed JSON with a stable field set, the dataset drops straight into an agent tool that answers "is extension X still maintained and how big is it" by filtering on extensionId, or feeds a rollout-approval pipeline that auto-rejects anything failing updatedWithinDays/maxPackageSizeMb before a human reviews the shortlist.
🔼 Input sample
| Parameter | Required | Type | Description | Example value |
|---|---|---|---|---|
mode | No | String (enum: url, search) | url scrapes listing URLs in startUrls; search builds a search URL from searchQuery + filters. Default "url". | "search" |
startUrls | No | Array of strings | Chrome Web Store category/collection/search-result URLs. Used only when mode is url. | ["https://chromewebstore.google.com/category/extensions/lifestyle/travel"] |
searchQuery | No | String | Keyword to search for. Used only when mode is search. Default "ai". | "password manager" |
itemTypes | No | Array (enum: EXTENSION, THEME) | Filter search results by item type. Empty = no filter. Default ["EXTENSION"]. | ["EXTENSION"] |
filterBy | No | Array (enum: featured, establishedPublisher) | Restrict search results to featured listings and/or established publishers. Empty = no filter. Default []. | ["establishedPublisher"] |
minimalRating | No | Integer, 0–5 | Only include results rated at or above this many stars. 0 disables. Default 0. | 4 |
maxItems | No | Integer, 1–50000 | Hard cap on collected extensions. Default 10. | 50 |
extractManifest | No | Boolean | Include the full manifest dictionary per record. Default false. | false |
includeMaintenanceDetails | No | Boolean | Attach lastUpdatedAt, firstPublishedAt, packageSize/packageSizeMb, minimumChromeVersion, listingLanguages[]/listingLanguageNames[]. When false, all seven keys are dropped, not nulled. Default true. | true |
updatedWithinDays | No | Integer, ≥0 | Drop extensions last updated more than this many days ago (single-run read). 0 disables. Default 0. | 365 |
maxPackageSizeMb | No | Integer, ≥0 | Drop extensions whose parsed package size exceeds this many MB. 0 disables. Default 0. | 20 |
listingLanguages | No | Array of strings | Keep only extensions whose listing language codes overlap this list. Empty = no filter. Default []. | ["en", "es"] |
proxyConfiguration | No | Object (proxy editor) | Override the starting proxy tier. Default begins direct; the fallback ladder still escalates on a block. | { "useApifyProxy": false } |
{"mode": "search","searchQuery": "password manager","itemTypes": ["EXTENSION"],"filterBy": ["establishedPublisher"],"minimalRating": 4,"maxItems": 50,"extractManifest": false,"includeMaintenanceDetails": true,"updatedWithinDays": 365,"maxPackageSizeMb": 20,"listingLanguages": ["en"],"proxyConfiguration": { "useApifyProxy": false }}
Common pitfall: mode is not additive with the other discovery fields. Set mode: "url" and searchQuery/itemTypes/filterBy/minimalRating are silently ignored — only startUrls is read. Set mode: "search" and startUrls is ignored entirely. There's no merge between the two discovery paths, so pick one per run.
🔽 Output sample
Every record is typed, normalized JSON pushed to the dataset as soon as its detail page is parsed — no separate export step, and it downloads as JSON, CSV, Excel, XML, RSS or HTML directly from the Apify Console like any dataset. The dataset ships five pre-built views: Overview, Developer, Media & content, Technical, and Maintenance & size.
{"extensionId": "ddkjiahejlhfcafbddmgiahcphecmpfh","iconUrl": "https://lh3.googleusercontent.com/icon.png","promoTileUrl": "https://lh3.googleusercontent.com/promo.png","marqueeTileUrl": "https://lh3.googleusercontent.com/marquee.png","name": "uBlock Origin Lite","rating": 4.498523331364442,"ratingCount": 3386,"users": 16000000,"version": "2026.811.1529","category": "productivity/tools","shortDescription": "An efficient content blocker. Blocks ads, trackers, miners, and more immediately upon installation.","websiteUrl": null,"permissions": ["storage", "declarativeNetRequest"],"manifestVersion": 3,"manifest": null,"author": "ubo@raymondhill.net","url": "https://chromewebstore.google.com/detail/ddkjiahejlhfcafbddmgiahcphecmpfh","scrapedAt": "2026-08-16T09:12:04.512Z","description": "uBO Lite (uBOL) is an efficient MV3-based content blocker for Chromium-based browsers.","screenshots": ["https://lh3.googleusercontent.com/screenshot1.png"],"developer": {"email": "ubo@raymondhill.net","displayName": "Raymond Hill (gorhill)","address": null,"phone": null,"legalEntity": null,"registrationNumber": null,"developerId": "ufe0f3876bd6843cc72ff1855cf4a2cab"},"developerWebsite": "https://github.com/uBlockOrigin/uBOL-issues","privacyPolicyUrl": "https://github.com/gorhill/uBlock/wiki/Privacy-policy","isFeatured": false,"isEstablishedPublisher": false,"lastUpdatedAt": "2026-08-11T18:02:52.650Z","firstPublishedAt": "2022-09-08T13:10:25.814Z","packageSize": "9.27MiB","packageSizeMb": 9.72,"minimumChromeVersion": "122.0","listingLanguages": ["ar", "az", "bg", "de", "en"],"listingLanguageNames": ["العربية", "Azərbaycan dili", "Български", "Deutsch", "English"]}
manifest is null/omitted here because extractManifest was false; set it true to carry the full manifest dictionary on every record. If includeMaintenanceDetails is set to false, the last seven keys shown above (lastUpdatedAt through listingLanguageNames) are dropped from the record entirely rather than nulled.
How do you filter and target specific extensions?
Three filter layers stack on top of discovery. Discovery precision starts with mode: a listing/category URL in startUrls gives you the store's own curated ordering for a known category; a searchQuery keyword finds extensions you don't have a category page for, and itemTypes/filterBy narrow that search to extension-only or theme-only results from featured/established publishers before a single detail page is fetched. Quality thresholds come from minimalRating (search mode only) and filterBy's establishedPublisher/featured flags — cheap, store-side filters that shrink the candidate list before detail scraping starts. Rollout-vetting filters are what make this variant distinct: updatedWithinDays, maxPackageSizeMb, and listingLanguages all evaluate against fields the detail page already returned, and drop non-matching extensions before they're written to the dataset or billed — so a large discovery run can still cost you only for the extensions that actually pass your bar. maxItems (1–50,000) is the volume control; detail scraping stops the moment the cap is hit.
Three real examples:
{ "mode": "search", "searchQuery": "vpn", "filterBy": ["establishedPublisher"], "minimalRating": 4, "maxItems": 100 }
{ "mode": "url", "startUrls": ["https://chromewebstore.google.com/category/extensions/productivity"], "updatedWithinDays": 180, "maxPackageSizeMb": 15, "maxItems": 200 }
{ "mode": "search", "searchQuery": "translator", "listingLanguages": ["ja", "ko"], "includeMaintenanceDetails": true, "maxItems": 50 }
▶️ Want to try other SimpleAPI scrapers?
| Scraper | What it extracts |
|---|---|
| Google Play Scraper: Country Pricing & In-App Purchases | Per-country Google Play app pricing, in-app-purchase tiers and storefront availability |
| Alibaba Listings Scraper & Supplier Profiles | Product listings plus supplier verification and contact data |
| eBay Product Listing Scraper With Sold Price Data | eBay listings plus sold/completed-listing price analytics |
| Udemy Course Reviews Scraper: Instructor Course Catalog | An instructor's full course catalog plus reviews across every course they publish |
How to extract Chrome Web Store data programmatically
The Actor runs like any Apify Actor: start it from the Apify Console, or call it through the Apify API / apify-client SDK with your Apify API token — no Chrome Web Store or Google developer account needed.
Python example
from apify_client import ApifyClientclient = ApifyClient("<APIFY_API_TOKEN>")run = client.actor("simple_api/chrome-web-store-scraper-with-last-update-and-size").call(run_input={"mode": "search","searchQuery": "password manager","updatedWithinDays": 365,"maxPackageSizeMb": 20,"maxItems": 50,})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row["name"], row["lastUpdatedAt"], row["packageSizeMb"])
Export to spreadsheets or CRM
Every dataset downloads directly as CSV or Excel from the Apify Console or the API's dataset export endpoint. Map extensionId to your product key column, name/version/category to catalogue columns, and lastUpdatedAt/packageSizeMb/minimumChromeVersion to a rollout-readiness column set — the CSV export flattens the JSON keys straight to headers, no transformation needed.
⚖️ Is it legal to scrape the Chrome Web Store?
Yes — this Actor collects data the Chrome Web Store already serves publicly to any visitor's browser, without logging in or bypassing any access control. Extension listings, ratings, permissions, and maintenance/size details are business and product data published by the developer to be discovered, not personal data about a private individual, so this falls under general web-scraping and terms-of-service considerations rather than data-protection law: the store's own Terms of Service govern platform use, and the underlying listing content is a factual published record rather than protected creative work. The developer block (email, phone, address) is the publisher's own published business contact information, provided for exactly this purpose. Consult legal counsel for commercial applications involving bulk storage of personal data.
❓ FAQ
What happens to an extension that's been removed from the store?
It's simply skipped, not flagged. If the detail page no longer returns the store's embedded data payload, the Actor logs a "skipped (no data)" warning for that extension ID and moves on — no row is written to the dataset and nothing is charged for it, so a removed extension silently drops out of your results rather than appearing with a placeholder status.
Can I get the full manifest and permissions along with the maintenance/size data in the same run?
Yes — extractManifest and includeMaintenanceDetails are independent toggles, both readable from the same detail-page fetch. Turn both on to get manifest, permissions, manifestVersion and all seven maintenance/size fields on every record in one pass; summary fields like version and permissions are kept either way.
How accurate is the last-updated and package-size data?
The Actor returns each field exactly as it appears on the extension's public Chrome Web Store detail page at request time. packageSizeMb is a parsed number and is left null (never guessed) if the store's size string doesn't match a recognized unit format; packageSize, the store's own text, is always kept regardless.
How many extensions can I get per run?
maxItems caps it, from 1 to 50,000, default 10. Detail scraping stops the moment the cap is reached. Extensions dropped by updatedWithinDays, maxPackageSizeMb, or listingLanguages don't count against — or get billed under — that cap; only kept rows are written and charged.
What's the real value of the freshness, size, and language filters?
They let you run a broad discovery pass and pay only for extensions that pass your rollout bar. updatedWithinDays and maxPackageSizeMb are single-run comparisons against the run's own clock and the parsed package size; listingLanguages keeps only extensions whose listing supports at least one code you name. All three evaluate before the dataset write, so a 500-extension discovery scan can still cost you for only the handful that actually clear your bar.
Does Chrome Web Store Scraper With Last Update & Size work with Claude, ChatGPT, and AI agent frameworks?
Yes, as a standard HTTP call — any agent framework that can call the Apify API (via apify-client or plain REST with your Apify API token) can start a run, poll it, and read the typed JSON dataset back. There is no separate MCP server documented for this Actor.
How does this compare to other Chrome Web Store scrapers on Apify?
Checked on the Apify Store on 2026-08-16: one comparable listing (chrome-web-store-scraper) returns lastUpdated, published, size, and sizeBytes at a listed rate of "from $3.25 / 1,000 extensions" but does not document a minimumChromeVersion field; another comparable listing charges $0.011 per result (~$11/1,000) and its documented fields (title, description, rating, user count, category, developer info) don't include update date, publish date, or package size at all. This Actor documents minimumChromeVersion and listingLanguages/listingLanguageNames alongside the update/size fields, at $0.005 per kept row, and drops non-matching rows from billing via updatedWithinDays/maxPackageSizeMb/listingLanguages before they're written.
Can I use this Actor without a Chrome Web Store API key or Google developer account?
Yes. It reads the same public Chrome Web Store pages a browser would, so no Google login, developer account, or API key is required — only your Apify account and, for programmatic runs, an Apify API token.
Conclusion
Chrome Web Store Scraper With Last Update & Size turns "is this extension still maintained, and will it even install on our fleet" from a manual per-listing check into one structured run: every base listing field plus last-updated date, first-published date, package size, minimum Chrome version, and listing languages, with staleness/size/locale filters that keep the billed dataset limited to extensions that actually clear your bar. It's built for IT rollout owners, MSP auditors, and competitive researchers who need this at catalogue scale, without a Chrome Web Store developer account. Start a run from the Apify Console or call it through the Apify API to get your first vetted extension dataset.