# Linkedin Phone Number Scraper (`scraperoka/linkedin-phone-number-scraper`) Actor

📞 LinkedIn Phone Number Scraper extracts verified phone numbers from LinkedIn profiles to power targeted outreach. 🚀 Streamline prospecting for B2B sales, lead gen & recruitment with cleaner contact data. 💼 Fast, efficient, and built for results.

- **URL**: https://apify.com/scraperoka/linkedin-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 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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

### Linkedin Phone Number Scraper 🎯

Manually hunting down phone numbers across LinkedIn bios, profiles, and posts wastes hours you don’t have. **Linkedin Phone Number Scraper** automates that collection using your keywords and a country dial code. It’s a **Linkedin phone number scraper** for marketers, recruiters, and growth teams who need LinkedIn outreach phone numbers at scale—quickly turning searches into thousands of leads in a single run.

---

### What You Get: Sample Output

Here's a sample record from a single run:

```json
{
  "platform": "LinkedIn",
  "keyword": "marketing",
  "title": "Marketing leader | Product & Growth",
  "description": "We help B2B teams grow 📈 Call us at +44 20 7946 0958. email: hello@example.com",
  "url": "https://www.linkedin.com/some-public-profile-link",
  "phone_number": "+442079460958",
  "country": "United Kingdom",
  "dial_code": "+44",
  "proxyGroups": [
    "legacy"
  ]
}
````

**Output Fields**

| Field | Type | What It Tells You |
|---|---|---|
| `platform` | string | Confirms the source platform is set to `LinkedIn` for consistent downstream processing |
| `keyword` | string | Which keyword triggered this result, so you can segment leads by campaign theme |
| `title` | string | The title text associated with the extracted entry (useful for context in a lead list) |
| `description` | string | The source text where the phone number was detected—great for auditing and filtering |
| `url` | string | The public page link tied to the entry, so you can verify and review quickly |
| `phone_number` | string | The extracted phone number formatted in E.164 style for clean imports |
| `country` | string | The selected country context for the dial code filtering you configured |
| `dial_code` | string | The dial code used for targeting (for geo-specific outreach lists) |
| `proxyGroups` | array | Proxy configuration details used during the run for operational transparency |

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

***

### Why Linkedin Phone Number Scraper?

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

#### Keyword-driven phone number targeting

You provide a list of `keywords`, and the actor focuses on phone numbers found in LinkedIn bios, profiles, and posts related to those terms. This makes a LinkedIn contact scraper approach feel much more campaign-ready for users building LinkedIn outreach phone numbers.

#### Country dial code filtering

You choose a `country` (and its dial code), so results are aligned to the region you care about. For B2B lead generation, that means fewer irrelevant numbers and easier segmentation.

#### Clean, consistent phone number formatting

Phone numbers are formatted using E.164. That consistency helps when you import results into CRMs, spreadsheets, and enrichment pipelines—especially when you’re doing an LinkedIn email and phone number scraper workflow that needs standard phone formatting.

#### Deduplicated results per run

The actor keeps track of `seen_numbers`, preventing duplicate phone numbers within a single run. This improves the usefulness of your export LinkedIn phone numbers file, especially when you test multiple keywords.

***

### Configuring Your Run

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

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

| Parameter | Required | What It Does |
|---|---|---|
| `keywords` | ✅ | A list of keywords to search for (for example: marketing, founder). Phone numbers are collected from LinkedIn content related to these keywords. |
| `platform` | ⬜ | Selects the platform to scrape. The only option available here is `Linkedin` (default: `Linkedin`). |
| `country` | ✅ | Select a country to scrape related phone numbers, using that country’s dial code (default: `United Kingdom (+44)`). |
| `maxPhoneNumbers` | ⬜ | Sets the maximum number of phone numbers to collect. The scraper stops once this limit is reached. Default is `20` (allowed range: `1`–`10000`). |
| `engine` | ⬜ | Choose scraping engine. `cost-effective` uses residential proxies with async requests; `legacy` is more reliable but slower and more expensive. Default is `legacy`. |
| `proxyConfiguration` | ⬜ | Configure proxies for this Actor (Apify proxy settings object). |

***

### Core Capabilities

#### Scrapes publicly available LinkedIn contact text

This Linkedin phone number scraper pulls phone numbers from LinkedIn bios, profiles, and posts that relate to your `keywords`. It’s designed to support LinkedIn profile phone number scraper use cases where contact details are embedded in public profile text.

#### Flexible targeting with keywords and country filters

Combine `keywords` with a selected `country` to focus results on the region you want. This is especially useful for teams running a LinkedIn lead scraper phone process that needs consistent geographic alignment.

#### Stops at your requested phone limit

You control the output volume with `maxPhoneNumbers`. This helps you scale from quick validation runs (small limits) to larger exports (bigger limits) without changing your workflow.

#### Robust scraping modes with proxy support

You can choose between `engine` values and provide `proxyConfiguration` to fit your reliability and budget needs. This built-in proxy support helps maintain stability when scraping large LinkedIn outreach phone numbers lists.

#### Integration-ready structured dataset output

Each extracted item is pushed with consistent fields like `phone_number`, `url`, `country`, and `keyword`, so you can export and immediately use the dataset in marketing, sales, or research workflows.

***

### Who Gets the Most Out of This

**B2B Sales & Outreach Teams** — Use this LinkedIn data scraper phone number workflow to generate outreach-ready lists segmented by keyword and country dial code, so your prospecting doesn’t start from scratch.

**Recruiters & Talent Sourcers** — Build a LinkedIn contact list scraper export to quickly locate public phone numbers tied to relevant roles or leadership profiles (based on your keywords and region).

**Growth Marketers & Demand Gen** — Run an LinkedIn outreach phone numbers export for campaign themes, then import results into your lead management process as a complementary dataset to email discovery.

**Freelance Researchers** — Use a LinkedIn phone number finder approach to deliver structured, exportable datasets for reports and investigations, with source context preserved via `url` and `description`.

**Automation & Data Pipeline Builders** — If you’re integrating this into scheduled workflows, the consistent output schema (including `phone_number` in E.164) makes it easier to merge with other datasets.

***

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

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

1. **Open the actor on Apify** — visit [console.apify.com](https://console.apify.com) and open the actor listing for Linkedin Phone Number Scraper.
2. **Enter your inputs** — set `keywords` and `country` (required), then optionally adjust `maxPhoneNumbers`, `engine`, and `proxyConfiguration`.
3. **Configure proxy settings** — if you have special networking needs, set `proxyConfiguration` to match your environment.
4. **Hit Run and watch the live log** — monitor progress and confirm results are being captured.
5. **View results in the dataset tab** — extracted phone numbers appear as the run processes.
6. **Export as JSON, CSV, or Excel** — download directly from the Apify dashboard when your dataset is ready.

The whole process takes under 5 minutes to set up.

***

### Integrations & Export Options

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

You can export your dataset as **JSON, CSV, or Excel** from the Apify dataset tab, making it easy to use in spreadsheets, CRM imports, and analyst workflows. For structured exports LinkedIn phone numbers buyers expect, this keeps your pipeline simple.

For automation, you can connect the actor run to downstream systems using **Apify’s integrations**, **Zapier / Make**, and **webhooks**, and you can also run jobs on a **scheduled basis**. If you prefer programmatic access, you can retrieve results via the **Apify API**—see Apify API documentation at [apify.com/docs/api](https://apify.com/docs/api).

***

### Pricing & Free Trial

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

Apify provides a free trial allowance for several test runs, then you scale using Apify’s pay-as-you-go model for compute usage. Exact numbers depend on your plan and run configuration, so check the current Apify pricing on the pricing page.

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

***

### Reliability & Performance

| What We Handle | How |
|---|---|
| Proxy support | Built-in proxy configuration options help maintain scraping reliability across runs |
| Output consistency | Extracted phone numbers are formatted in E.164 style for easier imports |
| Result volume control | `maxPhoneNumbers` lets you cap output to keep runs predictable |
| Resilience | Includes retries and fallbacks for resilience when encountering transient issues |

**Limitations:** The actor only works with **publicly available** LinkedIn content that includes phone numbers in bios, profiles, or posts related to your keywords. If phone numbers aren’t present in the public text for your selected keywords and country dial code, results may be limited.

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 for testing the actor with limited usage credits. For the most up-to-date free-tier details, check your plan status in the Apify console.

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

No. This Linkedin phone number scraper is designed to work on publicly available LinkedIn content, so you don’t need a LinkedIn login in order to collect results.

#### How accurate is the data?

Accuracy depends on what the account owner has published publicly on LinkedIn. The actor collects phone numbers from public bios, profiles, and posts related to your keywords, and formats them into E.164 style for cleaner use.

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

You control the maximum with `maxPhoneNumbers`. The scraper stops once this limit is reached, so you can choose between quick tests and larger exports (up to `10000`).

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

Freshness depends on when you run the actor. Each run scrapes public LinkedIn content at runtime, so if you need up-to-date phone information, schedule new runs on the cadence you prefer.

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

The actor accesses **publicly available data** only. You’re responsible for ensuring your use, storage, and outreach workflows comply with GDPR, CCPA, platform terms, and any local regulations.

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

Yes. You can export from the Apify dashboard as JSON, CSV, or Excel. From there, you can import into Google Sheets or any spreadsheet tool that accepts CSV/Excel.

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

Yes. You can use Apify scheduling options to run the actor automatically on a cron-like schedule, which is helpful when you want refreshed LinkedIn outreach phone numbers regularly.

#### Can I access this via API?

Yes. You can trigger and retrieve results programmatically using the Apify API. Visit [apify.com/docs/api](https://apify.com/docs/api) for details.

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

The actor is designed to be resilient and includes retries and fallbacks for reliability. If issues prevent further results, the run will stop according to the available progress and configured limits.

***

### Need Help or Have a Request?

Got a question about Linkedin Phone Number Scraper or want a new feature added? Reach out at <dataforleads@gmail.com>. We respond to feedback and are actively maintaining this actor based on user needs—ideas like webhook notifications on completion or additional export controls are welcome.

***

### Disclaimer & Responsible Use

*Linkedin Phone Number Scraper is the fastest, most reliable way to export LinkedIn phone numbers from public profiles — start your free run today.*

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

# Actor input Schema

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

A list of keywords to search for. (Example: John, marketing, etc.)

## `platform` (type: `string`):

Select platform.

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

Select a country to scrape related phone numbers.

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

Maximum number of phone numbers to collect. The scraper will stop once this limit is reached. Setting a higher limit allows for more potential results but doesn't guarantee reaching that number. This helps save costs by controlling scraping time.

## `engine` (type: `string`):

Choose scraping engine. 🚀 Cost Effective (New): Uses residential proxies with async requests for faster, cheaper scraping. 🔧 Legacy: Uses GOOGLE\_SERP proxy with traditional selectors - more reliable but slower and more expensive.

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

Configure proxies for this Actor.

## Actor input object example

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

# 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/linkedin-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/linkedin-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/linkedin-phone-number-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Linkedin Phone Number Scraper",
        "description": "📞 LinkedIn Phone Number Scraper extracts verified phone numbers from LinkedIn profiles to power targeted outreach. 🚀 Streamline prospecting for B2B sales, lead gen & recruitment with cleaner contact data. 💼 Fast, efficient, and built for results.",
        "version": "0.1",
        "x-build-id": "fl1b2sTAL6OWOxbDu"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scraperoka~linkedin-phone-number-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scraperoka-linkedin-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~linkedin-phone-number-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scraperoka-linkedin-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~linkedin-phone-number-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scraperoka-linkedin-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": "A list of keywords to search for. (Example: John, marketing, etc.)",
                        "default": [
                            "marketing",
                            "founder"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "platform": {
                        "title": "Platform",
                        "enum": [
                            "Linkedin"
                        ],
                        "type": "string",
                        "description": "Select platform.",
                        "default": "Linkedin"
                    },
                    "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 a country to scrape related phone numbers.",
                        "default": "United Kingdom (+44)"
                    },
                    "maxPhoneNumbers": {
                        "title": "Max Phone Numbers",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum number of phone numbers to collect. The scraper will stop once this limit is reached. Setting a higher limit allows for more potential results but doesn't guarantee reaching that number. This helps save costs by controlling scraping time.",
                        "default": 20
                    },
                    "engine": {
                        "title": "Engine",
                        "enum": [
                            "cost-effective",
                            "legacy"
                        ],
                        "type": "string",
                        "description": "Choose scraping engine. 🚀 Cost Effective (New): Uses residential proxies with async requests for faster, cheaper scraping. 🔧 Legacy: Uses GOOGLE_SERP proxy with traditional selectors - more reliable but slower and more expensive.",
                        "default": "legacy"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Configure proxies for this Actor."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
