# Best Linkedin Phone Number Scraper (`solid-scraper/best-linkedin-phone-number-scraper`) Actor

📞 Unlock targeted leads with the Best LinkedIn Phone Number Scraper—extract verified phone numbers for sales, outreach, and growth. ⚡ Save time, boost conversions, and find the right contacts fast. 🔎

- **URL**: https://apify.com/solid-scraper/best-linkedin-phone-number-scraper.md
- **Developed by:** [SolidScraper](https://apify.com/solid-scraper) (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 🔍

**LinkedIn Phone Number Scraper** is an automated way to extract phone numbers from LinkedIn pages and turn them into a structured dataset. If you’re looking for a *LinkedIn email and phone number scraper*, a *LinkedIn phone number extractor*, or a *LinkedIn lead generation phone scraper*, this actor helps you quickly collect business and contact phone details for your outreach and research workflows.

Whether you’re a marketer, recruiter, or data enthusiast, **LinkedIn Phone Number Scraper** uses your keywords and region targeting to find relevant contacts and save results at scale—so you can stop manual searching and start building lists faster.

***

### Why choose LinkedIn Phone Number Scraper?

| Feature | Benefit |
|---|---|
| ✅ **All-in-one phone extraction** | Extracts phone numbers from LinkedIn profiles, companies, posts, and pulse content in a single run |
| ✅ **Built-in reliability & fallback logic** | Continues scraping even when some pages fail to return usable results |
| ✅ **Success-focused parsing** | Detects and formats phone numbers using phone parsing and deduplication |
| ✅ **Structured, ready-to-use output** | Saves consistent fields (including source context like `keyword` and `source_type`) |
| ✅ **Scales across multiple keywords** | Lets you run batches of roles/industries (via `searchTerms`) and stop at a clear limit |
| ✅ **Apify dataset integration** | Pushes each discovered record incrementally to the dataset for easy export |

***

### Key features

- 🔎 **LinkedIn phone number extraction**: Extracts phone numbers and saves each unique number with its source context
- 🧠 **Keyword-driven targeting**: Uses your `searchTerms` array to focus results on roles or industries (e.g., CEO, founder, marketing manager)
- 🌐 **Source type selection**: Target `All`, `Profile`, `Company`, `Posts`, or `Pulse` depending on whether you want personal vs business lines
- 🛡️ **Resilient scraping behavior**: Includes fallbacks and stopping rules to handle low-yield pages without running forever
- 🔄 **Deduplication built-in**: Ensures the same phone number isn’t pushed multiple times using a `seen_numbers` mechanism
- 📊 **Clear phone limits**: Stop scraping after the actor finds up to your `maxPhoneNumbers` (with a free-user cap applied on Apify)
- 💾 **Incremental dataset saving**: Pushes discovered rows as they’re found, so you can export without waiting for everything to finish
- 🔗 **Source-aware records**: Each output row includes `url` and `source_type` so you can review and validate quickly

***

### Input

Provide input via an `input.json` file. Example structure:

```json
{
  "country": "United States (+1)",
  "maxPhoneNumbers": 20,
  "searchTerms": ["ceo", "marketing manager", "founder"],
  "sourceRegion": "All"
}
```

#### Input Fields

| Field | Required | Description |
|---|---:|---|
| `country` | ✅ | Select the country to target for results. This also drives the dial code used for phone parsing. |
| `maxPhoneNumbers` | ✅ | Stop scraping after this many phone numbers are found. Set a smaller value for quick tests or a larger one for lead-building. |
| `searchTerms` | ✅ | Enter keywords to find LinkedIn profiles or companies (for example: `CEO`, `Marketing Managers`, `Tech Startups`). You can provide multiple terms. |
| `sourceRegion` | ✅ | Select the type of LinkedIn page to target: `All`, `Profile`, `Company`, `Posts`, or `Pulse`. |

***

### Output

After execution, the actor pushes each discovered phone number record to the dataset as JSON rows.

Example dataset row:

```json
[
  {
    "keyword": "ceo",
    "title": "No title",
    "description": "No data",
    "phone_number": "+14155552671",
    "country": "United States",
    "dial_code": "+1",
    "url": "https://example.com",
    "source_type": "All"
  }
]
```

#### Output Fields

| Field | Type | Description |
|---|---|---|
| `keyword` | string | The keyword (from your `searchTerms`) associated with the discovered contact |
| `title` | string | The title text taken from the page result |
| `description` | string | Extracted text snippet used for phone number detection |
| `phone_number` | string | The unique phone number in E.164 format |
| `country` | string | Target country name used for the run |
| `dial_code` | string | Dial code for the target country |
| `url` | string | The source page URL for quick review |
| `source_type` | string | The selected LinkedIn source type (`All`, `Profile`, `Company`, `Posts`, or `Pulse`) |

> Export tip: In Apify, you can typically export the dataset to formats like JSON/CSV from the **Dataset** tab after the run finishes.

***

### How to use LinkedIn Phone Number Scraper (via Apify Console)

1. **Open Apify Console**\
   Log in at https://console.apify.com and go to the **Actors** section.

2. **Find LinkedIn Phone Number Scraper**\
   Search for **LinkedIn Phone Number Scraper** and open the actor page.

3. **Go to the INPUT panel**\
   Paste your configuration into the built-in input form (or switch to JSON editor) using the fields below: `country`, `maxPhoneNumbers`, `searchTerms`, `sourceRegion`.

4. **Pick your targeting settings** 🎯\
   Use `country` to control the region, and `sourceRegion` to decide whether you want `Profile`, `Company`, `Posts`, `Pulse`, or `All`.

5. **Set a phone limit for quick tests** ⏱️\
   Choose `maxPhoneNumbers` (e.g., 20–50) to validate results before running a larger extraction.

6. **Run the actor** ▶️\
   Click **Run**. Monitor progress in the logs—results are pushed incrementally as phone numbers are found, and the actor stops once the limit is reached.

7. **Open the dataset results** 📦\
   After completion, open the **Dataset** tab to view the scraped phone numbers with `keyword`, `phone_number`, `url`, and `source_type`.

8. **Export to your workflow** 🔁\
   Export the dataset to JSON/CSV (or use it directly in downstream steps in your pipeline).

No coding required—get accurate results in minutes with **LinkedIn Phone Number Scraper**.

***

### Advanced features & SEO optimization

- 🧩 **Built for LinkedIn phone number lead gen**: Engineered for “LinkedIn phone number scraper” workflows where you want contact details tied to searchable roles and industries
- 🔄 **Stop-at-limit controls**: Uses `maxPhoneNumbers` so you can balance coverage vs speed (and avoid over-collecting)
- 🕵️ **Input normalization for keywords**: Supports `searchTerms` as an array so you can run *automated LinkedIn phone number scraping* across multiple job titles
- 📊 **Rich result context**: Each record includes `keyword`, `source_type`, and `url`, making a *LinkedIn contact details scraper* output more actionable for review and CRM hygiene

***

### Best use cases

- 📈 **Lead generation teams building outreach lists**: Extract business phone lines and contacts tied to roles (powered by `searchTerms`) to accelerate prospecting
- 🎯 **Recruiters searching for talent pipelines**: Use `sourceRegion: "Profile"` to focus on personal contact details for candidates and decision-makers
- 🏢 **B2B marketers qualifying accounts**: Use `sourceRegion: "Company"` to capture likely business contact phone numbers for outreach sequences
- 🧪 **Market researchers mapping industry contacts**: Combine multiple role/industry keywords with region selection to compare contact availability by country
- 🔔 **Sales ops enriching CRMs**: Feed phone data into a CRM pipeline with consistent fields like `phone_number`, `dial_code`, and `url`
- 🧰 **Data analysts running audit or coverage checks**: Quantify how many unique phone numbers are discoverable per keyword and `source_type` under a given limit

***

### Technical specifications

- **Supported Input Formats**
  - ✅ `searchTerms` as an array
  - ✅ `country` selection from the provided enum
  - ✅ `sourceRegion` selection: `All`, `Profile`, `Company`, `Posts`, `Pulse`

- **Proxy Support**
  - ✅ Built-in proxy support for reliable scraping

- **Retry Mechanism**
  - ✅ Includes retries and fallbacks for resilience

- **Dataset Structure**
  - ✅ Each discovered phone number is pushed into the dataset with fields: `keyword`, `title`, `description`, `phone_number`, `country`, `dial_code`, `url`, `source_type`

- **Rate Limits & Performance**
  - ✅ Performance depends on page responsiveness and network conditions
  - ✅ The actor stops once `maxPhoneNumbers` is reached

- **Limitations**
  - ❌ Only phone numbers that can be detected from publicly available sources will be included
  - ❌ Private or restricted information that isn’t accessible publicly won’t be collected

***

### FAQ

#### Is this LinkedIn Phone Number Scraper free to use?

✅ The actor enforces a maximum number of results on free Apify usage. On Apify, free users are limited to **100 phone numbers maximum**. If you need more, you’ll need a paid plan to remove this restriction.

#### Do I need a special login to run it?

❌ No special login is required by the actor based on the provided inputs. It focuses on extracting phone numbers from publicly available sources and saves what it can detect.

#### What LinkedIn pages does this actor target?

✅ You can choose `sourceRegion` as `All`, `Profile`, `Company`, `Posts`, or `Pulse`. That setting is saved into each output record as `source_type`.

#### How does `maxPhoneNumbers` work?

✅ `maxPhoneNumbers` is a hard stop for how many phone numbers the actor will find during the run. Once the number of unique phone results reaches your limit, the actor stops scraping.

#### What does the dataset contain?

✅ Each output row includes `keyword`, `phone_number` (in E.164 format), `country`, `dial_code`, and source context like `url` and `source_type`, so you can validate and use the results quickly.

#### Can I use this in an automated pipeline?

✅ Yes. The actor pushes results incrementally to Apify’s dataset, which you can export to JSON/CSV and feed into downstream automation, including CRM enrichment and analytics.

#### Is it legal to use extracted phone numbers for outreach?

✅ The actor only collects data from **publicly accessible sources**, but legal compliance (including GDPR/CCPA obligations, spam regulations, and platform terms) is your responsibility. Always ensure your outreach practices comply with applicable laws.

#### Can I remove data later?

✅ Yes—if you have data-removal requests, contact <dataforleads@gmail.com>.

***

### Support & feature requests

Have feedback on the **LinkedIn Phone Number Scraper** output, dataset fields, or workflow fit? We’d love to hear it.

- 💡 **Feature Requests**: Share enhancements like additional export formats, more output fields for auditing, or workflow-friendly filters for LinkedIn email and phone number scraper use cases.
- 📧 **Contact**: Email us at <dataforleads@gmail.com>.

Your feedback directly shapes future improvements to the **LinkedIn Phone Number Scraper**.

***

### *LinkedIn Phone Number Scraper* — Final thoughts

*If you want an SEO-optimized LinkedIn contact details scraper for phone number lead generation, this is built to help you move from keywords to structured results fast—at scale.*

# Actor input Schema

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

Select the country to target for Google search results.

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

Stop scraping after this many phone numbers are found.

## `searchTerms` (type: `array`):

Enter keywords to find LinkedIn profiles/companies (e.g., 'CEO', 'Marketing Managers', 'Tech Startups').

## `sourceRegion` (type: `string`):

Select the type of LinkedIn page to target.

## Actor input object example

```json
{
  "country": "United States (+1)",
  "maxPhoneNumbers": 20,
  "searchTerms": [
    "ceo",
    "marketing manager",
    "founder"
  ],
  "sourceRegion": "All"
}
```

# 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 = {
    "searchTerms": [
        "ceo",
        "marketing manager",
        "founder"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("solid-scraper/best-linkedin-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 = { "searchTerms": [
        "ceo",
        "marketing manager",
        "founder",
    ] }

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

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/xANpejoAkPH3hHQ3V/builds/0c7XCoJ0tslCTW7uC/openapi.json
