# Chrome Extension Publisher Profile Scraper (`googleapi/chrome-extension-publisher-profile-scraper`) Actor

Collect public publisher profiles and extension portfolios.

- **URL**: https://apify.com/googleapi/chrome-extension-publisher-profile-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

This Actor builds one business-facing publisher profile from public Chrome Web Store publisher pages or extension listings. It prefers the stable publisher ID/profile URL when the listing exposes one, and keeps the evidence from every inspected extension in an explicit portfolio. `extensionCount` and the portfolio arrays describe the records actually collected under the request limits, not a guarantee of the publisher's entire catalog.

Each profile is expanded with publisher identity and stable profile identifiers, D-U-N-S where shown, public contact points, public address components, trader status, publisher and policy/support links, source listing identity, extension count, extension IDs, user/rating aggregates, latest version/update, most popular extension, categories, languages, featured count, portfolio policy/support URLs, and rich nested extension summaries. Each nested summary carries full formatted description text and sanitized HTML, category, ratings, users, version/update precision, website, privacy/support links, features, size, languages, media, structured related-extension cards, and version history. `totalUserCount` is the sum of collected listing counts, not a distinct-person count; `averageRating` is the unweighted mean of listing ratings, and `weightedAverageRating` weights them by their source review counts. Unknown trader/reputation values remain `null` when they are not explicit in the source.

### Inputs

Use `extensionId` or `extensionIds` for known extensions, or provide official Chrome Web Store publisher-profile, detail, search, or category URLs through `startUrls`, `sourceUrls`, or `urls`. For discovery, use `queries`, `query`, or `searchQuery` with optional category paths. `maxItems`, `maxRequests`, and `maxDetailRequests` limit the profiles and pages collected. Set `fetchPublisherProfile` to `true` to follow the public publisher-profile link from a listing and collect additional extension cards; it is off by default.

Only public Chrome Web Store pages are in scope. The Actor does not sign in, solve CAPTCHA challenges, use private publisher pages, or infer a publisher identity that is not shown on the source listing. Search and publisher pages may expose a “Load more” control; this Actor reads the entries visible on the requested page, so the collected profile may not include a publisher’s complete catalog.

### Output

Each dataset row represents a publisher and includes its public profile identifiers, contacts, listing links, and portfolio statistics. `extensions` and `topExtensions` contain the extension details available from the collected public listings. Counts describe only the extensions found within the selected limits; they are not a claim about the publisher's complete catalog.

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

Example publisher record:

```json
{
  "publisherKey": "example-labs",
  "publisherName": "Example Labs",
  "extensionCount": 1,
  "extensionIds": ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"],
  "averageRating": 4.7
}
```

# 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 publisher profile, detail, search, or category URLs.

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

Alias for startUrls. Publisher profile URLs are supported.

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

Alias for startUrls. Publisher profile URLs are supported.

## `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 with locale-aware callers.

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

Alias for locale.

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

Maximum number of publisher profiles.

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

Maximum public listing pages to inspect.

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

Maximum direct public page requests.

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

Maximum extension detail pages used to build profiles.

## `fetchPublisherProfile` (type: `boolean`):

When enabled, follow the public Chrome Web Store publisher profile link from an extension detail page and collect its listed extension cards, within the request and detail limits.

## `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 but currently not applied by the direct-fetch transport.

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

One-based starting page or offset page for paginated sources.

## Actor input object example

```json
{
  "maxItems": 25,
  "maxPages": 1,
  "maxRequests": 50,
  "maxDetailRequests": 25,
  "fetchPublisherProfile": false,
  "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-publisher-profile-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-publisher-profile-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-publisher-profile-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,googleapi/chrome-extension-publisher-profile-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/vq3vnMC7MlfezgiPL/builds/JcjVhxycWZ42QLfxf/openapi.json
