Best Linkedin Phone Number Scraper avatar

Best Linkedin Phone Number Scraper

Pricing

from $2.99 / 1,000 results

Go to Apify Store
Best Linkedin Phone Number Scraper

Best Linkedin Phone Number Scraper

Best LinkedIn Phone Number Scraper extracts publicly listed phone numbers by keyword and country - phone number, dial code, profile title, description, URL and source type. πŸ“ž Built for B2B sales prospecting, recruiting and CRM enrichment.

Pricing

from $2.99 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Hub

Scrapers Hub

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

πŸ“ž Best LinkedIn Phone Number Scraper – B2B Contact Data & Lead Generation Extractor

The LinkedIn Phone Number Scraper finds publicly visible phone numbers associated with LinkedIn profiles, company pages, posts and Pulse articles by running targeted search-engine queries and validating every match against the international numbering plan. Give it a set of job titles or industry keywords plus a target country, and it returns a clean dataset of contact records β€” each with the phone number in E.164 format, the LinkedIn URL it came from, the page title, the surrounding snippet text, and the country and dial code it was matched against.

This LinkedIn phone number scraper is aimed at B2B lead generation, sales prospecting and recruitment sourcing teams who need direct dial data rather than another list of generic info@ mailboxes. Rather than scraping LinkedIn's own interface, it queries indexed public search results scoped to LinkedIn domains, then applies the phonenumbers library β€” the same validation logic used across the telecoms industry β€” so what lands in your dataset is a genuinely dialable number rather than an order reference or a date that happens to look numeric.


πŸ“Š What Data Can You Extract with This LinkedIn Phone Number Scraper?

Each dataset row is one validated, deduplicated phone number together with the context that produced it. Grouped by purpose, the real output fields look like this.

CategoryFieldsWhat You Get
☎️ Contact dataphone_numberThe validated number in E.164 international format, ready for dialers and CRM import
🌍 Geographic targetingcountry, dial_codeThe country the search targeted and its international dial code
πŸ”— Source attributionurlThe LinkedIn URL where the number was surfaced, so every record is traceable
🏷️ Page contexttitle, descriptionThe page title and the surrounding snippet text that contained the number
πŸ” Query provenancekeywordThe search term from your input that produced this particular result
πŸ—‚οΈ Record classificationsource_typeWhether the match came from profiles, company pages, posts, Pulse articles, or all of them

The description field is the one that turns a phone list into a usable prospecting list. Because it carries the snippet text surrounding the number, it usually contains the role, the company, or the context in which the person published their contact details β€” enough qualification signal to prioritise a call list before anyone picks up a phone.


🌟 Key Features of the LinkedIn Phone Number Scraper

FeatureDescription
βœ… Real number validationEvery candidate is parsed with the phonenumbers library against the target country's numbering plan, so malformed strings are discarded
🌐 E.164 normalisationNumbers are output in the international E.164 format, the standard most CRMs, dialers and telephony APIs expect
πŸ—ΊοΈ 190+ country targetingA built-in mapping covers international dial codes and ISO country codes for the vast majority of world countries
🎯 Four LinkedIn source typesScope your search to profiles, company pages, posts or Pulse articles β€” or search across all of them at once
πŸ” Automatic deduplicationA running set of seen numbers prevents the same contact appearing twice, even across different keywords
πŸ’Ύ Resumable progressKeyword position and seen numbers are persisted to the key-value store, so an interrupted run resumes where it stopped
πŸ”€ Multi-keyword batchingSupply an array of job titles or industry terms and the scraper works through them sequentially in one run
πŸ“€ Incremental dataset pushesEvery validated number is pushed the moment it is found, so partial results are available while the run continues
🌍 Automatic proxy rotationSearch requests are routed through Apify's proxy network automatically, with fresh proxies retried on blocked pages

πŸš€ Why Choose This LinkedIn Phone Number Scraper?

Validated numbers, not regex guesses. Naive phone extraction with a regular expression produces enormous noise: postcodes, invoice numbers, dates and product SKUs all match loosely. This LinkedIn phone number scraper runs every candidate through phonenumbers with the target country's ISO code, which applies the actual national numbering rules. Numbers that cannot exist in that country are dropped before they ever reach your dataset.

Full provenance on every record. A phone number with no context is close to useless for outreach. Each row keeps the url, title, description and originating keyword, so a sales rep can see who they are calling, what the person does, and where the number was published β€” before the conversation starts.

Search scoping that matches your motion. Personal direct dials cluster on profiles; switchboard and department numbers cluster on company pages; conference and event numbers often appear in posts. The sourceRegion control lets you point the scraper at the surface that matches your outreach strategy rather than taking whatever comes.

Built to survive long runs. Search engines throttle. This scraper detects empty and blocked result pages, retries them with a fresh proxy, stops cleanly after repeated blocks rather than burning compute, and checkpoints its position so a restarted run does not redo completed work.


πŸ“₯ Input

The LinkedIn phone number scraper takes your search keywords, a target country, a result cap and a LinkedIn source scope.

{
"searchTerms": ["CEO", "Head of Procurement", "Operations Director"],
"country": "United States (+1)",
"maxPhoneNumbers": 20,
"sourceRegion": "All"
}

πŸ”§ LinkedIn Phone Number Scraper Input Fields

FieldTypeRequiredDefaultDescription
searchTermsarray | string❌ No["CEO"]Job titles, industries or company terms to search for. Accepts a single string or an array; each term is processed in turn.
countrystring❌ No"United States (+1)"Target country with its dial code. Determines both the dial code appended to the query and the ISO code used for number validation.
maxPhoneNumbersinteger❌ No20Maximum number of unique phone numbers to collect before the run stops. Free Apify accounts are capped at 100 per run.
sourceRegionstring❌ No"All"Which LinkedIn surface to search: All, Profile, Company, Posts or Pulse.

πŸ’‘ Input Examples

Executive prospecting in the United Kingdom

{
"searchTerms": ["Managing Director", "Chief Financial Officer"],
"country": "United Kingdom (+44)",
"maxPhoneNumbers": 50,
"sourceRegion": "Profile"
}

Company switchboard collection for an industry segment

{
"searchTerms": ["logistics company", "freight forwarding"],
"country": "Germany (+49)",
"maxPhoneNumbers": 100,
"sourceRegion": "Company"
}

Recruitment sourcing from posts and articles

{
"searchTerms": ["hiring backend engineer", "we are hiring devops"],
"country": "India (+91)",
"maxPhoneNumbers": 40,
"sourceRegion": "Posts"
}

πŸ“€ Output

Each dataset item is one unique, validated phone number with its full source context.

{
"keyword": "Head of Procurement",
"title": "Jane Doe - Head of Procurement - Northwind Logistics | LinkedIn",
"description": "Head of Procurement at Northwind Logistics. Direct contact: +1 415 555 0142 for supplier enquiries and tender submissions.",
"url": "https://www.linkedin.com/in/example-profile",
"phone_number": "+14155550142",
"country": "United States",
"dial_code": "+1",
"source_type": "Profile"
}

🧾 LinkedIn Phone Number Scraper Output Fields

FieldTypeDescription
keywordstring | nullKeyword that produced this item.
titlestring | nullTitle of the item β€” the page title of the LinkedIn result.
descriptionstring | nullLong-form description text β€” the search snippet in which the number was found.
urlstring | nullCanonical URL of the scraped item.
phone_numberstring | nullPhone number found for the item, normalised to E.164 format.
countrystring | nullCountry targeted for this search.
dial_codestring | nullDial code of the item.
source_typestring | nullSource type of the item β€” the LinkedIn surface the result came from.

πŸ’» How to Use the LinkedIn Phone Number Scraper (Step by Step)

Step 1: Define Your Ideal Customer Profile as Keywords

The quality of your output is decided almost entirely at this step. Broad terms such as "CEO" return an enormous but unfocused pool; specific terms such as "Head of Clinical Operations" or "freight forwarding manager" return fewer results with far higher relevance. Build an array combining seniority, function and industry vocabulary β€” the phrases your prospects would actually use to describe themselves on a LinkedIn headline. Ten well-chosen terms usually outperform a single generic one.

Step 2: Select the Target Country

The country value does double duty. Its dial code is appended to the search query, which biases results toward pages that display numbers in that format, and its ISO code is passed to the validator so numbers are checked against that country's national numbering plan. This means country selection is not cosmetic: choosing the wrong country will cause valid numbers to be rejected as invalid. Run one country per job rather than mixing markets in a single run.

Step 3: Choose the Right Source Type

Set sourceRegion according to what you actually want to dial. Profile scopes the query to personal profile URLs and is the best fit for direct dials and individual outreach. Company scopes to company pages and tends to yield switchboards, sales lines and regional office numbers. Posts and Pulse scope to shared updates and long-form articles, where people often publish event, recruitment or enquiry numbers. All searches across profiles, company pages and posts together.

Step 4: Set a Realistic Result Cap

maxPhoneNumbers controls when the run stops. Start modestly β€” the default of 20 is a sensible first pass to check that your keywords produce the kind of records you want. Once you are satisfied with the shape of the output, raise the cap for a production run. Note that on a free Apify account the scraper enforces a maximum of 100 unique numbers per run regardless of what you request, and it logs clearly when that limit is applied.

Step 5: Run the Scraper and Watch the Log

Start the actor and follow the log. It reports each keyword as it begins, each search page as it fetches, and every number as it is found and pushed. The log also surfaces its own defensive behaviour: pages that returned no results, retries with a fresh proxy, and the point at which it stops a keyword after repeated blocks or three consecutive pages yielding no new numbers. Reading this log tells you whether a disappointing run was a keyword problem or a blocking problem.

Step 6: Review, Deduplicate and Qualify Before Dialling

The scraper deduplicates on the E.164 number within a run, but you should still qualify before outreach. Read the description alongside the title to confirm the number belongs to the person or organisation you think it does β€” snippets sometimes contain a number that belongs to a different entity mentioned on the same page. Cross-reference against your CRM to drop existing contacts and anyone on a suppression or do-not-call list.

Step 7: Export and Load into Your Sales Stack

Export the dataset as CSV or JSON from the Console, or pull it through the API. Because phone_number is already in E.164, it imports directly into most CRMs, dialers and telephony platforms without reformatting. Map url to a source or lead-origin field so every contact record keeps a link back to the page it came from β€” invaluable when someone asks where a number was obtained.


πŸ”Œ API Access & Integrations

Run the LinkedIn phone number scraper synchronously and receive dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers-hub~best-linkedin-phone-number-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchTerms": ["Head of Procurement", "Supply Chain Director"],
"country": "United Kingdom (+44)",
"maxPhoneNumbers": 50,
"sourceRegion": "Profile"
}'

The same run in Python using the official client:

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run_input = {
"searchTerms": ["Head of Procurement", "Supply Chain Director"],
"country": "United Kingdom (+44)",
"maxPhoneNumbers": 50,
"sourceRegion": "Profile",
}
run = client.actor("scrapers-hub/best-linkedin-phone-number-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(
item.get("phone_number"),
item.get("source_type"),
item.get("keyword"),
item.get("url"),
)

The actor also connects to Zapier, Make, Google Sheets, Slack and any custom endpoint through Apify webhooks, so new contact records can flow straight into your CRM, a shared spreadsheet, or a sales notification channel as soon as a run finishes.


πŸ’‘ Best Use Cases for LinkedIn Phone Number Data

πŸ“ˆ Outbound B2B Sales Prospecting

Direct dials convert at a different rate to generic inbox addresses. Combining phone_number with the title and description context gives a rep enough to open a call with something specific rather than a cold script. Scoping sourceRegion to Profile and using precise seniority keywords produces the tightest lists for this motion.

πŸ§‘β€πŸ’Ό Recruitment and Candidate Sourcing

Technical recruiters working hard-to-fill roles frequently need to reach candidates outside the platform's messaging limits. Searching role-specific searchTerms with sourceRegion set to Posts surfaces people who have publicly shared contact details, often in the context of availability or a job change, with the description giving the surrounding signal.

🏒 Account-Based Marketing Contact Enrichment

ABM programmes stall when target accounts have thin contact coverage. Running industry and function keywords with sourceRegion set to Company fills in switchboard and departmental numbers, while the url field ties each number back to the specific company page for accurate account mapping.

🌍 International Market Entry Research

Expanding into a new market means building a contact base from nothing. Because the country input drives both query targeting and number validation, you can run the same keyword set across several markets in sequence and compare the dial_code distribution and record volume to gauge how reachable each market's decision-makers actually are.

🀝 Partner, Reseller and Supplier Discovery

Channel and procurement teams need to reach organisations rather than individuals. Company-scoped searches on industry vocabulary surface published business lines, and the description snippet usually indicates whether the number is a sales, support or general enquiry route β€” useful for routing the first approach correctly.

πŸ“£ Event and Conference Outreach

Speakers, sponsors and organisers routinely publish contact numbers in posts and Pulse articles around an event. Setting sourceRegion to Posts or Pulse with event-related searchTerms captures these time-sensitive records, with keyword letting you attribute each contact back to the specific event or campaign that surfaced it.

🧹 CRM Data Enrichment and Gap Filling

Existing CRM records frequently carry an email but no phone. Running keyword searches matched to your known accounts and joining results on the LinkedIn url lets you fill phone gaps on existing records, with source_type documenting the provenance of each newly added number for compliance and audit purposes.


βš™οΈ Tips for Better LinkedIn Phone Number Scraping Results

  • Prefer specific keywords over broad ones. "Head of Clinical Operations" produces a smaller but dramatically more relevant set than "manager". Combine role, seniority and industry vocabulary in each term.
  • Match the country to the numbers you actually want. Validation uses the selected country's ISO code, so numbers belonging to other countries in the same snippet will be rejected. Run one market per job.
  • Use Profile for people and Company for organisations. Mixing them under All dilutes both. Decide whether you are building a direct-dial list or an organisational switchboard list before you run.
  • Start small, then scale the cap. A run with maxPhoneNumbers set to 20 costs little and tells you within minutes whether your keyword set produces relevant records. Only then raise the limit.
  • Watch the log for blocking signals. Repeated empty result pages followed by proxy retries mean the search surface is throttling. Re-running later, or with fewer keywords per job, generally recovers throughput.
  • Always verify before dialling. Snippets can contain a number belonging to a different entity mentioned on the same page. Read title and description together and treat the number as a lead, not a confirmed fact.
  • Run in several passes rather than one giant job. Progress is checkpointed, but shorter, focused runs are easier to evaluate and let you adjust keywords between passes instead of discovering a bad keyword set after an hour.

πŸ› οΈ Troubleshooting

Why did the run finish with fewer numbers than I requested? Two reasons dominate. Either the keyword and country combination genuinely has few publicly published numbers indexed, or the search surface began blocking and the scraper stopped that keyword defensively. The log distinguishes these clearly: it reports a shortfall summary at the end and logs blocked pages as they happen. Broadening the keyword list or trying a different sourceRegion is the usual fix.

Why did the scraper stop after 100 numbers when I asked for more? Free Apify accounts are capped at 100 unique phone numbers per run. The scraper logs this limit explicitly when it applies it, showing both what you requested and what was enforced. Paid accounts are not subject to this cap.

Why are some numbers clearly not for the person on the profile? The scraper extracts numbers from the search snippet text surrounding a LinkedIn result. If a page mentions a partner company, an event line or a third party, that number can be captured too. Reading description alongside title before outreach is the correct safeguard β€” treat records as leads requiring verification.

Why did a keyword return nothing at all? Either no indexed LinkedIn pages match that phrase combined with the country dial code, or the search returned pages the scraper could not parse. It retries empty pages with a fresh proxy before giving up, and abandons a keyword after three consecutive blocked pages. Rephrasing the keyword in the language and vocabulary used in the target market often helps.

Why do some valid-looking numbers never appear in the output? Numbers are validated against the ISO code of the country you selected. A German number in a snippet will be rejected on a United States run because it is not a valid US number. Set country to match the market whose numbers you actually want, and run additional markets as separate jobs.


❓ Frequently Asked Questions About LinkedIn Phone Number Scraping

What does this LinkedIn phone number scraper actually do? It runs targeted search-engine queries scoped to LinkedIn domains, reads the resulting page titles and snippets, extracts any phone numbers present, validates each one against the target country's numbering plan, and pushes unique validated numbers to an Apify dataset alongside the source URL and context.

Does it log into LinkedIn or scrape the LinkedIn interface directly? No. It queries publicly indexed search results scoped to LinkedIn URLs. It does not authenticate, does not access member-only content, and does not interact with LinkedIn's own application.

How accurate are the phone numbers it returns? Every number is parsed and validated with the phonenumbers library against the selected country's national numbering rules and output in E.164 format, which removes malformed and impossible numbers. Validity is not the same as attribution, however β€” always confirm the number belongs to the intended contact by reading the title and description before dialling.

Which countries does the LinkedIn phone number scraper support? It carries a built-in mapping of dial codes and ISO country codes covering more than 190 countries. Select the target market in the country input using the country name and dial code format shown in the input examples.

How many phone numbers can I collect in one run? Set the target with maxPhoneNumbers. Free Apify accounts are limited to 100 unique numbers per run, a cap the scraper applies and logs automatically. Paid accounts can request higher limits.

What is the difference between the Profile, Company, Posts and Pulse source types? Each scopes the search to a different LinkedIn URL pattern. Profile targets personal profiles and yields direct dials; Company targets company pages and yields business lines; Posts targets shared updates; Pulse targets long-form articles. All searches profiles, company pages and posts together.

Can I search multiple job titles in one run? Yes. Pass an array to searchTerms and each term is processed in sequence, with the originating term recorded in the keyword field of every resulting row so you can attribute results back to the query that found them.

Are duplicate phone numbers removed? Yes. The scraper maintains a set of numbers already seen during the run, keyed on the normalised E.164 value, so the same number is never pushed twice even if it appears under several different keywords.

What format are the phone numbers returned in? E.164 international format β€” a leading plus sign followed by country code and subscriber number, with no spaces or punctuation. This is the format most CRMs, dialers and telephony APIs expect for direct import.

Does the scraper use proxies, and can I configure them? It routes search requests through Apify's proxy network automatically and retries blocked pages with a fresh proxy. Proxy settings are not exposed as an input field, so there is nothing for you to configure.

Can I resume a run that was interrupted? Yes. The scraper checkpoints its keyword position and its set of seen numbers to the key-value store after every result, so a restarted run continues from where it stopped rather than repeating completed work.

Is scraping phone numbers from LinkedIn search results legal? The actor collects only information already published publicly and indexed by search engines. Whether your particular use is lawful depends on your jurisdiction, your purpose, and the applicable privacy and marketing regulations. Phone numbers belonging to individuals are personal data under the GDPR and similar frameworks, and telephone marketing is separately regulated in most countries. Take your own legal advice before running outreach campaigns.

Can I use these numbers for cold calling and SMS marketing? Only where you have a lawful basis to do so and after screening against the relevant do-not-call or telephone preference registers in the target market. Many jurisdictions require prior consent for automated calls and marketing SMS, and penalties for non-compliance are substantial. This is your responsibility, not the actor's.

How do I export the scraped LinkedIn phone number data? From the Apify Console Dataset tab you can download JSON, JSONL, CSV, Excel, XML or RSS. Programmatically, use the dataset API or the apify_client iteration shown in the API section above.

Can I schedule the LinkedIn phone number scraper to run automatically? Yes. Apify schedules can trigger the actor on any cron expression, and webhooks can push results into your CRM or notify a Slack channel when a run completes.


πŸ†˜ Support & Feedback

Hit an error, seeing lower yields than expected, or found a country that validates incorrectly? Open a ticket on the Issues tab of this actor with your input configuration and the run ID. That is the quickest path to a fix and leaves a public record other users can benefit from.

Need something tailored? Custom keyword strategies, additional source scopes, direct CRM integration, or a private variant tuned to a specific market are all possible. Email scraperhubapi@gmail.com describing the outcome you need and the markets you are targeting.

If this LinkedIn phone number scraper helps your pipeline, please leave a review on the actor page. Ratings and written feedback directly shape what gets built next.


βš–οΈ Disclaimer

This LinkedIn phone number scraper collects only information that is already published publicly and indexed by search engines. It does not authenticate to LinkedIn, does not access member-only or connection-restricted content, and does not bypass any access control, paywall or technical protection measure.

Phone numbers belonging to identifiable individuals are personal data under the GDPR, the UK GDPR, the CCPA and comparable privacy laws. If you use this actor, you act as the data controller for that processing. You must establish and document a lawful basis, apply data minimisation, provide the transparency information data subjects are entitled to, honour access, objection and erasure requests, and retain records no longer than is necessary for your stated purpose. Legitimate interests is not an automatic justification for bulk contact collection.

Telephone and SMS marketing is separately regulated in most jurisdictions. Before contacting anyone, screen your list against the applicable do-not-call or telephone preference registers, respect consent requirements for automated dialling and marketing messages, and identify yourself properly on every call. You are also responsible for complying with the terms of service of LinkedIn and of any search engine whose results contribute to your run, and for ensuring your use does not breach anti-spam legislation in the recipient's country.

If you believe data collected through this actor relates to you and should be removed, or you have any other privacy concern about a specific record, contact scraperhubapi@gmail.com and the request will be reviewed promptly.