
Website Content Crawler
scrape.ly/store/querystone/website-content-crawlerAIDeveloper tools
1 monthly user

Scrape Chrome Web Store extensions by search query, category, URL or ID. Get name, developer, contact email, users, rating, rating count, version, last update, size, permissions, website, category, privacy practices and optional user reviews.
Scrape Chrome Web Store extensions by search query, category, extension URL or ID. Get the full profile of each extension (users, rating, rating count, version, last update, size, permissions, developer name, contact email, address, website, category) plus optional user reviews. No login, no browser, and fast: 1,000 extensions with full profiles take about a minute.
| Field | What it does |
|---|---|
searchQueries | Keywords to search, results come in store ranking order. |
startUrls | Extension, review, search or category links. A /reviews link returns reviews only. |
extensionIds | 32-letter extension IDs. |
categories | Store categories such as productivity/tools or make_chrome_yours/privacy. |
maxItems | Extensions per query or category (default 20, 0 = all). |
minRating, minRatingCount, minUsers, maxUsers | Extension filters. |
includeDetails | Full profile for search and category results (default on). |
includePrivacy | Also read the privacy disclosure (data collected, declarations). |
includeReviews, maxReviewsPerExtension, reviewsSort | Reviews per extension and their order (recent, relevant, highest, lowest). |
reviewMinStars, reviewMaxStars, reviewsSince, reviewsLanguage | Review filters. |
language | Store language for names and descriptions (default en). |
{
"searchQueries": ["password manager"],
"startUrls": [{ "url": "https://chromewebstore.google.com/detail/dark-reader/eimadpbcbfnmbkopoojfekhnkhdbieeh" }],
"maxItems": 20,
"includeReviews": true,
"maxReviewsPerExtension": 20,
"reviewsSort": "recent"
}
Each extension is one row with "type": "extension". Reviews are separate rows with "type": "review". The Extensions and Reviews views in the Output tab show each kind as a table.
| Field | Description |
|---|---|
extensionId, name, url | Identity and store link |
category, categoryId | Store category |
rating, ratingCount, users | Popularity |
version, updatedAt, firstPublishedAt, size | Release info |
permissions, optionalPermissions, hostPermissions, manifestVersion, minChromeVersion | From the extension manifest |
developerName, developerLegalName, developerEmail, developerAddress, developerPhone, website | Public developer contact details |
shortDescription, description, languages, logoUrl, screenshotUrls, videoUrls, privacyPolicyUrl | Store listing |
privacy | Privacy disclosure, when includePrivacy is on |
searchQuery / categoryQuery, rank | Where the extension was found and its position |
Extension example (trimmed):
{
"type": "extension",
"extensionId": "eimadpbcbfnmbkopoojfekhnkhdbieeh",
"name": "Dark Reader",
"url": "https://chromewebstore.google.com/detail/dark-reader/eimadpbcbfnmbkopoojfekhnkhdbieeh",
"category": "Accessibility",
"rating": 4.29,
"ratingCount": 13244,
"users": 7000000,
"version": "4.9.133",
"updatedAt": "2026-09-24T16:25:15Z",
"size": "831KiB",
"website": "https://darkreader.org/",
"developerLegalName": "Dark Reader Ltd",
"developerEmail": "support@darkreader.org",
"permissions": ["alarms", "fontSettings", "scripting", "storage"],
"hostPermissions": ["*://*/*"],
"manifestVersion": 3,
"privacyPolicyUrl": "https://darkreader.org/privacy/"
}
Review example (fictional sample in the real shape):
{
"type": "review",
"extensionId": "eimadpbcbfnmbkopoojfekhnkhdbieeh",
"extensionName": "Dark Reader",
"reviewId": "00000000-1111-2222-3333-444444444444",
"reviewerName": "Sample Reviewer",
"rating": 5,
"reviewText": "Works on every site I use, easy on the eyes at night.",
"reviewDate": "2026-10-01T18:20:00Z",
"helpfulCount": 3,
"developerReply": null,
"extensionVersion": "4.9.133",
"language": "en",
"totalReviewCount": 5614
}
You pay per row saved:
Example: 1,000 extensions with full details ≈ $3.00 plus about $0.02 of platform usage (compute and datacenter proxy traffic, billed separately), and 10,000 reviews ≈ $1.00 plus a few cents of usage. You never pay for extensions removed by your filters.
Is it legal to scrape the Chrome Web Store? The actor reads only public store pages that anyone can open without an account. Check the store's terms and your local law for your use case, and handle personal data (such as reviewer names) responsibly.
Do I need a Google account or a proxy? No login is needed. Datacenter proxies are on by default and work well.
How many results can I get?
A search query usually returns a few hundred extensions (the store's own limit for that query); large categories list 10,000 and more (a 10,000-extension run took about 8 minutes in our tests). Set maxItems to 0 to take everything the store shows. When the store runs out, the run says so in its status message.
Why is a field empty?
Not every developer lists an email, address or phone, and some extensions have no ratings yet. Missing values are null.
Can I schedule it or use the API? Yes. Schedule runs in the console, or start them via the API and fetch results as JSON, CSV or Excel.
What about themes and apps? Theme and app pages work by URL or ID; category listings cover the 18 extension categories.
users is the number the store displays, which the store rounds.reviewsLanguage for other languages.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchQueriesarrayOptionalSearch queries
Keywords to search the Chrome Web Store for, one per line. Each query returns extensions in store ranking order.
startUrlsarrayOptionalChrome Web Store URLs
Links to extension pages, review pages (/reviews returns reviews only), search pages or category pages on chromewebstore.google.com. Old chrome.google.com/webstore links work too.
extensionIdsarrayOptionalExtension IDs
32-letter Chrome extension IDs, for example eimadpbcbfnmbkopoojfekhnkhdbieeh.
categoriesarrayOptionalCategories
Chrome Web Store extension categories to list, in store order.
maxItemsintegerOptionaldefault 20Max extensions per query or category
How many extensions to save for each search query and category. Use 0 for everything the store lists. Extension URLs and IDs are always saved.
Applied to every extension before it is saved and charged.
minRatingnumberOptionalMinimum rating
Only keep extensions with an average rating of at least this many stars (0 to 5).
minRatingCountintegerOptionalMinimum number of ratings
Only keep extensions with at least this many ratings.
minUsersintegerOptionalMinimum users
Only keep extensions with at least this many users.
maxUsersintegerOptionalMaximum users
Only keep extensions with at most this many users. Useful to find young or niche extensions.
What to load for each extension.
includeDetailsbooleanOptionaldefault trueFull details for search and category results
Load each listed extension's full profile: last update date, size, full description, developer name, email, address and phone, privacy policy link, languages, screenshots. Turn off for faster, lighter listings.
includePrivacybooleanOptionaldefault falsePrivacy practices
Also load the extension page to read the developer's privacy disclosure (data types collected and declarations). Adds one page load per extension.
languagestringOptionaldefault "en"Store language
Language code for names, descriptions and categories, for example en, de, fr, es, ja or pt-BR.
Optional user reviews, saved as separate rows with type 'review'.
includeReviewsbooleanOptionaldefault falseInclude reviews
Also save user reviews for every extension in the results. Review page links always return reviews.
maxReviewsPerExtensionintegerOptionaldefault 20Max reviews per extension
Stop after this many matching reviews per extension. Use 0 for all reviews.
reviewsSortenumOptionaldefault "recent"Sort reviews by
Order in which reviews are read.
reviewMinStarsintegerOptionalMinimum review stars
Only keep reviews with at least this many stars (1 to 5).
reviewMaxStarsintegerOptionalMaximum review stars
Only keep reviews with at most this many stars. Set 2 to monitor negative reviews.
reviewsSincestringOptionalReviews since
Only keep reviews written on or after this date (YYYY-MM-DD).
reviewsLanguagestringOptionaldefault "en"Review language
Language of the reviews to load, for example en, de or fr. The store filters reviews by language.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies are used by default and work for the public Chrome Web Store.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| type | string | extension or review |
| extensionId | string | 32-letter Chrome extension ID |
| name | string | null | Extension name |
| reviewId | string | null | Review ID (review rows) |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Extension | One Chrome Web Store extension saved with its full profile. | $0.003 |
| Review | One user review saved. | $0.0001 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('querystone/chrome-web-store-scraper').call({
"searchQueries": [
"password manager"
],
"startUrls": [
{
"url": "https://chromewebstore.google.com/detail/dark-reader/eimadpbcbfnmbkopoojfekhnkhdbieeh"
}
],
"maxItems": 20,
"language": "en",
"maxReviewsPerExtension": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run querystone/chrome-web-store-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=querystone/chrome-web-store-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Extensions with full store details.
Store details for an extension by URL.
Extension details plus 5 recent user reviews.
Popular, well-rated extensions only.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.