# Chrome Extension Developer Leads: Publisher Contacts (`googleapi/chrome-extension-developer-leads-scraper`) Actor

Search the public Chrome Web Store and group extension publisher details into one lead per developer, including public contact information and top extensions.

- **URL**: https://apify.com/googleapi/chrome-extension-developer-leads-scraper.md
- **Developed by:** [Google API](https://apify.com/googleapi) (community)
- **Security:** Limited permissions
- **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 groups public [Chrome Web Store](https://chromewebstore.google.com/) extensions into one business lead record per publisher. It includes public publisher contacts and profile details, portfolio statistics, extension descriptions, categories, ratings, user counts, permissions, privacy declarations, and other information exposed on Store pages.

### Scope and access boundary

Only official public Chrome Web Store pages are accepted. If a page is blocked, unavailable, or malformed, the run summary and logs report the issue without adding an invalid publisher record. The Actor does not log in, access private APIs, solve CAPTCHAs, or bypass access controls.

### Input

```json
{
  "query": "ad blocker",
  "page": 1,
  "maxDevelopers": 10,
  "maxExtensions": 30,
  "maxDetailRequests": 30,
  "maxExtensionsPerDeveloper": 10
}
```

Use `startUrls`, `sourceUrls`, or `urls` to inspect official search, category, or detail pages. `category` generates a category route when no URL is supplied. `page` selects the starting page and `maxPages` controls how many search pages are collected. `maxDevelopers` sets the number of publisher records; `maxItems` is a compatibility alias that overrides it when supplied. `maxExtensions`, `maxDetailRequests`, and `maxExtensionsPerDeveloper` limit extension discovery, detail-page lookups, and the number of extensions summarized for each publisher. `maxRequests` caps total requests.

Use `locale` to choose the Chrome Web Store language and region. The Actor reads public listings and publisher information only.

### Dataset contract

Normal rows expose more than 40 documented business properties, including developer identity, legal entity, published contacts and address details, websites, publisher profile links and identifiers, D-U-N-S identifiers, trader status, portfolio arrays, user and rating aggregates, update ranges, categories, descriptions, privacy declarations including explicit data-collection status, policy/support links, permissions, languages, media, and detailed per-extension objects. Each extension object also preserves related Chrome Web Store card details when available, including the related listing name, URL, description, and displayed rating. Source-dependent properties are omitted when the public page does not provide them; unknown declarations remain null, and the Actor does not fabricate values to inflate row width.

Contact fields are included only when visibly published on a public Store page. Use the output in accordance with applicable privacy, marketing, and platform rules.

### Output

Each dataset row represents one publisher. It includes a stable `developerKey`, a publisher name when available, portfolio totals, public contact details, and summaries of related extensions. The run summary is available with the dataset in the Output tab.

Example publisher record:

```json
{
  "developerKey": "example-publisher",
  "developerName": "Example Publisher",
  "extensionCount": 2,
  "maxPublishedUsers": 100000,
  "extensionNames": ["Example Tab Helper", "Example Notes"]
}
```

# Actor input Schema

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

Public Chrome Web Store search term.

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

Compatibility alias for query.

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

Optional public category slug.

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

Compatibility locale such as en.

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

Official public search, category, or detail URLs.

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

Compatibility alias for startUrls.

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

Compatibility alias for startUrls.

## `maxDevelopers` (type: `integer`):

Maximum one-row-per-developer leads emitted.

## `maxExtensions` (type: `integer`):

Bound on unique extension links collected.

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

Bound on public detail pages inspected.

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

Bound on generated public search pages.

## `maxExtensionsPerDeveloper` (type: `integer`):

Maximum summaries retained in each lead row.

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

Bound on official public listing and detail requests.

## `timeoutMs` (type: `integer`):

Timeout for each public request.

## `maxResponseBytes` (type: `integer`):

Bound HTML retained from a public response.

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

Compatibility timeout alias.

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

Compatibility timeout alias.

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

Delay between public requests.

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

Retries for transient public requests.

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

Optional ordinary public browser user agent.

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

Compatibility field; requests remain direct public HTTPS.

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

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

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

Optional compatibility alias for the maximum number of developer lead records. When supplied, this overrides maxDevelopers.

## Actor input object example

```json
{
  "maxDevelopers": 10,
  "maxExtensions": 30,
  "maxDetailRequests": 30,
  "maxPages": 2,
  "maxExtensionsPerDeveloper": 10,
  "maxRequests": 50,
  "timeoutMs": 30000,
  "maxResponseBytes": 3000000,
  "requestDelayMs": 0,
  "maxRetries": 1,
  "page": 1
}
```

# Actor output Schema

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

One row per grouped public Store publisher.

## `runSummary` (type: `string`):

Search/detail request counts and public-source access diagnostics.

# 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-developer-leads-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-developer-leads-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-developer-leads-scraper --silent --output-dataset

```

## MCP server setup

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