Datasets API endpoint
Searches stored Chrome Web Store item snapshots. Item type enum: `extension`, `theme`, `app`, `unknown`. Sort enum: `relevance`, `users_desc`, `rating_desc`, `reviews_desc`, `updated_desc`, `trending_desc`. Status enum: `active`, `removed`. Manifest version enum: `2`, `3`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).
/datasets/chrome-extensions/searchSearches stored Chrome Web Store item snapshots, including extensions, themes, and legacy apps. Filters include q, item_type, category, developer, developer_email, permission, status, manifest_version, collects_data, has_broad_host_access, min_users, min_rating, and min_rating_count. developer_email is an exact, case-normalized match. Pagination uses page and page_size.
Allowed item_type values: extension, theme, app, unknown. Allowed status values: active, removed. Allowed manifest_version values: 2, 3. Allowed sort values: relevance, users_desc, rating_desc, reviews_desc, updated_desc, trending_desc.
1 credit per record returned, minimum 2. A search that returns 20 records costs 20 credits, a full page of 100 costs 100, and an empty or one-record result costs 2. You are charged for what comes back, not for the page_size you ask for, but your balance must cover the requested page_size for the call to be accepted. The response header x-credit-cost shows what a call was charged.
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| id | 20 | |
| name | 20 | |
| summary | 20 | |
| description | 20 | median 1,290 characters |
| item_type | 20 | |
| category | 19 | |
| developer | 20 | |
| developer_email | 18 | |
| url | 20 | chromewebstore.google.com |
| icon | 20 | lh3.googleusercontent.com |
| screenshots | 20 | median 3 entries |
| rating | 20 | 0 to 5, median 4.21 |
| rating_count | 20 | 0 to 15,804, median 11 |
| users | 20 | 5 to 1,000,000, median 2,000 |
| version | 20 | |
| updated | 20 | 2013-06-19 to 2026-10-09 |
| size | 20 | |
| min_browser_version | 17 | |
| manifest_version | 20 | |
| permissions | 20 | median 4 entries |
| optional_permissions | 1 | median 1 entry |
| host_permissions | 11 | median 1 entry |
| optional_host_permissions | 1 | median 1 entry |
| all_permissions | 20 | median 5 entries |
| has_broad_host_access | 20 | true in 11 of 20 |
| collects_data | 20 | true in 2 of 20 |
| data_collected | 2 | median 1 entry |
| privacy_declarations | 16 | median 3 entries |
| privacy_policy | 15 | noti.vn and 14 other hosts |
| status | 20 | |
| first_seen | 20 | 2026-07-13 to 2026-07-25 |
| last_seen | 20 | 2026-07-24 to 2026-10-11 |
| last_crawled_at | 20 | 2026-07-24 to 2026-10-11 |
| users_delta | 20 | -3 to 3,000, median 0 |
| rating_count_delta | 20 | 0 |
| trend_score | 20 | -3 to 3,000, median 0 |
| not_found_streak | 20 | 0 |
| blank_identity_streak | 20 | 0 |
| schema_version | 20 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| q | string | No | Full-text query, max 256 characters | ||
| item_type | string | No | Item type enum: extension, theme, app, unknown Allowed values: extension, theme, app, unknown. | ||
| category | string | No | Exact Chrome Web Store category | ||
| developer | string | No | Exact displayed developer name | ||
| developer_email | string | No | Exact disclosed developer email | ||
| permission | string | No | Exact declared permission | ||
| status | string | No | Status enum: active, removed Allowed values: active, removed. | ||
| manifest_version | integer | No | Manifest version enum: 2, 3 Allowed values: 2, 3. | ||
| collects_data | boolean | No | Filter by public data-collection disclosure | ||
| has_broad_host_access | boolean | No | Filter by broad host access | ||
| min_users | integer | No | Minimum displayed user count | ||
| min_rating | number | No | Minimum rating, 0 through 5 | ||
| min_rating_count | integer | No | Minimum rating count | ||
| sort | string | No | Sort enum: relevance, users_desc, rating_desc, reviews_desc, updated_desc, trending_desc Allowed values: relevance, users_desc, rating_desc, reviews_desc, updated_desc, trending_desc. | ||
| page | integer | No | Page number, default 1 | ||
| page_size | integer | No | Page size, default 20, max 100 | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/datasets/chrome-extensions/search?q=coffee&item_type=extension&status=active&manifest_version=2&collects_data=true&has_broad_host_access=true&sort=relevance&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"dataset": "chrome-extensions",
"items": [
{
"id": "cjpalhdlnbpafiamejdnhcphjbkeiagm",
"name": "uBlock Origin",
"item_type": "extension",
"developer": "Raymond Hill (gorhill)",
"developer_email": "ubo@raymondhill.net",
"users": 13000000,
"manifest_version": 3,
"status": "active"
}
],
"page": 1,
"page_size": 20,
"total": 1,
"sort": "users_desc"
}
}Request schema
No body schema
Response schema
#/definitions/datasets.chromeExtensionsSearchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | datasets.ChromeExtensionSearchResponse | No | ||||
| data.dataset | string | No | ||||
| data.items | array | No | ||||
| data.items[].all_permissions | array | No | Every permission and site pattern from the four permission lists, without duplicates. | |||
| data.items[].blank_identity_streak | integer | No | BlankIdentityStreak counts complete, ID-matching item payloads whose card title and literal manifest name are both unavailable. It is distinct from NotFoundStreak: malformed payloads are upstream errors and never update it. No omitempty: a valid active snapshot must reset it through partial upsert. | |||
| data.items[].category | string | No | Store category of the item. | |||
| data.items[].collects_data | boolean | No | Whether the store listing says the item collects user data. | |||
| data.items[].data_collected | array | No | Categories of user data the developer says the item collects. | |||
| data.items[].description | string | No | Full description from the store listing. | |||
| data.items[].developer | string | No | Name of the item's developer as shown on the store listing. | |||
| data.items[].developer_email | string | No | Developer contact email disclosed on the store listing, in lowercase. | |||
| data.items[].discovery_sources | array | No | DiscoverySources lists the public catalogs that supplied this extension ID. | |||
| data.items[].first_seen | string | No | Time the item was first recorded in the dataset, in UTC (RFC 3339). | |||
| data.items[].has_broad_host_access | boolean | No | Whether the extension can reach all sites, for example through `<all_urls>`. | |||
| data.items[].host_permissions | array | No | Site patterns the extension requests access to when installed. | |||
| data.items[].icon | string | No | URL of the item's icon. | |||
| data.items[].id | string | No | Chrome Web Store item id. Use it with the item endpoint. | |||
| data.items[].item_type | string | No | Kind of item: `extension`, `theme`, `app` or `unknown`. | |||
| data.items[].last_crawled_at | string | No | Time the item's data was last fetched, in UTC (RFC 3339). | |||
| data.items[].last_seen | string | No | Time the item was last seen on the store, in UTC (RFC 3339). | |||
| data.items[].manifest_version | integer | No | Manifest version of the extension: `2` or `3`. | |||
| data.items[].min_browser_version | string | No | Minimum browser version the item requires. | |||
| data.items[].name | string | No | Item name as shown on its store listing. | |||
| data.items[].not_found_streak | integer | No | NotFoundStreak counts consecutive crawls that returned not-found for an otherwise-active item. Removal is only confirmed once it reaches the worker's threshold, so a transient upstream block does not delist a live item. No omitempty: a successful crawl must write 0 to reset the streak through the partial-merge upsert. | |||
| data.items[].optional_host_permissions | array | No | Site patterns the extension may ask for access to later. | |||
| data.items[].optional_permissions | array | No | Permissions the extension may ask for later. | |||
| data.items[].permissions | array | No | List of permissions the extension requests when installed. | |||
| data.items[].privacy_declarations | array | No | Privacy commitments the developer declares on the store listing. | |||
| data.items[].privacy_policy | string | No | Link to the developer's privacy policy. | |||
| data.items[].rating | number | No | Average user rating shown on the store listing. | |||
| data.items[].rating_count | integer | No | Number of ratings behind the average rating. | |||
| data.items[].rating_count_delta | integer | No | Change in `rating_count` since the previous observation. | |||
| data.items[].schema_version | integer | No | Version of the record layout. | |||
| data.items[].screenshots | array | No | URLs of the screenshots on the store listing. | |||
| data.items[].size | string | No | Package size of the item as the store shows it. | |||
| data.items[].status | string | No | Whether the item is still on the store: `active` or `removed`. | |||
| data.items[].summary | string | No | Short summary shown at the top of the store listing. | |||
| data.items[].trend_score | number | No | Score for ranking trending items, built from `users_delta` and `rating_count_delta`. | |||
| data.items[].updated | string | No | Date the item was last updated on the store (YYYY-MM-DD). | |||
| data.items[].url | string | No | Link to the item's store listing. | |||
| data.items[].users | integer | No | Number of users shown on the store listing. | |||
| data.items[].users_delta | integer | No | Change in `users` since the previous observation. | |||
| data.items[].version | string | No | Current version of the item. | |||
| data.page | integer | No | ||||
| data.page_size | integer | No | ||||
| data.sort | string | No | ||||
| data.total | integer | 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/search?q=coffee&item_type=extension&status=active&manifest_version=2&collects_data=true&has_broad_host_access=true&sort=relevance&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"