---
title: "Search the Chrome Web Store dataset"
method: GET
path: "/datasets/chrome-extensions/search"
tags: ["Datasets"]
---

# Search the Chrome Web Store dataset

`GET /datasets/chrome-extensions/search`

## Request

- Base URL: `https://api.crawlora.net/api/v1`
- URL: `https://api.crawlora.net/api/v1/datasets/chrome-extensions/search`
- Auth: API key in header `x-api-key`

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).

## Query parameters

- `q` string
- `item_type` 'extension' | 'theme' | 'app' | 'unknown'
- `category` string
- `developer` string
- `developer_email` string
- `permission` string
- `status` 'active' | 'removed'
- `manifest_version` 2 | 3
- `collects_data` boolean
- `has_broad_host_access` boolean
- `min_users` integer
- `min_rating` number
- `min_rating_count` integer
- `sort` 'relevance' | 'users_desc' | 'rating_desc' | 'reviews_desc' | 'updated_desc' | 'trending_desc'
- `page` integer
- `page_size` integer

## Headers

- `x-api-key` string, required

## Response `200`

OK

- DatasetsChromeExtensionsSearchResponseDoc
  - `code` integer
  - `data` DatasetsChromeExtensionSearchResponse
    - `dataset` string
    - `items` EsChromeExtensionRecord[]
      - `all_permissions` string[]: Every permission and site pattern from the four permission lists, without duplicates.
      - `blank_identity_streak` integer: 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.
      - `category` string: Store category of the item.
      - `collects_data` boolean: Whether the store listing says the item collects user data.
      - `data_collected` string[]: Categories of user data the developer says the item collects.
      - `description` string: Full description from the store listing.
      - `developer` string: Name of the item's developer as shown on the store listing.
      - `developer_email` string: Developer contact email disclosed on the store listing, in lowercase.
      - `discovery_sources` string[]: DiscoverySources lists the public catalogs that supplied this extension ID.
      - `first_seen` string: Time the item was first recorded in the dataset, in UTC (RFC 3339).
      - `has_broad_host_access` boolean: Whether the extension can reach all sites, for example through `<all_urls>`.
      - `host_permissions` string[]: Site patterns the extension requests access to when installed.
      - `icon` string: URL of the item's icon.
      - `id` string: Chrome Web Store item id. Use it with the item endpoint.
      - `item_type` string: Kind of item: `extension`, `theme`, `app` or `unknown`.
      - `last_crawled_at` string: Time the item's data was last fetched, in UTC (RFC 3339).
      - `last_seen` string: Time the item was last seen on the store, in UTC (RFC 3339).
      - `manifest_version` integer: Manifest version of the extension: `2` or `3`.
      - `min_browser_version` string: Minimum browser version the item requires.
      - `name` string: Item name as shown on its store listing.
      - `not_found_streak` integer: 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.
      - `optional_host_permissions` string[]: Site patterns the extension may ask for access to later.
      - `optional_permissions` string[]: Permissions the extension may ask for later.
      - `permissions` string[]: List of permissions the extension requests when installed.
      - `privacy_declarations` string[]: Privacy commitments the developer declares on the store listing.
      - `privacy_policy` string: Link to the developer's privacy policy.
      - `rating` number: Average user rating shown on the store listing.
      - `rating_count` integer: Number of ratings behind the average rating.
      - `rating_count_delta` integer: Change in `rating_count` since the previous observation.
      - `schema_version` integer: Version of the record layout.
      - `screenshots` string[]: URLs of the screenshots on the store listing.
      - `size` string: Package size of the item as the store shows it.
      - `status` string: Whether the item is still on the store: `active` or `removed`.
      - `summary` string: Short summary shown at the top of the store listing.
      - `trend_score` number: Score for ranking trending items, built from `users_delta` and `rating_count_delta`.
      - `updated` string: Date the item was last updated on the store (YYYY-MM-DD).
      - `url` string: Link to the item's store listing.
      - `users` integer: Number of users shown on the store listing.
      - `users_delta` integer: Change in `users` since the previous observation.
      - `version` string: Current version of the item.
    - `page` integer
    - `page_size` integer
    - `sort` string
    - `total` integer
  - `msg` string

## Other responses

- `400`: Bad Request
- `429`: Too Many Requests
- `500`: Internal Server Error

---

[API](https://skmtc.dev/crawlora/apis/crawlora-api.md) · [All operations](https://skmtc.dev/crawlora/apis/crawlora-api/llms.txt) · [OpenAPI document](https://skmtc.dev/crawlora/apis/crawlora-api/revisions/0497899e2016?raw)
