# Tiktok Phone Number Scraper (`scraperoka/tiktok-phone-number-scraper`) Actor

📱 TikTok Phone Number Scraper extracts verified phone numbers from TikTok profiles to fuel B2B outreach. 🔎 Fast, targeted leads for sales, marketing & recruiting. ✅ Automate prospecting, boost conversions, save time!

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

## Pricing

from $1.99 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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

### Linkedin Phone Number Scraper 🚀

Manually hunting for phone numbers on LinkedIn wastes hours you don’t have. **Linkedin Phone Number Scraper** automates the collection of phone numbers from public LinkedIn bios, profiles, and posts related to your keywords. This Linkedin Phone Number Scraper (LinkedIn phone number scraper, LinkedIn contact scraper) is ideal for marketers, recruiters, and growth teams who want to build outreach-ready lists fast—thousands of records can be collected in a single run depending on your limits.

***

### What You Get: Sample Output

Here's a sample record from a single run:

```json
{
  "platform": "TikTok",
  "keyword": "marketing",
  "title": "Example title from publicly available LinkedIn-related content",
  "description": "Example text where a phone number may appear in publicly available data.",
  "url": "https://example.com/link-to-publicly-available-result",
  "phone_number": "+447700900123",
  "country": "United Kingdom",
  "dial_code": "+44",
  "proxyGroups": ["legacy"],
  "status": "result",
  "error_message": null
}
```

| Field | Type | What It Tells You |
|---|---|---|
| `platform` | string | Which platform the record was associated with for your lead workflows |
| `keyword` | string | Which keyword triggered the match, so you can trace and refine targeting (great for LinkedIn outreach list scraper use cases) |
| `title` | string | The result title that provides context around why the number was found |
| `description` | string | The source text used to detect phone numbers—useful for validation and audits |
| `url` | string | The link to the publicly available source reference for each phone number |
| `phone_number` | string | The normalized phone number in E.164 format for clean importing into CRMs and dialers |
| `country` | string | The country you selected to target via your country filter |
| `dial_code` | string | The dial code used alongside your country targeting |
| `proxyGroups` | array | Which proxy configuration was used during the run (helpful for operational tracking) |
| `status` | string | The event status for the pushed record (pushed as `result`) |
| `error_message` | string | Error details if something goes wrong (null when pushing succeeds) |

Export your dataset as JSON, CSV, or Excel — straight from the Apify dashboard.

***

### Why Linkedin Phone Number Scraper?

There are a lot of ways to pull contact data from LinkedIn — here’s what sets **Linkedin Phone Number Scraper** apart.

#### Targeted results using your keywords and country dial code

You control what the actor looks for using `keywords` and a selected `country` (with its dial code). This makes the LinkedIn phone number scraper workflow feel more like “precision prospecting” than broad scraping.

#### Output is validated and deduplicated into clean phone numbers

Phone numbers are normalized into E.164 format and the actor avoids duplicates using a `seen_numbers` set. That gives you an output that’s ready for downstream work, a key goal of a LinkedIn email and phone scraper.

#### Resilient scraping with retries and fallbacks

The actor includes retry logic and fallbacks for resilience when results are sparse or requests fail. If results look low, re-running with broader keywords or a higher `maxPhoneNumbers` limit is explicitly recommended.

#### Built-in proxy support for reliable scraping

You can choose an `engine` and optionally provide `proxyConfiguration` to help keep scraping stable at scale. This is especially useful for an automated LinkedIn phone number extraction pipeline that needs consistency.

***

### Configuring Your Run

Drop this into your `input.json` to get started:

```json
{
  "keywords": ["marketing", "founder"],
  "platform": "Linkedin",
  "country": "United Kingdom (+44)",
  "maxPhoneNumbers": 20,
  "engine": "legacy",
  "proxyConfiguration": {}
}
```

| Parameter | Required | What It Does |
|---|---|---|
| `keywords` | ✅ | A list of keywords to search for (example values include terms like `marketing` and `founder`) |
| `platform` | ⬜ | Select platform (currently only `Linkedin` is available) |
| `country` | ✅ | Select a country to scrape related phone numbers from |
| `maxPhoneNumbers` | ⬜ | Maximum number of phone numbers to collect; the scraper stops once the limit is reached |
| `engine` | ⬜ | Choose scraping engine: `cost-effective` (Cost Effective (New)) or `legacy` (Legacy) |
| `proxyConfiguration` | ⬜ | Configure proxies for this Actor (use Apify Proxy settings when needed) |
| ↳ (inside `proxyConfiguration`) | ⬜ | The schema delegates proxy settings to Apify’s proxy editor |

> Note: The input schema marks `keywords` and `country` as required.

***

### Core Capabilities

#### Phone numbers extracted from public LinkedIn content

The scraper finds phone numbers from LinkedIn bios, profiles, and posts related to your provided keywords. This makes it well-suited for a LinkedIn lead scraper phone numbers workflow where you want contact data tied to your targeting terms.

#### Flexible targeting with keywords and country filtering

Use `keywords` to steer discovery and `country` (including its dial code) to focus the phone number output. If you’re running a LinkedIn prospecting with phone numbers campaign, this is where you dial in relevance.

#### Clean E.164 formatting and deduplication

Phone numbers are formatted into E.164 and deduplicated so your dataset stays import-friendly. This is the kind of output hygiene you want from a LinkedIn contact info scraper.

#### Max results control for cost and turnaround

Set `maxPhoneNumbers` to cap output volume per run. Higher values can increase runtime and do not guarantee you’ll reach the cap—use it to balance speed vs. scale.

#### Built for automation workflows

Every found record is pushed to the Apify dataset as it’s discovered, making it easy to chain into exports and automations. That keeps your LinkedIn outreach list scraper pipeline moving without extra manual steps.

#### Resilient runs with retries and fallbacks

The actor includes retries and fallback behavior to handle cases where results are blocked or temporarily unavailable. If you suspect sparse results, the recommended approach is to broaden keywords and/or increase `maxPhoneNumbers`.

***

### Who Gets the Most Out of This

Here's how different teams put Linkedin Phone Number Scraper to work:

**Sales Development Reps** — Use it to turn keyword-driven LinkedIn leads into a phone-number list in E.164 format, so calling sequences can start faster. The outcome is a cleaner prospecting dataset with country-focused phone numbers.

**Recruiters** — Build outbound lists for roles by running targeted keyword sets and a chosen country filter. Instead of manually copying details, the recruiter gets a ready-to-import dataset for follow-up outreach.

**Marketing teams and growth operators** — Maintain experiments where you compare lead-quality results by keyword group. Linkedin Phone Number Scraper helps you gather consistent phone-number candidates tied to each keyword run.

**Data analysts and researchers** — Collect phone-number datasets from public sources with consistent fields like `keyword`, `country`, and `dial_code`. This makes it easier to run quality checks and measure coverage by targeting strategy.

**Automation & integration specialists (technical)** — Integrate the actor into scheduled pipelines using the dataset outputs, then export or push results into your systems. The goal is to keep a reliable LinkedIn email and phone scraper workflow running end to end.

***

### Step-by-Step: How to Use It

No coding needed. Here's how to run Linkedin Phone Number Scraper from start to finish:

1. **Open the actor on Apify** — visit [console.apify.com](https://console.apify.com) and find Linkedin Phone Number Scraper.
2. **Enter your inputs** — set `keywords`, choose a `country`, and optionally adjust `maxPhoneNumbers`, `engine`, and `proxyConfiguration`.
3. **Configure proxy settings** — use the proxy options in Run configuration if you want additional support for scraping reliability.
4. **Hit Run and watch the live log** — monitor progress and any retry or block-related messages.
5. **View results in the dataset tab** — each discovered phone number is pushed to the dataset as it’s found.
6. **Export as JSON, CSV, or Excel** — download from the Apify dashboard for immediate use in your CRM or outreach tools.

The whole process takes under 5 minutes to set up.

***

### Integrations & Export Options

Once your data is collected, Linkedin Phone Number Scraper plugs directly into your existing workflow.

You can export your dataset in **JSON, CSV, or Excel** format directly from the Apify dataset tab, which is ideal for a LinkedIn outreach list scraper or LinkedIn data scraping phone numbers pipeline.

For automation, you can connect the actor’s runs to your systems using Apify-supported options like **API access**, **webhooks**, and no-code tools such as **Zapier** or **Make**—the details are available in the Apify documentation at [apify.com/docs/api](https://apify.com/docs/api). You can also set up **scheduled runs** so LinkedIn contact scraper results refresh automatically.

***

### Pricing & Free Trial

Linkedin Phone Number Scraper runs on the Apify platform, which offers a **free tier** — no credit card required to get started. You can use the free credits for several test runs, then scale based on your volume needs.

For ongoing usage, Apify pricing is generally based on platform compute units (CU). For exact plan limits and costs, check the pricing page on [apify.com](https://apify.com). Start for free at [apify.com](https://apify.com) and scale when you're ready.

***

### Reliability & Performance

| What We Handle | How |
|---|---|
| Sparse/blocked results | Includes retries and fallbacks to improve resilience when results are limited |
| Result volume limits | `maxPhoneNumbers` caps how many phone numbers are collected per run |
| Data consistency | Phone numbers are normalized to E.164 format and deduplicated |
| Scraping stability at scale | Engine choice and proxy configuration support for more reliable scraping |
| Error visibility | Push attempts can fail gracefully, with `error_message` available in outputs |

**Limitations:** The actor works with phone numbers found in public LinkedIn bios, profiles, and posts related to your keywords. It can’t access login-gated or private content, so results depend on what contact info is publicly available. For enterprise-scale runs, contact us to discuss custom configurations.

***

### Frequently Asked Questions

#### Is there a free plan or trial?

Yes. Apify offers a free tier so you can test Linkedin Phone Number Scraper before scaling up.

#### Do I need to log in to LinkedIn to use this?

No. This actor scrapes phone numbers from publicly available LinkedIn content (bios, profiles, and posts related to your keywords).

#### How accurate is the data?

Accuracy depends on what the LinkedIn profile owner has published publicly. The actor extracts phone numbers from publicly available sources and then normalizes them into E.164 format.

#### How many results can I get per run?

You control results using `maxPhoneNumbers`. The scraper stops when it reaches that limit, and larger limits may take longer without guaranteeing the cap will always be reached.

#### How often is the data updated / how fresh is it?

Data freshness depends on when you run the actor. Each run collects phone numbers from the publicly available LinkedIn content at that time.

#### Is this legal? Does it comply with GDPR / CCPA?

You are responsible for ensuring your usage complies with GDPR, CCPA, platform Terms of Service, and any applicable local regulations. The actor only uses **publicly available data**.

#### Can I export results to Google Sheets or Excel?

Yes. You can export your dataset as JSON, CSV, or Excel from the Apify dashboard, and then import it into tools like spreadsheets or CRMs.

#### Can I run this on a schedule automatically?

Yes. You can schedule actor runs on the Apify platform, which is useful for repeatedly refreshing a LinkedIn contact info scraper dataset.

#### Can I access this via API?

Yes. You can trigger runs and retrieve dataset results programmatically using the Apify API. See [apify.com/docs/api](https://apify.com/docs/api).

#### What happens if the actor hits an error?

If the actor encounters issues while fetching pages or pushing results, it uses resilience tactics like retries and fallbacks. Failures are handled so you keep whatever records were successfully discovered and pushed to your dataset.

***

### Need Help or Have a Request?

Got a question about Linkedin Phone Number Scraper or want a new feature added? Reach out at <dataforleads@gmail.com>. We welcome requests for improvements—such as workflow-friendly export upgrades and automation triggers—and we keep the actor maintained based on user feedback.

***

### Disclaimer & Responsible Use

*Linkedin Phone Number Scraper is the fastest, most reliable way to collect phone numbers from public LinkedIn bios, profiles, and posts—start your free run today.*

This actor collects **publicly available data** only. It does not access private profiles, login-gated content, or password-protected pages. You are responsible for complying with GDPR, CCPA, platform ToS compliance, and any applicable local regulations. For data-removal requests, contact <dataforleads@gmail.com>. Use responsibly, ethically, and only for lawful purposes.

# Actor input Schema

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

A list of keywords to search for. (Example: John, marketing, etc.)

## `platform` (type: `string`):

Select platform.

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

Select a country to scrape related phone numbers.

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

Maximum number of phone numbers to collect. The scraper will stop once this limit is reached. Setting a higher limit allows for more potential results but doesn't guarantee reaching that number. This helps save costs by controlling scraping time.

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

Choose scraping engine. 🚀 Cost Effective (New): Uses residential proxies with async requests for faster, cheaper scraping. 🔧 Legacy: Uses GOOGLE\_SERP proxy with traditional selectors - more reliable but slower and more expensive.

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

Configure proxies for this Actor.

## Actor input object example

```json
{
  "keywords": [
    "marketing",
    "founder"
  ],
  "platform": "Linkedin",
  "country": "United Kingdom (+44)",
  "maxPhoneNumbers": 20,
  "engine": "legacy"
}
```

# 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"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraperoka/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",
    ] }

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

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/UMaqvLEHkL4SoetOE/builds/x5V5l7Ypzj0Fl5E4G/openapi.json
