# LinkedIn Phone Number Lookup — Moved to LinkedIn to Phone (`b2bsearch/linkedin-phone-lookup`) Actor

This listing has moved to LinkedIn to Phone (b2bsearch/linkedin-to-phone): every phone number on record with name, title and company, $12 per 1,000 found, profiles without a number free. Existing runs and integrations keep working.

- **URL**: https://apify.com/b2bsearch/linkedin-phone-lookup.md
- **Developed by:** [B2B Search Enriched](https://apify.com/b2bsearch) (community)
- **Categories:** Lead generation, Social media, Automation
- **Security:** Limited permissions
- **Stats:** 5 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 phone number founds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

> **This listing has moved to [LinkedIn to Phone](https://apify.com/b2bsearch/linkedin-to-phone).**
> It returns every phone number on record for a profile, with the person's
> name, title and company, at $12 per 1,000 numbers found; profiles without
> a number stay free. Runs and integrations that already use this Actor keep
> working, but it is no longer developed.

### What does LinkedIn Phone Number Lookup do?

**LinkedIn Phone Number Lookup** takes a list of LinkedIn profile URLs and
returns the **first phone number on record** for each person, with their
name. It is built for bulk lists where the price per number matters more
than the details: **$3 per 1,000 numbers found**, and a profile without a
number costs nothing.

It is a **US-centric lookup**: 93% of the numbers we hold are US (+1)
numbers, and very few profiles outside the US carry one. Numbers are returned
**as recorded** — they are not labelled mobile, direct or office.

- **You pay only when a number is found.** $3 per 1,000 profiles that come
  back with a number.
- **Every miss is a free row that says why**: no number on record, unknown
  profile, removed profile, malformed entry.
- **Up to 1,000 profile URLs per run**, from the form, the API or an MCP
  client.
- **No login, cookies or API key needed.**

### How many numbers will I get back?

On 400 US decision-maker profiles (founders, C-level, VPs) on 2026-10-01,
this lookup returned a number for **95 of them (24%)**. On the same 400
URLs, another database lookup available on this Store returned 23, and each
of those 23 numbers was also among our 95.

| Profiles | Share with a number on record |
|---|---|
| US decision makers | about 1 in 4 |
| Other US profiles | about 8% |
| Profiles outside the US | 0–2% |

If your list is mostly outside the US, expect very few results — and a
near-zero bill.

### This Actor or LinkedIn to Phone?

Both look up the same records. They differ in what a found row carries and
what it costs.

| | LinkedIn Phone Lookup (this Actor) | [LinkedIn to Phone](https://apify.com/b2bsearch/linkedin-to-phone) |
|---|---|---|
| Price per number found | **$0.003** ($3 per 1,000) | $0.012 ($12 per 1,000) |
| Misses | free | free |
| Phone numbers per person | the first one on record | every one on record |
| Name | yes | yes |
| Job title, company, location, country | — | yes |

About a third of the people with a number have more than one on record. A
found row here says how many more there are in `morePhonesOnRecord`; LinkedIn
to Phone returns all of them, with the person's current role, so you can
check you are calling the right person at the right company.

### What data do you get?

| Field | Example | Notes |
|---|---|---|
| `_status` | `found` | `found`, `no_phone`, `not_found`, `profile_removed`, `invalid`, `paused`, `error` |
| `_input.profile` | `jane-doe-example` | the handle we looked up |
| `linkedinUrl` | `https://www.linkedin.com/in/jane-doe-example` | on `found` and `no_phone` rows |
| `fullName` | `Jane Doe` | on `found` rows |
| `phone` | `+15125550142` | the first number on the record, as recorded |
| `morePhonesOnRecord` | `1` | only when the record holds more than one number |
| `_error` | | a plain sentence on every row that is not `found` |

### How to look up phone numbers from LinkedIn URLs (3 steps)

1. Paste your LinkedIn profile URLs, one per line. Bare handles
   (`jane-doe-example`) work too.
2. Press **Start** and wait for the run to finish.
3. Export the dataset as CSV, Excel or JSON, or read it through the API.

### How much does it cost?

| Event | Price | When |
|---|---|---|
| Phone number found | **$0.003** ($3 per 1,000) | the profile matched and the row carries a number |
| Profile without a number | **$0** | `no_phone` row |
| Unknown or removed profile, malformed entry, duplicate | **$0** | `not_found`, `profile_removed`, `invalid` rows; duplicates are looked up once |

1,000 US decision-maker URLs return roughly 240 numbers, about $0.72. The
platform's free $5 monthly credit covers well over a thousand found numbers.
A small per-run start fee may apply; it is shown on the Pricing tab.

### Pay only for what we find

You pay only for rows that carry a phone number. Every miss is free and says why, so a test run on your own list costs only what it finds.

### Input

```json
{
  "profileUrls": [
    "https://www.linkedin.com/in/jane-doe-example",
    "linkedin.com/in/sam-rivera-example/?trk=public_profile",
    "alex-kim-example",
    "https://www.linkedin.com/company/acme-example"
  ]
}
```

Full links, links without `https://`, mobile links, links with tracking
parameters and bare handles all work. Different spellings of the same profile
are folded together and looked up once. Company pages and links from other
sites are returned as free `invalid` rows.

### Output

A profile with a number on record (charged):

```json
{
  "_status": "found",
  "_input": { "profile": "jane-doe-example" },
  "linkedinUrl": "https://www.linkedin.com/in/jane-doe-example",
  "fullName": "Jane Doe",
  "phone": "+15125550142",
  "morePhonesOnRecord": 1
}
```

A profile we know, with no number on record (free):

```json
{
  "_status": "no_phone",
  "_input": { "profile": "sam-rivera-example" },
  "linkedinUrl": "https://www.linkedin.com/in/sam-rivera-example",
  "_error": "The profile is in the database, but no phone number is on record for it. Not charged."
}
```

The values above are fictional. If the listing is ever switched off for
maintenance, every entry comes back as a free `paused` row and nothing is
looked up or charged.

### FAQ

#### Am I charged when nothing is found?

No. Only a row with `_status: "found"` is charged. A profile without a
number, an unknown URL, a removed profile and a malformed entry are all free
rows with an explanation in `_error`.

#### Why is it cheaper than LinkedIn to Phone?

It returns less: one number and the name. If you need every number on the
record or the person's job title and company, use
[LinkedIn to Phone](https://apify.com/b2bsearch/linkedin-to-phone).

#### Are these mobile numbers or direct dials?

We do not know, and the rows do not say. Each number is returned exactly as it
is recorded. Some are mobiles, some are office lines. Check a number before
you build a calling campaign on it.

#### Can I run it in bulk from a CSV?

Paste up to 1,000 URLs per run into the input list — a column copied from a
spreadsheet works as is. For more, split the list into several runs or start
runs through the API. If a run reaches its time limit, the rows already
delivered stay and nothing else is charged.

#### Does it need cookies, login or an API key?

No. You do not connect a LinkedIn account and you do not provide cookies.
Your Apify account is all you need.

#### Is it legal to look up a phone number from a LinkedIn profile?

That depends on where you and the person are and on what you do with the
number. You are responsible for having a lawful basis for your use. In the
US, calls and texts are regulated by the Telephone Consumer Protection Act
(TCPA) and the federal and state Do Not Call rules: check numbers against the
National Do Not Call Registry and get the consent the law requires before you
use an autodialer, a prerecorded voice or text messages. See the disclaimer
below.

### Related Actors: which one should you use?

| Need | Actor |
|---|---|
| Email → LinkedIn profile URL | [Email to LinkedIn](https://apify.com/b2bsearch/email-to-linkedin) |
| Email → current company and job title | [Email to Company](https://apify.com/b2bsearch/email-to-company) |
| Email → phone numbers on record | [Email to Phone](https://apify.com/b2bsearch/email-to-phone) |
| Email → X (Twitter) profile | [Email to Twitter](https://apify.com/b2bsearch/email-to-twitter) |
| Email → Facebook profile | [Email to Facebook](https://apify.com/b2bsearch/email-to-facebook) |
| Email → full professional profile | [Reverse Email Lookup](https://apify.com/b2bsearch/reverse-email-lookup) |
| LinkedIn URL → full profile | [Profile Lookup](https://apify.com/b2bsearch/profile-lookup) |
| LinkedIn URL → email addresses on record | [LinkedIn Email Finder](https://apify.com/b2bsearch/linkedin-email-finder) |
| LinkedIn URL → first phone number on record | **LinkedIn Phone Lookup** (this Actor) |
| LinkedIn URL → every phone number, job title, company, location | [LinkedIn to Phone](https://apify.com/b2bsearch/linkedin-to-phone) |
| X (Twitter) handle → email | [Twitter to Email](https://apify.com/b2bsearch/twitter-to-email) |
| X (Twitter) handle → LinkedIn profile | [Twitter to LinkedIn](https://apify.com/b2bsearch/twitter-to-linkedin) |
| X (Twitter) handle → phone numbers on record | [Twitter to Phone](https://apify.com/b2bsearch/twitter-to-phone) |
| Facebook profile → email | [Facebook to Email](https://apify.com/b2bsearch/facebook-to-email) |
| Facebook profile → phone numbers on record | [Facebook to Phone](https://apify.com/b2bsearch/facebook-to-phone) |
| Facebook profile → LinkedIn profile | [Facebook to LinkedIn](https://apify.com/b2bsearch/facebook-to-linkedin) |
| GitHub username → email | [GitHub to Email](https://apify.com/b2bsearch/github-to-email) |
| GitHub username → LinkedIn profile | [GitHub to LinkedIn](https://apify.com/b2bsearch/github-to-linkedin) |
| Name + company domain → work email | [Work Email Finder](https://apify.com/b2bsearch/work-email-finder) |
| Name + company domain → LinkedIn profile | [Name to Profile](https://apify.com/b2bsearch/name-to-profile) |
| Name + company domain → phone numbers on record | [Name to Phone](https://apify.com/b2bsearch/name-to-phone) |
| Handle on any of three networks → full profile | [Social Handle Lookup](https://apify.com/b2bsearch/social-handle-lookup) |
| Company domain → company record | [Domain to Company](https://apify.com/b2bsearch/domain-to-company) |
| Company domain → decision makers | [Decision Maker Finder by Domain](https://apify.com/b2bsearch/domain-to-decision-makers) |
| Company domain → current employees | [Company Employees](https://apify.com/b2bsearch/company-employees) |
| Company domain → former employees | [Former Employees Finder](https://apify.com/b2bsearch/former-employees-finder) |
| Filters → list of people | [People Database Search](https://apify.com/b2bsearch/people-database-search) |
| Filters → leads with an email, from $1.50/1k | [B2B Leads Finder](https://apify.com/b2bsearch/b2b-leads-finder) |
| Filters → list of companies | [Company Database Search](https://apify.com/b2bsearch/company-database-search) |
| CSV of emails, URLs or names → profiles in bulk | [Bulk People Enrichment](https://apify.com/b2bsearch/bulk-people-enrichment) |

### Free Apify plan

Free accounts get the same rows as paid ones, with three limits. A run delivers
at most 100 results; an account gets 500 dataset rows per calendar
month on this Actor, found rows and misses alike; and a row that finds nothing
carries only its status. Previews and counts, where this Actor offers them, stay
free and outside the monthly allowance. When a limit stops a run, the status
line and the last dataset row say which limit it was, what is left and when it
resets. Any paid Apify plan removes all of this: Starter is $19/month and
includes $19 of usage.

### Feedback and reviews

This listing has moved to
[LinkedIn Phone Number Finder](https://apify.com/b2bsearch/linkedin-to-phone),
which gets the fixes first. Reviews and issues are read there. Existing runs
and integrations on this page keep working.

### Disclaimer and permitted use

**Independent product.** This Actor is an independent tool. It is not
affiliated with, endorsed by, or sponsored by LinkedIn Corporation.
LinkedIn® is a trademark of its owner. It is named here only to describe the
kind of public profile link this Actor accepts.

**No platform access.** This Actor does not log in to LinkedIn and does not
collect anything from it. Every answer comes from our own database of
business-contact records. It never returns passwords, messages, or content
from non-public accounts.

**Permitted use.** Business-to-business purposes only: sales prospecting,
recruiting outreach, CRM enrichment, and confirming that a business contact
is who they say they are. You may not use this Actor or its output to:

- stalk, harass, threaten, dox or publicly expose any person;
- identify the person behind a pseudonymous account;
- decide on anyone's eligibility for credit, employment, housing or
  insurance. This Actor is not a consumer reporting agency and its output is
  not a consumer report under the U.S. Fair Credit Reporting Act;
- send unsolicited bulk messages, or place autodialed or prerecorded calls or
  texts without the consent the law requires;
- profile people by health, religion, political opinion, sexual orientation,
  ethnicity or union membership;
- build or resell a contact database from the results.

**Your responsibilities.** You decide whom to look up and what to do with the
result. You are responsible for having a lawful basis for that use and for
complying with the laws that apply to you, including GDPR and UK GDPR,
ePrivacy and PECR, CCPA/CPRA and CAN-SPAM. Phone numbers carry their own
rules: before you call or text a number from this Actor, you are responsible
for complying with the U.S. Telephone Consumer Protection Act (TCPA), the
National Do Not Call Registry and state Do Not Call lists, and the equivalent
rules in the country you are calling. Honor every opt-out you receive.

**Removal requests.** To have a person's data removed, open an issue on
this Actor with only the profile link. Nothing else is needed, and the
record is removed from every listing.

**Accuracy.** Records can be incomplete or out of date, and a number may no
longer belong to the person. Output is provided as is. Check before you rely
on it.

# Actor input Schema

## `profileUrls` (type: `array`):

One LinkedIn profile URL or bare handle per line, up to 1,000 per run. US-centric: a number is on record for about 1 in 4 US decision-maker profiles, few elsewhere. A found row carries the first number and the name; $3 per 1,000 profiles returned with a number. A profile without one is a free "no_phone" row, and bad or removed entries are free too.

## Actor input object example

```json
{
  "profileUrls": [
    "https://www.linkedin.com/in/benzvaifler"
  ]
}
```

# Actor output Schema

## `results` (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 = {
    "profileUrls": [
        "https://www.linkedin.com/in/benzvaifler"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("b2bsearch/linkedin-phone-lookup").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 = { "profileUrls": ["https://www.linkedin.com/in/benzvaifler"] }

# Run the Actor and wait for it to finish
run = client.actor("b2bsearch/linkedin-phone-lookup").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 '{
  "profileUrls": [
    "https://www.linkedin.com/in/benzvaifler"
  ]
}' |
apify call b2bsearch/linkedin-phone-lookup --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,b2bsearch/linkedin-phone-lookup"
        }
    }
}
```

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/EbYuKJBKvZcln8Hyf/builds/DGC1CzHm96n1LdO8Z/openapi.json
