# WordPress Plugin Directory Email Scraper (`neuro-scraper/wordpress-plugin-directory-email-scraper`) Actor

WordPress Plugin Directory Email Scraper SD - WordPress Plugin Directory Email Scraper is a lead generation tool that extracts leads with public contact emails and profile URLs from WordPress Plugin Directory by keyword, location and email domain - WordPress Plugin Directory email extractor.

- **URL**: https://apify.com/neuro-scraper/wordpress-plugin-directory-email-scraper.md
- **Developed by:** [Neuro Scraper](https://apify.com/neuro-scraper) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.49 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

### WordPress Plugin Directory Email Scraper — author contacts from wordpress.org/plugins

The **WordPress Plugin Directory Email Scraper** collects publicly indexed contact emails for the developers and companies who publish plugins on `wordpress.org`.
Give it keywords and email domains, and it returns emails, account names, plugin listing URLs and the snippet each address came from.

The plugin directory is where the WordPress product economy lives.
Plugin authors publish support and business addresses on their listings and readme files because that is how users, agencies and integration partners are meant to reach them.
The WordPress Plugin Directory Email Scraper surfaces the ones Google has already indexed.

There is no export button on wordpress.org and no public roster of plugin author contacts.
The WordPress Plugin Directory Email Scraper turns that browsing job into a dataset you can filter, dedupe and export.

#### What the WordPress Plugin Directory Email Scraper does — and does not do

It builds Google queries with the `site:wordpress.org` operator, reads the result pages, and extracts emails from titles and snippets.
Each unique address is deduplicated globally and pushed to an Apify dataset the instant it is found.

The WordPress Plugin Directory Email Scraper does **not** log into WordPress.org, use the plugin API or the readme parser, or open the directory in a browser.
No JavaScript rendering, no authentication, no cookies — only publicly indexed search results.

#### Plugin authors, not theme authors

The WordPress Plugin Directory Email Scraper treats `/plugins/` as the listing path and `themes` as a non-profile segment.
That means `username` and `profileUrl` resolve to plugin listing URLs such as `https://wordpress.org/plugins/{username}/`.

If you want theme shops and theme authors instead, the [WordPress Theme Directory Email Scraper](https://apify.com/leads-scraper/wordpress-theme-directory-email-scraper) is the sibling Actor for that population.
Same engine, same wordpress.org domain, a different path prefix and a genuinely different audience.

#### Who this WordPress plugin author email tool is for

Partnership teams at WordPress hosting, security, backup and performance companies run the WordPress Plugin Directory Email Scraper to recruit integration partners.
Product companies use it to source plugin developers for acquisition, white-label or bundling conversations.

Agencies build a shortlist of plugin vendors for a client build or a maintenance retainer.
Analysts point the WordPress Plugin Directory Email Scraper at a category for competitive and market research.

### Key features of the WordPress Plugin Directory Email Scraper

Everything listed here is behaviour the WordPress Plugin Directory Email Scraper genuinely implements.

| Feature | What it means in practice |
|---|---|
| `site:` scoping | Every query is locked to `wordpress.org`, keeping results inside the official directory |
| Plugin path recognition | `/plugins/` is treated as the listing path, so handles resolve to plugin listing URLs |
| Query expansion | Each keyword × domain pair runs as a base query, a quoted query, an `intitle:` query, plus one variant per query modifier |
| Domain-filtered extraction | Only emails on the domains you list survive, so you control the shape of the output |
| Global deduplication | Each address appears once per run, no matter how many queries or pages surfaced it |
| Obfuscation handling | Reads `name [at] domain [dot] com`, `name (at) domain`, `name @ domain.com`, `domain .com`, zero-width characters and the full-width `＠` |
| Junk filter | Rejects placeholders such as `email@`, `yourname@`, `test@`, `xxx@` and single-character locals |
| Boundary-correct matching | `@gmail.com` will not match inside `@gmail.company` or `@gmail.com.br` |
| Soft-wrap repair | Discards a hit that is only the tail of another email in the same block |
| Structural parsing | Locates the `<h3>` title and the smallest surrounding block rather than trusting Google's CSS class names |
| Whole-page fallback | A Google markup change degrades the run to "emails without account details", not "no emails" |
| Block detection | CAPTCHA, "unusual traffic" and consent pages are detected and retried, not counted as empty |
| Retries with backoff | Up to 3 attempts per page, exponential backoff, a fresh proxy session per request |
| End-of-run requeue | Blocked or failed queries get one more pass before the run closes |
| Resumable state | Progress lives in the key-value store, keyed by an input hash, saved on `PERSIST_STATE`, `MIGRATING` and `ABORTING` |
| Async concurrency | An `asyncio` worker pool with a shared stop signal once `maxEmails` is reached |
| Run summary | Pages fetched, blocked pages, retries and emails per page are logged |

### How the WordPress Plugin Directory Email Scraper works

Six steps, all visible in the run log.

1. The WordPress Plugin Directory Email Scraper reads your input: keywords, location, email domains and limits.
2. It composes Google queries with the `site:` operator against `wordpress.org`, for example `site:wordpress.org wordpress plugin developer "@gmail.com"`.
3. It fetches result pages through the Apify **GOOGLE_SERP** proxy using async `aiohttp`.
4. It parses each result block structurally, finding the `<h3>` title and the tightest block around it.
5. It extracts emails from that block text with a domain-filtered regex.
6. It deduplicates globally and pushes each lead to the dataset immediately.

Rows arrive as they are found, so you can start reviewing leads mid-run.
Resumable state means a migration or abort does not send the WordPress Plugin Directory Email Scraper back to the beginning.

#### Why query expansion matters on a directory this large

Google returns roughly 300 results for any single query.
The plugin directory holds far more listings than that, so one query cannot see the whole catalogue.

Query expansion is the workaround.
The WordPress Plugin Directory Email Scraper rewrites each keyword into several phrasings and pairs it with each modifier, so many narrow queries reach further than one broad one.

### Input settings for the WordPress Plugin Directory Email Scraper

Nine fields drive the run. Only `keywords` is required; everything else has a working default.

| Field | Type | Default | Meaning |
|---|---|---|---|
| `keywords` | array (required) | `["plugin developer", "wordpress plugin"]` | Search terms describing the authors you want (niche, job title, industry) |
| `location` | string | `""` | Optional location phrase added to every query |
| `customDomains` | array | `["@gmail.com","@yahoo.com"]` | Only emails on these domains are collected; the leading `@` is optional |
| `maxEmails` | integer 1–10000 | `20` | Stop once this many unique emails have been collected |
| `countryCode` | string | `""` | Two-letter country code for the search proxy (US, GB, DE...) |
| `expandQueries` | boolean | `true` | Search each keyword × domain pair in several phrasings |
| `queryModifiers` | array | `["email","contact","support","developer","publisher"]` | Extra words combined with each keyword when expansion is on |
| `maxPagesPerQuery` | integer 1–50 | `30` | Page cap per query |
| `maxConcurrency` | integer 1–20 | `5` | How many queries run in parallel |

#### Example input for a WordPress plugin developer email run

```json
{
  "keywords": ["wordpress plugin", "woocommerce plugin developer", "seo plugin author"],
  "location": "",
  "customDomains": ["@gmail.com", "@outlook.com"],
  "maxEmails": 300,
  "countryCode": "US",
  "expandQueries": true,
  "queryModifiers": ["email", "contact", "support", "developer", "publisher"],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

Probe first with `maxEmails` around 20–50.
A short WordPress Plugin Directory Email Scraper run tells you quickly whether a plugin category is well indexed before you scale up.

### Output fields from the WordPress Plugin Directory Email Scraper

Every dataset item the WordPress Plugin Directory Email Scraper writes carries all fourteen fields below.
Keys are always present; some values are conditional.

| Field | Meaning |
|---|---|
| `network` | Platform name |
| `keyword` | The keyword that produced the lead |
| `query` | The exact Google query used |
| `title` | Raw result title |
| `accountName` | Account label Google prints |
| `fullName` | Display name parsed from a profile-style title; empty for non-profile results |
| `username` | URL-safe handle when the platform exposes one; otherwise `null` |
| `profileUrl` | Canonical plugin listing URL when a handle is known; otherwise empty |
| `url` | Direct platform link when exposed, else the profile URL |
| `description` | Bio or snippet text, cleaned of labels and counters |
| `email` | Lower-cased email address |
| `emailDomain` | The matched domain (e.g. `@gmail.com`) |
| `possiblyTruncated` | `true` when Google's snippet ellipsis touched the email — verify before sending |
| `foundAt` | ISO 8601 UTC timestamp |

#### Example output row

```json
{
  "network": "WordPress Plugin Directory",
  "keyword": "woocommerce plugin developer",
  "query": "site:wordpress.org woocommerce plugin developer contact \"@gmail.com\"",
  "title": "Cart Rescue for WooCommerce - WordPress plugin | WordPress.org",
  "accountName": "Larkfield Studio",
  "fullName": "Larkfield Studio",
  "username": "cart-rescue-for-woocommerce",
  "profileUrl": "https://wordpress.org/plugins/cart-rescue-for-woocommerce/",
  "url": "https://wordpress.org/plugins/cart-rescue-for-woocommerce/",
  "description": "Abandoned cart recovery for WooCommerce stores. Support and partnerships: larkfield.plugins@gmail.com",
  "email": "larkfield.plugins@gmail.com",
  "emailDomain": "@gmail.com",
  "possiblyTruncated": false,
  "foundAt": "2025-04-18T15:07:44Z"
}
```

Export what the WordPress Plugin Directory Email Scraper collects as CSV, JSON, Excel or XML, or read it through the Apify API into your CRM.

### Use cases for the WordPress Plugin Directory Email Scraper

The plugin directory is a vendor marketplace, so these use cases sit in partnership and sourcing work rather than consumer prospecting.

| Use case | How the WordPress Plugin Directory Email Scraper helps |
|---|---|
| Integration partner recruitment | Find plugin authors in adjacent categories and reach the address they publish for partnerships |
| Hosting and platform partnerships | Build a plugin vendor list for a compatibility, bundling or marketplace programme |
| Acquisition and portfolio sourcing | Add a contact layer to a category map of the WordPress plugin economy |
| Agency vendor sourcing | Shortlist plugin developers for a client build, audit or maintenance retainer |
| Competitive research | See who publishes in your plugin category and how they position their listings |
| Ecosystem sizing | Sample by keyword to gauge how crowded a WordPress plugin niche really is |
| Co-marketing outreach | Identify complementary plugin authors for joint guides, webinars or bundles |
| CRM enrichment | Match scraped plugin author contacts against accounts you already track |

#### Worked example: mapping the WooCommerce extension category

Set `keywords` to `["woocommerce plugin", "woocommerce extension", "woocommerce plugin developer"]`.
Leave `expandQueries` on so each keyword also runs with `email`, `contact`, `support`, `developer` and `publisher`.

Use free-mail domains in `customDomains` when you are after independent plugin developers.
Swap in a branded domain when you want established plugin companies with a corporate mailbox.

Run the WordPress Plugin Directory Email Scraper once at `maxEmails: 30` to sanity-check the category, then again at your real target.
The second WordPress Plugin Directory Email Scraper run reuses the same expansion plan, so the probe costs very little.

### Tips for getting more from the WordPress Plugin Directory Email Scraper

Category keywords beat generic ones.
"wordpress backup plugin" gives the WordPress Plugin Directory Email Scraper far more to work with than "wordpress".

Include the word "plugin" in your keywords.
Because the `site:` query covers all of `wordpress.org`, plugin-flavoured keywords are what keep results pointed at plugin listings rather than forums or documentation.

Use `customDomains` as a segmentation lever, not just a filter.
Free-mail domains skew towards solo plugin authors; branded domains skew towards established plugin businesses.

Set `countryCode` when you want a regional slice of the WordPress developer ecosystem, and pair it with `location` for a tighter focus.
Do not raise `maxConcurrency` hoping for more leads — extra parallelism will not make the WordPress Plugin Directory Email Scraper find emails that are not in the index.

Schedule the WordPress Plugin Directory Email Scraper monthly with a stable input.
New plugins get indexed continuously, so repeat runs keep a plugin author contact list current.

Plugin authors usually have a public code presence too.
Running the [GitHub Email Scraper](https://apify.com/leads-scraper/github-email-scraper) or the **npm Email Scraper** with the same keywords often surfaces the same people under a different identity.

### Limitations of the WordPress Plugin Directory Email Scraper

Stated plainly, because they shape what you should expect.

- **Publicly indexed emails only.** If an author's address is not visible in Google's index, the WordPress Plugin Directory Email Scraper cannot find it. Contact forms and images are invisible to it.
- **Google's ~300-result cap.** A single query tops out around 300 results, which is exactly why query expansion exists.
- **`possiblyTruncated`.** When Google's snippet ellipsis touched the email, this flag is `true` and the address may be incomplete. Verify before sending.
- **`username` and `profileUrl` are conditional.** They are only populated when Google's result exposes a handle. Some rows carry `accountName` and `fullName` with an empty `username` and `profileUrl`. That is a Google limitation, not a bug.
- **wordpress.org is one big domain.** The `site:` query covers the whole domain, so keyword choice is what keeps results inside the plugin directory rather than forums, docs or themes.
- **Apify GOOGLE_SERP proxy required.** The WordPress Plugin Directory Email Scraper cannot run without Apify proxy credentials.
- **Free-plan cap.** Free Apify plans are capped at 100 emails per run; paid plans are uncapped.
- **No guaranteed volume.** Results vary with keywords, domains and location, and no volume is guaranteed.

In our own measured testing, a WordPress Plugin Directory Email Scraper run resolved 8 of 10 targeted results into usable rows with plugin identity attached.
That is a strong result for a large open directory, but it describes that test — not a promise about your keywords.

### Related Actors

The WordPress Plugin Directory Email Scraper shares one engine with the rest of this Developer & Technology family; only the platform config differs.

| Actor | What it collects |
|---|---|
| [WordPress Plugin Directory Email and Phone Number Scraper](https://apify.com/neuro-scraper/wordpress-plugin-directory-email-and-phone-number-scraper) | Emails and phone numbers from WordPress Plugin Directory |
| [WordPress Plugin Directory Phone Number Scraper](https://apify.com/neuro-scraper/wordpress-plugin-directory-phone-number-scraper) | Public phone numbers from WordPress Plugin Directory |
| [App Store Email Scraper](https://apify.com/leads-scraper/app-store-email-scraper) | Public contact emails from App Store |
| [Atlassian Marketplace Email Scraper](https://apify.com/leads-scraper/atlassian-marketplace-email-scraper) | Public contact emails from Atlassian Marketplace |
| [Bitbucket Email Scraper](https://apify.com/neuro-scraper/bitbucket-email-scraper) | Public contact emails from Bitbucket |
| [Chrome Web Store Email Scraper](https://apify.com/leads-scraper/chrome-web-store-email-scraper) | Public contact emails from Chrome Web Store |
| [CodePen Email Scraper](https://apify.com/neuro-scraper/codepen-email-scraper) | Public contact emails from CodePen |
| [Confluence Email Scraper](https://apify.com/neuro-scraper/confluence-email-scraper) | Public contact emails from Confluence |
| [Dev.to Email Scraper](https://apify.com/neuro-scraper/dev-to-email-scraper) | Public contact emails from DEV Community |
| [Docker Hub Email Scraper](https://apify.com/neuro-scraper/docker-hub-email-scraper) | Public contact emails from Docker Hub |
| [Figma Community Email Scraper](https://apify.com/neuro-scraper/figma-community-email-scraper) | Public contact emails from Figma Community |
| [Firefox Add-ons Email Scraper](https://apify.com/neuro-scraper/firefox-add-ons-email-scraper) | Public contact emails from Firefox Add-ons |
| [GitHub Email Scraper](https://apify.com/leads-scraper/github-email-scraper) | Public contact emails from GitHub |
| [GitLab Email Scraper](https://apify.com/neuro-scraper/gitlab-email-scraper) | Public contact emails from GitLab |
| [Google Play Email Scraper](https://apify.com/leads-scraper/google-play-email-scraper) | Public contact emails from Google Play |
| [Hashnode Email Scraper](https://apify.com/neuro-scraper/hashnode-email-scraper) | Public contact emails from Hashnode |
| [HubSpot Marketplace Email Scraper](https://apify.com/leads-scraper/hubspot-marketplace-email-scraper) | Public contact emails from HubSpot Marketplace |
| [Hugging Face Email Scraper](https://apify.com/leads-scraper/hugging-face-email-scraper) | Public contact emails from Hugging Face |
| [Jira Email Scraper](https://apify.com/neuro-scraper/jira-email-scraper) | Public contact emails from Jira |
| [Maven Central Email Scraper](https://apify.com/neuro-scraper/maven-central-email-scraper) | Public contact emails from Maven Central |
| [Microsoft AppSource Email Scraper](https://apify.com/neuro-scraper/microsoft-appsource-email-scraper) | Public contact emails from Microsoft AppSource |
| [Salesforce AppExchange Email Scraper](https://apify.com/leads-scraper/salesforce-appexchange-email-scraper) | Public contact emails from Salesforce AppExchange |
| [Shopify App Store Email Scraper](https://apify.com/leads-scraper/shopify-app-store-email-scraper) | Public contact emails from Shopify App Store |
| [Slack App Directory Email Scraper](https://apify.com/leads-scraper/slack-app-directory-email-scraper) | Public contact emails from Slack App Directory |
| [SourceForge Email Scraper](https://apify.com/leads-scraper/sourceforge-email-scraper) | Public contact emails from SourceForge |
| [Stack Overflow Email Scraper](https://apify.com/leads-scraper/stack-overflow-email-scraper) | Public contact emails from Stack Overflow |
| [Unity Asset Store Email Scraper](https://apify.com/leads-scraper/unity-asset-store-email-scraper) | Public contact emails from Unity Asset Store |
| [Unreal Engine Marketplace Email Scraper](https://apify.com/leads-scraper/unreal-engine-marketplace-email-scraper) | Public contact emails from Unreal Engine Marketplace |
| [WordPress Theme Directory Email Scraper](https://apify.com/leads-scraper/wordpress-theme-directory-email-scraper) | Public contact emails from WordPress Theme Directory |
| [Zapier App Directory Email Scraper](https://apify.com/leads-scraper/zapier-app-directory-email-scraper) | Public contact emails from Zapier App Directory |
| [App Store Email and Phone Number Scraper](https://apify.com/leads-scraper/app-store-email-and-phone-number-scraper) | Emails and phone numbers from App Store |
| [Atlassian Marketplace Email and Phone Number Scraper](https://apify.com/neuro-scraper/atlassian-marketplace-email-and-phone-number-scraper) | Emails and phone numbers from Atlassian Marketplace |
| [Bitbucket Email and Phone Number Scraper](https://apify.com/neuro-scraper/bitbucket-email-and-phone-number-scraper) | Emails and phone numbers from Bitbucket |
| [Chrome Web Store Email and Phone Number Scraper](https://apify.com/neuro-scraper/chrome-web-store-email-and-phone-number-scraper) | Emails and phone numbers from Chrome Web Store |
| [CodePen Email and Phone Number Scraper](https://apify.com/neuro-scraper/codepen-email-and-phone-number-scraper) | Emails and phone numbers from CodePen |
| [Confluence Email and Phone Number Scraper](https://apify.com/neuro-scraper/confluence-email-and-phone-number-scraper) | Emails and phone numbers from Confluence |
| [DEV Community Email and Phone Number Scraper](https://apify.com/neuro-scraper/dev-to-email-and-phone-number-scraper) | Emails and phone numbers from DEV Community |
| [Docker Hub Email and Phone Number Scraper](https://apify.com/neuro-scraper/docker-hub-email-and-phone-number-scraper) | Emails and phone numbers from Docker Hub |
| [Figma Community Email and Phone Number Scraper](https://apify.com/neuro-scraper/figma-community-email-and-phone-number-scraper) | Emails and phone numbers from Figma Community |
| [Firefox Add-ons Email and Phone Number Scraper](https://apify.com/neuro-scraper/firefox-add-ons-email-and-phone-number-scraper) | Emails and phone numbers from Firefox Add-ons |
| [GitHub Email and Phone Number Scraper](https://apify.com/leads-scraper/github-email-and-phone-number-scraper) | Emails and phone numbers from GitHub |
| [GitLab Email and Phone Number Scraper](https://apify.com/neuro-scraper/gitlab-email-and-phone-number-scraper) | Emails and phone numbers from GitLab |

### FAQ about the WordPress Plugin Directory Email Scraper

#### What is the difference between this Actor and the WordPress Theme Directory Email Scraper?

Both search `wordpress.org`, but with different path prefixes. This one treats `/plugins/` as the listing path and `themes` as a non-profile segment, so handles resolve to plugin listings. The [WordPress Theme Directory Email Scraper](https://apify.com/leads-scraper/wordpress-theme-directory-email-scraper) does the reverse. They are separate Actors because plugin authors and theme authors are different audiences with different default keywords.

#### Does the WordPress Plugin Directory Email Scraper use the WordPress.org API?

No. It uses no WordPress API, does not log in, and does not open the directory website. Every field comes from publicly indexed Google search results.

#### Is this Actor affiliated with or endorsed by WordPress or Automattic?

No. It is an independent tool built on public Google results, and it is not officially supported by, affiliated with or endorsed by WordPress.org or Automattic.

#### Which domain does the WordPress Plugin Directory Email Scraper search?

`wordpress.org`. Queries are scoped with Google's `site:` operator, and plugin-flavoured keywords keep the results inside the plugin directory.

#### Can the WordPress Plugin Directory Email Scraper find premium plugin vendors who do not list on wordpress.org?

Only if a wordpress.org page mentions them and Google has indexed an email there. Vendors who sell exclusively from their own site are outside the directory and therefore outside this Actor's scope.

#### Why does the WordPress Plugin Directory Email Scraper leave `username` and `profileUrl` empty on some rows?

Those fields are only filled when Google's result exposes a usable handle. When Google prints only a display name you still get `accountName` and `fullName`, but no handle. This is a Google limitation, not a bug.

#### What does `possiblyTruncated: true` mean?

Google's snippet ellipsis touched the email, so the address may be cut off. Treat those rows as leads to verify rather than addresses to mail.

#### How many emails can one WordPress Plugin Directory Email Scraper run return?

Free Apify plans stop at 100 emails per run. Paid plans are uncapped and bounded by `maxEmails`, which accepts 1 to 10000.

#### Do I need a proxy?

Yes. The WordPress Plugin Directory Email Scraper requires the Apify GOOGLE_SERP proxy and cannot run without Apify proxy credentials.

#### Why did I get fewer emails than `maxEmails`?

Google caps a single query at roughly 300 results, and only some listings publish an indexed email. Widening `keywords` and `customDomains` usually helps more than raising `maxPagesPerQuery`.

#### Can a run be resumed after a migration?

Yes. Progress is stored in the key-value store keyed by a hash of your input, and saved on Apify's `PERSIST_STATE`, `MIGRATING` and `ABORTING` events.

#### Is this data compliant to use?

The WordPress Plugin Directory Email Scraper only collects addresses already public in Google's index. How you use them — GDPR, CAN-SPAM, local marketing rules — remains your responsibility.

### Leave a review

If the WordPress Plugin Directory Email Scraper saved you time, please leave a star rating and
a short review on the Actor page.

Reviews are how other buyers judge whether a tool works, and they tell us which features to
build next.

If something did not work, email <neurodata.apify@gmail.com>
instead - bugs get fixed faster than they get complained about.

### Support

Questions, feature requests or a custom build? Email **neurodata.apify@gmail.com**.

# Actor input Schema

## `keywords` (type: `array`):

Search terms describing the WordPress Plugin Directory accounts you want (niche, job title, industry).

## `location` (type: `string`):

Optional location phrase added to every query (e.g. "New York").

## `customDomains` (type: `array`):

Only emails ending with one of these domains are collected. With or without the leading @. Each domain is searched separately, so more domains means more results but a longer run - remove some for a faster, narrower search, or add your own (e.g. @company.com).

## `maxEmails` (type: `integer`):

Stop once this many unique emails have been collected.

## `countryCode` (type: `string`):

Two-letter country code for the search proxy (e.g. US, GB, DE). Empty for any.

## `expandQueries` (type: `boolean`):

Search each keyword x domain pair with several phrasings. Recommended - Google caps a single query at ~300 results.

## `queryModifiers` (type: `array`):

Extra words combined with each keyword when Expand queries is on. Tuned for WordPress Plugin Directory.

## `maxPagesPerQuery` (type: `integer`):

Google rarely returns more than ~30 pages for one query.

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

How many queries run in parallel.

## Actor input object example

```json
{
  "keywords": [
    "plugin developer",
    "wordpress plugin"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "maxEmails": 20,
  "countryCode": "",
  "expandQueries": true,
  "queryModifiers": [
    "email",
    "contact",
    "support",
    "developer",
    "publisher"
  ],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

# Actor output Schema

## `results` (type: `string`):

Records produced by WordPress Plugin Directory Email Scraper, stored in the run's default dataset.

# 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 = {
    "keywords": [
        "plugin developer",
        "wordpress plugin"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com"
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "support",
        "developer",
        "publisher"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("neuro-scraper/wordpress-plugin-directory-email-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 = {
    "keywords": [
        "plugin developer",
        "wordpress plugin",
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com",
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "support",
        "developer",
        "publisher",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("neuro-scraper/wordpress-plugin-directory-email-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 '{
  "keywords": [
    "plugin developer",
    "wordpress plugin"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "countryCode": "",
  "queryModifiers": [
    "email",
    "contact",
    "support",
    "developer",
    "publisher"
  ]
}' |
apify call neuro-scraper/wordpress-plugin-directory-email-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,neuro-scraper/wordpress-plugin-directory-email-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/GEI2E4z222dcQSkA1/builds/kn80JVor5Z4HX325p/openapi.json
