# Chrome Web Store API

> Chrome Web Store returns extension listings and details as a workflow and API.

Chrome Web Store (CWS) returns public listing details for an extension found by name or store link. Search extensions finds extensions by keywords and returns listing details; it needs a search query, with an optional maximum result count.

- Page: https://fous.com/workflows/chrome-web-store
- Handle: `@chrome-web-store`
- Category: [Developer tools](https://fous.com/workflows/category/developer-tools)
- Source website: https://chromewebstore.google.com
- Last verified: Sep 29, 2026
- Fous is not affiliated with Chrome Web Store.

## Methods

### Get extension

Operation `get_extension`, version 1. 1 credit per call.

Look up a Chrome Web Store extension by name or store link and return its public listing details. Permissions are null when not displayed on the listing.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `extension` | string | yes | `"Grammarly"` | Extension name or Chrome Web Store link, for example Grammarly or https://chromewebstore.google.com/detail/grammarly-ai-writing-assi/kbfnbcaeplbcioakkpcpgfkobkghlhen. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "extension"
  ],
  "properties": {
    "extension": {
      "type": "string",
      "description": "Extension name or Chrome Web Store link, for example Grammarly or https://chromewebstore.google.com/detail/grammarly-ai-writing-assi/kbfnbcaeplbcioakkpcpgfkobkghlhen.",
      "examples": [
        "Grammarly",
        "uBlock Origin Lite",
        "https://chromewebstore.google.com/detail/grammarly-ai-writing-assi/kbfnbcaeplbcioakkpcpgfkobkghlhen"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "extension": "Grammarly"
    },
    {
      "extension": "uBlock Origin Lite"
    },
    {
      "extension": "https://chromewebstore.google.com/detail/grammarly-ai-writing-assi/kbfnbcaeplbcioakkpcpgfkobkghlhen"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `size` | string or null | `"16.87MiB"` | Download size as shown on the listing. |
| `version` | string or null | `"14.1333.0"` | Published version. |
| `category` | string or null | `"Communication"` | Store category. |
| `developer` | string or null | `"Grammarly"` | Publisher name shown on the listing. |
| `store_link` | string | `"https://chromewebstore.google.com/detail/grammarly-ai-writing-assi/kbfnbcaeplbcioakkpcpgfkobkghlhen"` | Link to this Chrome Web Store listing. |
| `permissions` | array or null |  | Permissions requested when displayed on the listing; null when absent. |
| `star_rating` | number or null | `4.5` | Displayed star rating out of five. |
| `extension_id` | string | `"kbfnbcaeplbcioakkpcpgfkobkghlhen"` | 32-letter Chrome extension identifier. |
| `rating_count` | integer or null | `43131` | Number of user ratings. |
| `website_link` | string or null | `"http://grammarly.com/"` | Publisher website, if listed. |
| `extension_name` | string | `"Grammarly: AI Writing Assistant and Grammar Checker App"` | Name of the extension. |
| `number_of_users` | integer or null | `40000000` | Number of users shown on the listing. |
| `last_updated_date` | string or null | `"2026-09-28"` | Last updated date in YYYY-MM-DD format. |
| `privacy_practices` | array |  | Plain sentences describing declared data handling practices. |
| `short_description` | string or null | `"Grammarly for Chrome helps you write with confidence. Get AI support for grammar, clarity, and tone, from first draft t` | Short listing description. |

**Example input**

```json
{
  "extension": "Grammarly"
}
```

**Example output**

```json
{
  "size": "16.87MiB",
  "version": "14.1333.0",
  "category": "Communication",
  "developer": "Grammarly",
  "store_link": "https://chromewebstore.google.com/detail/grammarly-ai-writing-assi/kbfnbcaeplbcioakkpcpgfkobkghlhen",
  "permissions": null,
  "star_rating": 4.5,
  "extension_id": "kbfnbcaeplbcioakkpcpgfkobkghlhen",
  "rating_count": 43131,
  "website_link": "http://grammarly.com/",
  "extension_name": "Grammarly: AI Writing Assistant and Grammar Checker App",
  "number_of_users": 40000000,
  "last_updated_date": "2026-09-28",
  "privacy_practices": [
    "The developer declares that this extension handles personally identifiable information, personal communications, location, user activity, website content.",
    "The developer declares that your data is not being sold to third parties, outside of the approved use cases.",
    "The developer declares that your data is not being used or transferred for purposes that are unrelated to the item's core functionality."
  ],
  "short_description": "Grammarly for Chrome helps you write with confidence. Get AI support for grammar, clarity, and tone, from first draft to final edit."
}
```

### Search extensions

Operation `search_extensions`, version 1. 1 credit per call.

Find Chrome browser extensions by keywords in store order, with listing details. Some listings omit developer, users or ratings.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `query` | string | yes | `"password manager"` | Words to search for, for example password manager. |
| `max_results` | integer | no | `23` | Most extensions to return, for example 20. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "Words to search for, for example password manager.",
      "examples": [
        "password manager",
        "weather",
        "zxqvnonexistent123456789zz"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 20,
      "maximum": 100,
      "minimum": 1,
      "description": "Most extensions to return, for example 20.",
      "x-fous-developer": true,
      "examples": [
        23,
        20
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "query": "password manager"
    },
    {
      "query": "weather",
      "max_results": 23
    },
    {
      "query": "zxqvnonexistent123456789zz",
      "max_results": 20
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `extensions` | array |  |  |
| `extensions[].name` | string |  |  |
| `extensions[].developer` | string or null |  |  |
| `extensions[].store_link` | string |  |  |
| `extensions[].star_rating` | number or null |  |  |
| `extensions[].extension_id` | string |  |  |
| `extensions[].rating_count` | integer or null |  |  |
| `extensions[].number_of_users` | integer or null |  |  |
| `extensions[].short_description` | string or null |  |  |

**Example input**

```json
{
  "query": "zxqvnonexistent123456789zz",
  "max_results": 20
}
```

**Example output**

```json
{
  "extensions": []
}
```

## Quick start

Call the API with a Fous API key (`FOUS_API_KEY`). To create one, turn on Developer mode in Fous Studio, then open Keys & connections → API keys (https://app.fous.com/keys).

```bash
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
: "${FOUS_API_KEY:?Set FOUS_API_KEY before running this example}"

curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 120 \
  -H "Authorization: Bearer $FOUS_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@chrome-web-store",
  "visibility": "public",
  "operation": "get_extension",
  "version": 1,
  "input": {
    "extension": "Grammarly"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
import json
import os
import urllib.error
import urllib.request

api_key = os.environ.get("FOUS_API_KEY")
if not api_key:
    raise RuntimeError("Set FOUS_API_KEY before running this example")

body = json.loads("{\n  \"api\": \"@chrome-web-store\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_extension\",\n  \"version\": 1,\n  \"input\": {\n    \"extension\": \"Grammarly\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=120) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
// First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
const apiKey = process.env.FOUS_API_KEY;
if (!apiKey) throw new Error("Set FOUS_API_KEY before running this example");

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(120_000),
  body: JSON.stringify({
  "api": "@chrome-web-store",
  "visibility": "public",
  "operation": "get_extension",
  "version": 1,
  "input": {
    "extension": "Grammarly"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

Or describe the data in plain language: send `{"api":"@chrome-web-store","prompt":"Describe the data you need, with every detail"}` to the same URL. Fous fills in the input, runs the method that fits and returns only the fields you asked for; `data.route.calls[].request` is the exact call it made. Routing is free; the run costs the same.

## Use cases

- Compare extension ratings and user counts
- Review listed extension permissions
- Find extensions by keyword
- Check an extension’s version and update date
- Review publishers and declared privacy practices

## FAQ

### Is Fous affiliated with Chrome Web Store?

No. Fous is not affiliated with Chrome Web Store. This workflow reads the public chromewebstore.google.com website and returns its data.

### How much does it cost?

Each run costs 1 credit. With pay-as-you-go, a credit costs 1¢; monthly plans cost less per credit.

### Do I need a Chrome Web Store account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from chromewebstore.google.com when you run it; repeating the same request within a day may return the saved result. Fous checks this workflow automatically; it last passed a check on Sep 29, 2026.

### What details are listed for an extension?

Get extension returns public listing details, including its publisher, version, ratings, permissions when displayed, and declared privacy practices.

### Which extensions match a search query?

Search extensions finds extensions by keywords and returns listing details, including names, publishers, ratings, and user counts when available.

## Related

- [VS Code Marketplace API](https://fous.com/workflows/vs-code-marketplace.md): Public listings for Visual Studio Code extensions.
- [Google Play API](https://fous.com/workflows/google-play.md): Google Play helps people discover Android apps and games, view public listings and search results, read reviews when available by app and region, and see country-specific top charts.
- [Microsoft Store API](https://fous.com/workflows/microsoft-store.md): Microsoft Store returns app and game listings, country-specific searches, and ranked charts; update notes, purchase prices, and exact rating counts may be unavailable.
- [Apple App Store API](https://fous.com/workflows/apple-app-store.md): Apple App Store returns public app listings, keyword search, ratings, prices, listed purchases, country-specific reviews and visible replies, and up to 200 ranked chart apps.
- [Google Shopping API](https://fous.com/workflows/google-shopping.md): Google Shopping shows product offers, prices, ratings, delivery and store links; results vary by country and listings, totals need shown shipping, and typical ranges may be missing.
- [Google Search API](https://fous.com/workflows/google-search.md): Google Search returns public web, image, job, event, related-question, and autocomplete results in Google’s order, with answers and details when available; results may be fewer, omit information, or be empty.
- [AliExpress API](https://fous.com/workflows/aliexpress.md): AliExpress returns product listings and selected product details, including prices, variants, reviews, and destination-specific shipping options shown for the displayed variant.
- [Steam API](https://fous.com/workflows/steam.md): Steam returns game details, country-specific prices, reviews, and current and historical player counts, plus player rankings and sales lists; some details or prices may be unavailable, and review totals span languages and verdicts.
- [All Developer tools workflows](https://fous.com/workflows/category/developer-tools)
