# Tiktok Contact Extractor (`coregent/tiktok-contact-extractor`) Actor

TikTok Contact Extractor finds public contact details from TikTok creators, including emails, phones, websites, Instagram, YouTube, and profile data. Use it for influencer outreach, lead generation, creator partnerships, and contact-ready CRM exports.

- **URL**: https://apify.com/coregent/tiktok-contact-extractor.md
- **Developed by:** [Delowar Munna](https://apify.com/coregent) (community)
- **Categories:** Lead generation, Social media, Automation
- **Stats:** 6 total users, 3 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.80 / 1,000 contact results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 Contact Extractor

Extract public emails, phones, websites, and outreach clues from TikTok creators with source attribution, confidence scoring, and contact-ready lead exports.

[![TikTok Contact Extractor](https://raw.githubusercontent.com/coregentdevspace/tiktok-contact-extractor-assets/main/thumbnail-tiktok-contact-extractor.jpg)](https://apify.com/coregent/tiktok-contact-extractor)

### What does this actor do?

**TikTok Contact Extractor** is an Apify Actor that extracts publicly available contact details from TikTok creators, including:

- **Emails** — extracted from bios and linked websites
- **Phone numbers** — extracted from bios and linked websites when public
- **Instagram handles** — from bios or linked pages
- **YouTube handles** — from bios or linked pages
- **External URLs** — bio links, websites, contact pages
- **Profile metadata** — followers, verification status, display name, bio text
- **Source attribution** — where each contact clue was found (bio, website, contact page)
- **Confidence scores** — how trustworthy each contact value is
- **Lead quality indicators** — outreach readiness and lead scoring

This actor is designed as a **contact discovery and lead-enrichment tool**, not a general TikTok scraper. It helps answer:

- Which TikTok creators have public contact information?
- Which creators are contactable right now?
- Which contact details came from bio text versus linked websites?
- Which creator leads look most trustworthy and complete?

### Why use this actor?

- **Multi-source contact extraction** — bio text, link-in-bio websites, and contact pages
- **Clear source attribution** — every contact field shows where it was found
- **Confidence scoring** — heuristic scores per email and phone based on source quality
- **Lead qualification** — contact readiness levels and lead quality scores
- **CRM-ready flat output** — one row per creator, easy to import anywhere
- **Multiple input modes** — direct profiles, keyword discovery, and hashtag discovery
- **Deduplication** — creators found from multiple sources are merged automatically
- **Filtering** — filter for email-only, phone-only, verified-only, follower ranges
- **Structured error handling** — partial results with error details, not broken runs

### Input

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `profiles` | string[] | `[]` | TikTok profile URLs or @usernames |
| `keywords` | string[] | `[]` | Keywords to discover creators (e.g. "ugc creator skincare") |
| `hashtags` | string[] | `[]` | Hashtags to discover creators from |
| `maxCreators` | integer | `500` | Maximum creator records to return |
| `extractFromBio` | boolean | `true` | Parse bios for contact data |
| `followExternalLinks` | boolean | `true` | Visit bio links for more contacts |
| `extractEmails` | boolean | `true` | Extract email addresses |
| `extractPhones` | boolean | `true` | Extract phone numbers |
| `extractInstagram` | boolean | `true` | Extract Instagram handles |
| `extractYoutube` | boolean | `true` | Extract YouTube handles |
| `emailOnly` | boolean | `false` | Only return creators with emails |
| `phoneOnly` | boolean | `false` | Only return creators with phones |
| `mustHaveExternalLink` | boolean | `false` | Only return creators with websites |
| `mustHaveContactClue` | boolean | `false` | Only return creators with any contact data |
| `minFollowers` | integer | `0` | Minimum follower count filter |
| `maxFollowers` | integer | `0` | Maximum follower count filter (0 = no limit) |
| `verifiedOnly` | boolean | `false` | Only return verified creators |
| `includeConfidenceScores` | boolean | `true` | Include confidence and quality fields |
| `includeContactSourceDetails` | boolean | `true` | Include source attribution fields |
| `deduplicateCreators` | boolean | `true` | Deduplicate across input sources |
| `countryHint` | string | `""` | Country code hint for phone parsing |
| `debugMode` | boolean | `false` | Verbose logging |
| `proxyConfiguration` | object | — | Apify proxy (residential recommended) |

At least one of `profiles`, `keywords`, or `hashtags` is required.

#### Sample input 1: Keyword discovery with email filter

Find contactable creators related to specific keywords, only return those with email addresses:

```json
{
  "keywords": ["swift", "taylor"],
  "maxCreators": 50,
  "emailOnly": true,
  "followExternalLinks": true,
  "extractEmails": true,
  "extractPhones": true,
  "extractInstagram": true,
  "extractYoutube": true,
  "includeConfidenceScores": true,
  "includeContactSourceDetails": true,
  "deduplicateCreators": true,
  "proxyConfiguration": { "useApifyProxy": true }
}
````

#### Sample input 2: Direct profile enrichment with hashtag discovery

Enrich a known list of profiles and discover more creators from hashtags:

```json
{
  "profiles": [
    "@taylorfrankiepaul",
    "@taylor_thatdancer",
    "https://www.tiktok.com/@paigetaylor.s"
  ],
  "hashtags": ["beautytok", "gymtok"],
  "maxCreators": 200,
  "followExternalLinks": true,
  "mustHaveContactClue": true,
  "minFollowers": 1000,
  "extractEmails": true,
  "extractPhones": true,
  "extractInstagram": true,
  "extractYoutube": true,
  "includeConfidenceScores": true,
  "includeContactSourceDetails": true,
  "proxyConfiguration": { "useApifyProxy": true }
}
```

### Output

Each output row represents one creator with normalized contact data and source metadata. Results are available in four dataset views:

[![TikTok Contact Extractor — Output overview table view](https://raw.githubusercontent.com/coregentdevspace/tiktok-contact-extractor-assets/main/tiktok-contact-extractor-output-overview-table-view.png)](https://apify.com/coregent/tiktok-contact-extractor)

#### Overview tab

Key identity fields, primary contacts, lead score, and discovery source.

```json
{
  "username": "taylorfrankiepaul",
  "displayName": "Taylor Paul",
  "profileUrl": "https://www.tiktok.com/@taylorfrankiepaul",
  "isVerified": true,
  "followersCount": 6086356,
  "primaryEmail": "taylorfrankiepaul@select.co",
  "primaryPhone": null,
  "externalUrl": "https://www.ulta.com/p/purity-one-step-meltaway-cleansing-balm-pimprod2056354?sku=2649051",
  "instagramHandle": null,
  "youtubeHandle": null,
  "contactReadiness": "high",
  "leadQualityScore": 60,
  "discoveredVia": ["keyword"],
  "scrapedAt": "2026-03-21T05:01:23.943Z"
}
```

#### Contact Details tab

Full contact data including all emails, phones, handles, and links.

```json
{
  "username": "paigetaylor.s",
  "displayName": "Paige Taylor",
  "bio": "✝️\npaige@insightmedia.com",
  "primaryEmail": "paige@insightmedia.com",
  "allEmails": ["paige@insightmedia.com"],
  "primaryPhone": "68608721562",
  "allPhones": ["68608721562"],
  "externalUrl": "https://linktr.ee/paigetaylor.s",
  "externalDomain": "linktr.ee",
  "instagramHandle": null,
  "youtubeHandle": null,
  "tiktokBioLink": "https://linktr.ee/paigetaylor.s",
  "contactPageUrl": "https://linktr.ee/s/about/trust-center/report/?field86145911=https%3A%2F%2Flinktr.ee%2Fpaigetaylor.s",
  "otherPublicLinks": [
    "https://linktr.ee/s/about/trust-center/report/?field86145911=https%3A%2F%2Flinktr.ee%2Fpaigetaylor.s",
    "https://linktr.ee/connectartech"
  ],
  "followersCount": 6778715,
  "isVerified": false
}
```

#### Lead Quality tab

Confidence scores, readiness levels, quality scores, and business signals.

```json
{
  "username": "taylor_thatdancer",
  "displayName": "taylor pierce 🖤🤖",
  "followersCount": 5295218,
  "primaryEmail": "nickyahid1@gmail.com",
  "emailConfidence": 0.8,
  "primaryPhone": null,
  "phoneConfidence": null,
  "contactReadiness": "high",
  "contactReadinessReason": "Public email and website found",
  "leadQualityScore": 60,
  "leadQualityReason": "+25 email, +10 website, +10 high followers, +5 verified, +10 business profile",
  "isBusinessLikeProfile": true,
  "isLikelyCreatorLead": true,
  "isVerified": true
}
```

#### Source Attribution tab

Where each contact was found, website visit status, and discovery lineage.

```json
{
  "username": "lojaswift",
  "primaryEmail": null,
  "emailSource": null,
  "primaryPhone": "68608721562",
  "phoneSource": "website_homepage",
  "instagramHandle": null,
  "instagramSource": null,
  "youtubeHandle": "andywso",
  "youtubeSource": "website_homepage",
  "contactSourceSummary": "Phone found on website. YouTube: andywso",
  "bioContainsEmail": false,
  "bioContainsPhone": false,
  "websiteContainsEmail": false,
  "websiteContainsPhone": true,
  "websiteVisited": true,
  "websiteVisitStatus": "success",
  "discoveredVia": ["keyword"],
  "sourceProfiles": [],
  "sourceKeywords": ["swift"],
  "sourceHashtags": []
}
```

#### Full output (all fields)

Each record contains 47+ fields across identity, stats, contact, source attribution, confidence, lineage, and metadata:

```json
{
  "username": "taylor_pfeffer",
  "profileUrl": "https://www.tiktok.com/@taylor_pfeffer",
  "userId": "6532052352982056962",
  "displayName": "taylor",
  "bio": "be kind \n✨taylorxhairstyles✨\n💌pfeffertaylor@gmail.com💌",
  "profilePictureUrl": "https://p16-common-sign.tiktokcdn-us.com/...",
  "isVerified": false,
  "accountPrivate": false,
  "followersCount": 2562922,
  "followingCount": 139,
  "likesCount": 80529449,
  "videosCount": 1396,
  "primaryEmail": "pfeffertaylor@gmail.com",
  "allEmails": ["pfeffertaylor@gmail.com"],
  "primaryPhone": "68608721562",
  "allPhones": ["68608721562"],
  "externalUrl": "https://linktr.ee/taylor_pfeffer",
  "externalDomain": "linktr.ee",
  "instagramHandle": null,
  "youtubeHandle": null,
  "tiktokBioLink": "https://linktr.ee/taylor_pfeffer",
  "contactPageUrl": "https://linktr.ee/s/about/trust-center/report/?field86145911=https%3A%2F%2Flinktr.ee%2Ftaylor_pfeffer",
  "contactFormUrl": null,
  "otherPublicLinks": [
    "https://linktr.ee/s/about/trust-center/report/?field86145911=https%3A%2F%2Flinktr.ee%2Ftaylor_pfeffer"
  ],
  "emailSource": "bio",
  "phoneSource": "website_homepage",
  "instagramSource": null,
  "youtubeSource": null,
  "contactSourceSummary": "Email found in bio. Phone found on website",
  "bioContainsEmail": true,
  "bioContainsPhone": false,
  "websiteContainsEmail": false,
  "websiteContainsPhone": true,
  "websiteVisited": true,
  "websiteVisitStatus": "success",
  "emailConfidence": 0.75,
  "phoneConfidence": 0.7,
  "contactReadiness": "high",
  "contactReadinessReason": "Public email and website found",
  "leadQualityScore": 60,
  "leadQualityReason": "+25 email, +15 phone, +10 website, +10 high followers",
  "isBusinessLikeProfile": false,
  "isLikelyCreatorLead": true,
  "discoveredVia": ["keyword"],
  "sourceProfiles": [],
  "sourceKeywords": ["taylor"],
  "sourceHashtags": [],
  "discoveryCount": 1,
  "scrapedAt": "2026-03-21T05:01:40.504Z",
  "isPartial": false,
  "errorType": null,
  "errorMessage": null
}
```

### Output fields

#### Creator identity fields

| Field | Description |
|-------|-------------|
| `username` | TikTok username |
| `profileUrl` | Full profile URL |
| `userId` | TikTok internal user ID (if available) |
| `displayName` | Display name / nickname |
| `bio` | Full bio text |
| `profilePictureUrl` | Avatar URL |
| `isVerified` | Verified badge status |
| `accountPrivate` | Whether the account is private |

#### Public stats fields

| Field | Description |
|-------|-------------|
| `followersCount` | Follower count |
| `followingCount` | Following count |
| `likesCount` | Total likes/hearts received |
| `videosCount` | Total videos posted |

#### Contact fields

| Field | Description |
|-------|-------------|
| `primaryEmail` | Best email found (first from bio, then website) |
| `allEmails` | All unique emails found across sources |
| `primaryPhone` | Best phone number found |
| `allPhones` | All unique phone numbers found |
| `externalUrl` | Bio link URL |
| `externalDomain` | Domain of bio link |
| `instagramHandle` | Instagram username |
| `youtubeHandle` | YouTube handle |
| `tiktokBioLink` | Raw bio link from TikTok profile |
| `contactPageUrl` | Contact/about page URL from website |
| `contactFormUrl` | Contact form URL if detected |
| `otherPublicLinks` | Other URLs found in bio or website |

#### Source attribution fields

| Field | Description |
|-------|-------------|
| `emailSource` | Where the email was found: `bio`, `website_homepage`, `bio_and_website` |
| `phoneSource` | Where the phone was found |
| `instagramSource` | Where Instagram handle was found |
| `youtubeSource` | Where YouTube handle was found |
| `contactSourceSummary` | Human-readable summary of all contact sources |
| `bioContainsEmail` | Whether bio text contained an email |
| `bioContainsPhone` | Whether bio text contained a phone number |
| `websiteContainsEmail` | Whether linked website contained an email |
| `websiteContainsPhone` | Whether linked website contained a phone |
| `websiteVisited` | Whether the bio link was visited |
| `websiteVisitStatus` | `success` or `error` |

#### Confidence and quality fields

| Field | Description |
|-------|-------------|
| `emailConfidence` | Email confidence score (0.0–1.0) |
| `phoneConfidence` | Phone confidence score (0.0–1.0) |
| `contactReadiness` | `high`, `medium`, `low`, or `none` |
| `contactReadinessReason` | Why this readiness level was assigned |
| `leadQualityScore` | Lead quality score (0–100) |
| `leadQualityReason` | Scoring breakdown |
| `isBusinessLikeProfile` | Whether bio contains business/outreach keywords |
| `isLikelyCreatorLead` | Whether creator has contacts + meaningful following |

#### Discovery lineage fields

| Field | Description |
|-------|-------------|
| `discoveredVia` | How this creator was found: `profile_input`, `keyword`, `hashtag` |
| `sourceProfiles` | Which profile inputs led to this creator |
| `sourceKeywords` | Which keyword searches led to this creator |
| `sourceHashtags` | Which hashtag searches led to this creator |
| `discoveryCount` | Number of input sources that found this creator |

#### Run metadata fields

| Field | Description |
|-------|-------------|
| `scrapedAt` | ISO 8601 timestamp |
| `isPartial` | Whether extraction was incomplete |
| `errorType` | Error type if failed |
| `errorMessage` | Error message if failed |

### Contact extraction logic

#### Bio extraction

The actor parses public TikTok bios for:

- Email addresses (regex-based)
- Phone numbers (various formats)
- Instagram handles (`ig: @handle`, `instagram.com/handle`)
- YouTube handles (`yt: @handle`, `youtube.com/@handle`)
- Website URLs
- Business/outreach hints (collabs, partnerships, inquiries, etc.)

#### Link-in-bio extraction

When `followExternalLinks` is enabled, the actor visits the public bio link and extracts:

- Email addresses from page text and HTML
- Phone numbers
- Contact/about page links (and visits them too)
- Instagram and YouTube links
- Contact form detection

#### Confidence scoring

Confidence **increases** when:

- A contact value appears in multiple sources (bio + website)
- An email uses a brand/custom domain
- The bio contains business context keywords

Confidence **decreases** when:

- The email uses a disposable domain
- The value is ambiguous or partial
- Only a single low-quality source is available

Confidence scores are **heuristics, not guarantees**. They indicate relative trustworthiness.

#### Lead quality scoring

Lead quality is scored 0–100 based on:

- Having an email (+25), phone (+15), website (+10)
- Multi-source confirmation (email in bio AND website)
- Social presence (Instagram, YouTube)
- Follower count and verification
- Business-oriented bio

### Use cases

- **Influencer outreach** — find creators with public emails for sponsorship pitches
- **Lead generation** — build niche-specific lists of contactable creators
- **Creator partnerships** — identify business-ready creators with complete contact info
- **CRM enrichment** — enrich existing creator lists with contact data and quality scores
- **Campaign sourcing** — find outreach-ready creators in target niches
- **Affiliate recruiting** — discover creators open to business inquiries

### Tips and best practices

- **Start with direct profiles** for highest accuracy — the actor visits each profile page
- **Use `emailOnly: true`** to focus on creators with confirmed email addresses
- **Enable `followExternalLinks`** for more complete contact data (visits bio link websites)
- **Use `includeConfidenceScores`** to prioritize high-confidence leads
- **Check `contactReadiness`** — "high" means strong public contact data
- **Use `leadQualityScore`** to sort and prioritize leads for outreach
- **Start small** — test with a few profiles before running large discovery batches
- **Schedule for monitoring** — run periodically to discover new contactable creators

### Proxy configuration

Residential proxies are recommended for reliable TikTok access.

```json
{
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

### Pricing

This actor uses **pay-per-event** pricing. You are charged per creator contact record returned — not for compute time or failed requests.

- **Event:** `contact-result` — charged once per creator record pushed to the dataset
- **Price:** Set in the Apify Console (see actor pricing page)
- **Spending limit:** If your spending limit is reached, the actor stops automatically

Memory is capped at 4 GB. Higher memory does not improve results — TikTok rate-limits concurrent requests regardless of available resources.

### Important notes

- **All data comes from public sources only.** This actor does not access private or login-only data.
- **Emails and phones are extracted on a best-effort basis.** Not all creators have public contact information.
- **Website-derived contacts may vary by page structure.** Some websites block scraping or use dynamic rendering.
- **Confidence scores are heuristics, not guarantees.** They indicate relative trustworthiness, not verified accuracy.
- **Some creators will have no public contact information.** Use `mustHaveContactClue: true` to filter these out.
- **This actor does not send messages, validate inboxes, or verify contacts.** It extracts and scores publicly available data.

### Integrations

- **Google Sheets** — export contact records to spreadsheets for team use
- **CRM systems** — flat output is ready for direct CRM import
- **Airtable** — structured records map cleanly to Airtable bases
- **Webhooks** — trigger outreach workflows when a run completes
- **API** — access results programmatically via the Apify API

### Limitations

- Contact extraction depends on what creators make public. Many creators have no public email or phone.
- Website visits may fail for sites with aggressive bot protection.
- Phone number parsing is best-effort and may include false positives from numeric strings in bios.
- Keyword and hashtag discovery depend on TikTok search results, which vary by region and time.
- The actor does not bypass any TikTok restrictions or access private content.

### FAQ

**How many creators can I extract contacts for?**
Up to 5,000 per run via `maxCreators`. Actual results depend on how many creators are discoverable from your inputs.

**Why are some fields null?**
Fields like `primaryEmail`, `primaryPhone`, and `instagramHandle` are only populated when public data is found. Not all creators share contact information publicly.

**What is the difference between `primaryEmail` and `allEmails`?**
`primaryEmail` is the first/best email found. `allEmails` contains all unique emails found across bio and website sources.

**What does `contactReadiness: "high"` mean?**
It means the creator has strong public contact data — typically an email plus a website or multiple confirmed sources.

**Does this actor validate email addresses?**
No. It extracts publicly visible email addresses and scores their confidence based on source quality. It does not verify that an inbox exists.

**What happens if a profile is private or unavailable?**
A partial result is emitted with `isPartial: true` and an error message, so you can identify failures without the whole run breaking.

# Actor input Schema

## `profiles` (type: `array`):

TikTok profile URLs or usernames to extract contacts from. Accepts @username or full profile URLs.

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

Keywords or niche terms to discover creators (e.g. 'ugc creator skincare', 'fitness coach').

## `hashtags` (type: `array`):

Hashtags to discover creators from. Accepts plain text, #tag, or full TikTok tag URLs.

## `maxCreators` (type: `integer`):

Maximum number of creator contact records to return across all inputs.

## `minFollowers` (type: `integer`):

Only include creators with at least this many followers.

## `maxFollowers` (type: `integer`):

Only include creators with at most this many followers. Set 0 for no limit.

## `verifiedOnly` (type: `boolean`):

Only include verified creators.

## `emailOnly` (type: `boolean`):

Only include creators who have a public email.

## `phoneOnly` (type: `boolean`):

Only include creators who have a public phone number.

## `mustHaveExternalLink` (type: `boolean`):

Only include creators who have an external link in their bio.

## `mustHaveContactClue` (type: `boolean`):

Only include creators who have at least one contact clue (email, phone, website, or social handle).

## `extractFromBio` (type: `boolean`):

Parse public TikTok bios for emails, phones, handles, and URLs.

## `followExternalLinks` (type: `boolean`):

Visit public link-in-bio destinations to find additional contact information.

## `extractEmails` (type: `boolean`):

Extract email addresses from bios and linked websites.

## `extractPhones` (type: `boolean`):

Extract phone numbers from bios and linked websites.

## `extractInstagram` (type: `boolean`):

Extract Instagram handles from bios or linked pages.

## `extractYoutube` (type: `boolean`):

Extract YouTube handles from bios or linked pages.

## `includeConfidenceScores` (type: `boolean`):

Include confidence scores and lead quality indicators on each record.

## `includeContactSourceDetails` (type: `boolean`):

Include source attribution fields (where each contact clue was found).

## `deduplicateCreators` (type: `boolean`):

Remove duplicate creators discovered from multiple sources.

## `countryHint` (type: `string`):

Optional 2-letter country code to hint phone number parsing (e.g. US, AU, GB).

## `debugMode` (type: `boolean`):

Enable verbose logging for troubleshooting.

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

Apify proxy configuration. Residential proxies recommended for TikTok.

## Actor input object example

```json
{
  "profiles": [],
  "keywords": [],
  "hashtags": [],
  "maxCreators": 500,
  "minFollowers": 0,
  "maxFollowers": 0,
  "verifiedOnly": false,
  "emailOnly": false,
  "phoneOnly": false,
  "mustHaveExternalLink": false,
  "mustHaveContactClue": false,
  "extractFromBio": true,
  "followExternalLinks": true,
  "extractEmails": true,
  "extractPhones": true,
  "extractInstagram": true,
  "extractYoutube": true,
  "includeConfidenceScores": true,
  "includeContactSourceDetails": true,
  "deduplicateCreators": true,
  "countryHint": "",
  "debugMode": false
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `contacts` (type: `string`):

No description

## `leads` (type: `string`):

No description

## `sources` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("coregent/tiktok-contact-extractor").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("coregent/tiktok-contact-extractor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call coregent/tiktok-contact-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=coregent/tiktok-contact-extractor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Tiktok Contact Extractor",
        "description": "TikTok Contact Extractor finds public contact details from TikTok creators, including emails, phones, websites, Instagram, YouTube, and profile data. Use it for influencer outreach, lead generation, creator partnerships, and contact-ready CRM exports.",
        "version": "0.1",
        "x-build-id": "oTOBiZZF7l3a7WsOs"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/coregent~tiktok-contact-extractor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-coregent-tiktok-contact-extractor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/coregent~tiktok-contact-extractor/runs": {
            "post": {
                "operationId": "runs-sync-coregent-tiktok-contact-extractor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/coregent~tiktok-contact-extractor/run-sync": {
            "post": {
                "operationId": "run-sync-coregent-tiktok-contact-extractor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "profiles": {
                        "title": "Profiles",
                        "type": "array",
                        "description": "TikTok profile URLs or usernames to extract contacts from. Accepts @username or full profile URLs.",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "keywords": {
                        "title": "Keywords",
                        "type": "array",
                        "description": "Keywords or niche terms to discover creators (e.g. 'ugc creator skincare', 'fitness coach').",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "hashtags": {
                        "title": "Hashtags",
                        "type": "array",
                        "description": "Hashtags to discover creators from. Accepts plain text, #tag, or full TikTok tag URLs.",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "maxCreators": {
                        "title": "Max Creators",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Maximum number of creator contact records to return across all inputs.",
                        "default": 500
                    },
                    "minFollowers": {
                        "title": "Minimum Followers",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include creators with at least this many followers.",
                        "default": 0
                    },
                    "maxFollowers": {
                        "title": "Maximum Followers",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include creators with at most this many followers. Set 0 for no limit.",
                        "default": 0
                    },
                    "verifiedOnly": {
                        "title": "Verified Only",
                        "type": "boolean",
                        "description": "Only include verified creators.",
                        "default": false
                    },
                    "emailOnly": {
                        "title": "Email Only",
                        "type": "boolean",
                        "description": "Only include creators who have a public email.",
                        "default": false
                    },
                    "phoneOnly": {
                        "title": "Phone Only",
                        "type": "boolean",
                        "description": "Only include creators who have a public phone number.",
                        "default": false
                    },
                    "mustHaveExternalLink": {
                        "title": "Must Have External Link",
                        "type": "boolean",
                        "description": "Only include creators who have an external link in their bio.",
                        "default": false
                    },
                    "mustHaveContactClue": {
                        "title": "Must Have Contact Clue",
                        "type": "boolean",
                        "description": "Only include creators who have at least one contact clue (email, phone, website, or social handle).",
                        "default": false
                    },
                    "extractFromBio": {
                        "title": "Extract From Bio",
                        "type": "boolean",
                        "description": "Parse public TikTok bios for emails, phones, handles, and URLs.",
                        "default": true
                    },
                    "followExternalLinks": {
                        "title": "Follow External Links",
                        "type": "boolean",
                        "description": "Visit public link-in-bio destinations to find additional contact information.",
                        "default": true
                    },
                    "extractEmails": {
                        "title": "Extract Emails",
                        "type": "boolean",
                        "description": "Extract email addresses from bios and linked websites.",
                        "default": true
                    },
                    "extractPhones": {
                        "title": "Extract Phones",
                        "type": "boolean",
                        "description": "Extract phone numbers from bios and linked websites.",
                        "default": true
                    },
                    "extractInstagram": {
                        "title": "Extract Instagram",
                        "type": "boolean",
                        "description": "Extract Instagram handles from bios or linked pages.",
                        "default": true
                    },
                    "extractYoutube": {
                        "title": "Extract YouTube",
                        "type": "boolean",
                        "description": "Extract YouTube handles from bios or linked pages.",
                        "default": true
                    },
                    "includeConfidenceScores": {
                        "title": "Include Confidence Scores",
                        "type": "boolean",
                        "description": "Include confidence scores and lead quality indicators on each record.",
                        "default": true
                    },
                    "includeContactSourceDetails": {
                        "title": "Include Contact Source Details",
                        "type": "boolean",
                        "description": "Include source attribution fields (where each contact clue was found).",
                        "default": true
                    },
                    "deduplicateCreators": {
                        "title": "Deduplicate Creators",
                        "type": "boolean",
                        "description": "Remove duplicate creators discovered from multiple sources.",
                        "default": true
                    },
                    "countryHint": {
                        "title": "Country Hint",
                        "type": "string",
                        "description": "Optional 2-letter country code to hint phone number parsing (e.g. US, AU, GB).",
                        "default": ""
                    },
                    "debugMode": {
                        "title": "Debug Mode",
                        "type": "boolean",
                        "description": "Enable verbose logging for troubleshooting.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Apify proxy configuration. Residential proxies recommended for TikTok."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
