Datasets API endpoint
Returns chart-ready coverage, adoption, rating, permission, privacy and recent-change aggregates for the stored Chrome Web Store dataset. Days enum: `7`, `30`, `90`.
/datasets/chrome-extensions/metricsReturns chart-ready aggregate metrics for the stored Chrome Web Store dataset without downloading every item. The response covers dataset size, displayed users, ratings, item and manifest types, adoption bands, permission prevalence, privacy and broad-host-access signals, plus recent change activity.
Query parameters:
days: optional recent-change window. Allowed values: 7, 30, 90; defaults to 30.limit: optional number of top category and permission buckets. Defaults to 10; allowed range is 5 through 25.Response behavior:
summary reports current totals, developer-name and developer-email coverage, and the most recent crawl timestamp.item_types, manifest_versions, user_bands, rating_bands, review_bands, and risk_signals are complete chart series.top_categories and top_developers include item counts and summed displayed users; top_permissions counts declared permissions across items.changes.daily fills empty calendar days within the selected window, while changes.types counts the change categories observed.| Field | Filled in, of 30 checked | Values in the sample |
|---|---|---|
| date | 30 | 2026-09-14 to 2026-10-13 |
| count | 30 | 0 to 51,231, median 263 |
| users_delta | 30 | -51,455,000 to 41,070,434, median 0 |
| rating_count_delta | 30 | 0 to 12,224, median 8 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| days | integer | No | Recent-change window enum: 7, 30, 90; default 30 Allowed values: 7, 30, 90. | ||
| limit | integer | No | Top category and permission buckets, default 10, min 5, max 25 | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/datasets/chrome-extensions/metrics?days=7&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"dataset": "chrome-extensions",
"generated_at": "2026-07-14T08:00:00Z",
"days": 30,
"summary": {
"total": 966,
"total_users": 10232794,
"total_ratings": 36524,
"average_rating": 4.4341,
"privacy_policies": 440,
"named_developers": 774,
"developer_emails": 104
},
"item_types": [
{
"value": "extension",
"count": 693
},
{
"value": "theme",
"count": 238
}
],
"risk_signals": [
{
"value": "Broad host access",
"count": 146
},
{
"value": "Collects data",
"count": 198
}
],
"top_categories": [
{
"value": "productivity/tools",
"count": 256,
"users": 1200000
}
],
"top_developers": [
{
"value": "Example Publisher",
"count": 12,
"users": 250000
}
],
"changes": {
"total": 1,
"types": [
{
"value": "status",
"count": 1
}
],
"daily": [
{
"date": "2026-07-14",
"count": 1,
"users_delta": 0,
"rating_count_delta": 0
}
]
}
}
}Request schema
No body schema
Response schema
#/definitions/datasets.chromeExtensionMetricsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | datasets.ChromeExtensionMetricsResponse | No | ||||
| data.changes | es.ChromeExtensionChangeMetrics | No | ||||
| data.changes.daily | array | No | ||||
| data.changes.daily[].count | integer | No | ||||
| data.changes.daily[].date | string | No | ||||
| data.changes.daily[].rating_count_delta | integer | No | ||||
| data.changes.daily[].users_delta | integer | No | ||||
| data.changes.total | integer | No | ||||
| data.changes.types | array | No | ||||
| data.changes.types[].count | integer | No | ||||
| data.changes.types[].users | integer | No | ||||
| data.changes.types[].value | string | No | ||||
| data.dataset | string | No | ||||
| data.days | integer | No | ||||
| data.generated_at | string | No | ||||
| data.item_types | array | No | ||||
| data.item_types[].count | integer | No | ||||
| data.item_types[].users | integer | No | ||||
| data.item_types[].value | string | No | ||||
| data.manifest_versions | array | No | ||||
| data.manifest_versions[].count | integer | No | ||||
| data.manifest_versions[].users | integer | No | ||||
| data.manifest_versions[].value | string | No | ||||
| data.rating_bands | array | No | ||||
| data.rating_bands[].count | integer | No | ||||
| data.rating_bands[].users | integer | No | ||||
| data.rating_bands[].value | string | No | ||||
| data.review_bands | array | No | ||||
| data.review_bands[].count | integer | No | ||||
| data.review_bands[].users | integer | No | ||||
| data.review_bands[].value | string | No | ||||
| data.risk_signals | array | No | ||||
| data.risk_signals[].count | integer | No | ||||
| data.risk_signals[].users | integer | No | ||||
| data.risk_signals[].value | string | No | ||||
| data.statuses | array | No | ||||
| data.statuses[].count | integer | No | ||||
| data.statuses[].users | integer | No | ||||
| data.statuses[].value | string | No | ||||
| data.summary | es.ChromeExtensionMetricSummary | No | ||||
| data.summary.average_rating | number | No | ||||
| data.summary.developer_emails | integer | No | ||||
| data.summary.last_crawled_at | string | No | ||||
| data.summary.named_developers | integer | No | ||||
| data.summary.privacy_policies | integer | No | ||||
| data.summary.total | integer | No | ||||
| data.summary.total_ratings | integer | No | ||||
| data.summary.total_users | integer | No | ||||
| data.top_categories | array | No | ||||
| data.top_categories[].count | integer | No | ||||
| data.top_categories[].users | integer | No | ||||
| data.top_categories[].value | string | No | ||||
| data.top_developers | array | No | ||||
| data.top_developers[].count | integer | No | ||||
| data.top_developers[].users | integer | No | ||||
| data.top_developers[].value | string | No | ||||
| data.top_permissions | array | No | ||||
| data.top_permissions[].count | integer | No | ||||
| data.top_permissions[].users | integer | No | ||||
| data.top_permissions[].value | string | No | ||||
| data.user_bands | array | No | ||||
| data.user_bands[].count | integer | No | ||||
| data.user_bands[].users | integer | No | ||||
| data.user_bands[].value | string | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/datasets/chrome-extensions/metrics?days=7&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"