# Chrome Web Store Scraper (`fetch_cat/chrome-web-store-scraper`) Actor

Scrape public Chrome Web Store search results and extension pages. Export ratings, users, developers, versions, categories, and metadata.

- **URL**: https://apify.com/fetch\_cat/chrome-web-store-scraper.md
- **Developed by:** [Hanna Nosova](https://apify.com/fetch_cat) (community)
- **Categories:** Developer tools, Marketing, E-commerce
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.04 / 1,000 item extracteds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Chrome Web Store Scraper

Scrape public Chrome Web Store search results and extension detail pages for market research, competitive monitoring, security review, and product intelligence.

### What does Chrome Web Store Scraper do?

Chrome Web Store Scraper collects structured data from public Chrome Web Store pages.

It can start from search terms, search result URLs, category URLs, or individual extension detail URLs.

The actor returns extension names, IDs, URLs, publishers, categories, ratings, user counts, descriptions, versions, update dates, sizes, icons, screenshots, and source ranking data when available.

Use it to monitor competitors, discover fast-growing extensions, enrich internal software catalogs, and track metadata changes over time.

### Who is it for?

- 🧩 Extension marketers comparing competitors in crowded Chrome Web Store categories.
- 🔐 Security researchers reviewing popular extensions and publisher metadata.
- 📈 SaaS growth teams tracking partner, integration, and adjacent-product ecosystems.
- 🛒 Marketplace analysts measuring user counts, ratings, and category positioning.
- 🧪 Product managers validating extension ideas before investing engineering time.
- 🗂️ Data teams building recurring Chrome extension intelligence datasets.

### Why use this actor?

- 🚀 Scrape search results and detail pages in one run.
- 📊 Export clean dataset rows instead of copying extension pages manually.
- 🔎 Preserve source query and rank for keyword-position monitoring.
- 🧾 Capture detail fields such as version, last update, size, and long overview.
- 🌍 Use optional language and country parameters for localized Chrome Web Store views.
- 🔁 Run on a schedule to detect rating, user count, or version changes.

### Input settings

| Setting | JSON key | Type / default | Description |
| --- | --- | --- | --- |
| Search queries | `searchQueries` | array, default `["ad blocker"]` | Chrome Web Store search terms, for example competitor keywords or extension categories. |
| Start URLs | `startUrls` | array, default `[{"url":"https://chromewebstore.google.com/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm"}]` | Chrome Web Store detail, search, or category URLs to scrape. |
| Maximum extensions | `maxItems` | integer, default `10` | Maximum number of extension records to save across all searches and URLs. |
| Fetch extension details | `includeDetails` | boolean, default `true` | When enabled, search/category results are enriched by opening each extension detail page for users, version, update date, size, and overview. |
| Language code | `language` | string, default `"en-US"` | Optional Chrome Web Store language code, e.g. en-US, de, fr, ja. |
| Country code | `country` | string, default `"US"` | Optional country code used as the Chrome Web Store gl parameter, e.g. US, GB, DE. |
### Output fields

| JSON key | Label | Type | Description |
| --- | --- | --- | --- |
| `query` | Query | string / null | Output field for query. |
| `rank` | Rank | integer / null | Output field for rank. |
| `extensionId` | ExtensionId | string / null | Output field for extensionid. |
| `name` | Name | string / null | Output field for name. |
| `url` | Url | string | Output field for url. |
| `developerName` | DeveloperName | string / null | Output field for developername. |
| `developerUrl` | DeveloperUrl | string / null | Output field for developerurl. |
| `category` | Category | string / null | Output field for category. |
| `rating` | Rating | number / null | Output field for rating. |
| `ratingCount` | RatingCount | integer / null | Output field for ratingcount. |
| `userCount` | UserCount | integer / null | Output field for usercount. |
| `shortDescription` | ShortDescription | string / null | Output field for shortdescription. |
| `version` | Version | string / null | Output field for version. |
| `lastUpdated` | LastUpdated | string / null | Output field for lastupdated. |
| `size` | Size | string / null | Output field for size. |
| `privacyPractices` | PrivacyPractices | array | Output field for privacypractices. |
| `screenshots` | Screenshots | array | Output field for screenshots. |
| `iconUrl` | IconUrl | string / null | Output field for iconurl. |
| `sourceUrl` | SourceUrl | string | Output field for sourceurl. |
| `scrapedAt` | ScrapedAt | string | Output field for scrapedat. |

### Pricing

This Actor uses Apify pay-per-event pricing. The prices below come from the current Actor pricing configuration. Apify public plans map to Store discount tiers, so the table shows both the user-facing plan context and the pricing tier name. The final price shown in Apify depends on the user account plan and any custom agreement.

| Event | What is charged | Price |
| --- | --- | ---: |
| `start` | One-time fee charged when a run starts. Covers fixed startup cost (init, proxy warmup, first HTTP setup). | $0.005 |

| Event | What is charged | Free / no discount | Starter / Bronze | Scale / Silver | Business / Gold | Custom / Platinum | Custom / Diamond |
| --- | --- | ---: | ---: | ---: | ---: | ---: | ---: |
| `item` | Charged per item extracted. | $0.07267 / 1,000 | $0.06319 / 1,000 | $0.04929 / 1,000 | $0.03791 / 1,000 | $0.02528 / 1,000 | $0.01769 / 1,000 |

Apify may also charge platform usage for compute, storage, proxies, or data transfer outside this Actor pricing. Check the Actor run and the Apify Pricing tab for the exact cost shown to your account.

### How to scrape Chrome Web Store search results

1. Open the actor on Apify.
2. Add one or more search queries, such as `ad blocker` or `password manager`.
3. Set the maximum number of extensions to save.
4. Keep **Fetch extension details** enabled if you need version, update date, users, and long descriptions.
5. Click **Start**.
6. Download the dataset as JSON, CSV, Excel, XML, or HTML.

### How to scrape specific extension detail pages

1. Copy Chrome Web Store extension URLs.
2. Paste them into **Start URLs**.
3. Set `maxItems` to the number of extensions you want.
4. Run the actor.
5. Review detail fields such as `version`, `lastUpdated`, `userCount`, and `description`.

### Input options

#### Search queries

Use `searchQueries` for keyword monitoring and discovery.

Examples:

- `ad blocker`
- `password manager`
- `coupon finder`
- `screen recorder`
- `ai assistant`

#### Start URLs

Use `startUrls` for Chrome Web Store URLs you already know.

Supported URL types include:

- Extension detail URLs.
- Search result URLs.
- Category or listing URLs that contain extension cards.

#### Maximum extensions

Use `maxItems` to control run size and cost.

For first tests, keep this value low.

For production monitoring, increase it to match your keyword list and reporting needs.

#### Fetch extension details

When `includeDetails` is enabled, the actor enriches search results by opening each extension detail page.

This gives you more fields, including users, version, update date, size, overview, and screenshots.

Disable it for faster lightweight ranking checks when search card data is enough.

#### Locale settings

Use `language` and `country` to request localized Chrome Web Store pages.

Examples:

- `language`: `en-US`, `de`, `fr`, `ja`
- `country`: `US`, `GB`, `DE`, `JP`

### Ready-to-run examples

- [Chrome Web Store Germany Password Managers](https://apify.com/fetch_cat/chrome-web-store-scraper/examples/chrome-web-store-germany-password-managers)
- [Chrome Web Store Education Study Extensions](https://apify.com/fetch_cat/chrome-web-store-scraper/examples/chrome-web-store-education-study-extensions)
- [Chrome Web Store Accessibility Extensions](https://apify.com/fetch_cat/chrome-web-store-scraper/examples/chrome-web-store-accessibility-extensions)
- [Chrome Web Store Meeting Transcription Extensions](https://apify.com/fetch_cat/chrome-web-store-scraper/examples/chrome-web-store-meeting-transcription-extensions)
- [Chrome Web Store Seo Marketing Extensions](https://apify.com/fetch_cat/chrome-web-store-scraper/examples/chrome-web-store-seo-marketing-extensions)
- [Chrome Web Store Grammar Writing Extensions](https://apify.com/fetch_cat/chrome-web-store-scraper/examples/chrome-web-store-grammar-writing-extensions)

[View all ready-to-run examples](https://apify.com/fetch_cat/chrome-web-store-scraper/examples)
### Example input

```json
{
  "searchQueries": [
    "ad blocker"
  ],
  "startUrls": [
    {
      "url": "https://chromewebstore.google.com/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm"
    }
  ],
  "maxItems": 10,
  "includeDetails": true,
  "language": "en-US",
  "country": "US"
}
````

### Example output

```json
{
  "query": "ad blocker",
  "rank": 1,
  "extensionId": "gighmmpiobklfepjocnamgkkbiglidom",
  "name": "AdBlock — block ads across the web",
  "url": "https://chromewebstore.google.com/detail/adblock/gighmmpiobklfepjocnamgkkbiglidom",
  "developerName": "getadblock.com/",
  "category": "Extension > Privacy & Security",
  "rating": 4.5,
  "ratingCount": 296000,
  "userCount": 20000000,
  "shortDescription": "Block ads on YouTube and your favorite sites for free",
  "version": "6.0.0",
  "lastUpdated": "June 20, 2026",
  "size": "12MiB",
  "sourceUrl": "https://chromewebstore.google.com/search/ad%20blocker",
  "scrapedAt": "2026-07-03T00:00:00.000Z"
}
```

### Tips for better results

- Start with one or two queries before scaling to a large monitoring list.
- Use specific keywords such as `linkedin automation` instead of only broad terms like `marketing`.
- Keep detail enrichment on when you need user counts and version data.
- Turn detail enrichment off for quick rank-only checks.
- Schedule runs weekly or daily for trend monitoring.
- Store historical datasets if you want to detect rating or user-count changes.

### Common use cases

#### Competitor tracking

Track extensions competing for the same Chrome Web Store keywords.

Monitor rank, ratings, user counts, descriptions, and update cadence.

#### Category research

Collect extension records from category pages and compare categories by popularity.

Use this for market sizing and product idea validation.

#### Publisher intelligence

Create a dataset of extensions from known publishers or partner categories.

Use developer names and URLs to enrich internal account lists.

#### Security review

Build a watchlist of high-install extensions and review publisher, update, category, and description changes.

#### SEO and listing optimization

Compare titles, descriptions, ratings, and screenshots for extensions ranking above your product.

### Integrations

#### Google Sheets

Export the dataset as CSV and import it into Google Sheets for lightweight dashboards.

#### BigQuery or Snowflake

Use Apify integrations or API exports to load extension records into your warehouse.

#### Slack alerts

Schedule the actor and trigger alerts when a tracked extension changes version or passes a user-count threshold.

#### CRM enrichment

Use developer/publisher fields to enrich partner or competitor account lists.

#### BI dashboards

Combine repeated runs into a trend table for ratings, users, and rank by keyword.

### API usage

Run Chrome Web Store Scraper from your own code with the Apify API.

**Node.js**

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const input = {
  "searchQueries": [
    "ad blocker"
  ],
  "startUrls": [
    {
      "url": "https://chromewebstore.google.com/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm"
    }
  ],
  "maxItems": 10,
  "includeDetails": true,
  "language": "en-US"
};

const run = await client.actor('fetch_cat/chrome-web-store-scraper').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

**Python**

```python
from apify_client import ApifyClient
import os

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("fetch_cat/chrome-web-store-scraper").call(run_input={
  "searchQueries": [
    "ad blocker"
  ],
  "startUrls": [
    {
      "url": "https://chromewebstore.google.com/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm"
    }
  ],
  "maxItems": 10,
  "includeDetails": true,
  "language": "en-US"
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)
```

**cURL**

```bash
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~chrome-web-store-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchQueries":["ad blocker"],"startUrls":[{"url":"https://chromewebstore.google.com/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm"}],"maxItems":10,"includeDetails":true,"language":"en-US"}'
```

### Use with AI agents via MCP

Chrome Web Store Scraper can be used by AI assistants through the hosted Apify MCP server.

**Claude Code setup**

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/chrome-web-store-scraper"
```

**Claude Desktop, Cursor, or VS Code JSON config**

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=fetch_cat/chrome-web-store-scraper"
    }
  }
}
```

**Example prompts**

- "Run Chrome Web Store Scraper with this input JSON and summarize the dataset."
- "Export the latest Chrome Web Store Scraper results to a table I can review."
- "Schedule this Actor for monitoring and tell me what changed between runs."

### Data freshness

Chrome Web Store pages can change frequently.

Run the actor on a schedule if you need fresh market intelligence.

Use `scrapedAt` to distinguish historical snapshots.

### Limits and caveats

- Only public Chrome Web Store data is collected.
- Some fields may be missing when Chrome Web Store does not display them.
- User counts and rating counts are public rounded values.
- Markup and labels can vary by locale.
- Very broad searches may not expose every matching extension.
- The actor does not log in to Google accounts.

### Legality

This actor collects publicly available data from Chrome Web Store pages.

You are responsible for using the data in a lawful way, respecting applicable laws, platform terms, privacy rules, and internal compliance policies.

Do not use scraped data for spam, harassment, credential attacks, or other abusive activity.

### FAQ and troubleshooting

#### Why are some fields empty?

Chrome Web Store may not show every field on every page, or a field may be locale-specific.

Enable detail enrichment and try an English locale if you need the fullest metadata.

#### Why did I get fewer items than `maxItems`?

The source page may contain fewer visible extension cards, or duplicate extensions may have been skipped across multiple inputs.

Try additional queries or category URLs.

#### Why are user counts rounded?

Chrome Web Store displays public counts in rounded form, such as `13,000,000 users`.

The actor converts visible rounded values into numbers.

### Related actors

- [Agoda Reviews Scraper](https://apify.com/fetch_cat/agoda-reviews-scraper)
- [AliExpress Products Scraper](https://apify.com/fetch_cat/aliexpress-products-scraper)
- [Apple App Store Apps Scraper](https://apify.com/fetch_cat/apple-app-store-apps-scraper)
- [Apple App Store Reviews Scraper](https://apify.com/fetch_cat/apple-app-store-reviews-scraper)
- [arXiv Paper Search Scraper](https://apify.com/fetch_cat/arxiv-paper-search-scraper)

### Support

Report bugs, wrong output, blocked runs, or missing fields from the Actor page. Include the Apify run ID or run URL, your input JSON, what you expected, what the Actor returned, and one reproducible public URL so the issue can be tested quickly.

# Actor input Schema

## `searchQueries` (type: `array`):

Chrome Web Store search terms, for example competitor keywords or extension categories.

## `startUrls` (type: `array`):

Chrome Web Store detail, search, or category URLs to scrape.

## `maxItems` (type: `integer`):

Maximum number of extension records to save across all searches and URLs.

## `includeDetails` (type: `boolean`):

When enabled, search/category results are enriched by opening each extension detail page for users, version, update date, size, and overview.

## `language` (type: `string`):

Optional Chrome Web Store language code, e.g. en-US, de, fr, ja.

## `country` (type: `string`):

Optional country code used as the Chrome Web Store gl parameter, e.g. US, GB, DE.

## Actor input object example

```json
{
  "searchQueries": [
    "ad blocker"
  ],
  "startUrls": [
    {
      "url": "https://chromewebstore.google.com/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm"
    }
  ],
  "maxItems": 10,
  "includeDetails": true,
  "language": "en-US",
  "country": "US"
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQueries": [
        "ad blocker"
    ],
    "startUrls": [
        {
            "url": "https://chromewebstore.google.com/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("fetch_cat/chrome-web-store-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchQueries": ["ad blocker"],
    "startUrls": [{ "url": "https://chromewebstore.google.com/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm" }],
}

# Run the Actor and wait for it to finish
run = client.actor("fetch_cat/chrome-web-store-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "ad blocker"
  ],
  "startUrls": [
    {
      "url": "https://chromewebstore.google.com/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm"
    }
  ]
}' |
apify call fetch_cat/chrome-web-store-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=fetch_cat/chrome-web-store-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Chrome Web Store Scraper",
        "description": "Scrape public Chrome Web Store search results and extension pages. Export ratings, users, developers, versions, categories, and metadata.",
        "version": "0.1",
        "x-build-id": "mnxtI7MOUg07q3gMw"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/fetch_cat~chrome-web-store-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-fetch_cat-chrome-web-store-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/fetch_cat~chrome-web-store-scraper/runs": {
            "post": {
                "operationId": "runs-sync-fetch_cat-chrome-web-store-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/fetch_cat~chrome-web-store-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-fetch_cat-chrome-web-store-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchQueries": {
                        "title": "Search queries",
                        "type": "array",
                        "description": "Chrome Web Store search terms, for example competitor keywords or extension categories.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Chrome Web Store detail, search, or category URLs to scrape.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxItems": {
                        "title": "Maximum extensions",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum number of extension records to save across all searches and URLs.",
                        "default": 10
                    },
                    "includeDetails": {
                        "title": "Fetch extension details",
                        "type": "boolean",
                        "description": "When enabled, search/category results are enriched by opening each extension detail page for users, version, update date, size, and overview.",
                        "default": true
                    },
                    "language": {
                        "title": "Language code",
                        "type": "string",
                        "description": "Optional Chrome Web Store language code, e.g. en-US, de, fr, ja.",
                        "default": "en-US"
                    },
                    "country": {
                        "title": "Country code",
                        "type": "string",
                        "description": "Optional country code used as the Chrome Web Store gl parameter, e.g. US, GB, DE.",
                        "default": "US"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
