Chrome Web Store Scraper – Extensions, Reviews & CRX avatar

Chrome Web Store Scraper – Extensions, Reviews & CRX

Pricing

from $0.90 / 1,000 search results

Go to Apify Store
Chrome Web Store Scraper – Extensions, Reviews & CRX

Chrome Web Store Scraper – Extensions, Reviews & CRX

Search Chrome extensions and themes, browse categories and Top Charts, extract 127-field details, reviews, manifests, developer contacts, and CRX/ZIP source.

Pricing

from $0.90 / 1,000 search results

Rating

0.0

(0)

Developer

ScrapingMonkey

ScrapingMonkey

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Chrome Web Store Scraper – Extensions, Themes, Reviews, Manifests and CRX Source

Extract public Chrome Web Store search results, categories, Top Charts, complete extension or theme details, developer and privacy data, manifests, reviews, and downloadable CRX/ZIP source packages in one Apify Actor.

  • Search extensions, themes, or both with native continuation-token pagination
  • Browse extension and theme categories and collect Trending, Popular, or New & notable charts
  • Extract listing, developer, D-U-N-S, trader, localization, privacy, media, and complete manifest data
  • Calculate transparent manifest security signals such as broad host access and high-risk permissions
  • Filter discovery results by rating, users, featured status, or publisher verification
  • Filter reviews by score, keyword, date range, or rolling recent-day window
  • Download public extension or theme packages as CRX, ZIP, or both to the run Key-Value Store
  • Process batches with built-in country-targeted Apify Residential Proxy; no Google account, API key, browser, login cookie, or proxy setup is required
  • Export results as JSON, CSV, Excel, XML, RSS, or JSONL, or access them through the Apify API

What can you do with this Actor?

ModeInputOutputBest for
searchOne or more keywordsRanked extension/theme recordsKeyword research, competitor discovery, catalog building
categoryCategory URLs or pathsPaginated category recordsCategory monitoring and market mapping
topChartsTrending, Popular, and/or New & notableRanked chart recordsMomentum tracking and featured-product research
detailsItem IDs or URLsComplete listing, developer, privacy, manifest, security, media, related-item, and optional source/review dataDue diligence, audits, monitoring, enrichment
reviewsItem IDs or URLsPublic reviews and developer replies, optionally enriched with parent-item metricsVoice-of-customer and support analysis

One mode runs per execution. Use IDs discovered by Search, Category, or Top Charts as Details or Reviews inputs in a later run.

Quick start

  1. Open the Actor and click Try for free.
  2. Keep mode set to search and enter a keyword such as AI assistant.
  3. Choose extensions, themes, or both and set maxResults.
  4. Click Start.
  5. Preview the dataset, download it, or pass discovered IDs into Details or Reviews.

The default input is a small working search that requires no credentials or network configuration.

Input examples

Search extensions and themes

{
"mode": "search",
"searchTerms": ["AI assistant", "dark theme"],
"itemType": "all",
"maxResults": 20,
"country": "US",
"language": "en-US"
}

maxResults applies independently to every search term. One dataset row represents one accepted store item for one term unless cross-input deduplication is enabled.

Browse categories

{
"mode": "category",
"categoryUrls": [
"/category/extensions/productivity/tools",
"/category/themes/animals"
],
"maxResults": 100,
"minRating": 4,
"country": "US",
"language": "en-US"
}

Collect Top Charts

{
"mode": "topCharts",
"charts": ["trending", "popular", "notable"],
"maxResults": 25,
"country": "US",
"language": "en-US"
}

Extract details, security signals, reviews, and source

{
"mode": "details",
"extensionIds": [
"https://chromewebstore.google.com/detail/chatgpt/hehggadaopoacecdllhhajmbjkdcmajg",
"becfinhbfclcgokjlobojlnldbfillpf"
],
"includeReviews": true,
"maxResults": 20,
"includeSecurityAnalysis": true,
"downloadSource": true,
"sourceFormat": "both",
"country": "US",
"language": "en-US"
}

Filter and enrich reviews

{
"mode": "reviews",
"extensionIds": ["becfinhbfclcgokjlobojlnldbfillpf"],
"maxResults": 100,
"reviewSort": "newest",
"reviewScores": ["1", "2"],
"reviewKeywords": ["privacy", "tracking", "broken"],
"recentDays": 90,
"includeExtensionInfo": true,
"country": "US",
"language": "en-US"
}

Complete output examples

Every JSON block below is a complete top-level dataset shape. Optional source values are shown explicitly. Dynamic raw manifest maps are represented with compact real keys, but no top-level output field is omitted.

Complete search output – 86 top-level fields

{
"recordType": "search",
"extensionId": "becfinhbfclcgokjlobojlnldbfillpf",
"url": "https://chromewebstore.google.com/detail/_/becfinhbfclcgokjlobojlnldbfillpf",
"title": "Example AI Assistant",
"shortDescription": "An AI assistant for Chrome.",
"icon": "https://lh3.googleusercontent.com/example-icon",
"promotionalImage": "https://lh3.googleusercontent.com/example-promo",
"secondaryPromotionalImage": null,
"rating": 4.8,
"ratingCount": 1200,
"userCount": 90000,
"publisherName": "Example Publisher",
"publisherWebsite": "example.com",
"publisherVerified": true,
"featured": true,
"categoryId": "productivity/tools",
"categoryName": "Productivity > Tools",
"categoryCode": 5,
"itemType": "extension",
"itemTypeCode": 1,
"version": "2.1.0",
"publishedAt": "2023-11-14T22:13:20Z",
"manifestVersion": 3,
"manifestName": "Example AI Assistant",
"manifestDescription": "An AI assistant for Chrome.",
"defaultLocale": "en",
"minimumChromeVersion": "120",
"versionName": "2.1 stable",
"author": "Example Publisher",
"homepageUrl": "https://example.com",
"updateUrl": "https://clients2.google.com/service/update2/crx",
"manifestKey": null,
"permissions": ["storage", "tabs", "scripting"],
"optionalPermissions": ["bookmarks"],
"hostPermissions": ["https://example.com/*"],
"optionalHostPermissions": [],
"icons": {"128": "images/icon-128.png"},
"action": {"default_popup": "popup.html", "default_title": "Open assistant"},
"background": {"service_worker": "worker.js", "type": "module"},
"contentScripts": [
{"matches": ["https://example.com/*"], "js": ["content.js"], "all_frames": false}
],
"webAccessibleResources": [
{"resources": ["assets/widget.js"], "matches": ["https://example.com/*"]}
],
"commands": {"open-assistant": {"description": "Open assistant"}},
"sidePanel": {"default_path": "side-panel.html"},
"contentSecurityPolicy": {"extension_pages": "script-src 'self'; object-src 'self'"},
"externallyConnectable": {"matches": ["https://example.com/*"]},
"oauth2": {"client_id": "example-client", "scopes": ["profile"]},
"chromeUrlOverrides": {},
"declarativeNetRequest": {"rule_resources": []},
"omnibox": {"keyword": "ask"},
"theme": {},
"storage": {"managed_schema": "schema.json"},
"optionsPage": "options.html",
"optionsUi": {"page": "options.html", "open_in_tab": true},
"devtoolsPage": null,
"incognito": "split",
"offlineEnabled": false,
"securityRiskScore": 13,
"securityRiskLevel": "low",
"securityRiskFactors": ["permission:scripting", "permission:tabs"],
"highRiskPermissions": ["scripting", "tabs"],
"broadHostAccess": false,
"manifestV2": false,
"permissionCount": 4,
"hostPermissionCount": 1,
"contentScriptCount": 1,
"webAccessibleResourceCount": 1,
"remoteCodeIndicators": [],
"hasExternallyConnectable": true,
"usesNativeMessaging": false,
"usesDebugger": false,
"usesProxy": false,
"usesManagement": false,
"usesCookies": false,
"usesHistory": false,
"usesDownloads": false,
"manifest": {
"name": "Example AI Assistant",
"description": "An AI assistant for Chrome.",
"version": "2.1.0",
"version_name": "2.1 stable",
"manifest_version": 3,
"default_locale": "en",
"minimum_chrome_version": "120",
"homepage_url": "https://example.com",
"update_url": "https://clients2.google.com/service/update2/crx",
"permissions": ["storage", "tabs", "scripting"],
"optional_permissions": ["bookmarks"],
"host_permissions": ["https://example.com/*"],
"icons": {"128": "images/icon-128.png"},
"action": {"default_popup": "popup.html"},
"background": {"service_worker": "worker.js", "type": "module"},
"content_scripts": [{"matches": ["https://example.com/*"], "js": ["content.js"]}],
"web_accessible_resources": [{"resources": ["assets/widget.js"], "matches": ["https://example.com/*"]}],
"side_panel": {"default_path": "side-panel.html"}
},
"sourceType": "search",
"searchTerm": "AI assistant",
"categoryPath": null,
"chart": null,
"country": "US",
"language": "en-US",
"searchRank": 1,
"searchPosition": 1,
"searchPage": 1,
"scrapedAt": "2026-08-10T10:00:00Z"
}

Complete category output – 86 top-level fields

{
"recordType": "category",
"extensionId": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"url": "https://chromewebstore.google.com/detail/_/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"title": "Productivity Extension",
"shortDescription": "A productivity tool.",
"icon": "https://lh3.googleusercontent.com/category-icon",
"promotionalImage": null,
"secondaryPromotionalImage": null,
"rating": 4.6,
"ratingCount": 520,
"userCount": 40000,
"publisherName": "Productivity Labs",
"publisherWebsite": "productivity.example",
"publisherVerified": false,
"featured": false,
"categoryId": "productivity/tools",
"categoryName": "Productivity > Tools",
"categoryCode": 5,
"itemType": "extension",
"itemTypeCode": 1,
"version": "1.4.0",
"publishedAt": "2024-01-20T08:00:00Z",
"manifestVersion": 3,
"manifestName": "Productivity Extension",
"manifestDescription": "A productivity tool.",
"defaultLocale": "en",
"minimumChromeVersion": null,
"versionName": null,
"author": null,
"homepageUrl": "https://productivity.example",
"updateUrl": "https://clients2.google.com/service/update2/crx",
"manifestKey": null,
"permissions": ["storage"],
"optionalPermissions": [],
"hostPermissions": [],
"optionalHostPermissions": [],
"icons": {"128": "icon.png"},
"action": {"default_popup": "popup.html"},
"background": {"service_worker": "worker.js"},
"contentScripts": [],
"webAccessibleResources": [],
"commands": {},
"sidePanel": {},
"contentSecurityPolicy": null,
"externallyConnectable": {},
"oauth2": {},
"chromeUrlOverrides": {},
"declarativeNetRequest": {},
"omnibox": {},
"theme": {},
"storage": {},
"optionsPage": null,
"optionsUi": {},
"devtoolsPage": null,
"incognito": null,
"offlineEnabled": null,
"securityRiskScore": 0,
"securityRiskLevel": "low",
"securityRiskFactors": [],
"highRiskPermissions": [],
"broadHostAccess": false,
"manifestV2": false,
"permissionCount": 1,
"hostPermissionCount": 0,
"contentScriptCount": 0,
"webAccessibleResourceCount": 0,
"remoteCodeIndicators": [],
"hasExternallyConnectable": false,
"usesNativeMessaging": false,
"usesDebugger": false,
"usesProxy": false,
"usesManagement": false,
"usesCookies": false,
"usesHistory": false,
"usesDownloads": false,
"manifest": {
"name": "Productivity Extension",
"description": "A productivity tool.",
"version": "1.4.0",
"manifest_version": 3,
"permissions": ["storage"],
"icons": {"128": "icon.png"},
"action": {"default_popup": "popup.html"},
"background": {"service_worker": "worker.js"}
},
"sourceType": "category",
"searchTerm": null,
"categoryPath": "/category/extensions/productivity/tools",
"chart": null,
"country": "US",
"language": "en-US",
"searchRank": 1,
"searchPosition": 1,
"searchPage": 1,
"scrapedAt": "2026-08-10T10:00:00Z"
}

Complete topChart output – 86 top-level fields

{
"recordType": "topChart",
"extensionId": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"url": "https://chromewebstore.google.com/detail/_/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"title": "Trending Extension",
"shortDescription": "A trending Chrome extension.",
"icon": "https://lh3.googleusercontent.com/chart-icon",
"promotionalImage": "https://lh3.googleusercontent.com/chart-promo",
"secondaryPromotionalImage": null,
"rating": 4.9,
"ratingCount": 8500,
"userCount": 700000,
"publisherName": "Trending Publisher",
"publisherWebsite": "trending.example",
"publisherVerified": true,
"featured": true,
"categoryId": "productivity/workflow",
"categoryName": "Productivity > Workflow",
"categoryCode": 6,
"itemType": "extension",
"itemTypeCode": 1,
"version": "5.0.0",
"publishedAt": "2025-06-01T09:00:00Z",
"manifestVersion": 3,
"manifestName": "Trending Extension",
"manifestDescription": "A trending Chrome extension.",
"defaultLocale": "en",
"minimumChromeVersion": "116",
"versionName": "5.0",
"author": "Trending Publisher",
"homepageUrl": "https://trending.example",
"updateUrl": "https://clients2.google.com/service/update2/crx",
"manifestKey": null,
"permissions": ["storage", "downloads"],
"optionalPermissions": [],
"hostPermissions": ["https://trending.example/*"],
"optionalHostPermissions": [],
"icons": {"128": "icon.png"},
"action": {"default_popup": "popup.html"},
"background": {"service_worker": "worker.js", "type": "module"},
"contentScripts": [],
"webAccessibleResources": [],
"commands": {},
"sidePanel": {},
"contentSecurityPolicy": {"extension_pages": "script-src 'self'"},
"externallyConnectable": {},
"oauth2": {},
"chromeUrlOverrides": {},
"declarativeNetRequest": {},
"omnibox": {},
"theme": {},
"storage": {},
"optionsPage": null,
"optionsUi": {},
"devtoolsPage": null,
"incognito": null,
"offlineEnabled": false,
"securityRiskScore": 6,
"securityRiskLevel": "low",
"securityRiskFactors": ["permission:downloads"],
"highRiskPermissions": ["downloads"],
"broadHostAccess": false,
"manifestV2": false,
"permissionCount": 2,
"hostPermissionCount": 1,
"contentScriptCount": 0,
"webAccessibleResourceCount": 0,
"remoteCodeIndicators": [],
"hasExternallyConnectable": false,
"usesNativeMessaging": false,
"usesDebugger": false,
"usesProxy": false,
"usesManagement": false,
"usesCookies": false,
"usesHistory": false,
"usesDownloads": true,
"manifest": {
"name": "Trending Extension",
"description": "A trending Chrome extension.",
"version": "5.0.0",
"manifest_version": 3,
"permissions": ["storage", "downloads"],
"host_permissions": ["https://trending.example/*"],
"background": {"service_worker": "worker.js", "type": "module"}
},
"sourceType": "topCharts",
"searchTerm": null,
"categoryPath": null,
"chart": "trending",
"country": "US",
"language": "en-US",
"searchRank": 1,
"searchPosition": 1,
"searchPage": 1,
"scrapedAt": "2026-08-10T10:00:00Z"
}

Complete details output – 127 top-level fields

{
"recordType": "details",
"extensionId": "becfinhbfclcgokjlobojlnldbfillpf",
"url": "https://chromewebstore.google.com/detail/_/becfinhbfclcgokjlobojlnldbfillpf",
"title": "Example AI Assistant",
"shortDescription": "An AI assistant for Chrome.",
"icon": "https://lh3.googleusercontent.com/example-icon",
"promotionalImage": "https://lh3.googleusercontent.com/example-promo",
"secondaryPromotionalImage": null,
"rating": 4.8,
"ratingCount": 1200,
"userCount": 90000,
"publisherName": "Example Publisher",
"publisherWebsite": "example.com",
"publisherVerified": true,
"featured": true,
"categoryId": "productivity/tools",
"categoryName": "Productivity > Tools",
"categoryCode": 5,
"itemType": "extension",
"itemTypeCode": 1,
"version": "2.1.0",
"publishedAt": "2023-11-14T22:13:20Z",
"manifestVersion": 3,
"manifestName": "Example AI Assistant",
"manifestDescription": "An AI assistant for Chrome.",
"defaultLocale": "en",
"minimumChromeVersion": "120",
"versionName": "2.1 stable",
"author": "Example Publisher",
"homepageUrl": "https://example.com",
"updateUrl": "https://clients2.google.com/service/update2/crx",
"manifestKey": null,
"permissions": ["storage", "tabs", "scripting"],
"optionalPermissions": ["bookmarks"],
"hostPermissions": ["https://example.com/*"],
"optionalHostPermissions": [],
"icons": {"128": "images/icon-128.png"},
"action": {"default_popup": "popup.html", "default_title": "Open assistant"},
"background": {"service_worker": "worker.js", "type": "module"},
"contentScripts": [
{"matches": ["https://example.com/*"], "js": ["content.js"], "all_frames": false}
],
"webAccessibleResources": [
{"resources": ["assets/widget.js"], "matches": ["https://example.com/*"]}
],
"commands": {"open-assistant": {"description": "Open assistant"}},
"sidePanel": {"default_path": "side-panel.html"},
"contentSecurityPolicy": {"extension_pages": "script-src 'self'; object-src 'self'"},
"externallyConnectable": {"matches": ["https://example.com/*"]},
"oauth2": {"client_id": "example-client", "scopes": ["profile"]},
"chromeUrlOverrides": {},
"declarativeNetRequest": {"rule_resources": []},
"omnibox": {"keyword": "ask"},
"theme": {},
"storage": {"managed_schema": "schema.json"},
"optionsPage": "options.html",
"optionsUi": {"page": "options.html", "open_in_tab": true},
"devtoolsPage": null,
"incognito": "split",
"offlineEnabled": false,
"securityRiskScore": 13,
"securityRiskLevel": "low",
"securityRiskFactors": ["permission:scripting", "permission:tabs"],
"highRiskPermissions": ["scripting", "tabs"],
"broadHostAccess": false,
"manifestV2": false,
"permissionCount": 4,
"hostPermissionCount": 1,
"contentScriptCount": 1,
"webAccessibleResourceCount": 1,
"remoteCodeIndicators": [],
"hasExternallyConnectable": true,
"usesNativeMessaging": false,
"usesDebugger": false,
"usesProxy": false,
"usesManagement": false,
"usesCookies": false,
"usesHistory": false,
"usesDownloads": false,
"manifest": {
"name": "Example AI Assistant",
"description": "An AI assistant for Chrome.",
"version": "2.1.0",
"version_name": "2.1 stable",
"manifest_version": 3,
"default_locale": "en",
"minimum_chrome_version": "120",
"homepage_url": "https://example.com",
"update_url": "https://clients2.google.com/service/update2/crx",
"permissions": ["storage", "tabs", "scripting"],
"optional_permissions": ["bookmarks"],
"host_permissions": ["https://example.com/*"],
"icons": {"128": "images/icon-128.png"},
"action": {"default_popup": "popup.html"},
"background": {"service_worker": "worker.js", "type": "module"},
"content_scripts": [{"matches": ["https://example.com/*"], "js": ["content.js"]}],
"web_accessible_resources": [{"resources": ["assets/widget.js"], "matches": ["https://example.com/*"]}],
"side_panel": {"default_path": "side-panel.html"}
},
"description": "Full localized description of the extension.",
"developerEmail": "support@example.com",
"developerAddress": "123 Main Street, San Francisco, CA, US",
"traderStatus": "trader",
"isTrader": true,
"isNonTrader": false,
"developerContactName": "Jane Developer",
"developerLegalName": "Example Software LLC",
"developerOrganization": "Example Software LLC",
"dunsNumber": "080579740",
"developerPhone": "+1 555 0100",
"publisherId": "u-example-publisher-id",
"supportUrl": "https://example.com/support",
"updatedAt": "2026-08-01T08:30:00Z",
"size": "2.5MiB",
"languages": ["English", "Deutsch"],
"languageCodes": ["en", "de"],
"privacyPolicyUrl": "https://example.com/privacy",
"privacyDataTypeCodes": [1, 5, 8],
"privacyDataTypes": [
"personallyIdentifiableInformation",
"personalCommunications",
"userActivity"
],
"handlesUserData": true,
"privacyDeclarations": [
"dataNotSoldToThirdPartiesOutsideApprovedUseCases",
"dataNotUsedOrTransferredOutsideCoreFunctionality",
"dataNotUsedOrTransferredForCreditworthinessOrLending"
],
"dataNotSold": true,
"dataUseLimitedToCoreFunctionality": true,
"dataNotUsedForCreditworthiness": true,
"screenshots": [
"https://lh3.googleusercontent.com/screenshot-1",
"https://lh3.googleusercontent.com/screenshot-2"
],
"screenshotCount": 2,
"videos": ["https://www.youtube.com/watch?v=example"],
"videoCount": 1,
"media": [
{
"type": "screenshot",
"typeCode": 1,
"url": "https://lh3.googleusercontent.com/screenshot-1"
},
{
"type": "video",
"typeCode": 2,
"url": "https://www.youtube.com/watch?v=example"
}
],
"analyticsId": "G-EXAMPLE",
"reviewCount": 1418,
"relatedExtensions": [
{
"extensionId": "cccccccccccccccccccccccccccccccc",
"url": "https://chromewebstore.google.com/detail/_/cccccccccccccccccccccccccccccccc",
"title": "Related Extension",
"shortDescription": "A related productivity extension.",
"icon": "https://lh3.googleusercontent.com/related-icon",
"promotionalImage": null,
"rating": 4.4,
"ratingCount": 300,
"userCount": 20000,
"publisherWebsite": "related.example",
"publisherVerified": false,
"featured": false,
"categoryId": "productivity/tools",
"categoryName": "Productivity > Tools",
"itemType": "extension",
"version": "1.2.0",
"publishedAt": "2024-03-01T00:00:00Z"
}
],
"relatedExtensionCount": 1,
"storeMetadata": {
"privacyDataTypeCodes": [1, 5, 8],
"flag8": true,
"itemKindCode": 1,
"flag21": true,
"minimumChromeVersion": "120",
"value29": 1,
"flag34": true,
"flag36": true,
"privacyDeclarationCount": 3,
"developerRaw": [
"support@example.com",
"123 Main Street, San Francisco, CA, US",
null,
true,
false,
"Example Publisher",
"Jane Developer",
"Example Software LLC",
"080579740",
"+1 555 0100",
"u-example-publisher-id"
]
},
"includedReviews": [
{
"reviewId": "review-123",
"extensionId": "becfinhbfclcgokjlobojlnldbfillpf",
"extensionUrl": "https://chromewebstore.google.com/detail/_/becfinhbfclcgokjlobojlnldbfillpf",
"reviewsUrl": "https://chromewebstore.google.com/detail/_/becfinhbfclcgokjlobojlnldbfillpf/reviews",
"extensionTitle": "Example AI Assistant",
"extensionIcon": "https://lh3.googleusercontent.com/example-icon",
"extensionRating": 4.8,
"extensionRatingCount": 1200,
"extensionUserCount": 90000,
"itemType": "extension",
"userName": "Example Reviewer",
"userImage": "https://lh3.googleusercontent.com/reviewer-image",
"score": 2,
"scoreText": "2 out of 5",
"text": "The latest version does not work for my workflow.",
"createdAt": "2026-08-07T03:15:15Z",
"updatedAt": "2026-08-07T03:15:15Z",
"helpfulCount": 11,
"unhelpfulCount": 2,
"version": "2.1.0",
"reviewLanguage": "en",
"developerReplyId": "reply-123",
"developerReplyUserName": "Example Support",
"developerReplyUserImage": "https://lh3.googleusercontent.com/support-image",
"developerReplyText": "Please contact our support team.",
"developerReplyCreatedAt": "2026-08-07T07:19:26Z",
"developerReplyUpdatedAt": "2026-08-07T07:19:26Z",
"developerReplyLanguage": "en",
"matchedKeywords": ["work"],
"reviewSort": "newest",
"reviewRank": 1,
"reviewPage": 1,
"country": "US",
"language": "en-US",
"totalReviews": 1418,
"scrapedAt": "2026-08-10T10:00:00Z"
}
],
"sourceDownloadRequested": true,
"sourceDownloadAvailable": true,
"sourceFormat": "both",
"sourceCrxVersion": 3,
"sourceCrxKey": "SOURCE-becfinhbfclcgokjlobojlnldbfillpf.crx",
"sourceZipKey": "SOURCE-becfinhbfclcgokjlobojlnldbfillpf.zip",
"sourceCrxSizeBytes": 2650000,
"sourceZipSizeBytes": 2649500,
"sourceCrxSha256": "85c6187750257926e3d0a7b01937bb3ad6c5ca968396ceb34786fa757036b08e",
"sourceZipSha256": "1c8de2f62fd7f250afca7f8fd4c30627920a19f1511028826c61f91bbda6e8e1",
"sourceError": null,
"available": true,
"country": "US",
"language": "en-US",
"scrapedAt": "2026-08-10T10:00:00Z"
}

includedReviews always uses the complete 36-field nested review shape shown above. It does not contain recordType because it is embedded inside the Details row. When source download is disabled or unavailable, the same source keys remain present with false, null, and a populated sourceError where applicable.

Complete review output – 37 top-level fields

{
"recordType": "review",
"reviewId": "review-123",
"extensionId": "becfinhbfclcgokjlobojlnldbfillpf",
"extensionUrl": "https://chromewebstore.google.com/detail/_/becfinhbfclcgokjlobojlnldbfillpf",
"reviewsUrl": "https://chromewebstore.google.com/detail/_/becfinhbfclcgokjlobojlnldbfillpf/reviews",
"extensionTitle": "Example AI Assistant",
"extensionIcon": "https://lh3.googleusercontent.com/example-icon",
"extensionRating": 4.8,
"extensionRatingCount": 1200,
"extensionUserCount": 90000,
"itemType": "extension",
"userName": "Example Reviewer",
"userImage": "https://lh3.googleusercontent.com/reviewer-image",
"score": 2,
"scoreText": "2 out of 5",
"text": "The latest version does not work for my workflow.",
"createdAt": "2026-08-07T03:15:15Z",
"updatedAt": "2026-08-07T03:15:15Z",
"helpfulCount": 11,
"unhelpfulCount": 2,
"version": "2.1.0",
"reviewLanguage": "en",
"developerReplyId": "reply-123",
"developerReplyUserName": "Example Support",
"developerReplyUserImage": "https://lh3.googleusercontent.com/support-image",
"developerReplyText": "Please contact our support team.",
"developerReplyCreatedAt": "2026-08-07T07:19:26Z",
"developerReplyUpdatedAt": "2026-08-07T07:19:26Z",
"developerReplyLanguage": "en",
"matchedKeywords": ["work"],
"reviewSort": "newest",
"reviewRank": 1,
"reviewPage": 1,
"country": "US",
"language": "en-US",
"totalReviews": 1418,
"scrapedAt": "2026-08-10T10:00:00Z"
}

When includeExtensionInfo is false or enrichment fails, the six parent-item fields remain present with null. Developer reply fields remain present with null when the publisher has not replied.

Complete error output – 10 top-level fields

{
"recordType": "error",
"mode": "details",
"extensionId": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"url": "https://chromewebstore.google.com/detail/_/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"errorType": "not_found",
"errorMessage": "Chrome Web Store item does not exist: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"httpStatus": null,
"country": "US",
"language": "en-US",
"scrapedAt": "2026-08-10T10:00:00Z"
}

An existing item with no reviews is successful and produces zero standalone review rows. Removed or unknown IDs produce the explicit error row above without a custom billing event and do not stop other IDs from being processed. Keep the synthetic apify-default-dataset-item event disabled so diagnostic rows remain free and successful rows are not charged twice.

What Chrome Web Store data can you extract?

The Search, Category, and Top Charts shapes share the same 85 data fields plus their mode-specific recordType. Details adds listing, developer, privacy, media, related-item, source, availability, and request-context fields. Reviews use a separate 36-field data shape plus recordType.

Discovery and common item fields

CategoryComplete field inventory
IdentityrecordType, extensionId, url, title, shortDescription, itemType, itemTypeCode
Visualsicon, promotionalImage, secondaryPromotionalImage
Popularityrating, ratingCount, userCount, featured
PublisherpublisherName, publisherWebsite, publisherVerified
TaxonomycategoryId, categoryName, categoryCode
Releaseversion, publishedAt
Manifest identitymanifestVersion, manifestName, manifestDescription, defaultLocale, minimumChromeVersion, versionName, author, homepageUrl, updateUrl, manifestKey
Manifest permissionspermissions, optionalPermissions, hostPermissions, optionalHostPermissions
Manifest UI and runtimeicons, action, background, contentScripts, webAccessibleResources, commands, sidePanel, contentSecurityPolicy, externallyConnectable, oauth2, chromeUrlOverrides, declarativeNetRequest, omnibox, theme, storage, optionsPage, optionsUi, devtoolsPage, incognito, offlineEnabled
Security analysissecurityRiskScore, securityRiskLevel, securityRiskFactors, highRiskPermissions, broadHostAccess, manifestV2, permissionCount, hostPermissionCount, contentScriptCount, webAccessibleResourceCount, remoteCodeIndicators, hasExternallyConnectable, usesNativeMessaging, usesDebugger, usesProxy, usesManagement, usesCookies, usesHistory, usesDownloads
Raw sourcemanifest
Discovery contextsourceType, searchTerm, categoryPath, chart, country, language, searchRank, searchPosition, searchPage, scrapedAt

The security score is a deterministic signal derived from the public manifest. It is useful for prioritization, not a malware verdict or a substitute for code review.

Details-only fields

Details contains every common item field above except the ten discovery-context fields, plus the complete inventory below.

CategoryComplete field inventory
Listing contentdescription, updatedAt, size, languages, languageCodes, available, country, language, scrapedAt
Developer and trader identitydeveloperEmail, developerAddress, traderStatus, isTrader, isNonTrader, developerContactName, developerLegalName, developerOrganization, dunsNumber, developerPhone, publisherId, supportUrl
PrivacyprivacyPolicyUrl, privacyDataTypeCodes, privacyDataTypes, handlesUserData, privacyDeclarations, dataNotSold, dataUseLimitedToCoreFunctionality, dataNotUsedForCreditworthiness
Listing mediascreenshots, screenshotCount, videos, videoCount, media
Reviews and discoveryanalyticsId, reviewCount, relatedExtensions, relatedExtensionCount, includedReviews, storeMetadata
Source packagesourceDownloadRequested, sourceDownloadAvailable, sourceFormat, sourceCrxVersion, sourceCrxKey, sourceZipKey, sourceCrxSizeBytes, sourceZipSizeBytes, sourceCrxSha256, sourceZipSha256, sourceError

Review fields

CategoryComplete field inventory
Identity and parent itemrecordType, reviewId, extensionId, extensionUrl, reviewsUrl, extensionTitle, extensionIcon, extensionRating, extensionRatingCount, extensionUserCount, itemType
Reviewer and reviewuserName, userImage, score, scoreText, text, createdAt, updatedAt, helpfulCount, unhelpfulCount, version, reviewLanguage
Developer replydeveloperReplyId, developerReplyUserName, developerReplyUserImage, developerReplyText, developerReplyCreatedAt, developerReplyUpdatedAt, developerReplyLanguage
Filter and request contextmatchedKeywords, reviewSort, reviewRank, reviewPage, country, language, totalReviews, scrapedAt

Error rows contain recordType, mode, extensionId, url, errorType, errorMessage, httpStatus, country, language, and scrapedAt.

Input parameters

ParameterTypeRequiredDefaultDescription
modestringYessearchsearch, details, reviews, category, or topCharts
searchTermsstring[]Search modeAI assistantKeywords; limit applies per term. searchTerm is also accepted as a single-term API alias.
extensionIdsstring[]Details/Reviews[]32-letter IDs or full item/reviews URLs. appIds is also accepted as an API alias.
categoryUrlsstring[]Category mode[]Full URLs or paths beginning with /category/extensions/ or /category/themes/.
chartsstring[]Top Charts modetrendingAny of trending, popular, notable.
itemTypestringNoextensionsSearch only: extensions, themes, or all.
maxResultsintegerNo50Discovery results per term/category/chart, or reviews per item ID, from 0 to 10,000. Plain Details returns one row per valid ID. 0 means all available up to the safety cap.
countrystringNoUSTwo-letter ISO country for residential proxy routing and output context.
languagestringNoen-USStore hl locale such as en-US, de, pt-BR, or zh-Hant.
includeReviewsbooleanNofalseDetails only: embed matching reviews in each details row.
includeExtensionInfobooleanNotrueReviews only: enrich each review with parent item fields.
reviewSortstringNonewestnewest, helpful, lowestRating, or highestRating.
reviewScoresstring[]No[]Keep selected scores from "1" through "5"; empty means all. Integer values remain accepted by the runtime for direct API compatibility, and reviewScore is accepted as a single-score API alias.
reviewKeywordsstring[]No[]Case-insensitive OR filter over review text.
reviewsSincestringNoInclusive ISO 8601 timestamp or YYYY-MM-DD.
reviewsUntilstringNoInclusive ISO 8601 timestamp or YYYY-MM-DD.
recentDaysintegerNoRolling 1–3,650 day review window; the newer lower boundary wins.
minRatingnumberNoDiscovery only; 0–5. Unrated items fail an active rating filter.
maxRatingnumberNoDiscovery only; 0–5.
minUsersintegerNoDiscovery only; minimum store-provided user count.
maxUsersintegerNoDiscovery only; maximum store-provided user count.
featuredOnlybooleanNofalseDiscovery only; keep Featured items.
publisherVerifiedOnlybooleanNofalseDiscovery only; keep verified publishers.
deduplicateResultsbooleanNofalseEmit each item ID once across all discovery inputs in the run.
includeSecurityAnalysisbooleanNotrueKeep derived manifest risk and capability fields populated.
downloadSourcebooleanNofalseDetails only: store the public extension or theme package.
sourceFormatstringNozipzip, crx, or both.
maxSourceFileSizeMbintegerNo100Reject CRX packages above 1–500 MB.
maxConcurrencyintegerNo8Process 1–20 input targets concurrently.

Use cases

Chrome extension market and keyword research

Run several commercial keywords, filter by rating and users, deduplicate repeated listings, then compare publishers, categories, featured status, permissions, and update activity.

Publisher and compliance due diligence

Use Details to review legal identity, D-U-N-S number, trader status, support channels, privacy declarations, handled data types, public manifest permissions, and the original source package when available.

Security triage and source review

Prioritize listings by broad host access, Manifest V2, high-risk capabilities, content scripts, remote-code indicators, and the derived score. Download CRX/ZIP packages to a Key-Value Store for authorized deeper analysis.

Review intelligence and support monitoring

Collect newest, most helpful, lowest-rated, or highest-rated reviews. Filter complaints by score, text, date, version, helpful votes, and whether the developer replied.

Category, chart, and localization monitoring

Schedule recurring Category or Top Charts runs and compare snapshots. Repeat Details with different language values to observe publisher-provided localized titles, descriptions, and metadata.

Performance and cost

The Actor is ready for pay-per-event billing with distinct events so each workload can be priced separately:

Event nameEmitted forCount
search-resultAccepted Search rowPer dataset row
category-resultAccepted Category rowPer dataset row
top-chart-resultAccepted Top Charts rowPer dataset row
item-detailDetails rowPer dataset row
reviewStandalone or embedded reviewPer review
source-downloadSuccessfully stored source packagePer item, not per CRX/ZIP file

Explicit not-found rows are stored without a custom charge event. Do not create an error event. Also remove the synthetic apify-default-dataset-item event from the Actor pricing configuration; otherwise Apify charges every default Dataset row in addition to the custom result event.

Embedded reviews remain inside one Details dataset row but are charged individually as review events. The Actor reserves the Details event before trimming embedded reviews against a run maximum-charge limit. It also reserves the Details cost before accepting a source-download event.

Final public event prices and repeatable Apify run measurements are not stored in this repository. Check the Actor's Pricing tab for current prices. Runtime and platform usage mainly grow with source pages, review pagination, Details enrichment, CRX size, retries, and proxy traffic.

API usage

Replace USERNAME~chrome-web-store-data-scraper if the published Actor ID differs:

curl -X POST \
"https://api.apify.com/v2/acts/USERNAME~chrome-web-store-data-scraper/runs?token=APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"mode": "search",
"searchTerms": ["password manager"],
"itemType": "extensions",
"maxResults": 20,
"country": "US",
"language": "en-US"
}'

Use the default dataset API to export JSON, CSV, Excel, XML, RSS, or JSONL. Connect finished runs to Google Sheets, Make, Zapier, n8n, Airbyte, webhooks, Slack, or a data warehouse.

The Output tab uses one unified Results view with all 167 top-level fields across discovery, Details, Reviews, source metadata, and diagnostic rows. Fields that do not apply to a row's recordType remain empty, so users never need to switch mode-specific tabs or open the automatic All fields view.

Source files are stored under keys such as SOURCE-ITEM_ID.crx and SOURCE-ITEM_ID.zip in the run's default Key-Value Store. The Details row supplies the exact key and SHA-256 value.

Best for / not for

Best for: Chrome extension and theme discovery, public publisher research, compliance checks, manifest/security triage, source-package collection, review analysis, and recurring market monitoring.

Not for: Chrome Developer Dashboard data, private account information, paid/private extension code, browser telemetry, automatic malware verdicts, extension installation, or authenticated user activity.

Limits and good to know

  • One mode runs per execution; each mode accepts batches of its relevant input.
  • maxResults applies per discovery source or per reviewed item. Plain Details returns one row per valid ID. 0 means all source-exposed results with a 10,000-item safety cap.
  • Chrome Web Store currently exposes fixed Top Charts lists of up to 25 items per selected chart.
  • Rating, users, featured, publisher-verification, review-score, review-keyword, and review-date filters are applied after public source records are received. The Actor may request additional pages to reach the requested number of accepted rows.
  • With newest-first review sorting, a reviewsSince or recentDays boundary can stop pagination early. Other sorts may need to inspect more pages.
  • language requests publisher-provided localization. The store can fall back when a translation is unavailable.
  • country selects the built-in Apify Residential Proxy country; Chrome Web Store does not expose a separate stable country parameter in these RPC calls.
  • Source download is supported for public extensions and themes through Google's update service. Unavailable packages return source metadata with sourceDownloadAvailable: false and sourceError.
  • Missing scalar values are null; missing lists and map-like manifest components are [] or {}. Every documented top-level key remains stable for its row shape.
  • Search/category pagination and reviews are deduplicated by source ID. Cross-term/category/chart deduplication is optional.
  • Requests retry rate limits, blocks, transient HTTP/network/proxy failures, and invalid structures with exponential backoff. A failed input does not discard successful inputs.
  • Removed IDs return explicit error rows. Other unrecoverable operations are logged; if every non-terminal operation fails, the run fails visibly.
  • All target traffic is forced through country-targeted Apify Residential Proxy. No user proxy field exists, no direct fallback is allowed, and no captured browser cookie is included in requests or source code.

Frequently asked questions

What input should I provide?

Use keywords for Search, category URLs/paths for Category, chart names for Top Charts, or 32-character Chrome Web Store IDs/full item URLs for Details and Reviews.

Can it scrape both extensions and themes?

Yes. Search supports extensions, themes, or all; Category accepts both extension and theme category paths; Details and CRX/ZIP download support both item types. Reviews still depend on what Chrome Web Store exposes for the item.

How many results can I extract?

Set maxResults from 0 through 10,000 per input. Zero asks for every source-exposed result up to the safety cap. The source may expose fewer results, and Top Charts currently expose up to 25 per chart.

Why are some fields empty?

Publishers do not provide every optional developer, trader, privacy, localization, media, or manifest field. The stable key remains present with null, [], or {} so downstream schemas do not shift.

Is the security score a malware verdict?

No. It is a transparent prioritization signal derived from permissions and manifest capabilities. Validate risks against your policy and perform authorized code review where needed.

Can I download extension source code?

Details mode can store the publicly distributed extension or theme CRX, its embedded ZIP, or both. The Actor reports keys, sizes, hashes, CRX version, and errors. Availability is controlled by Google's update service.

Can I process multiple inputs and schedule runs?

Yes. All modes accept batches where applicable. Use Apify schedules for recurring snapshots and webhooks to notify another system after completion.

No. Public data is collected without Google authentication. The Actor creates a mandatory Apify Residential Proxy internally and does not expose proxy or cookie inputs.

Responsible use

This Actor processes publicly available Chrome Web Store listing, manifest, developer, and review information. Users are responsible for complying with applicable laws, privacy regulations, contractual obligations, intellectual-property rights, and Chrome Web Store terms. Download or analyze source packages only where you have a lawful purpose, and do not use reviewer or developer information for spam, harassment, deception, or unlawful profiling.

This Actor is independent and is not affiliated with, endorsed by, or sponsored by Google LLC. Google, Chrome, and Chrome Web Store are trademarks of Google LLC.

Support

If a source response changes, a field is unexpectedly empty, or a valid item fails, create an issue in the Actor's Issues tab. Include the run ID, mode, locale, country, and a non-sensitive reproducible input. Never attach account credentials, authentication headers, or browser cookies.