Chrome Extension Scraper: Listings, Users & Dead Links avatar

Chrome Extension Scraper: Listings, Users & Dead Links

Pricing

from $3.99 / 1,000 results

Go to Apify Store
Chrome Extension Scraper: Listings, Users & Dead Links

Chrome Extension Scraper: Listings, Users & Dead Links

Audit public Chrome Web Store extension listings for availability, users, stale updates and dead privacy, website or contact links.

Pricing

from $3.99 / 1,000 results

Rating

0.0

(0)

Developer

Google API

Google API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a month ago

Last modified

Categories

Security

Limited permissions

Share

What does Chrome Extension Audit Scraper do?

Chrome Extension Audit Scraper reads public Chrome Web Store detail listings and produces business-focused audit records for extension availability, public users and ratings, update freshness, publisher information, and public privacy, website, support, or contact links. It does not log in, use the Chrome publishing API, solve CAPTCHAs, or bypass an access challenge.

The Actor accepts extension IDs or public detail URLs, deduplicates them by the stable extension ID, and processes bounded pages of the supplied source list. page selects the starting page and maxPages controls how many consecutive pages are audited; each page is limited by maxItems.

Why use Chrome Extension Audit Scraper?

  • Identify removed or inaccessible public listings.
  • Compare public user counts, ratings, versions, and update age.
  • Find the public privacy, website, support, and contact links exposed by a listing.
  • Optionally classify a bounded number of those links as reachable, not found, blocked, request-failed, or parked/expired.

External-link checks are optional and disabled by default (checkLinks: false). You can supply Apify or custom proxy settings for public listing requests and any link checks you enable. The Actor does not bypass access challenges.

What data can Chrome Extension Audit Scraper extract?

GroupFields
Identity and classificationextensionId, extensionUrl, title, name, storeCategory, categoryUrl, iconUrl, storeLocale
Publisher detailspublisher, offeredBy, publisherHasGoodRecord, publisherStatusText, developer, developerName, developerEmail, developerPhone, developerWebsiteUrl, developerDunsNumber, developerAddress, developerPostalCode, developerCity, developerCountryCode, developerIsTrader, traderStatus, traderStatusText
Listing contentdescription, descriptionText, descriptionHtml, languages, languageCount, languageCountText, supportedPlatforms, availability, version, sizeText, sizeBytes, offersInAppPurchases, inAppPurchasesText
Public popularityuserCount, userCountText, userCountIsEstimated, rating, ratingText, ratingScale, ratingCount, ratingCountText, ratingCountIsEstimated
FreshnessupdatedAt, updatedAtText, updatedAtPrecision, updatedAtIsEstimated, updateAgeDays, staleAfterDays, stale
Store placementisFeatured, followsRecommendedPractices
Privacy disclosuresprivacyPolicyUrl, privacyDisclosureText, privacyDataCollected, privacyDataSold, privacyDataUsedForUnrelatedPurposes, privacyDataUsedForCreditworthiness
Public linkswebsiteUrl, supportUrl, sourceRepositoryUrl, reviewUrl, contactUrl, contactEmail, externalLinks
Related listings and link auditrelatedExtensions, linkChecks, deadLinkCount, linkCheckCount

Boolean facts are tri-state: true or false only when the listing explicitly supports that value, and null when the source is silent or ambiguous. Invalid out-of-range ratings are not emitted as numeric values; the original rating text remains available.

Each successfully audited extension appears as a dataset record. Listings that cannot be read do not create placeholder records. A separate run summary is available with the Actor output.

How to scrape Chrome Web Store extension listings

  1. Open the Actor's Input tab.
  2. Enter one or more 32-character IDs in extensionIds, or use one of the documented URL aliases.
  3. Choose whether to check public links and set the stale threshold.
  4. Run the Actor and review the extension records in the dataset. The Actor output also provides a separate run summary.

Only https://chromewebstore.google.com and the legacy https://chrome.google.com hostnames are accepted. Custom sources override the default ID only when they are supplied; audit settings and limits still apply. Duplicate IDs across aliases are emitted once.

How much will it cost to scrape Chrome Web Store?

Cost depends mainly on how many extensions and public link checks you collect. Keep checkLinks off, reduce maxItems, or set maxLinksPerExtension to 0 for a smaller run.

Input

See the Input tab for the complete configuration. Supported fields are:

  • extensionIds (default: one example ID), plus compatibility aliases extensions, urls, sourceUrls, startUrls, and single url.
  • maxItems / maxExtensions (1–100; default 10) limits extensions per source-list page across all aliases.
  • page (1–100; default 1) selects the starting source-list page, and maxPages (1–100; default 1) limits consecutive pages in the run.
  • checkLinks (default false), maxLinksPerExtension (0–10; default 4), and staleAfterDays (1–3650; default 365).
  • locale selects the Chrome Web Store language and region. proxyConfiguration is available for users who need to route permitted public requests through Apify Proxy.

Conflicting aliases are rejected. Invalid IDs, unrelated hosts, malformed ranges, and unsupported types fail early rather than being converted to an unrelated request. Page controls batch the explicit source list; they do not trigger discovery or search pagination.

Output

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

Example normal record (illustrative values):

{
"extensionId": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"extensionUrl": "https://chromewebstore.google.com/detail/example/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?hl=en-US",
"title": "Example Privacy Helper",
"name": "Example Privacy Helper",
"publisher": "example.publisher",
"offeredBy": "example.publisher",
"publisherHasGoodRecord": null,
"developer": "Example Labs",
"developerName": "Example Labs",
"developerEmail": "support@example.test",
"developerAddress": "1 Example Street, Example City 10000, US",
"developerPostalCode": "10000",
"developerCity": "Example City",
"developerCountryCode": "US",
"developerIsTrader": false,
"traderStatus": "non_trader",
"description": "A sample browser helper for privacy-focused browsing.",
"descriptionText": "A sample browser helper for privacy-focused browsing tools.",
"descriptionHtml": "<p>A sample browser helper for privacy-focused browsing tools.</p>",
"availability": "available",
"storeCategory": "Productivity",
"categoryUrl": "https://chromewebstore.google.com/category/extensions/productivity",
"iconUrl": "https://lh3.googleusercontent.com/example=s128-rj-sc0x00ffffff",
"isFeatured": true,
"followsRecommendedPractices": true,
"offersInAppPurchases": null,
"userCount": 250,
"userCountText": "250 users",
"userCountIsEstimated": false,
"rating": 4.2,
"ratingText": "4.2 out of 5",
"ratingScale": 5,
"ratingCount": 12,
"ratingCountText": "12 ratings",
"ratingCountIsEstimated": false,
"version": "2.0.0",
"updatedAt": "2026-08-01T00:00:00.000Z",
"updatedAtText": "August 1, 2026",
"updatedAtPrecision": "day",
"updatedAtIsEstimated": false,
"staleAfterDays": 365,
"stale": false,
"sizeText": "967KiB",
"sizeBytes": 990208,
"languages": ["English"],
"languageCount": 1,
"privacyPolicyUrl": "https://example.test/policy",
"privacyDisclosureText": "The developer has disclosed that it will not collect or use your data.",
"privacyDataCollected": false,
"privacyDataSold": null,
"privacyDataUsedForUnrelatedPurposes": null,
"privacyDataUsedForCreditworthiness": null,
"supportUrl": "https://example.test/support",
"sourceRepositoryUrl": "https://github.com/example/extension",
"reviewUrl": "https://chromewebstore.google.com/detail/example/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/reviews",
"externalLinks": ["https://example.test/policy"],
"linkChecks": [
{ "linkUrl": "https://example.test/policy", "linkType": "privacy_policy", "isDead": false, "reachability": "reachable", "checkedAt": "2026-09-17T00:00:00.000Z" }
],
"deadLinkCount": 0,
"linkCheckCount": 1,
"storeLocale": "en-US"
}

The Actor output includes a run summary alongside the dataset.

Tips and advanced options

Use maxLinksPerExtension: 0 for listing-only audits. Keep retries low when the site returns a challenge; retries do not solve access restrictions. A public removed listing may be emitted with availability: "removed"; listings that cannot be read are skipped. The Actor does not fabricate missing ratings, user counts, update dates, or links. Rounded K/M counts retain their raw text and are marked as estimates.

Valid simple input:

{ "extensionIds": ["ddkjiahejlhfcafbddmgiahcphecmpfh"], "maxItems": 1 }

Valid audit filters input (this detail Actor has no relevance sort because each source is an explicit listing):

{ "extensionIds": ["ddkjiahejlhfcafbddmgiahcphecmpfh"], "checkLinks": true, "maxLinksPerExtension": 4, "staleAfterDays": 180 }

Valid multiple-source input with deduplication by ID:

{ "sourceUrls": ["https://chromewebstore.google.com/detail/example/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?hl=en-US", "https://chrome.google.com/webstore/detail/example/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"], "maxItems": 5 }

FAQ, support, and responsible use

If a run emits no listing records, review the run logs. Google may require an account or return a challenge in some environments; this Actor does not bypass that boundary.

Use only public information, respect Chrome Web Store and Google terms, robots guidance, rate limits, privacy law, and the rights of extension publishers. Public contact emails are included only when the listing exposes them and they are relevant to the audit. This Actor is not affiliated with Google or the Chrome Web Store. For support, include the run ID and a summary of the input in the Actor Issues tab; do not include credentials or cookies.