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

📞 Angi Phone Number Scraper extracts verified phone numbers from Angi listings quickly and accurately. ✅ Perfect for lead generation, outreach, and B2B sales research. 🚀 Save time, target prospects, and boost conversions.

- **URL**: https://apify.com/scraperoka/angi-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 $0.01 / 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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 🎯

Manually visiting hundreds of Angi profiles to collect phone numbers wastes hours you don’t have. **Angi Phone Number Scraper** automatically extracts phone numbers from Angi profiles, bios, and post content in bulk—making an Angi phone number scraper ideal for marketers, recruiters, and growth teams. This Angi lead scraper phone numbers workflow helps you build contact lists faster by scraping Angi business directory phone extraction from publicly available data. In a single run, you can collect thousands of candidate phone numbers for outreach and research workflows.

---

### What You Get: Sample Output

Here's a sample record from a single run:

```json
{
  "platform": "Angi",
  "keyword": "marketing",
  "title": "Marketing Consultant",
  "description": "Marketing consultant with contact information in profile bio.",
  "url": "https://www.angi.com/company/example-marketing-consultant/",
  "phone_number": "+1-415-555-0134",
  "country": "United States",
  "dial_code": "+1",
  "error_message": null,
  "status": "pushed"
}
````

| Field | Type | What It Tells You |
|---|---|---|
| `platform` | string | Confirms the source platform as Angi for consistent downstream processing |
| `keyword` | string | The keyword that was used to find this specific contact/entry |
| `title` | string | The Angi result title associated with the extracted phone number |
| `description` | string | The extracted text content used as the basis for phone number detection |
| `url` | string | The Angi page URL tied to the extracted phone number |
| `phone_number` | string | The phone number captured in E.164 format for clean dialing/import |
| `country` | string | The targeted country you chose for phone extraction |
| `dial_code` | string | Dialing prefix associated with the selected country targeting |
| `error_message` | string | Any error details if a record fails to push (empty/`null` on success) |
| `status` | string | Indicates whether the record was successfully pushed to your dataset |

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

***

### Why Angi Phone Number Scraper?

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

#### Bulk phone number extraction with targeting controls

Angi Phone Number Scraper scrapes phone numbers from Angi bios, profiles, and post content using your `keywords` and selected `country` (dial code targeting included). This makes it a practical Angi business directory phone extraction tool when you need relevant leads, not random results.

#### Structured, dataset-ready output

Each extracted phone number is pushed as a structured record with the fields you’ll typically use for outreach: `keyword`, `title`, `url`, `phone_number`, `country`, and `dial_code`. If you’re building an Angi contact info scraper pipeline, this saves you time on reformatting.

#### Built-in deduplication to keep results clean

The actor tracks previously seen numbers and avoids pushing duplicates. That means your Angi lead scraper phone numbers output is more usable for list building and segmentation.

#### Resilient runs for larger scraping jobs

For larger tasks, Angi Phone Number Scraper includes progress saving and stopping rules, helping you resume work and avoid endless runs. It’s designed for reliability when you’re doing Angi phone number bulk download across multiple keywords.

***

### Configuring Your Run

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

```json
{
  "keywords": ["marketing", "founder"],
  "location": "California",
  "country": "United States (+1)",
  "maxPhoneNumbers": 20
}
```

| Parameter | Required | What It Does |
|---|---|---|
| `keywords` | ✅ | Enter keywords to search for (the actor uses them to target relevant Angi bios, profiles, and post content). |
| `location` | ⬜ | Filter by location (for example, `London` or `California`). Leave empty for global search. |
| `country` | ✅ | Select the country to target for phone numbers (this controls dial code targeting). |
| `maxPhoneNumbers` | ⬜ | Stop scraping after this many phone numbers are found. Higher limits can extend scraping duration. |

***

### Core Capabilities

#### Extract phone numbers from Angi profile content

Angi Phone Number Scraper extracts phone numbers from Angi bios, profiles, and post content. If you’re looking for an Angi phone number finder scraper workflow, the actor focuses on publicly available content linked to each result.

#### Keyword and country targeting for relevant results

You control relevance using `keywords` plus a selected `country` dial code. This combination helps an Angi contractor phone numbers workflow stay focused on the market you care about.

#### Deduplicated, E.164-formatted phone numbers

The actor formats detected numbers into E.164 (`phone_number`) and avoids pushing duplicates based on previously seen values. This keeps your Angi verified phone number scraper outputs clean for import into CRMs and dialers.

#### Progress saving and resumable scraping

Long runs can take time, so the actor saves progress as it goes and can resume from a stored cursor state. This is helpful when you’re running larger Angi contact details scraper jobs across multiple keywords.

#### Output completeness for analysis and outreach

The dataset captures the key context you’ll want for follow-up: `keyword`, `title`, `description`, `url`, `country`, `dial_code`, and the extracted `phone_number`. That makes it straightforward to filter, validate, and prioritize leads after export.

***

### Who Gets the Most Out of This

Here’s how different teams put Angi Phone Number Scraper to work:

**Marketing teams** can generate fresh lead lists by running Angi phone number scraper searches with business-relevant `keywords` and a specific `country`, then exporting the results into their outreach workflow.

**Recruiters and staffing teams** can use the extracted `phone_number` and `url` fields to build a targeted list of contractors or service providers associated with their chosen keywords and geography, saving manual browsing time.

**Sales development reps** can turn Angi business directory phone extraction runs into daily prospecting batches, using `maxPhoneNumbers` to cap tests before scaling.

**Researchers and data analysts** can store results in the dataset and analyze patterns by `keyword`, `country`, and `dial_code`, instead of collecting phone numbers one-by-one from individual Angi pages.

**Automation specialists (technical users)** can run Angi phone number bulk download jobs repeatedly, relying on structured dataset output fields for downstream automation and enrichment.

***

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

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

1. **Open the actor on Apify** — go to [console.apify.com](https://console.apify.com) and find Angi Phone Number Scraper.
2. **Enter your inputs** — set `keywords` and `country`, then optionally add `location` and `maxPhoneNumbers`.
3. **Configure proxy settings** — use the built-in proxy support for more reliable scraping on larger runs.
4. **Hit Run and watch the live log** — monitor progress and the number of unique phone numbers collected.
5. **View results in the dataset tab** — each result is pushed with fields like `phone_number`, `url`, `keyword`, `country`, and `dial_code`.
6. **Export as JSON, CSV, or Excel** — download directly from the dataset view for your team’s tooling.

The whole process takes under 5 minutes to set up.

***

### Integrations & Export Options

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

Export formats include JSON, CSV, and Excel from the Apify dataset tab, so you can hand results to analysts or load them into outreach tooling immediately. If you use Google Sheets, Airtable, or similar tools, you can typically connect via Apify’s native dataset integrations and/or automation platforms.

You can also access results programmatically via the Apify API for end-to-end pipeline automation, and trigger downstream actions with webhooks when your run completes. For no-code automation, Zapier or Make-style workflows can push your newly scraped Angi contact details scraper results into existing systems.

For deeper setup options and scheduling, refer to the Apify documentation: https://apify.com/docs

***

### Pricing & Free Trial

Angi Phone Number Scraper runs on the Apify platform, which offers a **free tier** — no credit card required to get started. Free credits are typically enough for several test runs so you can validate your keywords, country targeting, and expected output volume.

For ongoing usage, Apify is pay-as-you-go based on actor compute. Subscription plans are available for teams running heavier workloads, and you can scale when you’re ready without inventing custom scraping scripts.

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

***

### Reliability & Performance

| What We Handle | How |
|---|---|
| Result caps | `maxPhoneNumbers` stops the run after enough unique phone numbers are found |
| Large jobs | Designed to work across multiple `keywords` with progress saving |
| Deduplication | Tracks and avoids re-pushing previously seen phone numbers |
| Resuming runs | Saves progress so you can continue without starting from scratch |
| Error handling | Attempts to keep the run going while pushing what it can to the dataset |
| Scale in one run | Up to the limits of your chosen input and run duration |

**Limitations:** It relies on phone numbers that appear in Angi publicly available profile content. Private, login-gated, or unavailable data can’t be collected by this actor. If results are fewer than expected, broaden `keywords` or adjust `country` and `location`.

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

***

### Frequently Asked Questions

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

Yes—Apify provides a free tier that’s intended for testing smaller scraping jobs. Larger runs or higher output caps may require a paid Apify plan.

#### Do I need to log in to Angi to use this?

No. This actor scrapes phone numbers from publicly available Angi profile content and does not require an Angi login.

#### How accurate is the data?

Accuracy depends on what phone numbers are actually published in the Angi bios, profiles, and post content being processed. The actor extracts and normalizes phone numbers that it detects from publicly available text and returns them in `phone_number`.

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

You can control the cap with `maxPhoneNumbers`. If you run under a free tier context, the actor applies a result limit when `maxPhoneNumbers` exceeds the free maximum.

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

The data freshness depends on when you run the actor. Each run captures what is publicly visible at runtime, so re-running on a schedule is the best way to keep your Angi phone number bulk download data current.

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

This actor works with **publicly available data** that users can view without login. It’s your responsibility to comply with GDPR, CCPA, platform terms, and any applicable local regulations when collecting, storing, or using the results.

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

Yes. You can export your dataset from the Apify dashboard, including JSON and CSV/Excel formats. From there, you can import into Google Sheets or other tools that accept CSV/Excel.

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

Yes. You can schedule runs using Apify’s scheduling capabilities. This is useful if you want ongoing updates for your Angi contact info scraper workflow.

#### Can I access this via API?

Yes. You can trigger runs and retrieve results programmatically using the Apify API. This is useful for building automated enrichment and list-building pipelines.

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

The actor saves progress and keeps pushing results it can to your dataset. If an individual record cannot be pushed, the run continues and you’ll see the failure reflected in pushed record handling (for example, via error details in the output if present).

***

### Need Help or Have a Request?

Got a question about Angi Phone Number Scraper or want a new feature added? Reach out at <dataforleads@gmail.com>. We welcome feedback and support requests, and we actively maintain this actor. If you’d like, suggest ideas like webhook notifications on completion or batch input improvements for Angi scraping tool phone numbers use cases.

***

### Disclaimer & Responsible Use

*Angi Phone Number Scraper is the fastest, most reliable way to extract phone numbers from Angi profiles and posts — start your free run today.*

When using this actor, it collects **publicly available data** from Angi. It does not access private accounts, login-gated content, or password-protected pages. You are responsible for complying with GDPR, CCPA, platform ToS, and any applicable laws. For data removal requests, contact <dataforleads@gmail.com>. Use responsibly, ethically, and only for lawful purposes.

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

# 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("scraperoka/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("scraperoka/angi-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 '{
  "keywords": [
    "marketing",
    "founder"
  ]
}' |
apify call scraperoka/angi-phone-number-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Angi Phone Number Scraper",
        "description": "📞 Angi Phone Number Scraper extracts verified phone numbers from Angi listings quickly and accurately. ✅ Perfect for lead generation, outreach, and B2B sales research. 🚀 Save time, target prospects, and boost conversions.",
        "version": "0.1",
        "x-build-id": "79XVmYPYV1VgYn0cL"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scraperoka~angi-phone-number-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scraperoka-angi-phone-number-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scraperoka~angi-phone-number-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scraperoka-angi-phone-number-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scraperoka~angi-phone-number-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scraperoka-angi-phone-number-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "keywords",
                    "country"
                ],
                "properties": {
                    "keywords": {
                        "title": "Keywords",
                        "type": "array",
                        "description": "Enter keywords to search for (e.g., 'Target Keyword').",
                        "default": [
                            "marketing",
                            "founder"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "Filter by location (e.g., 'London', 'California'). Leave empty for global search."
                    },
                    "country": {
                        "title": "Country",
                        "enum": [
                            "Afghanistan (+93)",
                            "Albania (+355)",
                            "Algeria (+213)",
                            "Andorra (+376)",
                            "Angola (+244)",
                            "Antigua And Barbuda (+1-268)",
                            "Argentina (+54)",
                            "Armenia (+374)",
                            "Australia (+61)",
                            "Austria (+43)",
                            "Azerbaijan (+994)",
                            "Bahamas (+1-242)",
                            "Bahrain (+973)",
                            "Bangladesh (+880)",
                            "Barbados (+1-246)",
                            "Belarus (+375)",
                            "Belgium (+32)",
                            "Belize (+501)",
                            "Benin (+229)",
                            "Bhutan (+975)",
                            "Bolivia (+591)",
                            "Bosnia And Herzegovina (+387)",
                            "Botswana (+267)",
                            "Brazil (+55)",
                            "Brunei (+673)",
                            "Bulgaria (+359)",
                            "Burkina Faso (+226)",
                            "Burundi (+257)",
                            "Cambodia (+855)",
                            "Cameroon (+237)",
                            "Canada (+1)",
                            "Cape Verde (+238)",
                            "Central African Republic (+236)",
                            "Chad (+235)",
                            "Chile (+56)",
                            "China (+86)",
                            "Colombia (+57)",
                            "Comoros (+269)",
                            "Congo (Democratic Republic) (+243)",
                            "Congo (Republic) (+242)",
                            "Costa Rica (+506)",
                            "Croatia (+385)",
                            "Cuba (+53)",
                            "Cyprus (+357)",
                            "Czech Republic (+420)",
                            "Denmark (+45)",
                            "Djibouti (+253)",
                            "Dominica (+1-767)",
                            "Dominican Republic (+1-809)",
                            "East Timor (+670)",
                            "Ecuador (+593)",
                            "Egypt (+20)",
                            "El Salvador (+503)",
                            "Equatorial Guinea (+240)",
                            "Eritrea (+291)",
                            "Estonia (+372)",
                            "Eswatini (+268)",
                            "Ethiopia (+251)",
                            "Fiji (+679)",
                            "Finland (+358)",
                            "France (+33)",
                            "Gabon (+241)",
                            "Gambia (+220)",
                            "Georgia (+995)",
                            "Germany (+49)",
                            "Ghana (+233)",
                            "Greece (+30)",
                            "Grenada (+1-473)",
                            "Guatemala (+502)",
                            "Guinea (+224)",
                            "Guinea-Bissau (+245)",
                            "Guyana (+592)",
                            "Haiti (+509)",
                            "Honduras (+504)",
                            "Hungary (+36)",
                            "Iceland (+354)",
                            "India (+91)",
                            "Indonesia (+62)",
                            "Iran (+98)",
                            "Iraq (+964)",
                            "Ireland (+353)",
                            "Israel (+972)",
                            "Italy (+39)",
                            "Jamaica (+1-876)",
                            "Japan (+81)",
                            "Jordan (+962)",
                            "Kazakhstan (+7)",
                            "Kenya (+254)",
                            "Kiribati (+686)",
                            "Korea, North (+850)",
                            "Korea, South (+82)",
                            "Kuwait (+965)",
                            "Kyrgyzstan (+996)",
                            "Laos (+856)",
                            "Latvia (+371)",
                            "Lebanon (+961)",
                            "Lesotho (+266)",
                            "Liberia (+231)",
                            "Libya (+218)",
                            "Liechtenstein (+423)",
                            "Lithuania (+370)",
                            "Luxembourg (+352)",
                            "Madagascar (+261)",
                            "Malawi (+265)",
                            "Malaysia (+60)",
                            "Maldives (+960)",
                            "Mali (+223)",
                            "Malta (+356)",
                            "Marshall Islands (+692)",
                            "Mauritania (+222)",
                            "Mauritius (+230)",
                            "Mexico (+52)",
                            "Micronesia (+691)",
                            "Moldova (+373)",
                            "Monaco (+377)",
                            "Mongolia (+976)",
                            "Montenegro (+382)",
                            "Morocco (+212)",
                            "Mozambique (+258)",
                            "Myanmar (+95)",
                            "Namibia (+264)",
                            "Nauru (+674)",
                            "Nepal (+977)",
                            "Netherlands (+31)",
                            "New Zealand (+64)",
                            "Nicaragua (+505)",
                            "Niger (+227)",
                            "Nigeria (+234)",
                            "North Macedonia (+389)",
                            "Norway (+47)",
                            "Oman (+968)",
                            "Pakistan (+92)",
                            "Palau (+680)",
                            "Panama (+507)",
                            "Papua New Guinea (+675)",
                            "Paraguay (+595)",
                            "Peru (+51)",
                            "Philippines (+63)",
                            "Poland (+48)",
                            "Portugal (+351)",
                            "Qatar (+974)",
                            "Romania (+40)",
                            "Russia (+7)",
                            "Rwanda (+250)",
                            "Saint Kitts And Nevis (+1-869)",
                            "Saint Lucia (+1-758)",
                            "Saint Vincent And The Grenadines (+1-784)",
                            "Samoa (+685)",
                            "San Marino (+378)",
                            "Sao Tome And Principe (+239)",
                            "Saudi Arabia (+966)",
                            "Senegal (+221)",
                            "Serbia (+381)",
                            "Seychelles (+248)",
                            "Sierra Leone (+232)",
                            "Singapore (+65)",
                            "Slovakia (+421)",
                            "Slovenia (+386)",
                            "Solomon Islands (+677)",
                            "Somalia (+252)",
                            "South Africa (+27)",
                            "South Sudan (+211)",
                            "Spain (+34)",
                            "Sri Lanka (+94)",
                            "Sudan (+249)",
                            "Suriname (+597)",
                            "Sweden (+46)",
                            "Switzerland (+41)",
                            "Syria (+963)",
                            "Taiwan (+886)",
                            "Tajikistan (+992)",
                            "Tanzania (+255)",
                            "Thailand (+66)",
                            "Togo (+228)",
                            "Tonga (+676)",
                            "Trinidad And Tobago (+1-868)",
                            "Tunisia (+216)",
                            "Turkey (+90)",
                            "Turkmenistan (+993)",
                            "Tuvalu (+688)",
                            "Uganda (+256)",
                            "Ukraine (+380)",
                            "United Arab Emirates (+971)",
                            "United Kingdom (+44)",
                            "United States (+1)",
                            "Uruguay (+598)",
                            "Uzbekistan (+998)",
                            "Vanuatu (+678)",
                            "Vatican City (+39-06)",
                            "Venezuela (+58)",
                            "Vietnam (+84)",
                            "Yemen (+967)",
                            "Zambia (+260)",
                            "Zimbabwe (+263)"
                        ],
                        "type": "string",
                        "description": "Select the country to target for phone numbers.",
                        "default": "United Kingdom (+44)"
                    },
                    "maxPhoneNumbers": {
                        "title": "Max Phone Numbers",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Stop scraping after this many phone numbers are found. Setting a higher limit extends the scraping duration.",
                        "default": 20
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
