# Chrome Web Store Scraper & Extension Intelligence API (`tugelbay/chrome-web-store-intelligence`) Actor

Chrome Web Store scraper and extension intelligence API. Track extension profiles, keyword rankings, users, ratings, versions, privacy text, permissions, and competitors.

- **URL**: https://apify.com/tugelbay/chrome-web-store-intelligence.md
- **Developed by:** [Tugelbay Konabayev](https://apify.com/tugelbay) (community)
- **Categories:** Developer tools, Marketing, SEO tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.50 / 1,000 extension profile 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 & Extension Intelligence API

![Chrome Web Store Scraper](https://api.apify.com/v2/key-value-stores/bplRdpnd85eGQkW1N/records/chrome-web-store-intelligence-hero.png)

Scrape public Chrome Web Store extension profiles and keyword search rankings. Use this actor for extension competitor tracking, Chrome Web Store ASO research, permission audits, market mapping, and weekly ranking snapshots.

The actor opens rendered Chrome Web Store pages with Playwright because the useful profile data is JavaScript-rendered. It extracts extension metadata, ranking context, privacy text, and manifest permissions into a CSV/API-ready Apify dataset.

### What You Can Track

- Chrome Web Store extension profiles by URL or raw extension ID.
- Search rankings for keywords such as `screenshot`, `dark mode`, `coupon`, or `productivity`.
- Users, ratings, rating counts, versions, and update dates.
- Extension category, offered-by/developer text, and public privacy disclosure text.
- Manifest permissions, optional permissions, and host permissions from the hydrated page payload.
- Competitor movement by repeating the same keyword run over time.

### Fast First Run

Start with one extension URL and one keyword. Keep browser concurrency low for more reliable Chrome Web Store rendering.

![Chrome Web Store input and output](https://api.apify.com/v2/key-value-stores/bplRdpnd85eGQkW1N/records/chrome-web-store-intelligence-input-output.png)

```json
{
  "extensionUrls": [
    {
      "url": "https://chromewebstore.google.com/detail/dark-reader/eimadpbcbfnmbkopoojfekhnkhdbieeh"
    }
  ],
  "searchKeywords": ["screenshot"],
  "maxSearchResultsPerKeyword": 3,
  "includeSearchResultDetails": true,
  "pushSearchSnapshots": false,
  "language": "en-US",
  "timeoutSeconds": 25,
  "maxConcurrency": 1
}
````

### Output

Each extension profile row includes:

- `extensionId` and `extensionUrl`
- `extensionTitle` and `category`
- `rating` and `ratingsCount`
- `users`
- `version` and `updated`
- `offeredBy` and `developer` when visible
- `privacy` disclosure text
- `permissions`, `optionalPermissions`, and `hostPermissions`
- `searchKeyword` and `searchRank` when the profile came from keyword search
- `status`, `blockMarkers`, `error`, `checkedAt`, and `runtimeSeconds`

![Chrome Web Store dataset preview](https://api.apify.com/v2/key-value-stores/bplRdpnd85eGQkW1N/records/chrome-web-store-intelligence-dataset-preview.png)

Example dataset row:

```json
{
  "recordType": "extension_profile",
  "sourceType": "search",
  "searchKeyword": "screenshot",
  "searchRank": 1,
  "extensionId": "fdpohaocaechififmbbbbbknoalclacl",
  "extensionUrl": "https://chromewebstore.google.com/detail/gofullpage-full-page-scre/fdpohaocaechififmbbbbbknoalclacl",
  "extensionTitle": "GoFullPage - Full Page Screen Capture",
  "category": "Workflow & Planning",
  "rating": "4.9",
  "ratingsCount": "83.7K",
  "users": "11,000,000",
  "version": "8.6",
  "updated": "January 21, 2026",
  "permissions": ["activeTab", "scripting", "storage"],
  "hostPermissions": [],
  "status": "ok",
  "runtimeSeconds": 0.6
}
```

### Use Cases

- **Extension competitor monitoring**: track competing extensions by URL and compare users, ratings, update cadence, and permissions.
- **Chrome Web Store ASO**: monitor keyword ranking positions and which extensions appear for target terms.
- **Permission and privacy audits**: review declared permissions and public privacy disclosures across a competitor set.
- **Market mapping**: collect category, rating, install/user, and update signals before building or acquiring an extension.
- **Weekly rank snapshots**: run the same keyword list on a schedule and export the dataset to Sheets, BI, or a database.

### Pricing

This actor uses pay-per-event pricing. The primary event is one extracted extension profile. Search keyword checks have a smaller supporting event charge because they load Chrome Web Store search pages before optional profile extraction.

See the Pricing tab for the exact tiered price shown for your Apify plan. Start with the default input first, check the run cost, then scale keyword lists or competitor URL lists.

### Notes and Limits

- This is not an HTTP-only scraper. Chrome Web Store profile and permission data requires browser rendering.
- Keep `maxConcurrency` between `1` and `3`; slow browser runs are more reliable than aggressive parallel scraping.
- Public Chrome Web Store pages can change layout, show consent interstitials, or reject individual proxy connections. The actor retries transient browser/proxy failures and skips failed search-derived detail rows instead of failing the entire run.
- Use only legitimate public-data workflows and review your own compliance requirements before storing or processing scraped data.

# Actor input Schema

## `extensionUrls` (type: `array`):

Chrome Web Store extension detail URLs or raw 32-character extension IDs.

## `searchKeywords` (type: `array`):

Chrome Web Store search keywords to monitor. Each keyword returns ranked extension profiles when search-result details are enabled.

## `maxSearchResultsPerKeyword` (type: `integer`):

How many ranked Chrome Web Store results to collect for each search keyword.

## `includeSearchResultDetails` (type: `boolean`):

When enabled, each search result is opened and returned as a full extension profile with search keyword and rank.

## `pushSearchSnapshots` (type: `boolean`):

Also store one summary item per search keyword with the ranked URLs. Leave off for a cleaner profile-only dataset.

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

Browser locale used for Chrome Web Store rendering.

## `timeoutSeconds` (type: `integer`):

Maximum seconds to wait for a Chrome Web Store page to render.

## `maxConcurrency` (type: `integer`):

Number of Chrome Web Store pages to render in parallel. Keep low to reduce block risk.

## `proxyConfiguration` (type: `object`):

Apify Residential Proxy is recommended for cloud runs. Disable only for local tests or trusted environments.

## Actor input object example

```json
{
  "extensionUrls": [
    {
      "url": "https://chromewebstore.google.com/detail/dark-reader/eimadpbcbfnmbkopoojfekhnkhdbieeh"
    }
  ],
  "searchKeywords": [
    "screenshot"
  ],
  "maxSearchResultsPerKeyword": 3,
  "includeSearchResultDetails": true,
  "pushSearchSnapshots": false,
  "language": "en-US",
  "timeoutSeconds": 25,
  "maxConcurrency": 1,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# 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 = {
    "extensionUrls": [
        {
            "url": "https://chromewebstore.google.com/detail/dark-reader/eimadpbcbfnmbkopoojfekhnkhdbieeh"
        }
    ],
    "searchKeywords": [
        "screenshot"
    ],
    "maxSearchResultsPerKeyword": 3,
    "includeSearchResultDetails": true,
    "pushSearchSnapshots": false,
    "language": "en-US",
    "timeoutSeconds": 25,
    "maxConcurrency": 1,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("tugelbay/chrome-web-store-intelligence").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 = {
    "extensionUrls": [{ "url": "https://chromewebstore.google.com/detail/dark-reader/eimadpbcbfnmbkopoojfekhnkhdbieeh" }],
    "searchKeywords": ["screenshot"],
    "maxSearchResultsPerKeyword": 3,
    "includeSearchResultDetails": True,
    "pushSearchSnapshots": False,
    "language": "en-US",
    "timeoutSeconds": 25,
    "maxConcurrency": 1,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("tugelbay/chrome-web-store-intelligence").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 '{
  "extensionUrls": [
    {
      "url": "https://chromewebstore.google.com/detail/dark-reader/eimadpbcbfnmbkopoojfekhnkhdbieeh"
    }
  ],
  "searchKeywords": [
    "screenshot"
  ],
  "maxSearchResultsPerKeyword": 3,
  "includeSearchResultDetails": true,
  "pushSearchSnapshots": false,
  "language": "en-US",
  "timeoutSeconds": 25,
  "maxConcurrency": 1,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call tugelbay/chrome-web-store-intelligence --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Chrome Web Store Scraper & Extension Intelligence API",
        "description": "Chrome Web Store scraper and extension intelligence API. Track extension profiles, keyword rankings, users, ratings, versions, privacy text, permissions, and competitors.",
        "version": "0.1",
        "x-build-id": "25Izd384BEgb2qPfs"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/tugelbay~chrome-web-store-intelligence/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-tugelbay-chrome-web-store-intelligence",
                "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/tugelbay~chrome-web-store-intelligence/runs": {
            "post": {
                "operationId": "runs-sync-tugelbay-chrome-web-store-intelligence",
                "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/tugelbay~chrome-web-store-intelligence/run-sync": {
            "post": {
                "operationId": "run-sync-tugelbay-chrome-web-store-intelligence",
                "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": {
                    "extensionUrls": {
                        "title": "Extension URLs",
                        "type": "array",
                        "description": "Chrome Web Store extension detail URLs or raw 32-character extension IDs.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "searchKeywords": {
                        "title": "Search keywords",
                        "type": "array",
                        "description": "Chrome Web Store search keywords to monitor. Each keyword returns ranked extension profiles when search-result details are enabled.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxSearchResultsPerKeyword": {
                        "title": "Max search results per keyword",
                        "minimum": 1,
                        "maximum": 25,
                        "type": "integer",
                        "description": "How many ranked Chrome Web Store results to collect for each search keyword.",
                        "default": 3
                    },
                    "includeSearchResultDetails": {
                        "title": "Fetch details for search results",
                        "type": "boolean",
                        "description": "When enabled, each search result is opened and returned as a full extension profile with search keyword and rank.",
                        "default": true
                    },
                    "pushSearchSnapshots": {
                        "title": "Also push search snapshots",
                        "type": "boolean",
                        "description": "Also store one summary item per search keyword with the ranked URLs. Leave off for a cleaner profile-only dataset.",
                        "default": false
                    },
                    "language": {
                        "title": "Browser locale",
                        "enum": [
                            "en-US",
                            "en-GB",
                            "de-DE",
                            "fr-FR",
                            "es-ES"
                        ],
                        "type": "string",
                        "description": "Browser locale used for Chrome Web Store rendering.",
                        "default": "en-US"
                    },
                    "timeoutSeconds": {
                        "title": "Timeout per page",
                        "minimum": 10,
                        "maximum": 90,
                        "type": "integer",
                        "description": "Maximum seconds to wait for a Chrome Web Store page to render.",
                        "default": 25
                    },
                    "maxConcurrency": {
                        "title": "Browser concurrency",
                        "minimum": 1,
                        "maximum": 3,
                        "type": "integer",
                        "description": "Number of Chrome Web Store pages to render in parallel. Keep low to reduce block risk.",
                        "default": 1
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify Residential Proxy is recommended for cloud runs. Disable only for local tests or trusted environments.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
