# Angi Phone Number Scraper (`contacts-api/angi-phone-number-scraper`) Actor

Angi Phone Number Scraper extracts public contractor and home service pro phone numbers from Angi business listings 📞 Perfect for home services sales, local B2B outreach, and lead gen. Search by keyword, category, or location and export clean, deduplicated numbers. Download as CSV, JSON, or Excel.

- **URL**: https://apify.com/contacts-api/angi-phone-number-scraper.md
- **Developed by:** [Lead Heaven](https://apify.com/contacts-api) (community)
- **Categories:** Lead generation, Developer tools, Automation
- **Stats:** 10 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 1.00 out of 5 stars

## Pricing

$4.99/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period. You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

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

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

### 🍯 Angi Phone Number Scraper - Fast, Advanced & Cheapest

Welcome to the **Angi Phone Number Scraper**, the most efficient tool for **supercharging your lead generation efforts on Angi**. Designed for **Digital Marketers, Recruiters, Sales Teams, Business Owners, and Growth Hackers**, this tool empowers you to extract verified phone numbers from Angi profiles with unmatched speed, precision, and affordability.

Stop wasting hours on manual research and bypass the endless gatekeepers. With this scraper, you can gain **direct access to decision-makers**, scale your outreach, and discover new growth opportunities. Whether you're targeting **local markets** or aiming for **global coverage**, this tool is your ultimate lead-generation companion.

Let us help you unlock the true potential of Angi data and take your cold outreach campaigns to the next level.

***

### 📥 Input Parameters Guide

The **Angi Phone Number Scraper** requires a few simple inputs to get started. Follow the table below for guidance:

| Parameter         | Type            | Description                                   | Default         | Best Practice                          |
|-------------------|-----------------|-----------------------------------------------|-----------------|----------------------------------------|
| `keywords`        | Array (Required)| Core search terms (e.g., job titles, niches).| N/A             | Use specific and relevant keywords.    |
| `location`        | String (Optional)| Geo-targeting to narrow results.            | Empty           | Specify city or state for focus.       |
| `country`         | String (Required)| Country code (e.g., 'United States (+1)').  | N/A             | Always select the relevant country.    |
| `maxPhoneNumbers` | Integer (Optional)| Limit number of phone numbers to extract.   | 100             | Set limits to optimize speed.          |

#### Example Input Configuration

```json
{
  "keywords": ["marketing", "CEO"],
  "location": "New York",
  "country": "United States (+1)",
  "maxPhoneNumbers": 50
}
```

***

### 📤 Output Data Structure

The scraper outputs clean, structured data in **JSON** or **CSV** format, ready for integration into your CRM or marketing tools. Here's what you can expect:

| Field         | Description                        | Importance |
|---------------|------------------------------------|------------|
| `keyword`     | The search keyword used.           | High       |
| `title`       | Name or business title.            | High       |
| `description` | Profile bio or summary.            | Medium     |
| `url`         | Link to the Angi profile.          | High       |
| `phone_number`| Extracted phone number.            | High       |
| `country`     | Country of the profile.            | Medium     |
| `dial_code`   | Dialing code for the phone number. | Medium     |

#### Example Output JSON

```json
[
  {
    "keyword": "marketing",
    "title": "Marketing Consultant",
    "description": "Helping businesses grow through innovative strategies.",
    "url": "https://www.angi.com/profile/12345",
    "phone_number": "+1-123-456-7890",
    "country": "United States",
    "dial_code": "+1"
  }
]
```

***

### 🌟 Why Choose Our Angi Phone Number Scraper?

#### 1. ⚡ Unmatched Speed and Efficiency

Our scraper is built to deliver results at lightning-fast speeds, saving you valuable time and effort.

#### 2. 🎯 Highly Targeted Search Results

Achieve highly precise results by filtering keywords, locations, and countries. Perfect for **marketing automation with Angi data**.

#### 3. 💰 The Most Affordable Solution on the Market

This is the **cheapest Angi phone number scraper** available, optimized for cost-effectiveness without compromising quality.

#### 4. 🌍 Global Reach and Scalability

Whether you're targeting local leads or expanding internationally, this tool offers **global country support**.

#### 5. 🛡️ Robust and Reliable

Our scraper is designed for **maximum reliability**, ensuring consistent and accurate data extraction.

***

### 🛠️ How It Works

1. **Input Your Parameters:** Add your keywords, location, and country.
2. **Set Your Filters:** Customize the search to fit your needs.
3. **Run the Scraper:** Start the process and let the tool do the work.
4. **Monitor Progress:** View real-time extraction updates.
5. **Download Results:** Export your clean data in JSON or CSV format.

***

### 💡 Practical Use Cases for Your Business

#### 1. 🔍 Recruitment and Talent Acquisition

Find potential candidates and contact them directly for job opportunities.

#### 2. 📢 Marketing Campaigns

Gather leads for your email or cold-calling outreach campaigns.

#### 3. 🤝 B2B Sales and Networking

Build connections with decision-makers and grow your business network.

***

### 📈 Maximizing Your ROI: Best Practices for Cold Outreach

- **Personalize Your Message:** Use the lead's name or business in your outreach.
- **Craft Strong Subject Lines:** Grab attention with compelling email subjects.
- **Follow Up:** Send polite reminders if you don't get a response.
- **Use Multi-Channel Outreach:** Combine email, phone, and LinkedIn.
- **Segment Your Leads:** Target them based on location or industry.

***

### ❓ Frequently Asked Questions (FAQ)

1. **Is this legal?**
   Yes, the scraper only extracts publicly available data from Angi profiles.

2. **How fast is the scraper?**
   Speed depends on your input size, but it is optimized for performance.

3. **Can I filter results by location?**
   Yes, you can target specific cities or states using the location parameter.

4. **How accurate is the extracted data?**
   We ensure high accuracy by validating phone numbers during extraction.

5. **Can I integrate this with my CRM?**
   Absolutely! Export data in CSV or JSON and upload it to your CRM.

6. **What does it cost?**
   This is the most affordable Angi phone number scraping tool available.

7. **Do I need proxies?**
   Yes, we recommend using residential proxies for optimal performance.

***

### 🔧 Troubleshooting Common Issues

1. **"0 results found"** - Broaden your keywords to include more variations.
2. **"Slow performance"** - Reduce the `maxPhoneNumbers` parameter for faster results.
3. **"Missing data"** - Not all Angi profiles have publicly available phone numbers.

***

### 📞 Support, Feedback & Custom Solutions

Need help or have feedback for us? We're here to support you every step of the way.

**Email Us:** **<leadheavencontact@gmail.com>**

***

#### Key Features Summary

- ✅ Fast and efficient phone number extraction.
- ✅ Cost-effective and affordable.
- ✅ Highly targeted search parameters.
- ✅ Clean and structured data output.
- ✅ Global country support.
- ✅ Reliable and accurate results.
- ✅ Dedicated support team.

Start identifying new business opportunities today with the **Angi Phone Number Scraper - Fast, Advanced & Cheapest**!

# Actor input Schema

## `keywords` (type: `array`):

Enter keywords to search for (e.g., 'Target Keyword').

## `location` (type: `string`):

Filter by location (e.g., 'London', 'California'). Leave empty for global search.

## `country` (type: `string`):

Select the country to target for phone numbers.

## `maxPhoneNumbers` (type: `integer`):

Stop scraping after this many phone numbers are found. Setting a higher limit extends the scraping duration.

## Actor input object example

```json
{
  "keywords": [
    "marketing",
    "founder"
  ],
  "country": "United Kingdom (+44)",
  "maxPhoneNumbers": 20
}
```

# Actor output Schema

## `results` (type: `string`):

Records produced by Angi Phone Number Scraper, stored in the run's default dataset.

# 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 = {
    "keywords": [
        "marketing",
        "founder"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("contacts-api/angi-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 = { "keywords": [
        "marketing",
        "founder",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("contacts-api/angi-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 '{
  "keywords": [
    "marketing",
    "founder"
  ]
}' |
apify call contacts-api/angi-phone-number-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,contacts-api/angi-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/Nrg2Qn6LqeZMqSbHv/builds/4uXDXfDVRdfS42zwx/openapi.json
