# Professional Social Media Phone Extractor - Validated Numbers (`parse-point/all-social-media-phone-number-scraper-smart-and-efficient`) Actor

🌐 Professional Social Media Phone Extractor pulls numbers across professional networks with multi-engine search. ✅ Country and region filters, validation, line-type detection and carrier lookup. 💼 For B2B calling lists.

- **URL**: https://apify.com/parse-point/all-social-media-phone-number-scraper-smart-and-efficient.md
- **Developed by:** [Parse Point](https://apify.com/parse-point) (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 $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/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

### Professional Social Media Phone Extractor 🔍

**Professional Social Media Phone Extractor** helps marketers, recruiters, sales pros, data analysts, and researchers find direct phone contacts from publicly available social media data without manual hunting. It supports social media contact extraction at scale, making it a practical phone number scraping tool for lead generation software, prospecting automation, and contact enrichment workflows. 📞

### 🌟 Key Features of Professional Social Media Phone Extractor

| Feature | Benefit |
|---|---|
| ✅ **Multi-Platform Targeting** | Choose from 40+ social networks to focus your social media lead extractor efforts on the right audience. |
| ✅ **Keyword-Based Discovery** | Use your search terms to find relevant profiles, bios, and posts that may contain public contact details. |
| ✅ **Country Dial Code Filtering** | Match extracted numbers to your target region for more accurate business contact extraction. |
| ✅ **Location Refinement** | Narrow your results by city, state, or region for better targeting. |
| ✅ **Result Limit Control** | Set a maximum contact count to keep runs efficient and predictable. |
| ✅ **Proxy Support** | Built-in proxy support helps improve reliability during larger scraping jobs. |
| ✅ **Real-Time Saving** | Results are saved as they are found, reducing the risk of data loss during long runs. |

### 📥 Input — Professional Social Media Phone Extractor Parameters

```json
{
  "searchTerms": [
    "founder",
    "digital marketing"
  ],
  "targetedLocation": "London",
  "socialMediaPlatform": "Facebook",
  "countryCode": "United Kingdom (+44)",
  "maxContacts": 20,
  "proxyConfiguration": {}
}
```

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `searchTerms` | Array | Yes | `["founder", "digital marketing"]` | Enter the topics, job titles, or niches you want to target. |
| `targetedLocation` | String | No | `""` | Specify a city, state, or region to refine your search geographically. |
| `socialMediaPlatform` | String | Yes | `Facebook` | Choose the social network to extract contacts from. |
| `countryCode` | String | Yes | `United Kingdom (+44)` | Select the country code to ensure extracted numbers match your target region. |
| `maxContacts` | Integer | No | `20` | Limit the number of contacts to extract. The scraper stops once this count is reached. |
| `proxyConfiguration` | Object | No | `undefined` | Proxy settings for the run. Residential proxies are recommended for the highest extraction success rate. |

### 📤 Output — What Professional Social Media Phone Extractor Returns

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

```json
{
  "platform": "Facebook",
  "keyword": "founder",
  "title": "Emma Carter",
  "description": "Founder of Carter Consulting. Contact: +44 20 7946 0958",
  "url": "https://www.facebook.com/emma.carter.consulting",
  "phone_number": "+442079460958",
  "country": "United Kingdom",
  "dial_code": "+44",
  "location": "London",
  "proxyGroups": []
}
```

| Field | Label | Format | Description |
|---|---|---|---|
| `platform` | Platform | text | The selected social media platform for the run. |
| `keyword` | Keyword | text | The search term that led to this result. |
| `title` | Title | text | The profile or result title. |
| `description` | Description | text | Publicly available text where the phone number was found. |
| `url` | URL | link | The direct link to the result page. |
| `phone_number` | Phone Number | text | The extracted phone number in international format. |
| `country` | Country | text | The country associated with the selected dial code. |
| `dial_code` | Dial Code | text | The chosen country dial code used for filtering. |
| `location` | Location | text | The location filter provided in the input. |
| `proxyGroups` | Proxy Groups | array | Proxy groups used during the run. |

### 💻 How to Use Professional Social Media Phone Extractor — Step-by-Step

1. **Open the Actor** — Find **Professional Social Media Phone Extractor** in the Apify Store and open its configuration page.
2. **Enter Search Terms** — Add the topics, roles, or niches you want to target for social media contact extraction.
3. **Pick a Platform** — Select one social network from the supported list, such as Facebook, Instagram, LinkedIn, or TikTok.
4. **Choose a Country Code** — Set the dial code that best matches your target market for more accurate phone number finder results.
5. **Add a Location** *(optional)* — Refine your search by city, region, or state for more focused lead generation.
6. **Set the Contact Limit** — Control run size with the maximum contacts setting.
7. **Run and Export** — Start the actor and export your dataset when the run finishes. 📦

*No coding required. Results ready in minutes.*

### 💡 Best Use Cases for Professional Social Media Phone Extractor

- 🎯 **B2B Lead Generation** — Build targeted contact lists from public social media profiles.
- 📣 **Sales Prospecting** — Find direct phone contacts for outreach and follow-up.
- 🤝 **Recruitment** — Discover public contact details for professionals across social platforms.
- 🔬 **Market Research** — Study niche communities and public-facing profiles in specific regions.
- 📊 **CRM Enrichment** — Add public phone data to existing records for better contact enrichment.

### Disclaimer

This actor only accesses **publicly available data** on social media platforms. It does not scrape private profiles, authenticated content, or password-protected pages. Users are solely responsible for ensuring their use complies with applicable laws, platform terms, and anti-spam regulations. This tool is intended for legitimate purposes only, including research, marketing, and prospecting automation. For data-removal requests, contact 📧 <helloparsepoint@gmail.com>.

### 🆘 Support & Feedback

Have a question or found an issue with the **Professional Social Media Phone Extractor**? We're here to help.

- 🐞 **Bug Reports:** Reach out with details about the issue and what input you used.
- ✨ **Custom Solutions & Feature Requests:** Send your ideas for new contact data extractor capabilities.
- 📧 **Email:** <helloparsepoint@gmail.com>

Your feedback shapes the roadmap — we read every message.

### Complete number formats

| Field | Meaning |
| --- | --- |
| `phoneRaw` | The exact text the number was read from, before any normalisation |
| `phoneRfc3966` | The `tel:` URI form some VoIP systems expect (optional) |
| `phoneExtension` | The internal extension, when the listing published one |

`phoneRaw` is the honest column: it is never derived, so it stays trustworthy
even when parsing of everything else goes wrong, and it lets you check a
suspicious row without reopening the source page.

### Run Memory

**Skip keywords already scraped in a previous run** - the actor keeps a
persistent record of every keyword it finishes, in a named key-value store that
survives between runs. A repeat run then drops the keywords it has already
covered, so a scheduled job only pays for new ground. The same keyword aimed at
a different country or location counts as new work.

**Reset keyword history** - wipe that record before the run starts.

**Max numbers per keyword** - cap how many numbers any single keyword may
produce before moving on. `0` means no per-keyword limit.

Two columns come out of the same memory:

| Field | Meaning |
| --- | --- |
| `firstSeenAt` | The date this number was first delivered to you, across all runs |
| `isNewSinceLastRun` | `false` for a number an earlier run already returned |

These are only informative because repeats are still delivered rather than
dropped - a scraper that removes duplicates before delivery would mark every
row new and tell you nothing.

# Actor input Schema

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

Enter the topics, job titles, or niches you want to target (e.g., 'real estate agent', 'fitness coach').

## `targetedLocation` (type: `string`):

Specify a city, state, or region to refine your search geographically.

## `socialMediaPlatform` (type: `string`):

Choose the social network to extract contacts from.

## `countryCode` (type: `string`):

Select the country code to ensure extracted numbers match your target region.

## `maxContacts` (type: `integer`):

Limit the number of contacts to extract. The scraper halts once this count is met. Higher limits increase run time and potential costs.

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

Recommended: Use residential proxies for the highest extraction success rate.

## `onlyValidNumbers` (type: `boolean`):

Keep only numbers libphonenumber confirms are valid for their country. Invalid numbers are dropped before you are charged for them.

## `lineTypeFilter` (type: `string`):

Filter by line type. 'Exclude toll-free & premium' drops call-centre and billed-caller numbers. 'Mobile only' also keeps US/Canada numbers that libphonenumber can only describe as 'landline or mobile' - see lineTypeCertain in the output.

## `includeNumberMetadata` (type: `boolean`):

Add numberRegion, timezone and localTimeNow so you know where the number is and whether it is a reasonable hour to call.

## `includeCarrier` (type: `boolean`):

Add originalCarrier - the network the number range was issued to. A ported number still reports its original carrier, and no carrier data exists for US/Canada.

## `skipDuplicateKeywords` (type: `boolean`):

Remember every keyword this actor finishes and skip it next time. Ideal for a scheduled run over a fixed keyword list - you only pay for ground you have not covered. The same keyword aimed at a different country or location counts as new work, not a duplicate.

## `resetKeywordHistory` (type: `boolean`):

Clear the remembered keywords before this run starts, so everything is treated as new again. Use after changing your target list.

## `maxNumbersPerKeyword` (type: `integer`):

Stop collecting for a keyword once it has produced this many numbers, then move on to the next one. Keeps one broad term from consuming the whole run. Leave at 0 for no per-keyword limit.

## `includeDialerUri` (type: `boolean`):

Add the tel: URI form some VoIP and telephony systems expect. It duplicates information already in the other number columns - keep it only if your phone system asks for this exact format.

## Actor input object example

```json
{
  "searchTerms": [
    "founder",
    "digital marketing"
  ],
  "targetedLocation": "",
  "socialMediaPlatform": "Facebook",
  "countryCode": "United Kingdom (+44)",
  "maxContacts": 20,
  "onlyValidNumbers": true,
  "lineTypeFilter": "exclude_junk",
  "includeNumberMetadata": true,
  "includeCarrier": false,
  "skipDuplicateKeywords": false,
  "resetKeywordHistory": false,
  "maxNumbersPerKeyword": 0,
  "includeDialerUri": 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 = {
    "searchTerms": [
        "founder",
        "digital marketing"
    ],
    "targetedLocation": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("parse-point/all-social-media-phone-number-scraper-smart-and-efficient").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": [
        "founder",
        "digital marketing",
    ],
    "targetedLocation": "",
}

# Run the Actor and wait for it to finish
run = client.actor("parse-point/all-social-media-phone-number-scraper-smart-and-efficient").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 '{
  "searchTerms": [
    "founder",
    "digital marketing"
  ],
  "targetedLocation": ""
}' |
apify call parse-point/all-social-media-phone-number-scraper-smart-and-efficient --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parse-point/all-social-media-phone-number-scraper-smart-and-efficient"
        }
    }
}

```

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/S8ds8eHHgnycVuf1T/builds/a51FeNvroIglNkowX/openapi.json
