# Pinterest Email Scraper (`leads-scraper/pinterest-email-scraper`) Actor

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

- **URL**: https://apify.com/leads-scraper/pinterest-email-scraper.md
- **Developed by:** [Leads Scraper](https://apify.com/leads-scraper) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 0.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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Pinterest Email Scraper

### Pinterest Email Scraper

The **Pinterest Email Scraper** is an Apify Actor that finds publicly indexed contact emails belonging to Pinterest creators, shop owners and brand accounts. It turns a list of keywords into a clean, structured dataset of leads.

Pinterest is where interior designers, wedding planners, food bloggers, print-on-demand sellers and Etsy shop owners publish their catalogues. Many of them drop a booking or collab email straight into their profile description, and Google indexes it.

The Pinterest Email Scraper exists to harvest exactly those public addresses, at scale, with the account metadata attached.

This Pinterest Email Scraper reads those public Google search results and pulls the email out. It never logs in, never opens pinterest.com, and never touches private data.

If you have ever run a manual `site:pinterest.com "designer" "@gmail.com"` search and copied addresses one by one, the Pinterest Email Scraper is that workflow automated, expanded across dozens of query phrasings, deduplicated, and exported as JSON or CSV.

Think of it as a Pinterest email extractor and Pinterest lead generation tool in one: a focused crawler for contact discovery rather than a general-purpose Pinterest scraper.

***

### Key Features of the Pinterest Email Scraper

| Feature | What it means in practice |
|---|---|
| Google-powered data collection | Queries are built with the `site:pinterest.com` operator and fetched through the Apify GOOGLE\_SERP proxy |
| Query expansion | Every keyword x email-domain pair is searched as a base query, a quoted phrase, an `intitle:` query, and one variant per modifier |
| Domain filtering | Only emails on the domains you list (`@gmail.com`, `@yahoo.com`, your own) are kept |
| Global deduplication | An email is pushed to the dataset once, no matter how many queries surfaced it |
| Obfuscation handling | Understands `name [at] domain [dot] com`, `name (at) domain`, `name @ 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` |
| Structural parser | Locates each result's `<h3>` and the smallest surrounding block, instead of depending on Google's CSS class names |
| Fallback parser | If Google's markup changes, the crawler degrades to "emails without account details" rather than returning nothing |
| Concurrency control | An `asyncio` worker pool runs several queries in parallel with a shared stop signal |
| Retry logic | Up to 3 attempts per page with exponential backoff and a fresh proxy session per request |
| Block detection | CAPTCHA, "unusual traffic" and consent pages are detected and retried, not counted as empty |
| Blocked-query requeue | Queries that failed are put back in the queue once at the end of the run |
| Resumable state | Progress is stored in the key-value store, keyed by an input hash, and saved on `PERSIST_STATE`, `MIGRATING` and `ABORTING` |
| Streaming output | Each lead is pushed to the dataset immediately, so partial results survive an abort |
| Run summary | Logs pages fetched, blocked pages, retries and emails per page |

Every one of these features exists because email extraction from search results is messy. The Pinterest Email Scraper is built to fail gracefully rather than silently.

That matters most on long runs, where a single markup change or a burst of blocked pages would otherwise wipe out an hour of data collection.

***

### How the Pinterest Email Scraper Works

The Pinterest Email Scraper is a search-engine crawler, not a platform client. Here is the whole pipeline.

1. **Read input.** Keywords, location, email domains, limits and concurrency.
2. **Build queries.** The Actor combines `site:pinterest.com`, your keyword, the quoted email domain and your optional location phrase.
3. **Fetch search results.** Pages are requested asynchronously with `aiohttp` through the Apify GOOGLE\_SERP proxy.
4. **Parse structurally.** Each result block is located via its `<h3>` title and the tightest surrounding container.
5. **Extract emails.** A domain-filtered regex runs over the block text, with normalisation and the junk filter applied.
6. **Deduplicate and push.** New addresses are added to a global set and written to the Apify dataset as they are found.

Base queries always run first, so the highest-signal results land in your dataset early.

Pagination continues per query until the page cap, the email cap, or a run of pages producing no new addresses. This is why the Pinterest Email Scraper rarely wastes budget on exhausted queries.

***

### What Data Does It Extract?

Every row the Pinterest Email Scraper writes is a single email address plus the account context Google printed alongside it.

You get the account label Pinterest shows in search (often a board owner or shop name), a display name when the title is profile-shaped, a canonical profile URL when a handle is exposed, and the bio or pin caption snippet the email came from.

You also get full provenance: which keyword produced the lead, and the exact Google query used. That makes the output of the Pinterest Email Scraper auditable and easy to attribute back to a campaign.

***

### Input Fields

All input to the Pinterest Email Scraper is configured from the Apify Console form or passed as JSON via the API.

| Field | Type | Default | Description |
|---|---|---|---|
| `keywords` | array (required) | `["designer", "shop owner"]` | Search terms describing the Pinterest accounts you want |
| `location` | string | `""` | Optional location phrase added to every query |
| `customDomains` | array | `["@gmail.com", "@yahoo.com"]` | Only emails on these domains are kept; the leading `@` is optional |
| `maxEmails` | integer (1-10000) | `20` | Stop once this many unique emails are collected |
| `countryCode` | string | `""` | Two-letter country code for the search proxy (US, GB, DE...) |
| `expandQueries` | boolean | `true` | Search each keyword x domain pair in several phrasings |
| `queryModifiers` | array | `["email", "contact", "business inquiries", "collab", "booking", "dm"]` | 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 |

The default `queryModifiers` shipped with the Pinterest Email Scraper are tuned for Pinterest, where creators write "collab", "business inquiries" or "booking" next to their address.

***

### Output Schema

Every dataset item produced by the Pinterest Email Scraper contains all fourteen fields below.

| 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 (handle or display name) |
| `fullName` | Display name parsed from a profile-style title; empty for pin captions |
| `username` | URL-safe handle when Pinterest exposes one; otherwise `null` |
| `profileUrl` | Canonical `https://www.pinterest.com/{username}/` URL when a handle is known; otherwise empty |
| `url` | Direct Pinterest link when exposed, else the profile URL |
| `description` | Bio or caption snippet, cleaned of labels and engagement counters |
| `email` | Lower-cased email address |
| `emailDomain` | The matched domain, e.g. `@gmail.com` |
| `possiblyTruncated` | `true` when Google's snippet ellipsis touched the email |
| `foundAt` | ISO 8601 UTC timestamp |

Results from the Pinterest Email Scraper export as JSON, CSV, Excel, XML or HTML from the dataset tab, or straight into your CRM through the Apify API.

The output schema is stable across runs, so you can build a repeatable ingestion pipeline on top of it.

***

### Example Input and Output

A realistic Pinterest Email Scraper configuration for a US home-and-interiors campaign.

#### Input

```json
{
  "keywords": ["interior designer", "wedding planner", "print on demand shop"],
  "location": "Austin",
  "customDomains": ["@gmail.com", "@outlook.com"],
  "maxEmails": 250,
  "countryCode": "US",
  "expandQueries": true,
  "queryModifiers": ["email", "contact", "business inquiries", "collab", "booking"],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

#### Output

```json
{
  "network": "Pinterest",
  "keyword": "interior designer",
  "query": "site:pinterest.com interior designer \"@gmail.com\" \"Austin\"",
  "title": "Marta Vidal | Interior Designer - Pinterest",
  "accountName": "martavidalstudio",
  "fullName": "Marta Vidal",
  "username": "martavidalstudio",
  "profileUrl": "https://www.pinterest.com/martavidalstudio/",
  "url": "https://www.pinterest.com/martavidalstudio/",
  "description": "Austin-based interior designer. Mood boards, sourcing, styling. Business inquiries: marta.vidal.studio@gmail.com",
  "email": "marta.vidal.studio@gmail.com",
  "emailDomain": "@gmail.com",
  "possiblyTruncated": false,
  "foundAt": "2026-08-31T09:14:02Z"
}
```

***

### How to Use the Pinterest Email Scraper

1. Open the Pinterest Email Scraper on Apify and click **Try for free**.
2. Replace the default keywords with the niches you sell to, for example `home staging`, `bridal florist`, `candle shop`.
3. Add the email domains you care about. Keep `@gmail.com` for solo creators; add company domains for brands.
4. Set `maxEmails` to the size of the list you need.
5. Optionally set `location` and `countryCode` to bias search results to one market.
6. Run it, then export the dataset as CSV or pull it via the Apify API.

**Tip:** narrow keywords beat broad ones. `sourdough baker` returns far better leads than `food`, because the query expansion inside the Pinterest Email Scraper multiplies whatever specificity you give it.

**Tip:** raise `maxConcurrency` for speed and lower it if you see blocked pages piling up in the run log.

**Tip:** run the Pinterest Email Scraper twice with different domain sets rather than once with ten domains. Smaller domain sets produce tighter, more targeted search results.

***

### Use Cases

| Use case | How the Pinterest Email Scraper helps |
|---|---|
| Influencer and creator outreach | Build a contact list of Pinterest creators in a niche before pitching a collab |
| Affiliate recruitment | Find pinners already publishing product round-ups in your category |
| Agency prospecting | Collect shop owners who pin constantly but have no paid strategy |
| E-commerce partnerships | Reach Etsy, Shopify and print-on-demand sellers by product vertical |
| Home and interiors PR | Contact designers, stagers and renovation accounts for product placement |
| Wedding and events sales | Reach planners, florists and stationery designers by city |
| Food and recipe marketing | Find recipe bloggers and meal-prep creators with public booking emails |
| Market research | Map who is publishing in a vertical, with metadata for segmentation |
| CRM enrichment | Add a contact channel to accounts you already track by handle |
| Recruiting creative freelancers | Source designers and illustrators who list a contact address |

Agencies typically run the Pinterest Email Scraper once per client vertical and per city, keeping each dataset separate for clean reporting.

***

### Why Use This Pinterest Email Scraper

Most manual prospecting on Pinterest stalls after twenty or thirty profiles. Google caps a single query at roughly 300 results, so one search will never give you a full market.

Query expansion is the answer. The Pinterest Email Scraper reshapes each keyword into base, quoted, `intitle:` and modifier variants, which reaches slices of the index a single query cannot.

The email parsing in the Pinterest Email Scraper is also stricter than a naive regex. Obfuscated addresses are normalised, placeholder addresses are dropped, and soft-wrapped duplicates are collapsed.

Because leads are pushed to the dataset as they are found, an aborted or migrated run still leaves you with usable data. Resumable state means a restarted Pinterest Email Scraper run picks up where it left off.

If your outreach spans several networks, run it alongside the [Instagram Email Scraper](https://apify.com/leads-scraper/instagram-email-scraper) and the [TikTok Email Scraper](https://apify.com/leads-scraper/tiktok-email-scraper) to cover the same creators wherever they publish.

For visual-design niches specifically, the [Behance Email Scraper](https://apify.com/leads-scraper/behance-email-scraper) and [Dribbble Email Scraper](https://apify.com/leads-scraper/dribbble-email-scraper) pair naturally with Pinterest sourcing.

Selling into e-commerce? The [Etsy-adjacent seller audience also lives on Facebook](https://apify.com/leads-scraper/facebook-email-scraper), and long-form creators often keep a newsletter on [Substack](https://apify.com/leads-scraper/substack-email-scraper).

***

### Limitations

Read this before your first Pinterest Email Scraper run. These constraints are honest and structural.

- **Publicly indexed emails only.** If an address is not visible in Google's index, the Pinterest Email Scraper cannot find it. There is no login, no API and no private data.
- **Google's result cap.** A single query returns roughly 300 results maximum. Query expansion exists precisely to work around this, but it is not unlimited.
- **`possiblyTruncated`.** When Google's snippet ellipsis touches the address, this flag is `true`. Verify those rows before sending mail.
- **Apify GOOGLE\_SERP proxy required.** The Actor cannot run without Apify proxy credentials.
- **Free-plan cap.** Free Apify plans are limited to 100 emails per run. Paid plans are uncapped.
- **Handle availability.** `username` and `profileUrl` are only filled when Google exposes a handle. Some rows will have `accountName` and `fullName` but empty `username`/`profileUrl`. That is a Google limitation, not a bug.
- **Variable yield.** Results depend on keywords, domains and location. No volume is guaranteed.

***

### Related Actors

The same engine behind the Pinterest Email Scraper is available for every major network. Pick the one matching your audience.

| Actor | What it collects |
|---|---|
| [Pinterest Email and Phone Number Scraper](https://apify.com/leads-scraper/pinterest-email-and-phone-number-scraper) | Emails and phone numbers from Pinterest |
| [Pinterest Phone Number Scraper](https://apify.com/leads-scraper/pinterest-phone-number-scraper) | Public phone numbers from Pinterest |
| [Behance Email Scraper](https://apify.com/leads-scraper/behance-email-scraper) | Public contact emails from Behance |
| [Bigo Live Email Scraper](https://apify.com/leads-scraper/bigo-live-email-scraper) | Public contact emails from Bigo Live |
| [Bluesky Email Scraper](https://apify.com/leads-scraper/bluesky-email-scraper) | Public contact emails from Bluesky |
| [Bumble Email Scraper](https://apify.com/leads-scraper/bumble-email-scraper) | Public contact emails from Bumble |
| [Clubhouse Email Scraper](https://apify.com/leads-scraper/clubhouse-email-scraper) | Public contact emails from Clubhouse |
| [Dailymotion Email Scraper](https://apify.com/leads-scraper/dailymotion-email-scraper) | Public contact emails from Dailymotion |
| [DeviantArt Email Scraper](https://apify.com/leads-scraper/deviantart-email-scraper) | Public contact emails from DeviantArt |
| [Discord Email Scraper](https://apify.com/leads-scraper/discord-email-scraper) | Public contact emails from Discord |
| [Dribbble Email Scraper](https://apify.com/leads-scraper/dribbble-email-scraper) | Public contact emails from Dribbble |
| [Facebook Email Scraper](https://apify.com/leads-scraper/facebook-email-scraper) | Public contact emails from Facebook |
| [Goodreads Email Scraper](https://apify.com/leads-scraper/goodreads-email-scraper) | Public contact emails from Goodreads |
| [Hinge Email Scraper](https://apify.com/leads-scraper/hinge-email-scraper) | Public contact emails from Hinge |
| [Instagram Email Scraper](https://apify.com/leads-scraper/instagram-email-scraper) | Public contact emails from Instagram |
| [KakaoTalk Email Scraper](https://apify.com/leads-scraper/kakaotalk-email-scraper) | Public contact emails from KakaoTalk |
| [Kick Email Scraper](https://apify.com/leads-scraper/kick-email-scraper) | Public contact emails from Kick |
| [Lemon8 Email Scraper](https://apify.com/leads-scraper/lemon8-email-scraper) | Public contact emails from Lemon8 |
| [Likee Email Scraper](https://apify.com/leads-scraper/likee-email-scraper) | Public contact emails from Likee |
| [LINE Email Scraper](https://apify.com/leads-scraper/line-email-scraper) | Public contact emails from LINE |
| [LinkedIn Email Scraper](https://apify.com/leads-scraper/linkedin-email-scraper) | Public contact emails from LinkedIn |
| [Mastodon Email Scraper](https://apify.com/leads-scraper/mastodon-email-scraper) | Public contact emails from Mastodon |
| [Medium Email Scraper](https://apify.com/leads-scraper/medium-email-scraper) | Public contact emails from Medium |
| [Mixcloud Email Scraper](https://apify.com/leads-scraper/mixcloud-email-scraper) | Public contact emails from Mixcloud |
| [Patreon Email Scraper](https://apify.com/leads-scraper/patreon-email-scraper) | Public contact emails from Patreon |
| [Quora Email Scraper](https://apify.com/leads-scraper/quora-email-scraper) | Public contact emails from Quora |
| [Reddit Email Scraper](https://apify.com/leads-scraper/reddit-email-scraper) | Public contact emails from Reddit |
| [Rumble Email Scraper](https://apify.com/leads-scraper/rumble-email-scraper) | Public contact emails from Rumble |
| [Snapchat Email Scraper](https://apify.com/leads-scraper/snapchat-email-scraper) | Public contact emails from Snapchat |
| [SoundCloud Email Scraper](https://apify.com/leads-scraper/soundcloud-email-scraper) | Public contact emails from SoundCloud |
| [Substack Email Scraper](https://apify.com/leads-scraper/substack-email-scraper) | Public contact emails from Substack |
| [Telegram Email Scraper](https://apify.com/leads-scraper/telegram-email-scraper) | Public contact emails from Telegram |
| [Threads Email Scraper](https://apify.com/leads-scraper/threads-email-scraper) | Public contact emails from Threads |
| [TikTok Email Scraper](https://apify.com/leads-scraper/tiktok-email-scraper) | Public contact emails from TikTok |
| [Tinder Email Scraper](https://apify.com/leads-scraper/tinder-email-scraper) | Public contact emails from Tinder |
| [Tumblr Email Scraper](https://apify.com/leads-scraper/tumblr-email-scraper) | Public contact emails from Tumblr |
| [Twitch Email Scraper](https://apify.com/leads-scraper/twitch-email-scraper) | Public contact emails from Twitch |
| [Vimeo Email Scraper](https://apify.com/leads-scraper/vimeo-email-scraper) | Public contact emails from Vimeo |
| [VK Email Scraper](https://apify.com/leads-scraper/vk-email-scraper) | Public contact emails from VK |
| [WeChat Email Scraper](https://apify.com/leads-scraper/wechat-email-scraper) | Public contact emails from WeChat |
| [Weibo Email Scraper](https://apify.com/leads-scraper/weibo-email-scraper) | Public contact emails from Weibo |
| [X Email Scraper](https://apify.com/leads-scraper/x-email-scraper) | Public contact emails from X |

### FAQ

**What is the Pinterest Email Scraper?**
It is an Apify Actor that collects publicly indexed contact emails from Pinterest-related Google search results and exports them as structured data.

**Does the Pinterest Email Scraper log into Pinterest?**
No. There is no login, no cookies, no browser and no use of Pinterest's API. All data comes from public Google search results.

**Where do the emails the Pinterest Email Scraper returns come from?**
From titles, snippets and site labels that Google has indexed, typically profile descriptions and pin captions where the account published an address itself.

**Do I need a proxy to run the Pinterest Email Scraper?**
Yes. The Actor requires the Apify GOOGLE\_SERP proxy and cannot run without Apify proxy credentials.

**Can I filter by email domain?**
Yes. `customDomains` restricts extraction to the domains you list. Matching is boundary-correct, so `@gmail.com` never matches `@gmail.company`.

**How many emails can one Pinterest Email Scraper run return?**
Free Apify plans are capped at 100 emails per run. Paid plans are uncapped; the practical limit is `maxEmails` and how much of the niche Google has indexed.

**Why is `username` sometimes `null`?**
Google does not always print a handle in its result. When it does not, you still get `accountName`, `fullName` and the snippet, but `username` and `profileUrl` stay empty.

**What does `possiblyTruncated: true` mean?**
Google's snippet ellipsis touched the address, so it may be cut off. Verify those rows before adding them to a campaign.

**Are the emails verified or deliverable?**
No. The Pinterest Email Scraper extracts addresses as published. Run them through your own verification step before a send.

**Why should I keep query expansion on?**
Because Google caps a single query at roughly 300 results. Expansion reaches parts of the index a single phrasing never surfaces.

**Can I resume an interrupted Pinterest Email Scraper run?**
Yes. Progress is checkpointed in the key-value store, keyed by an input hash, and restored on restart or migration.

**Does the same Pinterest Email Scraper engine work for other networks?**
Yes, it ships per platform. See the Related Actors table above.

***

### Support

Questions, a bug, or need a custom build of the Pinterest Email Scraper? Email **neurodata.apify@gmail.com**.

# Actor input Schema

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

Search terms describing the Pinterest 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 Pinterest.

## `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": [
    "designer",
    "shop owner"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com",
    "@outlook.com",
    "@hotmail.com",
    "@icloud.com",
    "@aol.com",
    "@protonmail.com",
    "@live.com",
    "@gmx.com",
    "@mail.com",
    "@yandex.com",
    "@zoho.com"
  ],
  "maxEmails": 20,
  "countryCode": "",
  "expandQueries": true,
  "queryModifiers": [
    "email",
    "contact",
    "business inquiries",
    "collab",
    "booking",
    "dm"
  ],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

# Actor output Schema

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

Records produced by Pinterest 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": [
        "designer",
        "shop owner"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com",
        "@outlook.com",
        "@hotmail.com",
        "@icloud.com",
        "@aol.com",
        "@protonmail.com",
        "@live.com",
        "@gmx.com",
        "@mail.com",
        "@yandex.com",
        "@zoho.com"
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "business inquiries",
        "collab",
        "booking",
        "dm"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("leads-scraper/pinterest-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": [
        "designer",
        "shop owner",
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com",
        "@outlook.com",
        "@hotmail.com",
        "@icloud.com",
        "@aol.com",
        "@protonmail.com",
        "@live.com",
        "@gmx.com",
        "@mail.com",
        "@yandex.com",
        "@zoho.com",
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "business inquiries",
        "collab",
        "booking",
        "dm",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("leads-scraper/pinterest-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": [
    "designer",
    "shop owner"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com",
    "@outlook.com",
    "@hotmail.com",
    "@icloud.com",
    "@aol.com",
    "@protonmail.com",
    "@live.com",
    "@gmx.com",
    "@mail.com",
    "@yandex.com",
    "@zoho.com"
  ],
  "countryCode": "",
  "queryModifiers": [
    "email",
    "contact",
    "business inquiries",
    "collab",
    "booking",
    "dm"
  ]
}' |
apify call leads-scraper/pinterest-email-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,leads-scraper/pinterest-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/Wof1qMdmj7rjTa3z5/builds/o13dDlqKsIyAY0XRB/openapi.json
