# ZipRecruiter Email Scraper (`email_scraper/ziprecruiter-email-scraper`) Actor

ZipRecruiter Email Scraper finds publicly indexed ZipRecruiter contact emails using targeted keywords, locations, and custom email domains. Extract structured lead data with titles, descriptions, URLs, and emails into an Apify Dataset.

- **URL**: https://apify.com/email\_scraper/ziprecruiter-email-scraper.md
- **Developed by:** [Email Scraper](https://apify.com/email_scraper) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.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

### 🔍 ZipRecruiter Email Scraper – Overview

**ZipRecruiter Email Scraper** is an Apify Actor designed to discover publicly indexed email addresses associated with ZipRecruiter search results using targeted keywords, email domains, and optional geographic filters.

It is useful for recruiting research, talent sourcing, lead generation, business development, market research, and professional contact discovery. Instead of manually searching many combinations of job titles, locations, and email domains, you can define your search criteria and let the Actor process them systematically.

The **ZipRecruiter Email Scraper** accepts multiple keywords such as `Recruiter`, `Hiring Manager`, `Talent Acquisition`, or other relevant professional search terms. You can also specify email suffixes such as `@gmail.com`, `@yahoo.com`, or custom domains.

The Actor examines publicly available search-result descriptions associated with ZipRecruiter results and extracts email addresses matching the selected domains. Each discovered contact is stored with its keyword, result title, description, URL, and email address.

> 💡 **What ZipRecruiter Email Scraper provides**
>
> - Keyword-based ZipRecruiter contact discovery
> - Multiple search keywords in one run
> - Custom email-domain targeting
> - Optional country, state, or city filtering
> - Exclusion words and phrase filtering
> - Per-keyword + domain result targets
> - Duplicate email filtering
> - Incremental Apify Dataset output
> - Saved progress for interrupted runs

The **ZipRecruiter Email Scraper** works with publicly indexed information. It does not guarantee that every ZipRecruiter result contains an email address, because the available contact information depends on what is publicly indexed and discoverable for the selected search criteria.

***

### 🔎 ZipRecruiter Email Scraper – SEO Description

**ZipRecruiter Email Scraper** finds publicly indexed ZipRecruiter contact emails using targeted keywords, locations, and custom email domains. Extract structured lead data with titles, descriptions, URLs, and emails into an Apify Dataset.

***

### 🔹 ZipRecruiter Email Scraper – Key Features

The **ZipRecruiter Email Scraper** combines targeted search queries, email-domain filtering, location targeting, exclusion rules, duplicate detection, and structured data collection.

> 🚀 **Key Features**
>
> - **Keyword-based search** — Search for ZipRecruiter results using specific keywords or professional queries.
> - **Multiple keywords** — Process several search terms in one Actor run.
> - **Custom email domains** — Search for `@gmail.com`, `@yahoo.com`, `@outlook.com`, or other suffixes.
> - **Location targeting** — Narrow discovery by country, state, city, or another manually entered region.
> - **Exclude words** — Ignore search-result descriptions containing unwanted terms or phrases.
> - **Per-combination limits** — Define the maximum number of emails for each keyword + domain combination.
> - **Duplicate prevention** — Previously discovered email addresses are not collected again.
> - **Structured Dataset output** — Store discovered lead records in an Apify Dataset.
> - **Incremental collection** — Records are pushed as they are discovered.
> - **Progress persistence** — Saved progress allows the workflow to resume after an interruption.

These features make the **ZipRecruiter Email Scraper** suitable for both focused searches and broader professional contact discovery.

***

### 🎯 Why Use ZipRecruiter Email Scraper?

Professional contact research can become repetitive when you need to search multiple job titles, locations, and email domains individually.

The **ZipRecruiter Email Scraper** turns that process into a configurable search workflow. You define the keywords, optional location, desired email domains, maximum result target, and unwanted terms.

For example, a recruiting research project could use:

- `Recruiter`
- `Hiring Manager`
- `Talent Acquisition`
- `HR Manager`
- `Recruitment Manager`

You can then combine these terms with multiple email domains to expand the search scope.

> 📌 **Why this workflow is useful**
>
> - Multiple keywords help cover related search intent.
> - Specific professional terms can produce more targeted results.
> - Multiple domains expand email-suffix coverage.
> - Geographic filters support regional research.
> - Exclusion rules help remove unwanted categories.
> - Structured records simplify lead review.
> - Duplicate filtering keeps discovered emails cleaner.

The **ZipRecruiter Email Scraper** is therefore useful when you want a repeatable method for finding publicly indexed contact information connected with ZipRecruiter search results.

***

### 📊 ZipRecruiter Email Scraper – What Data Can You Extract?

The **ZipRecruiter Email Scraper** produces structured records containing information about the search result and the email discovered from its available description.

The Actor pushes a `network` field into each dataset record, while the configured default dataset view displays the five primary lead fields.

| Field         | Description                                          | Default View |
| ------------- | ---------------------------------------------------- | ------------ |
| `network`     | Identifies the source as `ZipRecruiter.com`          | No           |
| `keyword`     | Keyword used for the search                          | Yes          |
| `title`       | Title of the discovered search result                | Yes          |
| `description` | Search-result description associated with the result | Yes          |
| `url`         | URL returned by the search result                    | Yes          |
| `email`       | Matching email address discovered in the description | Yes          |

The `description` field can provide useful context around the discovered email because the Actor extracts matching addresses from publicly available search-result descriptions.

> 📦 **Dataset information**
>
> - Dataset name: **ZipRecruiter Emails Dataset**
> - Default view: **Scraped Leads**
> - Displayed fields: keyword, title, description, URL, email
> - Output is stored incrementally as records are discovered

The actual number of records depends on the availability of publicly indexed matching results.

***

### ⚙️ ZipRecruiter Email Scraper – How to Use It

Using the **ZipRecruiter Email Scraper** starts with defining the audience or professional roles you want to research.

A sample input configuration is:

```json
{
  "keywords": [
    "Recruiter",
    "Hiring Manager",
    "Talent Acquisition"
  ],
  "location": "New York",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com",
    "@outlook.com"
  ],
  "maxEmails": 20,
  "excludeWords": [
    "crypto",
    "onlyfans"
  ]
}
```

> 🛠️ **Recommended workflow**
>
> - Add several relevant and specific keywords.
> - Add a location if geographic targeting is required.
> - Select the email domains you want to search.
> - Set `maxEmails` according to your desired search depth.
> - Add exclusion terms if certain categories should be skipped.
> - Run the Actor and review the resulting Dataset records.

Start with a small test run to evaluate keyword relevance. Once you find a useful search pattern, expand the keyword and domain lists.

***

### 🔎 How to Extract ZipRecruiter Emails Using Keywords

The **ZipRecruiter Email Scraper** uses targeted search queries to discover publicly indexed ZipRecruiter-related results.

For each keyword and email domain, the Actor creates a search query focused on ZipRecruiter. If a location is supplied, the location is also incorporated into the search criteria.

The Actor then examines available search-result descriptions for email addresses matching the configured domain suffix.

> 🔍 **General workflow**
>
> - Enter one or more keywords.
> - Select one or more email domains.
> - Optionally provide a location.
> - Search for relevant ZipRecruiter results.
> - Examine available result descriptions.
> - Skip descriptions matching `excludeWords`.
> - Extract matching email addresses.
> - Ignore previously collected duplicate emails.
> - Push valid records into the Apify Dataset.

This is a **search-based email discovery workflow**, not a claim that every ZipRecruiter page is directly crawled or that every profile can be accessed.

Because search engines only expose publicly indexed information, results can vary by keyword, location, email domain, and current search availability.

***

### 🧩 Can ZipRecruiter Email Scraper Search Multiple Keywords?

Yes. The `keywords` input accepts an array of strings, allowing you to create multiple search combinations in one run.

Specific keywords are generally useful when you have a clearly defined target audience.

For example, instead of only searching for `Recruiter`, you could use:

- `Technical Recruiter`
- `IT Recruiter`
- `Executive Recruiter`
- `Talent Acquisition Manager`
- `Corporate Recruiter`

For business research, you could use terms such as:

- `Founder`
- `CEO`
- `Business Owner`
- `Hiring Manager`
- `HR Director`

The best keyword selection depends on the type of contacts you are trying to discover.

> 💡 **Keyword tip**
>
> If results are sparse, broaden the search with related professional terms. If results are too broad, use more specific job titles, skills, industries, or roles.

***

### 📧 Can You Search Multiple Email Domains?

Yes. The **ZipRecruiter Email Scraper** supports multiple custom email suffixes through the `customDomains` field.

The default configuration uses:

```json
["@gmail.com"]
```

You can expand it to include other domains:

```json
[
  "@gmail.com",
  "@yahoo.com",
  "@outlook.com",
  "@hotmail.com"
]
```

Custom company domains are also supported when you know the relevant suffix.

Each keyword + domain combination is processed independently according to the configured maximum.

For example, 3 keywords and 2 domains create 6 search combinations.

***

### 📍 Can ZipRecruiter Email Scraper Target a City or Country?

Yes. The optional `location` field allows you to narrow the search geographically.

You can manually enter values such as:

- `New York`
- `Los Angeles`
- `California`
- `London`
- `Toronto`
- `United States`

Leaving the field empty performs the search without an explicit geographic filter.

> 📍 **Location guidance**
>
> - Use a city when researching a local market.
> - Use a state or region for broader geographic targeting.
> - Use a country for country-level research.
> - Leave the field blank when you want broader discovery.
> - If a location produces too few results, try a broader location or remove the filter.

***

### 🚫 How Does the ZipRecruiter Exclude Words Filter Work?

The `excludeWords` field allows you to skip result descriptions that contain unwanted terms.

For example:

```json
{
  "excludeWords": [
    "crypto",
    "onlyfans",
    "unrelated business"
  ]
}
```

If a configured word or phrase appears in a result description, the entire snippet is skipped and no email is extracted from that snippet.

Single-word matching ignores capitalization and uses whole-word matching. Phrases are matched as phrases.

This can help reduce irrelevant records when your search terms produce mixed categories.

***

### 💼 ZipRecruiter Email Scraper – Use Cases

The **ZipRecruiter Email Scraper** can support multiple professional research and lead-generation workflows.

#### 🎯 Recruiting and Talent Sourcing

Search for recruiters, talent acquisition professionals, hiring managers, or HR roles when researching recruitment-related contacts.

#### 🏢 Business Development

Use professional roles, company-related keywords, and geographic terms to identify publicly indexed contacts relevant to business-development research.

#### 📈 Lead Generation

Build targeted lead lists using keyword combinations, email-domain filters, and optional location targeting.

#### 🌎 Local Prospecting

Use a city, state, or country to focus your search on a particular geographic market.

#### 🔍 Market Research

Search professional roles and industry-related terms to study publicly indexed business contacts and search-result patterns.

#### 🤝 Partnership Research

Research founders, business owners, managers, or other professional roles when looking for potential business relationships.

> ⚠️ **Responsible use**
>
> Use collected contact information responsibly and comply with applicable privacy, data-protection, anti-spam, and communication regulations. The Actor is intended for publicly available, search-indexed information.

***

### 📝 Input

The **ZipRecruiter Email Scraper** supports five input fields.

| Input           | Type             | Required | Default                       |
| --------------- | ---------------- | -------: | ----------------------------- |
| `keywords`      | Array of strings |      Yes | `Recruiter`, `Hiring Manager` |
| `location`      | String           |       No | Empty                         |
| `customDomains` | Array of strings |       No | `@gmail.com`                  |
| `maxEmails`     | Integer          |       No | `5`                           |
| `excludeWords`  | Array of strings |       No | Empty                         |

#### 🔑 Keywords or Queries

`keywords` is required and accepts multiple search terms.

The configured Actor examples use `Recruiter` and `Hiring Manager`, but you can replace them with terms relevant to your research.

#### 📍 Region / Location

`location` is optional and narrows the search by a manually entered geographic term.

#### 📧 E-mail Domain Suffixes

`customDomains` controls the email suffixes that the Actor looks for.

You can provide one or multiple values.

#### 🔢 Maximum Emails

`maxEmails` accepts values from `1` through `10000`.

The setting is applied independently to each keyword + domain combination. It is not a single shared target for the entire keyword/domain matrix.

#### 🚫 Exclude Words

`excludeWords` accepts words or phrases that should cause matching search-result descriptions to be skipped.

***

### 📤 ZipRecruiter Email Scraper – Output Format

A representative output record is:

```json
{
  "network": "ZipRecruiter.com",
  "keyword": "Recruiter",
  "title": "Example ZipRecruiter Result",
  "description": "Example search-result description containing example@gmail.com",
  "url": "https://www.ziprecruiter.com/example",
  "email": "example@gmail.com"
}
```

> 📌 **Sample output note**
>
> This example is illustrative. Actual result titles, descriptions, URLs, and emails depend on the publicly indexed search results available during the run.

The default Apify Dataset view displays:

- `keyword`
- `title`
- `description`
- `url`
- `email`

The `network` value is also included in the pushed dataset record but is not part of the configured default table view.

***

### 💰 ZipRecruiter Email Scraper – Pricing and Limits

The Actor configuration does not specify a fixed monetary price for the **ZipRecruiter Email Scraper**.

The code does include a plan-dependent result restriction.

> 💰 **Important result-limit information**
>
> - `maxEmails` accepts values from 1 to 10,000.
> - Free-tier runs apply a maximum of 100 emails per keyword + domain combination.
> - Paid runs are not subject to that specific 100-email code-level restriction.
> - `maxEmails` is a target/cap, not a guarantee.
> - Actual results depend on publicly indexed matching information.
> - Larger keyword and domain combinations can require more search time.

The Actor configuration indicates a default run timeout of 3600 seconds. Broad searches may therefore require additional runtime depending on the number of keywords, domains, locations, and available search results.

***

### 💡 ZipRecruiter Email Scraper – Tips and Best Practices

A thoughtful search strategy can make the **ZipRecruiter Email Scraper** more useful for targeted research.

> 💡 **Recommended practices**
>
> - Use several related keywords instead of one generic search term.
> - Combine broad roles with specific professional titles.
> - Add multiple relevant email domains.
> - Use location targeting only when geographic relevance matters.
> - Broaden the location when results are too limited.
> - Test keywords with a smaller `maxEmails` value first.
> - Add exclusion terms when irrelevant categories appear.
> - Review descriptions and URLs before using contacts for outreach.
> - Increase the search scope gradually rather than starting with an unnecessarily large matrix.
> - Respect applicable privacy, data-protection, and anti-spam requirements.

If a run returns fewer records than expected, consider broadening keywords, adding email domains, or removing an overly restrictive location.

***

### ❓ Frequently Asked Questions

#### ❓ What is ZipRecruiter Email Scraper?

**ZipRecruiter Email Scraper** is an Apify Actor that searches publicly indexed ZipRecruiter-related results for email addresses matching your selected keywords and email domains.

It returns structured information including keyword, title, description, URL, and email.

#### ❓ How does ZipRecruiter Email Scraper find emails?

The **ZipRecruiter Email Scraper** examines publicly available search-result descriptions and extracts email addresses that match the email suffixes configured in `customDomains`.

#### ❓ Does ZipRecruiter Email Scraper scrape every ZipRecruiter profile?

No. The Actor relies on search-based discovery and publicly indexed information. It should not be interpreted as a complete crawler of every ZipRecruiter profile.

#### ❓ Can I use multiple keywords in one run?

Yes. The `keywords` field accepts an array, allowing you to search several roles, professions, industries, or related terms.

#### ❓ Can I search Gmail, Yahoo, and Outlook together?

Yes. Add all desired email suffixes to `customDomains`.

For example:

```json
[
  "@gmail.com",
  "@yahoo.com",
  "@outlook.com"
]
```

#### ❓ Is maxEmails a total run-wide limit?

No. The configured limit applies independently to each keyword + domain combination.

For example, 3 keywords × 2 domains × 20 emails creates 6 combinations, with a target of up to 20 emails for each combination, subject to available results and duplicate filtering.

#### ❓ Can I search ZipRecruiter contacts by city?

Yes. Enter a city, state, country, or other geographic term in the `location` field.

#### ❓ What if I get fewer emails than the maxEmails value?

`maxEmails` is a maximum target, not a guarantee. If insufficient matching email addresses are publicly indexed, the Actor may return fewer results.

#### ❓ Does ZipRecruiter Email Scraper remove duplicate emails?

Yes. The Actor tracks discovered email addresses and avoids collecting the same email address repeatedly during the run.

#### ❓ What does excludeWords do?

If a configured word or phrase appears in a search-result description, that entire description is skipped and no email is extracted from it.

#### ❓ Can ZipRecruiter Email Scraper resume after an interruption?

The Actor saves progress and discovered email information during the run, allowing the workflow to continue from persisted progress after an interruption.

#### ❓ Where does ZipRecruiter Email Scraper store results?

Results are pushed incrementally into the configured **ZipRecruiter Emails Dataset**. The default **Scraped Leads** view presents the primary contact fields in a table.

#### ❓ What is a good keyword strategy for ZipRecruiter Email Scraper?

Use several related and specific professional terms. For recruiting research, combinations such as `Recruiter`, `Technical Recruiter`, `Talent Acquisition`, and `Hiring Manager` can create different search paths.

#### ❓ Can I use a custom company email domain?

Yes. The `customDomains` field supports custom email suffixes in addition to common domains such as Gmail, Yahoo, and Outlook.

#### ❓ Why are my ZipRecruiter results sparse?

Sparse results can occur when the keyword, location, or email domain is too restrictive. Try broader keywords, additional email suffixes, or a wider geographic search.

***

### 🤝 Support

For questions about the **ZipRecruiter Email Scraper**, keyword strategy, search configuration, result coverage, or custom Actor requirements, you can contact me by email.

**contact me by email : <alphascraper69@gmail.com>**

# Actor input Schema

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

A list of keywords or queries to search for.

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

Optional country, state or city used to narrow the search. Leave it empty to search without a geographic filter.

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

List of custom email domains

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

How many addresses each search keyword + domain suffix combination may collect before the finder moves on to the next one. This is a per-combination target, not a run-wide total: with 3 keyword and 2 Domains and a limit of 20, the run works through all 6 combinations and aims for up to 20 addresses in each, so up to 120 overall. Lower values finish sooner and cost less; higher values dig deeper but never guarantee a fuller result, since the run can only find what is publicly listed.

## `excludeWords` (type: `array`):

Words or phrases you do not want to see.

## Actor input object example

```json
{
  "keywords": [
    "Recruiter",
    " Hiring Manager"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com"
  ],
  "maxEmails": 5,
  "excludeWords": []
}
```

# Actor output Schema

## `dataset` (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 = {
    "keywords": [
        "Recruiter",
        " Hiring Manager"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com"
    ],
    "excludeWords": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("email_scraper/ziprecruiter-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": [
        "Recruiter",
        " Hiring Manager",
    ],
    "location": "",
    "customDomains": ["@gmail.com"],
    "excludeWords": [],
}

# Run the Actor and wait for it to finish
run = client.actor("email_scraper/ziprecruiter-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": [
    "Recruiter",
    " Hiring Manager"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com"
  ],
  "excludeWords": []
}' |
apify call email_scraper/ziprecruiter-email-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,email_scraper/ziprecruiter-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/9JT0AiIXJ0y7D5Jo2/builds/AeoZsMU51xzEMarBb/openapi.json
