# Chrome Extension Privacy Practices Scraper (`googleapi/chrome-extension-privacy-practices-scraper`) Actor

Collect public extension privacy disclosures, policies, and data-use statements.

- **URL**: https://apify.com/googleapi/chrome-extension-privacy-practices-scraper.md
- **Developed by:** [Google API](https://apify.com/googleapi) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.99 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Chrome Extension Privacy Practices Scraper do?

This Actor produces one business-facing record per public Chrome Web Store extension listing. It is focused on the listing's actual privacy material: the complete disclosed privacy text, declaration sentences, data categories, stated purposes, collection/sharing/security/use sections, policy URL, and explicit sale/transfer/encryption signals.

The record is intentionally expanded with the surrounding public listing context needed to interpret a privacy disclosure: canonical listing identity, title and full description, category, publisher contacts and address, trader status, rating and review counts, users, version/update precision, size, languages, features, icon/screenshots, related extension IDs, public website/support links, and version history. Normal records expose more than 20 declared business fields whenever the source supplies the corresponding values.

### Inputs

Use `extensionId` or `extensionIds` for known extensions, or provide official Chrome Web Store detail, search, or category URLs with `startUrls`, `sourceUrls`, or `urls`. For discovery, use `queries`, `query`, or `searchQuery` with optional category paths. Each supplied search/category URL currently returns one listing page; `page` and `maxPages` do not advance pagination. `maxItems` limits records, while `maxRequests` and `maxDetailRequests` bound public page collection.

Only public Chrome Web Store listing pages are in scope. The Actor does not sign in, solve CAPTCHA challenges, fetch linked privacy policies by default, use private publisher data, or invent a claim that is absent from the listing. Unknown privacy facts remain null/omitted, and privacy-type/purpose classification uses the listing's privacy disclosure rather than marketing-description text.

### Output

Each dataset row represents one extension and contains the public listing and privacy information available for it. Key groups include:

- identity: canonicalUrl, extensionId, extensionUrl, title, name, availability
- listing: full description text and safe HTML, short description, category, rating, reviews, users, version/update precision, size, languages, features, icon, screenshots, detailed related-extension cards, and version history
- publisher: developer name, offered-by label, email(s), phone, website, public address, city, postal/country code, trader status, CWS publisher profile and ID, D-U-N-S, and public support/contact links
- privacy: full plain text and safe HTML disclosure, structured privacy sections/declarations, data categories and purposes disclosed inside the privacy area, collection/sharing/security/use text and status, sale/transfer/encryption status, nullable collection/sale/transfer/share/use indicators, and privacy-policy URL/domain

The run summary is available alongside the dataset in the Output tab. You can download dataset records in formats such as JSON, HTML, CSV, or Excel.

### Source coverage and verification

The Actor extracts only values found in the public Chrome Web Store listing response, including embedded public listing data where present. It does not fetch linked privacy policies or infer privacy claims from the Overview description. An extension ID is resolved through public search results before its detail page is read.

Fields absent from the public response are omitted or left unknown. The current version reads one listing response per supplied search/category URL and does not apply proxy settings.

# Actor input Schema

## `extensionId` (type: `string`):

One 32-character public Chrome extension ID.

## `extensionIds` (type: `array`):

Public Chrome extension IDs to inspect.

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

Public Chrome Web Store detail, search, or category URLs.

## `sourceUrls` (type: `array`):

Alias for startUrls.

## `urls` (type: `array`):

Alias for startUrls.

## `queries` (type: `array`):

Public Chrome Web Store search terms.

## `query` (type: `string`):

One search term.

## `searchQuery` (type: `string`):

Alias for query.

## `category` (type: `string`):

Optional Chrome Web Store category slug.

## `locale` (type: `string`):

Accepted for compatibility; current CWS requests use the default locale.

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

Compatibility alias; it is not applied to current CWS requests.

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

Maximum number of normal extension records.

## `maxPages` (type: `integer`):

Reserved for pagination; current CWS transport reads one listing response per supplied source URL.

## `maxRequests` (type: `integer`):

Maximum direct public page requests.

## `maxDetailRequests` (type: `integer`):

Maximum extension detail pages to inspect.

## `requestTimeoutSecs` (type: `integer`):

Maximum wait for each public request.

## `timeoutSecs` (type: `integer`):

Alias for requestTimeoutSecs.

## `requestTimeoutMs` (type: `integer`):

Millisecond form of the request timeout.

## `requestDelayMs` (type: `integer`):

Delay between public requests.

## `maxRetries` (type: `integer`):

Maximum retry attempts for failed requests.

## `userAgent` (type: `string`):

Optional ordinary browser user agent.

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

Accepted for compatibility; the current native fetch transport does not apply this proxy configuration.

## `page` (type: `integer`):

Reserved for pagination; current CWS transport does not apply a page offset.

## Actor input object example

```json
{
  "maxItems": 25,
  "maxPages": 1,
  "maxRequests": 50,
  "maxDetailRequests": 25,
  "requestTimeoutSecs": 25,
  "requestDelayMs": 0,
  "maxRetries": 1,
  "page": 1
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `runSummary` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("googleapi/chrome-extension-privacy-practices-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("googleapi/chrome-extension-privacy-practices-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{}' |
apify call googleapi/chrome-extension-privacy-practices-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,googleapi/chrome-extension-privacy-practices-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/JEyHyKTFUQ3mdPbLu/builds/H28xpGwqFDTjWY03m/openapi.json
