# Website Phone Number Scraper (`scraperoka/website-phone-number-scraper`) Actor

📞 Website Phone Number Scraper extracts phone numbers from websites quickly and accurately. ✅ Perfect for lead generation, B2B prospecting, and market research. Save time, boost outreach, and enrich your contact lists—fast.

- **URL**: https://apify.com/scraperoka/website-phone-number-scraper.md
- **Developed by:** [Scraperoka](https://apify.com/scraperoka) (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 $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

### Website Phone Number Scraper 🚀

Manually visiting every page to find phone numbers wastes hours your team could spend building pipelines. **Website Phone Number Scraper** automatically scrapes phone numbers (and can also extract emails and social links) from websites—ideal for marketers, recruiters, and growth teams. This Website Phone Number Scraper is a phone number scraper designed for automated phone number scraping at scale, so you can compile thousands of contacts in minutes.

***

### What You Get: Sample Output

Here's a sample record from a single run:

```json
{
  "domain": "example.com",
  "homepage_url": "https://example.com",
  "emails": [
    {
      "email": "sales@example.com",
      "confidence_score": 87.5,
      "source_url": "https://example.com/contact",
      "source_type": "contact_page",
      "validation_status": "valid"
    }
  ],
  "phone_numbers": [
    {
      "phone": "+1 555 010 2020",
      "formatted": "+15550102020",
      "source_url": "https://example.com/contact"
    },
    {
      "phone": "+1-555-010-3030",
      "formatted": "+15550103030",
      "source_url": "https://example.com/about"
    }
  ],
  "social_media": [
    {
      "platform": "linkedin",
      "url": "https://www.linkedin.com/company/example-inc/",
      "source_url": "https://example.com",
      "clean_url": "https://www.linkedin.com/company/example-inc/"
    },
    {
      "platform": "twitter",
      "url": "https://twitter.com/example_inc",
      "source_url": "https://example.com/contact",
      "clean_url": "https://twitter.com/example_inc"
    }
  ]
}
```

| Field | Type | What It Tells You |
|---|---|---|
| `domain` | string | The domain that was processed, so you can track results per website |
| `homepage_url` | string | A direct link to the homepage for quick verification |
| `emails` | array | All email addresses found on the site, with quality signals to help prioritize outreach |
| `emails[].email` | string | The extracted email address you can use in contact workflows |
| `emails[].confidence_score` | number | How strongly the actor associates the email with the source content |
| `emails[].source_url` | string | Where the email was found, so you can audit context fast |
| `emails[].source_type` | string | The type of page section/source the email came from (useful for relevance scoring) |
| `emails[].validation_status` | string | A status value to help you understand the email’s validation outcome |
| `phone_numbers` | array | Phone numbers detected on the pages (when enabled) for lead generation phone number scraper workflows |
| `phone_numbers[].phone` | string | The extracted phone number as it appears in the page content |
| `phone_numbers[].formatted` | string | A normalized/cleaned phone format to improve CRM import consistency |
| `phone_numbers[].source_url` | string | Where each phone number was found (contact page, footer, etc.) |
| `social_media` | array | Social profile links detected on the website to enrich lead records |
| `social_media[].platform` | string | The social network name (e.g., LinkedIn, Twitter, Facebook) |
| `social_media[].url` | string | The actual profile URL you can attach to a lead |

Export your dataset as JSON, CSV, or Excel — straight from the Apify dashboard.

***

### Why Website Phone Number Scraper?

There are a lot of ways to pull contact data from websites—here’s what sets Website Phone Number Scraper apart.

#### Scrapes phone numbers along with emails and social profiles

Website Phone Number Scraper is built to extract phone numbers found on target pages, and it can also extract email addresses and social media profile links. That means your phone number scraper workflow can become an email and phone number scraper workflow without extra tools.

#### Simple, structured output for easy CRM import

Results are pushed to your Apify dataset with consistent fields: `domain`, `homepage_url`, `emails`, `phone_numbers`, and `social_media`. This makes it easier to turn automated phone number scraping outputs into contact lists for downstream analysis.

#### Built-in deduplication for social links

When extracting social media, the actor deduplicates results by normalized canonical URLs. This helps keep your directory phone number scraper datasets clean and reduces duplicate profile entries.

#### Resilient runs with per-domain error handling

If a specific domain fails during scraping, the actor still pushes an output record for that domain with empty `emails`, `phone_numbers`, and `social_media`. That keeps bulk phone number scraper batches easier to manage and audit.

***

### Configuring Your Run

Drop this into your `input.json` to get started:

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

| Parameter | Required | What It Does |
|---|---:|---|
| `targetUrls` | ✅ | List of target website URLs to scrape for contact information |
| `enablePhoneExtraction` | ⬜ | Turns phone number extraction on or off for the pages it processes |
| `enableSocialMediaExtraction` | ⬜ | Turns social media link detection and extraction on or off |
| `proxySettings` | ⬜ | Proxy configuration to help scraping run smoothly |
| ↳ `proxySettings.proxy support` | ⬜ | When set, uses Apify Proxy for requests |

***

### Core Capabilities

#### Website phone number extraction (toggleable)

When `enablePhoneExtraction` is true, the actor extracts phone numbers found on the pages it processes and outputs them as `phone_numbers`. Each phone entry includes the extracted `phone`, an optional `formatted` value, and the `source_url`.

#### Social media link extraction (toggleable)

With `enableSocialMediaExtraction` enabled, the actor detects social media profile links and outputs them under `social_media`. Results include `platform`, the profile `url`, and the `source_url` where the link was found.

#### Email + phone number enrichment in one run

Even though the main focus is phone numbers, Website Phone Number Scraper also returns `emails` for each domain. Each email includes `confidence_score`, `source_url`, `source_type`, and `validation_status`—helpful for prioritizing leads alongside phone number database scraper outputs.

#### Structured dataset records pushed per domain

For each domain derived from your `targetUrls`, the actor pushes a single structured result object to the dataset. This makes it straightforward to filter, aggregate, and export your contact details scraper results after the run.

#### Built-in proxy support for reliable scraping

If you enable proxy usage in `proxySettings`, the actor configures proxy routing to help reduce the chance of blocking and improve run stability. This is particularly useful for bulk phone number scraper workloads.

***

### Who Gets the Most Out of This

Here's how different teams put Website Phone Number Scraper to work:

**Sales Development Representatives** use Website Phone Number Scraper to build prospect lists by extracting phone numbers and pairing them with available emails and social links, so outreach has more than one contact route per lead. The outcome is faster list building and fewer manual lookups per company.

**Marketing and Growth Teams** use it to enrich campaign targeting with contact details gathered from publicly available sources. Instead of spending time on manual website checks, they generate structured phone number scraper datasets they can sort by relevance and source.

**Recruiters and People Ops** can use the extracted `phone_numbers` and `emails` to speed up outreach to organizations’ public-facing contacts. This helps convert research into action without bouncing between pages.

**Data Analysts and Researchers** use the consistent dataset output (per `domain` with `emails`, `phone_numbers`, and `social_media`) for analysis and segmentation. The structured fields—including `source_url` and `source_type`—make it easier to audit results and measure data coverage.

**Automation Specialists (technical teams)** integrate the output into pipelines using the Apify API and scheduled runs, turning automated phone number scraping into a repeatable workflow. This supports ongoing lead generation phone number scraper operations without manual export steps.

***

### Step-by-Step: How to Use It

No coding needed. Here's how to run Website Phone Number Scraper from start to finish:

1. **Open the actor on Apify** — go to [console.apify.com](https://console.apify.com) and find Website Phone Number Scraper.
2. **Enter your inputs** — add your websites in `targetUrls`, and set `enablePhoneExtraction` / `enableSocialMediaExtraction` based on what you want extracted.
3. **Configure proxy settings** — enable proxy usage in `proxySettings` if you expect higher volume or want extra stability.
4. **Hit Run and watch the live log** — monitor progress as each domain is processed.
5. **View results in the dataset tab** — each domain produces a structured record with `domain`, `homepage_url`, `emails`, `phone_numbers`, and `social_media`.
6. **Export as JSON, CSV, or Excel** — download directly from the Apify dashboard for use in your workflows.

The whole process takes under 5 minutes to set up.

***

### Integrations & Export Options

Once your data is collected, Website Phone Number Scraper plugs directly into your existing workflow.

Export your dataset from the Apify dashboard as **JSON, CSV, or Excel**, using the structured fields (`domain`, `homepage_url`, `emails`, `phone_numbers`, `social_media`) for clean downstream processing.

For automation, you can use **Apify API access** to pull results programmatically (see Apify developer documentation at https://apify.com/docs/api) and connect your pipeline with **webhooks** and **no-code automation tools like Zapier or Make**. You can also set up **scheduled runs** so your contact details scraper runs automatically on a recurring basis.

***

### Pricing & Free Trial

Website Phone Number Scraper runs on the Apify platform, which offers a **free tier** — no credit card required to get started.

On Apify, you can typically use a small amount of free platform credits for several test runs. For production usage, billing is **pay-as-you-go** based on Apify platform compute unit usage—follow Apify’s pricing page for the most accurate current numbers and plan options.

Start for free at [apify.com](https://apify.com) and scale when you're ready.

***

### Reliability & Performance

| What We Handle | How |
|---|---|
| Rate limiting behavior | The actor is designed for stable automated scraping at scale with practical pacing |
| Proxy support | Optional proxy routing via `proxySettings` to improve stability |
| Resilience for bulk batches | Includes per-domain failure handling so batches don’t go completely dark |
| Error visibility | Failed domains still produce an output record with empty `emails`, `phone_numbers`, and `social_media` |
| Consistent dataset schema | Each domain result follows the same structure for easier exports and automation |
| Scale-friendly processing | Built for processing multiple `targetUrls` in one run |

**Limitations:** Results depend on what contact details are publicly available on each target website. Login-gated, restricted, or non-public content isn’t accessible, so some domains may return fewer or empty `phone_numbers`, `emails`, or `social_media`.

For enterprise-scale runs, contact us to discuss custom configurations.

***

### Frequently Asked Questions

#### Is there a free plan or trial?

Yes. Apify offers a free tier on the platform, which is typically enough for testing smaller Website Phone Number Scraper runs before you scale up.

#### Do I need to log in to Website Phone Number Scraper to use it?

No. You provide your `targetUrls` and run the actor. The extraction is performed from publicly available content on the websites you provide.

#### How accurate is the data?

The data accuracy depends on what the website publishes publicly. Website Phone Number Scraper extracts phone numbers and other contact details found on the pages it processes, and the output keeps `source_url` so you can verify context.

#### How many results can I get per run?

Your run is based on the number of domains derived from `targetUrls`. The actor also limits how much content it processes per domain, so results vary by site size and how many contact details are present.

#### How often is the data updated / how fresh is it?

The dataset reflects the moment your run was executed. If you need fresh data, schedule recurring runs so your contact details scraper stays up to date.

#### Is this legal? Does it comply with GDPR / CCPA?

Website Phone Number Scraper works with **publicly available data** and it’s intended for lawful lead research and enrichment. You’re responsible for complying with GDPR, CCPA, applicable platform terms, and any local regulations when storing and using the extracted data.

#### Can I export results to Google Sheets or Excel?

Yes. You can download your dataset as JSON, CSV, or Excel from the Apify dashboard and then import it into your tools, including Google Sheets workflows.

#### Can I run this on a schedule automatically?

Yes. On Apify, you can configure scheduled runs so the actor runs automatically on a recurring basis, keeping your phone number scraper outputs fresh.

#### Can I access this via API?

Yes. You can pull results programmatically via the Apify API; refer to Apify developer documentation at https://apify.com/docs/api.

#### What happens if the actor hits an error?

If an error occurs for a specific domain, the actor still pushes an output record for that domain with empty `emails`, `phone_numbers`, and `social_media`. That way, your bulk phone number scraper batch results remain usable and easy to audit.

***

### Need Help or Have a Request?

Got a question about Website Phone Number Scraper or want a new feature added? Reach out at <dataforleads@gmail.com>. Share what you’re trying to extract (phone number scraper, website phone number extractor, or contact details scraper use cases) and we’ll help you get the best results. We’re also excited to hear ideas like webhook notifications on completion or batch input workflows.

***

### Disclaimer & Responsible Use

*Website Phone Number Scraper is the fastest, most reliable way to extract website phone numbers and contact details—start your free run today.*

This actor collects **publicly available data** from websites. It does not access private accounts, login-gated content, or password-protected pages. You are responsible for ensuring your use of the extracted data complies with GDPR, CCPA, platform Terms of Service, and any applicable laws. For data removal requests, contact <dataforleads@gmail.com>. Use responsibly, ethically, and only for lawful purposes.

# 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
  }
}
```

# 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("scraperoka/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("scraperoka/website-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 '{
  "targetUrls": [
    {
      "url": "https://apify.com"
    }
  ],
  "proxySettings": {
    "useApifyProxy": true
  }
}' |
apify call scraperoka/website-phone-number-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/RdO9sFNeGfnJf8MqQ/builds/hqzyFz5qR98qUazID/openapi.json
