Tony Wang5 min readChrome Web Store Dataset API: Extension Market Intelligence (2026)
Search Chrome extensions, compare adoption and ratings, track history, and monitor permission or privacy changes with a structured dataset API.
The Chrome Web Store dataset API turns public extension listings into a searchable, monitorable market dataset. At launch, Crawlora's index contained 24,271 items and exposed seven operations for search, item detail, facets, change-only history, trending extensions, recent changes, and aggregate metrics. That is enough to build competitor tracking, extension discovery, permission-risk review, developer portfolio research, and market dashboards without maintaining a store crawler or downloading every record for each analysis.
Why the official API is not a market-research API
Google's official Chrome Web Store API is the right tool when you own an extension and need to upload, publish, stage a rollout, or check submission status. Google describes it as primarily intended for a developer's own extension. The Developer Dashboard also provides installs, uninstalls, impressions, and user reports for items owned by the publisher.
Those are valuable first-party analytics, but they answer a different question. A product team researching the wider extension market usually needs to ask:
- Which productivity extensions have more than 10,000 displayed users?
- Which categories and Manifest versions dominate the current index?
- Which items are gaining users or reviews?
- Which extensions request broad host access or disclose data collection?
- When did a competitor change its version, permissions, privacy declarations, developer identity, or status?
The dataset API is built around those cross-market questions.
What is in each record
Records normalize the public fields available on Chrome Web Store listings. Depending on what an item discloses, a result can include:
- Item id, name, summary, description, type, category, URL, icon, and screenshots
- Displayed developer name and disclosed developer email
- Displayed users, rating, rating count, version, update date, and package size
- Manifest version and minimum browser version
- Required and optional extension permissions
- Required and optional host permissions, plus a broad-host-access signal
- Store privacy declarations, disclosed data categories, and privacy-policy URL
- Active or removed status, first-seen and last-seen times, and latest crawl time
- Latest displayed-user and rating-count deltas used by the trending view
Treat displayed user counts as store-provided bands or snapshots, not audited active-user telemetry. For your own extension, keep using first-party Developer Dashboard analytics; use the dataset to understand the public market around it.
The seven operations
| Operation | Use it for |
|---|---|
| Search | Build a segment using text, category, developer, email, permission, status, Manifest version, privacy/risk flags, users, ratings, and sort order. |
| Item | Retrieve the current normalized record for one extension id. |
| Facets | Count categories, item types, developers, Manifest versions, status values, permissions, and other supported dimensions. |
| History | Read chronological observations written only when a tracked field changed. |
| Trending | Rank items by recent displayed-user and rating-count movement. |
| Changes | Read a cross-item feed filtered to users, ratings, reviews, version, developer, permissions, privacy, or status changes. |
| Metrics | Load chart-ready coverage, adoption, rating, category, permission, risk, developer, and recent-change aggregates. |
Build a competitive shortlist
Start with a narrow segment rather than requesting the whole dataset. This example finds high-adoption productivity extensions and sorts by displayed users:
curl --get "https://api.crawlora.net/api/v1/datasets/chrome-extensions/search" \
-H "x-api-key: $CRAWLORA_API_KEY" \
--data-urlencode "q=productivity" \
--data-urlencode "item_type=extension" \
--data-urlencode "min_users=10000" \
--data-urlencode "sort=users_desc" \
--data-urlencode "page_size=20"
You can replace the text query with a precise filter such as permission=storage, manifest_version=3, collects_data=true, or has_broad_host_access=true. Combine filters to create a review queue for a specific risk posture or market niche.
Add a market dashboard
The metrics operation is designed for dashboards, so you do not need to page through thousands of items and aggregate them in the browser:
curl --get "https://api.crawlora.net/api/v1/datasets/chrome-extensions/metrics" \
-H "x-api-key: $CRAWLORA_API_KEY" \
--data-urlencode "days=30" \
--data-urlencode "limit=10"
The response includes total indexed items, displayed users and ratings, average rating, developer and privacy-policy coverage, item and Manifest distributions, adoption and rating bands, top categories, top developers, common permissions, risk-signal counts, and a zero-filled daily change series. Supported change windows are 7, 30, and 90 days.
Useful dashboard panels include:
- Indexed items and latest crawl time
- Extensions by user band and Manifest version
- Top categories by item count and displayed users
- Most common permissions
- Broad-host-access and disclosed-data-collection counts
- Daily changes split by version, permission, privacy, status, users, and ratings
Monitor movers and material changes
Use trending for discovery and changes for an audit feed. They serve different jobs: trending ranks recent adoption movement, while changes answers what actually changed.
import os
import requests
base = "https://api.crawlora.net/api/v1/datasets/chrome-extensions"
headers = {"x-api-key": os.environ["CRAWLORA_API_KEY"]}
movers = requests.get(
f"{base}/trending",
headers=headers,
params={"item_type": "extension", "page_size": 20},
).json()["data"]["items"]
permission_changes = requests.get(
f"{base}/changes",
headers=headers,
params={"change_type": "permissions", "limit": 25},
).json()["data"]["items"]
history = requests.get(
f"{base}/history/fjgncogppolhfdpijihbpfmeohpaadpc",
headers=headers,
params={"limit": 90},
).json()["data"]["points"]
History is change-only: a new point is written when a tracked value changes instead of duplicating an identical daily snapshot. That makes it suitable for alerts and timelines while keeping the response compact.
A practical weekly workflow
- Save a search definition for each competitor segment or permission-risk profile.
- Pull metrics daily for the market-level dashboard.
- Pull trending items daily or weekly to find new movers.
- Pull the changes feed by change type and route important events to review.
- Load item history only when an analyst needs the timeline behind an alert.
- Store the item id as the durable join key; names and developer labels can change.
The same v1.18.0-sdk.1 release also added Capterra software discovery and reviews, Numbeo city and country datasets, Metacritic catalog and review endpoints, and Walmart search, product, and review endpoints. That makes it possible to combine software-market discovery, public extension intelligence, location-cost benchmarking, entertainment research, and retail monitoring behind one API key and the same generated SDK conventions.
Start building
Try the operations in the Playground, inspect every parameter and response in the API docs, or use the ready-made Chrome extension competitive-intelligence recipe in the Go, TypeScript, Python, Ruby, Java, and PHP SDKs. Compare request credit costs on pricing.
Sources
Related reading
- How to Scrape App Store and Google Play Reviews — compare official owner-only APIs with public market research.
- Best Web Scraping APIs in 2026 — choose between a generic scraper and structured platform endpoints.
- Web Scraping for AI Training Data — design repeatable collection and provenance workflows.