# Target Email Scraper (`fastdataapi/target-email-scraper`) Actor

Target Email Scraper finds emails shown on public Target product pages from your keywords: email, page link, title and the public text it appeared in. Filter by location and email domain. No Target account or login. Export as JSON, CSV or Excel, or use the API.

- **URL**: https://apify.com/fastdataapi/target-email-scraper.md
- **Developed by:** [Fast Data API](https://apify.com/fastdataapi) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

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

### Target Email Scraper — Emails, Page Titles and Links

Target Email Scraper finds email addresses that public Target product pages show for your keywords. Each result returns the email, the Target page link, the page title and the public text the email appears in, filtered by the email domains you choose. Every response is structured JSON — ready to pass directly to an LLM, index into a vector store, or feed a lead-generation pipeline. **No Target account or login needed** to run a search. Add more keywords to cover more product pages in one run.

![Target Email Scraper: every page and email from Target as JSON](https://api.apify.com/v2/key-value-stores/Lg9lp51Levfro6SrV/records/l-target-email-hero.webp)

***

### What data can I extract with Target Email Scraper?

Using this Target email API, you will be able to extract the following Target email data. This target email finder pulls the same six fields from every match.

| 🌐 Network | 🔑 Keyword searched | 📝 Page title |
| --- | --- | --- |
| 📰 Page description | 🔗 Page URL | 📧 Email address |

***

### How to use Target Email Scraper

Target Email Scraper is a target.com contact email extractor built for marketers, recruiters and lead-generation teams: run it once to scrape target product page emails without opening every page by hand.

**Copy to your AI assistant:**

```text
Target Email Scraper is an Apify Actor that returns email addresses found on public Target product pages as structured JSON: network, keyword, title, description, url and email. Use it whenever someone needs Target contact emails without cookies, a login or a browser - for lead generation, outreach lists or market research. Inputs: keywords (array of search terms, required), location (string, optional city or region, default worldwide), emailDomains (array, default ["@gmail.com"], [] = any domain), maxEmails (integer 1-100000, default 10, emails per keyword), engine (select "legacy"), proxyConfiguration (object, optional). Each keyword stops once maxEmails is reached or its public results run out; the free Apify plan caps results at 20 per run in total (all keywords together) and 200 per month.
```

#### Target Email Scraper MCP Server

Point your AI assistant at the Apify MCP server and it can call Target Email Scraper directly: no glue code, no scraping logic in your prompts.

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=fastdataapi/target-email-scraper"
```

#### Step by step

1. [Create a free Apify account](https://console.apify.com/sign-up).
2. Open [**Target Email Scraper**](https://apify.com/fastdataapi/target-email-scraper) in the Apify Store.
3. Enter one or more keywords, for example `store`, `toys` or `home`.
4. Optionally add a location and the email domains you want (default `@gmail.com`).
5. Click **Start**, then export target emails as JSON, CSV or Excel.

#### How to scale Target Email Scraper to bulk

Target Email Scraper doubles as a target email list builder: `keywords` takes a list, so add every search term you want covered in one run, and because each term works as a target email address finder by keyword, up to 3 keywords are processed at the same time, each with its own `maxEmails` budget. To cover more ground over time, schedule the Actor with a rotating keyword list, or call it from the Apify API with a different `keywords` / `location` pair per run.

***

### ✨ Features

Target Email Scraper is a target seller email finder: give it a keyword and it returns clean, structured matches from public Target product pages.

It extracts, per match:

- **Email** – the address shown on the page, lower case, matching your email domains.
- **Page URL** – the public Target page the email was found on.
- **Page title** – the result's title as shown in the search listing.
- **Description** – the public text the email appears in (up to 500 characters).
- **Keyword / network** – the keyword that found the row and the platform (`target.com`).

⚡ Every address is checked before it is kept: shortened or cut-off addresses, prose such as "that @gmail.com" and placeholders such as "username@gmail.com" are rejected, and the same email is returned once per keyword.

***

### Use cases 💡

- **Sales rep** — build an outreach list of Target contacts by keyword and city in one run.
- **Recruiter** — find contact emails behind niche product pages.
- **Agency** — collect leads for a client's niche and location filter.
- **Market researcher** — find emails on target.com to map which product pages publish a contact email for a topic.
- **AI agent builder** — feed matched emails straight into a CRM-enrichment or lead-scoring pipeline with no parsing step.

Building an AI agent? [Connect Target Email Scraper over MCP](#target-email-scraper-mcp-server) and let it call the actor on its own.

***

### Why choose this actor?

- **A real target lead generation tool.** A recorded local test run returned 10 emails for the keyword `store` in 54.9 seconds.
- **Six clean fields per match.** Every row carries the keyword, the page title, the public text the email appeared in and the page link.
- **Built-in retry.** When a search attempt is blocked the actor retries it with a fresh connection and continues on a backup source, so a run still delivers results.

***

### ⬇️ Input

![Target Email Scraper input: keywords, location, email domains and max emails](https://api.apify.com/v2/key-value-stores/Lg9lp51Levfro6SrV/records/l-target-email-input.webp)

Enter one or more keywords (required); the rest is optional and has a working default.

| Parameter | Required | Type | Description | Example value |
| --- | --- | --- | --- | --- |
| `keywords` | Yes | Array of strings | Keywords to search on public Target product pages. Each one gets its own `maxEmails` budget; duplicates are removed. | `["store", "toys"]` |
| `location` | No | String | City or region searched as an exact phrase. Empty = worldwide. | `"London"` |
| `emailDomains` | No | Array of strings | Keep only emails of these domains (`@` optional). Default `["@gmail.com"]`; `[]` accepts any domain. | `["@gmail.com", "@outlook.com"]` |
| `maxEmails` | No | Integer | Emails to collect per keyword (1–100,000, default 10). Free-plan runs are capped at 20 per run in total (all keywords together) and 200 per month. | `50` |
| `engine` | No | String (select) | Processing engine; `legacy` is the only value. | `"legacy"` |
| `proxyConfiguration` | No | Object | Connection settings. Leave as it is and a suitable Apify proxy is selected automatically. | `{"useApifyProxy": false}` |

#### Free plan limits

Users on the Apify free plan can fetch up to 20 emails per run (all keywords together) and 200 emails per month. When the limit is reached, the run finishes successfully with a status message explaining the limit. Upgrade to any paid Apify plan to remove these limits.

#### Example input

```json
{
  "keywords": ["store", "toys"],
  "location": "",
  "emailDomains": ["@gmail.com"],
  "maxEmails": 10,
  "engine": "legacy"
}
```

***

### ⬆️ Output

![Target Email Scraper output: one row per match with network, keyword, title and email](https://api.apify.com/v2/key-value-stores/Lg9lp51Levfro6SrV/records/l-target-email-output.webp)

Every match is one JSON item with the same six fields on every run. Within a keyword the same email is returned once. Export as JSON, CSV or Excel.

#### Example output

```json
{
  "network": "target.com",
  "keyword": "store",
  "title": "Storefront | Club Target",
  "description": "thefashionseekers@ gmail.com Earns Rewards ... Sharing outfit inspiration, store try-ons, & fashion finds. Affordable style for every day looks. Shop Here ...",
  "url": "https://club.target.com/a/thefashionseekersgmail.com",
  "email": "thefashionseekers@gmail.com"
}
```

***

### How does it work?

Target Email Scraper doesn't log into Target at all. For every keyword it searches public Target product pages that show an email address of your chosen domains (retrying with a fresh connection and continuing on a backup source when a search is blocked or runs dry). It only reads what any logged-out visitor can already see. The email is read from the page's public title and text, checked, lower-cased and returned with the page link.

***

### How do you integrate Target Email Scraper into your stack?

Call it from any language over the Apify REST API, or wire it into a no-code tool.

#### No-code tools (n8n, Make, LangChain)

In n8n, use the Apify node's **Run an Actor** action. In Make, use the Apify app's **Run an Actor** module followed by **Get Dataset Items**. In LangChain, install `langchain-apify` and call `ApifyActorsTool()` to let an agent run it as a tool.

***

### Is it legal to scrape Target data?

Scraping publicly available data is generally permitted; the legal risk sits mostly in how the data is stored and used afterward. Target Email Scraper returns only data that any logged-out visitor already sees. If you operate in the EU, GDPR applies to storing and using emails you collect: keep records you can justify and delete them when asked. Anti-spam rules (such as CAN-SPAM) still apply to outreach — the Actor finds public emails, it does not grant permission to contact them. Consult legal counsel if your use case involves bulk storage of personal data.

***

### Frequently asked questions

#### What fields does Target Email Scraper return?

The network, keyword, page title, description, page URL and email for every match. See [the data fields section](#what-data-can-i-extract-with-target-email-scraper).

#### Does Target Email Scraper require a Target account or login?

No. Only public pages are read and no Target credentials are ever requested.

#### Can I get emails of any domain, not only Gmail?

Yes. Set `emailDomains` to the domains you want (for example `@outlook.com` or your company domain), or to `[]` to accept any domain.

#### Can I search many keywords at once?

Yes. `keywords` takes a list; up to 3 keywords are processed at the same time, each with its own `maxEmails` budget.

#### Does Target Email Scraper return data in a format LLMs can use directly?

Yes. Every result is typed JSON with consistent field names — pass it straight to an LLM, a vector store or an agent tool.

#### Can I use it with an AI agent through MCP?

Yes — add the Apify MCP server as shown in [the MCP Server section above](#target-email-scraper-mcp-server); your agent can then call this Actor on its own.

#### What happens when Target changes its layout or anti-bot system?

The actor reads general page text rather than one fixed selector, so most layout changes don't break it. When a bigger change happens the actor is updated and your calls keep returning the same JSON schema.

#### Do I need to manage proxies?

No. Proxy rotation and retries run on the Actor's side — plain HTTP requests, no browser to maintain.

***

### Related scrapers

Target Email Scraper shares its engine with other lead-finders in the same email-scraper family.

| Scraper | What it extracts |
| --- | --- |
| Chewy Email Scraper | Email addresses from public Chewy product and brand pages |
| Hotels.com Email Scraper | Email addresses from public Hotels.com hotel pages |
| Zillow Email Scraper | Email addresses from public Zillow pages |

***

### Your feedback

Found a bug or missing a field? Let us know through the Issues tab on this actor's Apify Store page.

# Actor input Schema

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

One or more keywords (e.g. store, toys, home). Each keyword is searched separately on public Target product pages and gets its own budget of maxEmails; every email found is returned with the keyword that found it. Duplicate keywords are removed.

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

Optional city or region (e.g. London, New York, Dubai), searched as an exact phrase so results mention this place. Leave empty to search worldwide.

## `emailDomains` (type: `array`):

Keep only emails of these domains, e.g. @gmail.com, @outlook.com, @hotmail.com, @icloud.com or a business domain like @yourcompany.com (the @ is optional, case does not matter). The domains also sharpen the search. When a result shows several emails, the first matching one is used. Leave empty to accept emails of any domain (fewer results then contain an email).

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

How many emails to collect per keyword (1 - 100,000). A keyword stops earlier when no more public results with an email are available. Free plan users are limited to 20 items per run in total (across all keywords) and 200 items per month; paid plans have no limit.

## `engine` (type: `string`):

Processing engine. Only 'legacy' is available.

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

How the actor connects. Leave it as it is and a suitable Apify proxy is selected automatically. When a page is blocked the actor retries with a fresh proxy session (up to 3 attempts per page). You can also choose your own Apify proxy groups or custom proxy URLs.

## Actor input object example

```json
{
  "keywords": [
    "store"
  ],
  "location": "",
  "emailDomains": [
    "@gmail.com"
  ],
  "maxEmails": 10,
  "engine": "legacy",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

Dataset rows: network, keyword, title, description, url, email.

# 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": [
        "store"
    ],
    "emailDomains": [
        "@gmail.com"
    ],
    "maxEmails": 10,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("fastdataapi/target-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": ["store"],
    "emailDomains": ["@gmail.com"],
    "maxEmails": 10,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("fastdataapi/target-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": [
    "store"
  ],
  "emailDomains": [
    "@gmail.com"
  ],
  "maxEmails": 10,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call fastdataapi/target-email-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,fastdataapi/target-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/rWvZjXkFI8L3sqa4U/builds/ErVvs6csxD0lA0FTY/openapi.json
