# TikTok Phone Number Scraper - Keyword Search, Verified Numbers (`scrapido/tiktok-phone-number-scraper`) Actor

📞 TikTok Phone Number Scraper finds creator numbers via keyword and location search. ✅ Validated results with country code, line type and carrier data. 🎵 Perfect for influencer outreach & UGC agency campaigns.

- **URL**: https://apify.com/scrapido/tiktok-phone-number-scraper.md
- **Developed by:** [Scrapido](https://apify.com/scrapido) (community)
- **Categories:** Lead generation, Social media, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 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.

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 Phone Number Scraper 📞

**TikTok Phone Number Scraper** helps marketers, sales pros, and researchers find and extract phone numbers from TikTok profiles by using your chosen keywords and country targeting—so you don’t waste time manually hunting for contact details. It’s built for privacy compliant web scraping use cases like tiktok data mining, tiktok phone number lead generation, and OSINT for contact data, then scales quickly when you need a larger tiktok scraper run.

***

### 🌟 Key Features of TikTok Phone Number Scraper

| Feature | Benefit |
|---|---|
| ✅ **Targeted Keyword Search** | Reach the TikTok audience you need using your keywords |
| ✅ **Location Filtering** | Narrow results using an optional city or region filter |
| ✅ **Country Targeting** | Focus results for a selected country dialing format |
| ✅ **Bulk Extraction with Limits** | Stop after a chosen maximum phone number count per run |
| ✅ **Proxy-Ready Scraping** | Built to work reliably on large tasks with built-in proxy support |
| ✅ **Incremental Dataset Saving** | Each discovered result is pushed incrementally to your Apify dataset |
| ✅ **Resilient Long Runs** | Includes resilience features to help when scraping tasks take time |
| ✅ **Clear Dataset Output** | Structured results make tiktok phone number extraction easy to import and analyze |

***

### 📥 Input — TikTok Phone Number Scraper Parameters

```json
{
  "keywords": ["marketing", "founder"],
  "location": "London",
  "country": "United Kingdom (+44)",
  "maxPhoneNumbers": 20
}
```

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `keywords` | Array | ✅ Yes | — | Search terms to find relevant TikTok profiles and content where phone numbers may appear |
| `location` | String | No | `""` | Filter by location (for example, a city like “London”); leave empty for global search |
| `country` | String | ✅ Yes | `United Kingdom (+44)` | Select the country to target for phone numbers |
| `maxPhoneNumbers` | Integer | No | `20` | Stop scraping once this many phone numbers are found (higher limits can extend runtime) |

***

### 📤 Output — What TikTok Phone Number Scraper Returns

The actor saves each result as a JSON record in your Apify dataset.

```json
{
  "keyword": "marketing",
  "title": "Marketing Lead | Growth & Partnerships",
  "description": "Helping brands grow — bookings via WhatsApp. Reach out for collaborations and founder-led campaigns.",
  "url": "https://www.tiktok.com/@londongrowthstudio",
  "phone_number": "+447700900123",
  "country": "United Kingdom",
  "dial_code": "+44"
}
```

| Field | Type | Description |
|---|---|---|
| `keyword` | text | The keyword that surfaced this result during scraping |
| `title` | text | The TikTok title shown for the surfaced profile/content |
| `description` | text | The bio or post content snippet where the phone number was found |
| `url` | link | The direct TikTok URL for the surfaced profile/content |
| `phone_number` | text | The extracted phone number in the targeted country format |
| `country` | text | The country name used for targeting |
| `dial_code` | text | The dial code associated with the selected country |

***

### 💻 How to Use TikTok Phone Number Scraper — Step-by-Step

1. **Open the Actor** — Launch **TikTok Phone Number Scraper** in Apify Console.
2. **Enter Keywords** — Add the terms you want to use for user contact lookup and tiktok data mining.
3. **Set Location (optional)** — Use a city or region to refine tiktok phone number results.
4. **Choose a Country** — Select the country dialing target to improve phone number extraction quality.
5. **Set Max Phone Numbers** — Control run length and cost by capping how many results you want.
6. **Run the Actor** — Start and monitor progress in the Apify logs.
7. **Export Results** — Use the Apify dataset output to continue lead generation workflows (JSON export is ready).

*No coding required. Great for scraping tools and an API alternative when you want structured data fast.*

***

### 💡 Best Use Cases for TikTok Phone Number Scraper

- 🎯 **Lead Generation** — Build contact information scraping lists from TikTok for outreach
- 📣 **Sales Prospecting** — Speed up phone number extraction for targeted campaigns
- 🤝 **OSINT for Contact Data** — Perform privacy compliant scraping to validate public contact details
- 🔬 **Market Research** — Compare tiktok user data by region and dialing target
- 📊 **CRM Enrichment** — Feed extracted phone contacts into your CRM for segmentation and follow-ups

***

### Disclaimer

This actor only accesses **publicly available data** on TikTok. It does not access private profiles, authenticated content, or password-protected pages. Users are solely responsible for ensuring their use complies with TikTok’s Terms of Service and applicable data protection and anti-spam laws (including GDPR/CCPA where relevant). This tool is intended for legitimate purposes only (lead generation, research, and marketing in compliance with local regulations). For data-removal requests, contact 📧 <scrapidocontact@gmail.com>.

***

### 🆘 Support & Feedback

Have a question or found an issue with the **TikTok Phone Number Scraper**? We're here to help.

- 🐞 **Bug Reports:** Open a ticket in the repository's Issues section
- ✨ **Custom Solutions & Feature Requests:** Reach out to our team
- 📧 **Email:** <scrapidocontact@gmail.com>

Your feedback shapes the roadmap — we read every message.

### Multiple Phone Type

**Phone Types** replaces the old single Number Type choice: select as many kinds
of line as you want and the run collects all of them.

| Type | Kept when the number is |
| --- | --- |
| Mobile | A confirmed mobile |
| Landline | A confirmed fixed line |
| Toll-Free | A freephone number |
| VoIP | An internet-telephony number |
| Premium-Rate | A premium-rate number |
| Shared-Cost | A shared-cost number |

Leave it empty for every type. Each number is checked against its *real* line
type before being kept, so the filter is enforced rather than merely requested.
Numbers on ranges where mobile and landline genuinely cannot be told apart (the
US, Canada and Mexico) are kept rather than silently dropped - discarding them
would quietly lose good leads.

### Outreach links

| Field | Meaning |
| --- | --- |
| `telLink` | A clickable `tel:` link, so a row can be dialled straight from a spreadsheet or CRM |
| `whatsappLink` | A `wa.me` chat link, or empty for a confirmed landline or a number that failed validation |
| `whatsappCapable` | Whether the number is on a line WhatsApp can run on |

`whatsappCapable` is a plain yes/no you can filter on. It never claims the
person actually uses WhatsApp - only that the number is of a kind that could.
Switch the links off with **Include WhatsApp links**; the capability flag is
still reported.

# Actor input Schema

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

Enter keywords to search for (e.g., 'Target Keyword').

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

Filter by location (e.g., 'London', 'California'). Leave empty for global search.

## `country` (type: `string`):

Select the country to target for phone numbers.

## `maxPhoneNumbers` (type: `integer`):

Stop scraping after this many phone numbers are found. Setting a higher limit extends the scraping duration.

## `numberType` (type: `string`):

Restrict results to a specific line type, classified offline via libphonenumber. Any keeps every valid match.

## `phoneTypes` (type: `array`):

Which kinds of line to collect. Pick as many as you like - each number is checked against its real line type before it is kept. Leave empty for every type. Numbers on ranges where mobile and landline cannot be told apart (the US, Canada and Mexico) are always kept rather than silently dropped.

## `includeWhatsappLinks` (type: `boolean`):

Add a ready-made wa.me chat link for numbers on a line WhatsApp can run on. The link means the number is in a form WhatsApp accepts - not proof that an account exists.

## Actor input object example

```json
{
  "keywords": [
    "marketing",
    "founder"
  ],
  "country": "United Kingdom (+44)",
  "maxPhoneNumbers": 20,
  "numberType": "Any",
  "phoneTypes": [
    "Mobile"
  ],
  "includeWhatsappLinks": true
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "marketing",
        "founder"
    ],
    "phoneTypes": [
        "Mobile"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapido/tiktok-phone-number-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": [
        "marketing",
        "founder",
    ],
    "phoneTypes": ["Mobile"],
}

# Run the Actor and wait for it to finish
run = client.actor("scrapido/tiktok-phone-number-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": [
    "marketing",
    "founder"
  ],
  "phoneTypes": [
    "Mobile"
  ]
}' |
apify call scrapido/tiktok-phone-number-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapido/tiktok-phone-number-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/YctB8wsTV7OlnJfVK/builds/L4yyfMYgBQLkjcKmA/openapi.json
