Chrome Extensions Scraper collects rich metadata from the Chrome Web Store, turning extension listings into structured, analysis-ready data. Use it to research competitors, monitor categories, or power internal tools with up-to-date Chrome extension statistics and details.
Created by Bitbash, built to showcase our approach to Scraping and Automation!
If you are looking for Chrome Extensions you've just found your team — Let’s Chat. 👆👆
Chrome Extensions Scraper is a dedicated tool for extracting information about extensions currently available in the Chrome Web Store. It focuses on transforming public extension pages into structured records that are easy to filter, search, and analyze.
It is ideal for growth teams, market researchers, data engineers, and indie developers who need reliable, large-scale access to Chrome extension data without manual copy-paste work.
- Crawl one or more Chrome Web Store category or search URLs and collect all matching extensions.
- Capture detailed metadata including installs, ratings, categories, developer links, and update history.
- Support for full-catalog collection, or scoped runs limited to selected category URLs.
- Generate consistent JSON output that can be used in dashboards, BI tools, or custom scripts.
- Designed to run repeatedly so you can track trends and changes over time.
| Feature | Description |
|---|---|
| Full catalog crawling | Collects information on all extensions discoverable from provided Chrome Web Store listing URLs. |
| Category-level targeting | Limit scraping to one or more categories or custom listing URLs for focused research. |
| Rich metadata extraction | Captures installs, rating score, rating count, last update date, version, and more. |
| Developer & privacy details | Extracts developer name, website, support links, and privacy policy URLs where available. |
| Performance-oriented crawling | Optimized request strategy to balance speed with stability for large category scans. |
| Raw JSON output | Produces structured JSON data that plugs directly into pipelines, databases, or analytics tools. |
| Flexible input configuration | Configure start URLs, maximum items, and filters for fine-grained control over each run. |
| Error-tolerant design | Handles intermittent failures gracefully and skips broken or unavailable listings. |
| Field Name | Field Description |
|---|---|
| extensionId | Unique identifier of the Chrome extension. |
| name | Display name of the extension as shown in the store. |
| slug | URL-friendly identifier part used in the extension page URL. |
| url | Canonical URL of the extension listing page. |
| category | Primary category under which the extension is listed. |
| summary | Short summary or tagline shown in the store. |
| description | Full description text of the extension. |
| rating | Average user rating (e.g. 4.7) parsed from the listing. |
| ratingCount | Total number of user ratings or reviews. |
| userCount | Approximate number of users or installs reported by the store. |
| price | Price information if the extension is paid, otherwise null. |
| isFree | Boolean flag indicating whether the extension is free. |
| version | Current version number displayed on the details page. |
| lastUpdated | Date the extension was last updated in the store. |
| language | Primary language of the extension listing. |
| developerName | Name of the developer or publisher. |
| developerWebsite | Link to the developer or publisher website, if available. |
| supportUrl | Support or contact URL for the extension. |
| privacyPolicyUrl | Link to the privacy policy page, if declared. |
| permissions | List of browser permissions requested by the extension. |
| featuredBadge | Boolean or label indicating if the extension is marked as featured or recommended. |
| iconUrl | URL of the extension icon image. |
| screenshotUrls | Array of screenshot image URLs from the listing. |
| categoryPath | Hierarchical category path or breadcrumb when available. |
| rankingPosition | Position of the extension in its category or search results, when computed. |
| rawHtml | Optional raw HTML snapshot or key fragments for advanced parsing, if enabled. |
| crawlTimestamp | Timestamp indicating when this record was scraped. |
| inputCategoryUrl | Source listing URL from which this extension was discovered. |
Example:
[
{
"extensionId": "aapocclcgogkmnckokdopfmhonfmgoek",
"name": "Momentum",
"slug": "momentum",
"url": "https://chrome.google.com/webstore/detail/momentum/aapocclcgogkmnckokdopfmhonfmgoek",
"category": "Productivity",
"summary": "Replace new tab page with a personal dashboard featuring to-do, weather, and inspiration.",
"description": "Build better habits and stay focused with a customizable dashboard that appears on every new tab.",
"rating": 4.8,
"ratingCount": 48621,
"userCount": 3000000,
"price": null,
"isFree": true,
"version": "2.11.3",
"lastUpdated": "2025-01-15",
"language": "en",
"developerName": "Momentum Dashboard",
"developerWebsite": "https://momentumdash.com",
"supportUrl": "https://momentumdash.com/support",
"privacyPolicyUrl": "https://momentumdash.com/privacy",
"permissions": [
"storage",
"tabs"
],
"featuredBadge": true,
"iconUrl": "https://lh3.googleusercontent.com/icon-momentum-128.png",
"screenshotUrls": [
"https://lh3.googleusercontent.com/screenshot1.png",
"https://lh3.googleusercontent.com/screenshot2.png"
],
"categoryPath": [
"Extensions",
"Productivity"
],
"rankingPosition": 3,
"rawHtml": null,
"crawlTimestamp": "2025-02-01T10:32:11.000Z",
"inputCategoryUrl": "https://chromewebstore.google.com/category/productivity"
}
]
Example:
facebook-posts-scraper (IMPORTANT :!! always keep this name as the name of the apify actor !!! Chrome Extensions )/
├── src/
│ ├── index.js
│ ├── config/
│ │ ├── defaultConfig.json
│ │ └── inputSchema.json
│ ├── lib/
│ │ ├── chromeStoreClient.js
│ │ ├── extensionParser.js
│ │ ├── paginationHelper.js
│ │ └── logger.js
│ ├── services/
│ │ ├── crawlCatalog.js
│ │ └── processExtensionPage.js
│ └── outputs/
│ └── jsonExporter.js
├── data/
│ ├── input-urls.sample.json
│ └── output-sample.json
├── tests/
│ ├── extensionParser.test.js
│ ├── chromeStoreClient.test.js
│ └── fixtures/
│ └── sample-extension-page.html
├── .github/
│ └── workflows/
│ └── ci.yml
├── package.json
├── package-lock.json
├── .env.example
├── .gitignore
├── LICENSE
└── README.md
- [Growth marketers] use it to analyze top-performing Chrome extensions in specific categories, so they can benchmark features, pricing, and positioning before launching new products.
- [SaaS founders] use it to identify extension-based competitors and monitor their update cadence, so they can react quickly to market changes.
- [Data analysts] use it to build dashboards of installs, ratings, and rankings over time, so stakeholders can track adoption trends at a glance.
- [Researchers] use it to study ecosystem dynamics, such as which categories are growing fastest and what types of tools dominate the store.
- [Lead generation teams] use it to discover potential partners or integration targets by filtering extensions by category, rating, or user count.
Q1: What input do I need to provide? You typically provide one or more Chrome Web Store listing URLs, such as category or search result pages. Optionally, you can set limits on how many extensions to collect from each URL and whether to follow pagination.
Q2: Can this scraper handle the entire Chrome Web Store? Yes, but large-scale runs should be configured carefully with reasonable limits and batching strategies. For full-catalog coverage, you would usually combine multiple category URLs and run the scraper in scheduled batches to stay within resource and rate constraints.
Q3: Does it download or modify any extensions? No. The scraper only reads publicly available metadata from the store pages and does not install, modify, or interact with the extensions themselves.
Q4: How stable is the data format over time? The scraper is built to be resilient to minor layout changes, but the store occasionally introduces breaking updates. When that happens, updating the parser logic quickly restores consistent field extraction.
Primary Metric: On a typical run against a single category listing, the scraper processes around 150–250 extension detail pages per minute on a mid-range server, including pagination and metadata extraction.
Reliability Metric: Across long-running batches, success rates of 97–99% per extension URL are common, with automatic retries handling most transient network or store-side issues.
Efficiency Metric: Memory usage remains modest even for larger runs, as pages are processed in a streaming fashion and only structured JSON records are retained or exported.
Quality Metric: For core fields such as name, rating, userCount, and lastUpdated, internal tests show over 98% field completeness on well-formed listings, providing dependable input for analytics and downstream automation.
