# TikTok Email Scraper (`leads-scraper/tiktok-email-scraper`) Actor

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

- **URL**: https://apify.com/leads-scraper/tiktok-email-scraper.md
- **Developed by:** [Leads Scraper](https://apify.com/leads-scraper) (community)
- **Categories:**
- **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?

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

## TikTok Email Scraper

### TikTok Email Scraper - Find Public Creator Emails by Keyword and Domain

The **TikTok Email Scraper** is an Apify Actor that finds publicly indexed contact emails belonging to TikTok accounts. You give it keywords, it gives you a clean dataset of leads.

The TikTok Email Scraper works by running `site:tiktok.com` searches through the Apify GOOGLE\_SERP proxy and parsing the emails out of the result blocks. That is the whole mechanism, and it is worth being clear about it up front.

The TikTok Email Scraper does **not** log into TikTok, does **not** use TikTok's API, and does **not** open tiktok.com. There is no browser, no JavaScript rendering, no authentication and no cookies.

Everything the TikTok Email Scraper returns already exists in Google's public search index: titles, snippets and site labels. If a creator wrote `collabs: me@gmail.com` in a bio that Google crawled, the TikTok Email Scraper can find it. If they did not, nothing will.

That makes this a **TikTok email extractor** for keyword-driven contact discovery, not a profile-by-profile enrichment tool. You do not need a list of usernames to start - you start from a niche.

***

### Key Features

| Feature | What it does |
|---|---|
| Keyword-driven search | Start the TikTok Email Scraper from a niche or job title, not from a list of TikTok handles |
| Query expansion | Each keyword x domain pair is searched as base, quoted, `intitle:` and one variant per modifier |
| Domain filtering | Only emails on the domains you list (`@gmail.com`, `@yahoo.com`, ...) are kept |
| Obfuscation handling | Understands `name [at] domain [dot] com`, `name (at) domain`, `name @ domain.com`, `domain .com`, zero-width characters and the full-width at sign `＠` |
| 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` |
| Global deduplication | One row per unique email across every query and every page of the run |
| Concurrency | An `asyncio` worker pool runs several queries in parallel with a shared stop signal |
| Retry logic | Up to 3 attempts per page, exponential backoff, a fresh proxy session per request |
| Block detection | CAPTCHA, "unusual traffic" and consent pages are detected and retried, never counted as empty |
| Resumable state | Progress is stored in the key-value store, keyed by a hash of your input |
| Fallback parser | If Google's markup changes, the run degrades to "emails without account details", not "no emails" |
| Live dataset writes | Every lead is pushed to the Apify dataset the moment it is found |
| Location targeting | An optional location phrase is appended to every query |

The TikTok Email Scraper parser locates each `<h3>` title and then the smallest surrounding block. It does **not** depend on Google's CSS class names, which is why the TikTok Email Scraper survives most layout changes.

***

### How the TikTok Email Scraper Works

The TikTok Email Scraper pipeline is short and deterministic. Here is the full sequence.

1. **Read input.** Keywords, location, email domains and limits are validated.
2. **Build queries.** The TikTok Email Scraper composes `site:tiktok.com` queries, e.g. `site:tiktok.com fitness coach "@gmail.com" "New York"`.
3. **Expand queries.** Base queries run first, then quoted, `intitle:` and one variant per query modifier.
4. **Fetch search results.** Pages are fetched asynchronously with `aiohttp` through the Apify GOOGLE\_SERP proxy.
5. **Parse structurally.** Each result block is isolated around its `<h3>` heading.
6. **Extract emails.** A domain-filtered regex pulls addresses out of the block text, after normalisation.
7. **Deduplicate and push.** Each new lead is written straight to the dataset as structured data.

Pagination is capped per query by `maxPagesPerQuery`. A query also stops early once several consecutive pages produce no new email, so the crawler does not burn proxy calls on exhausted result sets.

Blocked or failed queries are re-queued once at the end of the run. The TikTok Email Scraper then logs a summary: pages fetched, blocked pages, retries and emails per page.

***

### What Data Does It Extract?

Every TikTok Email Scraper dataset item is a lead with the email, whatever account metadata Google exposed, and full provenance so you can audit where the address came from.

The TikTok Email Scraper captures the handle and canonical profile URL whenever Google's result exposes a `tiktok.com/@handle` path. For hashtag, discovery and caption results, Google often prints only a display name - in that case `username` is `null` and `profileUrl` is empty.

That is a Google limitation, not a defect in the TikTok Email Scraper. The email, the bio snippet and the account label are still returned.

***

### Input Schema for the TikTok Email Scraper

| Field | Type | Default | Meaning |
|---|---|---|---|
| `keywords` | array (required) | `["creator", "founder"]` | Search terms describing the accounts 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 kept; the leading `@` is optional |
| `maxEmails` | integer 1-10000 | `20` | Stop after this many unique emails |
| `countryCode` | string | `""` | Two-letter country 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` | Parallel queries |

The default modifiers are tuned for TikTok. `collab`, `booking` and `business inquiries` are the phrases creators actually type next to an address in a bio, which is why they earn their place in the TikTok Email Scraper defaults.

#### JSON input example

```json
{
  "keywords": ["fitness creator", "skincare founder", "dance choreographer"],
  "location": "Los Angeles",
  "customDomains": ["@gmail.com", "@outlook.com"],
  "maxEmails": 500,
  "countryCode": "US",
  "expandQueries": true,
  "queryModifiers": ["business inquiries", "collab", "booking", "email"],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

***

### Output Schema and Structured Data Fields

Every item the TikTok Email Scraper writes carries all 14 fields below. Nothing is conditional, so your CSV or JSON export always has the same columns.

| 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 post captions |
| `username` | URL-safe handle when TikTok exposes one; otherwise `null` |
| `profileUrl` | Canonical account URL when a handle is known; otherwise empty |
| `url` | Direct platform 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 - verify before sending |
| `foundAt` | ISO 8601 UTC timestamp |

#### JSON output example

```json
[
  {
    "network": "TikTok",
    "keyword": "fitness creator",
    "query": "site:tiktok.com fitness creator \"collab\" \"@gmail.com\" \"Los Angeles\"",
    "title": "Maya Ortiz (@mayamovesla) | TikTok",
    "accountName": "mayamovesla",
    "fullName": "Maya Ortiz",
    "username": "mayamovesla",
    "profileUrl": "https://www.tiktok.com/@mayamovesla",
    "url": "https://www.tiktok.com/@mayamovesla",
    "description": "LA fitness creator. Mobility + home workouts. Collabs: maya.moves.la@gmail.com",
    "email": "maya.moves.la@gmail.com",
    "emailDomain": "@gmail.com",
    "possiblyTruncated": false,
    "foundAt": "2026-05-14T09:12:44Z"
  },
  {
    "network": "TikTok",
    "keyword": "skincare founder",
    "query": "site:tiktok.com skincare founder \"business inquiries\" \"@gmail.com\"",
    "title": "skincare founder | TikTok",
    "accountName": "TikTok",
    "fullName": "",
    "username": null,
    "profileUrl": "",
    "url": "https://www.tiktok.com/discover/skincare-founder",
    "description": "business inquiries: hello.lumeskin@gmail.com ...",
    "email": "hello.lumeskin@gmail.com",
    "emailDomain": "@gmail.com",
    "possiblyTruncated": true,
    "foundAt": "2026-05-14T09:13:02Z"
  }
]
```

The second row is the honest case for the TikTok Email Scraper. Google served a discovery page rather than a profile, so there is no handle to build a `profileUrl` from, and the snippet ellipsis touched the address - hence `possiblyTruncated: true`.

***

### How to Use the TikTok Email Scraper in Five Steps

1. **Open the Actor** and make sure your account has Apify proxy access. The GOOGLE\_SERP proxy is required.
2. **Enter 3-10 keywords.** Specific beats broad: `pilates instructor` outperforms `fitness`.
3. **Set your email domains.** Keep `@gmail.com` and `@yahoo.com`, or add `@outlook.com`, `@icloud.com`, `@proton.me`.
4. **Set `maxEmails`.** Start at 20 to sanity-check the output, then raise it once the leads look right.
5. **Run, then export.** Download the dataset as CSV, JSON, XLSX or pull it via the Apify API into your CRM.

Add a `location` when you are prospecting a city with the TikTok Email Scraper. Turn `expandQueries` off only when you want a single tight query and a fast, cheap run.

***

### TikTok Email Scraper Use Cases

| Use case | Who it is for | How the TikTok Email Scraper helps |
|---|---|---|
| TikTok influencer outreach | Brand and agency marketers | Build a TikTok influencer contact list for a niche before pitching |
| UGC creator sourcing | DTC and e-commerce brands | Find creators who already advertise `collab` and `booking` addresses |
| Sponsorship prospecting | Media buyers | Collect creator emails per vertical and per city |
| Talent scouting | Creator management agencies | Discover unsigned creators posting business inquiry contacts |
| Local business outreach | Agencies selling social media services | Combine a niche keyword with a `location` to find local operators |
| App and product launches | Founders | Assemble a seeding list of micro-creators in your category |
| Market research | Analysts | Sample how a niche presents itself in bios and captions |
| CRM enrichment | RevOps | Feed structured data straight into an existing pipeline |

If your outreach programme spans several networks, pair this Actor with the [Instagram Email Scraper](https://apify.com/leads-scraper/instagram-email-scraper) and the [YouTube Email Scraper](https://apify.com/leads-scraper/youtube-email-scraper). Short-form creators very often run all three.

***

### Why Use This Actor for Creator Contact Discovery

Most TikTok email extractor tools require a list of profiles as input. The TikTok Email Scraper does the opposite: it starts from intent, expands a query set, and returns whoever matches.

Because the TikTok Email Scraper never touches TikTok itself, there is no login, no rate-limited API quota and no session to maintain. The only dependency is Apify's search proxy.

The TikTok Email Scraper extraction layer is where the real work happens. Normalisation, obfuscation handling, the junk filter, boundary-correct domain matching and soft-wrap repair together remove most of the garbage that naive regex email scraping produces.

Soft-wrap repair deserves a mention: when a block contains one address that wraps across lines, the TikTok Email Scraper drops the fragment that is only the tail of another email rather than emitting a broken duplicate.

***

### Limitations

Read this section before you plan a campaign around the TikTok Email Scraper.

- **Public index only.** It finds accounts whose email is publicly visible in Google's index. Emails behind TikTok's contact button, in link-in-bio pages or in images are out of reach.
- **Google's ~300-result cap.** A single query returns roughly 300 results maximum. Query expansion exists specifically to work around that ceiling - keep `expandQueries` on for volume.
- **`possiblyTruncated`.** When Google's snippet ellipsis touched an address, the row is flagged. Verify those before adding them to a sending list.
- **Handle availability.** `username` and `profileUrl` are only populated when Google's result exposes a handle. Display-name-only results still return `accountName` and `fullName`.
- **Apify proxy required.** The Actor cannot run without Apify GOOGLE\_SERP proxy credentials.
- **Free-plan cap.** Free Apify plans are capped at 100 emails per run. Paid plans are uncapped.
- **No volume guarantee.** Results vary with keywords, domains, location and what Google has indexed. Nothing here is guaranteed, verified or real-time.

The TikTok Email Scraper is not affiliated with, endorsed by or officially supported by TikTok. Use the output in line with GDPR, CAN-SPAM and your local marketing rules.

***

### Related Actors

The TikTok Email Scraper shares its engine and output schema with every Actor below. Every Actor below is part of the Social, Creator & Community family.

| Actor | What it collects |
|---|---|
| [TikTok Email and Phone Number Scraper](https://apify.com/leads-scraper/tiktok-email-and-phone-number-scraper) | Emails and phone numbers from TikTok |
| [TikTok Phone Number Scraper](https://apify.com/leads-scraper/tiktok-phone-number-scraper) | Public phone numbers from TikTok |
| [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 |
| [Pinterest Email Scraper](https://apify.com/leads-scraper/pinterest-email-scraper) | Public contact emails from Pinterest |
| [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 |
| [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 |

### Example: Sourcing UGC Creators for a Supplement Brand

Here is a realistic TikTok Email Scraper run. You want 300 fitness and nutrition creators in the United States with a Gmail address in their bio.

Set `keywords` to `["fitness creator", "nutrition coach", "supplement review"]`, `customDomains` to `["@gmail.com"]`, `countryCode` to `US` and `maxEmails` to `300`. Leave `expandQueries` on.

The TikTok Email Scraper builds base, quoted, `intitle:` and modifier variants for each keyword, then paginates through the search results with five parallel workers. Leads land in the dataset live, so you can watch the run and abort early if the niche is wrong.

Sort the TikTok Email Scraper dataset by `possiblyTruncated`, verify the flagged rows by hand, then push the rest into your outreach sequence. Repeat the same input on the [Instagram Email Scraper](https://apify.com/leads-scraper/instagram-email-scraper) to cross-check which creators publish the same address on both networks.

***

### TikTok Email Scraper FAQ

**Does the TikTok Email Scraper log into TikTok?**
No. It never authenticates, never opens tiktok.com and never uses TikTok's API. All data comes from Google's public search results.

**Where do the TikTok Email Scraper emails actually come from?**
From the titles, snippets and site labels that Google already publishes for indexed TikTok pages - usually bios and captions where the account owner wrote the address themselves.

**Can it find emails hidden behind the TikTok "email" contact button?**
No. If the address is not in Google's index, the TikTok Email Scraper cannot see it. That is the honest boundary of this approach.

**Why are some rows missing `username` and `profileUrl`?**
Because Google's result exposed only a display name, typically on discovery or caption pages. Those rows still include `accountName`, `fullName`, the email and the snippet.

**What does `possiblyTruncated: true` mean?**
Google's snippet ellipsis touched the address, so it may be cut short. Treat those rows as leads to verify, not as send-ready contacts.

**How many emails can one TikTok Email Scraper run return?**
Free Apify plans stop at 100 emails per run. Paid plans are uncapped and bounded only by your `maxEmails` value and what Google has indexed.

**Why does one query not return thousands of results?**
Google caps a single query at roughly 300 results. Query expansion is the built-in answer: it multiplies keyword x domain x phrasing so the TikTok Email Scraper reaches beyond that ceiling.

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

**Can I target a city or a country?**
Yes. Use `location` for a phrase appended to every query and `countryCode` for the search proxy's country.

**Which email domains work best?**
Personal domains like `@gmail.com` are what most creators publish. Add `@outlook.com`, `@icloud.com` or a niche domain to widen coverage.

**Can I resume an interrupted TikTok Email Scraper run?**
Yes. Progress is saved in the key-value store, keyed by a hash of your input, and also persists on Apify's `PERSIST_STATE`, `MIGRATING` and `ABORTING` events.

**Is scraping TikTok creator emails legal?**
The Actor only collects publicly indexed information, but how you use it is your responsibility. Follow GDPR, CAN-SPAM and any local rules on unsolicited outreach.

**How do I get more leads from the same niche?**
Add more query modifiers, widen `customDomains`, raise `maxPagesPerQuery`, and run neighbouring keywords rather than one broad term.

***

### Support

Questions about the TikTok Email Scraper, bug reports or a custom build? Email **neurodata.apify@gmail.com** and we will get back to you.

# Actor input Schema

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

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

## `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": [
    "creator",
    "founder"
  ],
  "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 TikTok 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": [
        "creator",
        "founder"
    ],
    "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/tiktok-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": [
        "creator",
        "founder",
    ],
    "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/tiktok-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": [
    "creator",
    "founder"
  ],
  "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/tiktok-email-scraper --silent --output-dataset

```

## MCP server setup

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