# Website Phone Number Scraper - Bulk URL Input, Carrier Data (`scrapido/website-phone-number-scraper`) Actor

📞 Website Phone Number Scraper processes bulk URL input and returns every number found. ✅ Carrier data, country code and line type on each validated record. 💼 Built for B2B calling lists & contact enrichment.

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

## Pricing

from $2.50 / 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

### Website Phone Number Scraper

**Website Phone Number Scraper** is the fastest way to turn messy website contact pages into usable lead data—without spending hours manually copying numbers. This **website phone number extraction** actor automates **phone number scraping** for marketers, data analysts, and researchers, producing structured output you can push into outreach workflows right away for better ROI.

***

### What is Website Phone Number Scraper? 🔍

**Website Phone Number Scraper** is an Apify automation actor that scrapes contact details from websites and returns results in your Apify dataset. It targets businesses and lead researchers who need **web scraping for phone numbers**, plus optional **email** and **social media profile links** extraction. Whether you’re a sales professional, recruiter, or marketer, this **website phone number scraper** helps you compile contact info with automated **website contact scraper** workflows—turning scattered public web data into **structured output JSON contact data** you can work with immediately.

***

### What Does Website Phone Number Scraper Do? ⚙️

The actor takes your input `targetUrls`, scans the relevant pages on each site, and then outputs one clean JSON record per domain to the Apify dataset. It supports **phone number scraping** (and can also collect emails and social links) so you can build lead generation data scraping workflows without manual copy-pasting.

- 🔍 Uses your `targetUrls` to scrape publicly available contact info from each website
- 📞 Extracts publicly listed phone numbers when `enablePhoneExtraction` is enabled
- 🌐 Optionally extracts social media profile links when `enableSocialMediaExtraction` is enabled
- 📧 Extracts publicly listed emails (included in the dataset output)
- 💾 Structures everything as clean JSON records in the dataset for easy analysis and export

***

### What Would Results from Website Phone Number Scraper Look Like? 👀

You’ll get one dataset item per scanned domain, containing domain details, homepage URL, extracted emails, phone numbers, and social links:

```json
{
  "domain": "example.com",
  "homepage_url": "https://example.com",
  "emails": [
    "sales@example.com",
    "support@example.com"
  ],
  "phone_numbers": [
    "+1 415 555 0134",
    "+1 415 555 0199"
  ],
  "social_media": {
    "linkedin": "https://www.linkedin.com/company/example-com/",
    "twitter": "https://twitter.com/example_com"
  }
}
```

Export as JSON/CSV from the Apify **Dataset** tab for your CRM, spreadsheet, or pipeline.

***

### Capabilities of Website Phone Number Scraper 🛠️

| Capability | What It Means for You |
|---|---|
| ✅ **Target URL List** | Provide `targetUrls` to scrape multiple websites in one run—ideal for contact info harvesting at scale |
| ✅ **Phone Number Extraction Toggle** | Control whether the actor extracts phone numbers using `enablePhoneExtraction` (great for data cleansing phone numbers workflows) |
| ✅ **Social Media Extraction Toggle** | When `enableSocialMediaExtraction` is enabled, you also get social profile links alongside phone and email data |
| ✅ **Structured Dataset Output** | Results are pushed into the Apify dataset with fields in a consistent order: `domain`, `homepage_url`, `emails`, `phone_numbers`, `social_media` |
| ✅ **Deduplicated Social Links** | Social media results are deduplicated by normalized URL so you don’t waste time on duplicates during deduplication of phone contacts |
| ✅ **Proxy Support** | Includes built-in proxy support for more reliable scraping runs across large batches (residential proxies are recommended) |
| ✅ **Clear Per-Domain Results** | One record per domain makes it easier to enrich leads, segment by domain, and audit sources |
| ✅ **Built for Lead Generation Pipelines** | Works as a **information extraction pipeline** input/output—perfect for lead generation data scraping and automated follow-up workflows |

***

### Launch Your First Website Phone Number Scraper Task 🚀

#### Required Input Fields

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `targetUrls` | array | ✅ Yes | — | List of target website URLs to scrape for contact information |

#### Optional Input Fields

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `enablePhoneExtraction` | boolean | No | `true` | If enabled, the scraper also extracts phone numbers found on the pages |
| `enableSocialMediaExtraction` | boolean | No | `true` | If enabled, the scraper detects and extracts social media profile links |
| `proxySettings` | object | No | — | Proxy configuration (Apify Proxy recommended for smoother scraping) |

#### Input Example

```json
{
  "targetUrls": [
    { "url": "https://apify.com" },
    { "url": "https://example.com" }
  ],
  "enablePhoneExtraction": true,
  "enableSocialMediaExtraction": true,
  "proxySettings": {
    "useApifyProxy": true
  }
}
```

**Step-by-step launch guide:**

1. **Open** the actor in the Apify Console
2. **Paste** your website URLs into `targetUrls`
3. **Keep** `enablePhoneExtraction` on (recommended) and toggle social extraction if needed
4. **Enable** `proxySettings.proxy support` for more reliable scraping at volume
5. **Start** the run, then review results in the **Dataset** tab and export for outreach

***

### Solving Real Problems with Website Phone Number Scraper 💼

Website Phone Number Scraper helps you turn public contact pages into actionable lead data with less manual work:

- 🎯 **Sales Prospecting** — Build a **data mining phone numbers** list from target company sites for cold outreach
- 📣 **Campaign Targeting** — Enrich segments with phone + email and optional **NER for contact information** via structured fields
- 🤝 **Hiring & Recruitment** — Quickly collect phone and social contact points for recruitment pipelines
- 🔬 **Competitive Research** — Compare contact info availability across domains for market intelligence
- ⚙️ **Automated Pipelines** — Schedule repeat runs and refresh contact info harvesting over time

***

### What Sets Website Phone Number Scraper Apart? 🏆

- 💡 **Purpose-built contact extraction** — Designed specifically for **website phone number extraction**, with phone, emails, and optional social links in one dataset
- 🧹 **Clean structured output** — Ready for analysis with consistent fields (`domain`, `homepage_url`, `emails`, `phone_numbers`, `social_media`)
- 🛡️ **Proxy support for reliability** — Built to support smooth scraping runs (residential proxies are recommended)
- 📧 **Human support** — Need help? Email <scrapidocontact@gmail.com>

***

### Search Limits and Capacity 📈

This actor is configured to scrape **up to 10 pages per domain**. Actual output volume depends on what publicly available contact details are present on each site (so yield can vary for **phone number scraping** and contact info harvesting). For larger jobs, using proxy support is recommended.

***

### Is It Legal to Scrape Website Phone Number Scraper? ⚖️

The actor collects information only from **publicly available sources**. It does not access private profiles or password-protected data. Public scraping is often allowed, but you must follow applicable laws and each website’s terms, including privacy and anti-spam requirements. For compliance guidance or data-removal requests, contact <scrapidocontact@gmail.com>.

***

### Ending Note ✉️

Stop hunting through pages for phone numbers and scattered contact details. **Website Phone Number Scraper** delivers structured contact info quickly—so you can spend less time on manual research and more time on outreach, enrichment, and analysis.

***

### FAQ — Website Phone Number Scraper ❓

#### How Does the Website Phone Number Scraper Work?

You provide `targetUrls`, and the actor scans each specified website, then outputs a dataset record per domain. The output includes `domain`, `homepage_url`, `emails`, `phone_numbers`, and `social_media` (depending on your toggles).

#### What Types of Websites Can I Target?

You can use `targetUrls` with any website URL you want to scrape for publicly listed contact details. The actor focuses on public web content and will only return data that it finds in accessible pages.

#### What Data Is Included in the Dataset Output?

Each dataset item includes `domain`, `homepage_url`, `emails`, `phone_numbers`, and `social_media`. Phone extraction and social extraction can be controlled with `enablePhoneExtraction` and `enableSocialMediaExtraction`.

#### How Should I Handle Duplicates in My Results?

For social media links, the actor deduplicates results by normalized URL. For phone numbers and emails, review output in the dataset and apply your own deduplication and data cleansing phone numbers steps as needed in your pipeline.

#### Can I Disable Phone Number Extraction?

Yes. Set `enablePhoneExtraction` to `false` to skip phone number extraction while still collecting dataset fields such as `domain`, `homepage_url`, `emails`, and `social_media` (if enabled).

#### Can I Disable Social Media Extraction?

Yes. Set `enableSocialMediaExtraction` to `false` to skip social media profile extraction.

#### Where Do Results Go?

Results are saved to the Apify dataset. Each item is a structured JSON record with the fields described in this README, in the order shown by the dataset schema.

#### How Do I Request Data Removal or Support?

For data removal requests, compliance questions, or help with the actor, email <scrapidocontact@gmail.com>.

***

### 🆘 Support & Feedback

Have a question or want to request an improvement to **Website Phone Number Scraper**?

Email <scrapidocontact@gmail.com>.

# Actor input Schema

## `targetUrls` (type: `array`):

List of target website URLs to scrape for contact information.

## `enablePhoneExtraction` (type: `boolean`):

If enabled, the scraper will also extract phone numbers found on the pages.

## `enableSocialMediaExtraction` (type: `boolean`):

If enabled, the scraper will detect and extract social media profile links (e.g., LinkedIn, Twitter, Facebook).

## `proxySettings` (type: `object`):

Configuration for proxies. Using residential proxies is highly recommended to avoid blocking.

## Actor input object example

```json
{
  "targetUrls": [
    {
      "url": "https://apify.com"
    }
  ],
  "enablePhoneExtraction": true,
  "enableSocialMediaExtraction": true,
  "proxySettings": {
    "useApifyProxy": 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 = {
    "targetUrls": [
        {
            "url": "https://apify.com"
        }
    ],
    "proxySettings": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapido/website-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 = {
    "targetUrls": [{ "url": "https://apify.com" }],
    "proxySettings": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapido/website-phone-number-scraper").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 '{
  "targetUrls": [
    {
      "url": "https://apify.com"
    }
  ],
  "proxySettings": {
    "useApifyProxy": true
  }
}' |
apify call scrapido/website-phone-number-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapido/website-phone-number-scraper"
        }
    }
}

```

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/IGrfeWPDRTogrL0lJ/builds/51btXpFN18zM5vuN6/openapi.json
