Chrome Web Store Scraper With Last Update & Size avatar

Chrome Web Store Scraper With Last Update & Size

Pricing

from $2.99 / 1,000 results

Go to Apify Store
Chrome Web Store Scraper With Last Update & Size

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

SimpleAPI

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

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/THEME with quality filters
  • 🧩 Core identifying and popularity fieldsextensionId, name, rating, ratingCount, users, version, category, permissions
  • 🛠️ Maintenance & size vetting fieldslastUpdatedAt, 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.

FieldExample valueUse case
extensionId"ddkjiahejlhfcafbddmgiahcphecmpfh"Stable join key across runs
name"uBlock Origin Lite"Display / dedupe key
rating4.498523331364442Sort or threshold on quality
ratingCount3386Confidence weight for rating
users16000000Popularity / 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
websiteUrlnullExtension's own homepage, when set
permissions["storage", "declarativeNetRequest"]Security review before rollout
manifestVersion3MV2 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 / marqueeTileUrlimage URLsListing 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
isFeaturedfalseStore-curated quality signal
isEstablishedPublisherfalsePublisher 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
packageSizeMb9.72Numeric 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.

FeatureChrome Web Store APIChrome Web Store Scraper With Last Update & Size
Extensions you can queryOnly items your publisher account owns✅ Any extension with a public store listing
AuthenticationOAuth 2.0 + Google Cloud projectApify token only — no Google account needed
Discovery by category or keywordNot providedmode: url (category/collection) or mode: search
Last-updated / first-published datesNot exposedlastUpdatedAt, firstPublishedAt
Package size / min Chrome versionNot exposedpackageSize/packageSizeMb, minimumChromeVersion
Data on extensions you don't ownNot available✅ Full record for any public listing
Setup requirementsGoogle Cloud project + OAuth consent screenApify 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

ParameterRequiredTypeDescriptionExample value
modeNoString (enum: url, search)url scrapes listing URLs in startUrls; search builds a search URL from searchQuery + filters. Default "url"."search"
startUrlsNoArray of stringsChrome Web Store category/collection/search-result URLs. Used only when mode is url.["https://chromewebstore.google.com/category/extensions/lifestyle/travel"]
searchQueryNoStringKeyword to search for. Used only when mode is search. Default "ai"."password manager"
itemTypesNoArray (enum: EXTENSION, THEME)Filter search results by item type. Empty = no filter. Default ["EXTENSION"].["EXTENSION"]
filterByNoArray (enum: featured, establishedPublisher)Restrict search results to featured listings and/or established publishers. Empty = no filter. Default [].["establishedPublisher"]
minimalRatingNoInteger, 0–5Only include results rated at or above this many stars. 0 disables. Default 0.4
maxItemsNoInteger, 1–50000Hard cap on collected extensions. Default 10.50
extractManifestNoBooleanInclude the full manifest dictionary per record. Default false.false
includeMaintenanceDetailsNoBooleanAttach lastUpdatedAt, firstPublishedAt, packageSize/packageSizeMb, minimumChromeVersion, listingLanguages[]/listingLanguageNames[]. When false, all seven keys are dropped, not nulled. Default true.true
updatedWithinDaysNoInteger, ≥0Drop extensions last updated more than this many days ago (single-run read). 0 disables. Default 0.365
maxPackageSizeMbNoInteger, ≥0Drop extensions whose parsed package size exceeds this many MB. 0 disables. Default 0.20
listingLanguagesNoArray of stringsKeep only extensions whose listing language codes overlap this list. Empty = no filter. Default [].["en", "es"]
proxyConfigurationNoObject (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?

ScraperWhat it extracts
Google Play Scraper: Country Pricing & In-App PurchasesPer-country Google Play app pricing, in-app-purchase tiers and storefront availability
Alibaba Listings Scraper & Supplier ProfilesProduct listings plus supplier verification and contact data
eBay Product Listing Scraper With Sold Price DataeBay listings plus sold/completed-listing price analytics
Udemy Course Reviews Scraper: Instructor Course CatalogAn 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 ApifyClient
client = 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.

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.