# Instagram Phone Number Scraper (`scrapepilotapi/instagram-phone-number-scraper`) Actor

📱 Instagram Phone Number Scraper extracts publicly available business phone numbers from Instagram profiles & bios at scale. 🔍 Perfect for lead gen, outreach, and CRM enrichment. ✅ Use responsibly—public data only, with consent, and per Instagram & privacy laws.

- **URL**: https://apify.com/scrapepilotapi/instagram-phone-number-scraper.md
- **Developed by:** [ScrapePilot](https://apify.com/scrapepilotapi) (community)
- **Categories:** Automation, Lead generation, Social media
- **Stats:** 5 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$19.99/month + usage

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

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

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

### Instagram Phone Number Scraper

Instagram Phone Number Scraper is an Apify actor that searches Google SERP for Instagram content and extracts publicly available phone numbers by keyword and country 📱. It solves the manual, time-consuming task of finding contact numbers by automating discovery via Google results and normalizing numbers using country dial codes. Built for marketers, developers, analysts, and researchers, it enables scalable contact discovery with clean, structured outputs you can export and analyze at scale.

### What data / output can you get?

Below are the exact fields this actor pushes to the Apify dataset. Each record corresponds to an Instagram result that contains a detectable phone number in the Google results snippet.

| Data type | Description | Example value |
| --- | --- | --- |
| platform | The display label for the platform being scraped | Instagram.com |
| keyword | The keyword that was used to find the result | marketing |
| title | The SERP result title text | +44 7413 081142 RSA Marketing provides premium digital ... |
| description | The SERP snippet/description text | WhatsApp: + 44 7413 081142 RSA Marketing provides premium digital marketing services, professional website development, advanced SEO, high ... |
| url | URL of the Instagram result from Google SERP | https://www.instagram.com/p/DTAqEJrAsFl/ |
| phone_number | Normalized phone number extracted from the result block | +447413081142 |
| country | Selected country label parsed from input | United Kingdom |
| dial_code | Dial code used to normalize and filter phone numbers | +44 |

Notes:
- Results are pushed to the Apify dataset in real time during the run.
- You can export results from the dataset to JSON, CSV, or Excel directly from Apify.

### Key features

- 🔎 Google SERP-powered discovery  
  Searches Google with a scoped query like site:instagram.com "<dial code>" "<keyword>" to surface Instagram results that likely contain phone numbers.

- 🌍 Country-aware phone normalization  
  Parses inputs like “United Kingdom (+44)”, extracts the dial code, and normalizes numbers to a consistent international format. If a dial code is set, results are filtered to numbers starting with that code.

- 🎯 Results limit per keyword  
  Control output size with maxPhoneNumbers. The actor stops for a keyword once the limit is reached.

- 🧱 Anti-blocking & retries  
  Randomized headers, jittered delays, and robust retry logic reduce blocking risk. Block-page detection avoids pushing bad data.

- 🧹 Noise reduction  
  Skips duplicate URLs and stops after a few empty/failed pages to keep runs efficient and focused.

- ☁️ Apify proxy support  
  Uses Apify Proxy with compliant groups. With the “Engine” option set to legacy, the actor uses the GOOGLE_SERP proxy group.

- 📦 Clean, structured output  
  Pushes standardized records with platform, keyword, title, description, url, phone_number, country, dial_code—ready for analysis or CRM enrichment.

- 🔐 No login required  
  Works on publicly visible Google SERP results for instagram.com—no authentication or cookies needed.

### How to use Instagram Phone Number Scraper - step by step

1. Sign in to Apify  
   Create a free Apify account or log in.

2. Open the actor  
   Find “Instagram Phone Number Scraper” in the Apify Store and open the actor page.

3. Add input data  
   - Provide one or more keywords in keywords (e.g., ["marketing"]).  
   - Keep platform as Instagram (default).  
   - Choose a country (e.g., “United Kingdom (+44)”) to set the dial code filter.  
   - Optionally adjust maxPhoneNumbers.

4. Configure engine and proxy  
   - engine supports "legacy" (uses GOOGLE_SERP proxy).  
   - Optionally set proxyConfiguration to use Apify Proxy.

5. Start the run  
   Click “Start” to launch. The actor will query Google, parse results, detect numbers, normalize them with the dial code, and push structured items to the dataset.

6. Monitor progress  
   View logs in real time. The actor retries on transient errors, skips duplicate URLs, and stops after a few empty pages per keyword.

7. Export results  
   Go to the run’s dataset and export to JSON, CSV, or Excel for downstream analysis or ingestion.

Pro Tip: Orchestrate this actor via the Apify API, schedule recurring runs, and connect the dataset export to your CRM or enrichment pipeline.

### Use cases

| Use case | Description |
| --- | --- |
| Marketing outreach list building | Generate targeted contact lists by keyword and country to accelerate outreach. |
| B2B lead generation | Collect normalized business phone numbers from Instagram-related SERP results to feed sales pipelines. |
| E-commerce seller discovery | Find seller or shop phone numbers referenced in Instagram posts/pages for partnership or supplier outreach. |
| Market research | Analyze which regions or verticals list contact numbers publicly on Instagram, filtered by dial code. |
| Data enrichment | Add verified phone numbers to existing company or creator records using keyword-driven discovery. |
| Academic and OSINT research | Study public phone number availability patterns on Instagram via country-specific dialing codes. |
| API/automation pipelines | Trigger actor runs programmatically and sync normalized outputs into internal systems. |

### Why choose Instagram Phone Number Scraper?

This actor focuses on precision, automation, and reliability for phone-number extraction from Instagram-related search results.

- ✅ Country-aware normalization and filtering for higher data quality
- ⚡ Batch-friendly workflow with per-keyword limits and empty-page stop rules
- 🔒 Public-data only—no login or cookies required
- ☁️ Apify infrastructure and proxy support for dependable, scalable runs
- 🧰 Developer-ready with structured outputs ideal for pipelines and CRMs
- 💸 Cost-efficient vs. brittle browser extensions or manual collection
- 🔁 Robust retry and block detection to maintain consistency

In short: a production-ready actor that consistently returns clean, normalized phone numbers linked to Instagram results—without unstable browser tricks.

### Is it legal / ethical to use Instagram Phone Number Scraper?

Yes—when used responsibly. This actor extracts phone numbers from publicly visible Google SERP results pointing to instagram.com and does not access private data.

Guidelines:
- Only use publicly available information.  
- Avoid private or restricted profiles and non-public content.  
- Comply with applicable data protection laws (e.g., GDPR, CCPA) and Instagram’s terms.  
- Use results ethically; verify compliance with your legal team for specific use cases.

### Input parameters & output format

#### Example input JSON
```json
{
  "keywords": ["marketing"],
  "platform": "Instagram",
  "country": "United Kingdom (+44)",
  "maxPhoneNumbers": 20,
  "engine": "legacy",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
````

Parameter reference:

- keywords (array of string)
  - Description: A list of keywords, Instagram usernames, or profile URLs to search for. Example: \["marketing", "founder"].
  - Default: Prefill \["marketing"]
  - Required: Yes

- platform (string; enum: \["Instagram"])
  - Description: Select platform. For now this actor targets Instagram via google.com SERP.
  - Default: "Instagram"
  - Required: No

- country (string; enum of countries with dial codes)
  - Description: Select a country to scrape related phone numbers. The dial code is used to normalize and filter phone numbers.
  - Default: "United Kingdom (+44)"
  - Required: Yes

- maxPhoneNumbers (integer; min 1, max 10000)
  - Description: Maximum number of phone numbers to collect per keyword. The scraper will stop once this limit is reached.
  - Default: 20
  - Required: No

- engine (string; enum: \["legacy"])
  - Description: Choose scraping engine. 'cost-effective' uses RESIDENTIAL proxies; 'legacy' uses GOOGLE\_SERP proxy.
  - Default: "legacy"
  - Required: No

- proxyConfiguration (object)
  - Description: Configure proxies for this Actor (Apify proxy). The actor will enforce legal GOOGLE\_SERP or RESIDENTIAL groups depending on Engine.
  - Required: No

#### Example output JSON

```json
[
  {
    "platform": "Instagram.com",
    "keyword": "marketing",
    "title": "+44 7413 081142 RSA Marketing provides premium digital ...",
    "description": "WhatsApp: + 44 7413 081142 RSA Marketing provides premium digital marketing services, professional website development, advanced SEO, high ...",
    "url": "https://www.instagram.com/p/DTAqEJrAsFl/",
    "phone_number": "+447413081142",
    "country": "United Kingdom",
    "dial_code": "+44"
  }
]
```

Notes:

- Fields may be empty if Google’s snippet does not contain a detectable number or description.
- When a dial code is selected, results are filtered to numbers starting with that code.

### FAQ

#### Is Instagram Phone Number Scraper free?

A monthly subscription is available, and trial minutes are provided for testing on Apify. You can start a run to validate results before scaling usage.

#### Do I need to log in to Instagram?

No. The actor uses Google SERP to discover instagram.com results and extracts publicly visible numbers from snippets—no login or cookies required.

#### What data fields does the actor return?

Each record includes platform, keyword, title, description, url, phone\_number, country, and dial\_code.

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

Use maxPhoneNumbers to set the maximum per keyword. The actor stops for that keyword once the limit is reached or after several empty pages.

#### Can I target a specific country or region?

Yes. Select a country (e.g., “United Kingdom (+44)”). The actor extracts and uses the dial code to normalize and filter numbers accordingly.

#### Does it support proxies?

Yes. It supports Apify Proxy. With engine set to legacy, the actor uses the GOOGLE\_SERP proxy group.

#### Is the output exportable?

Yes. Open the run’s dataset and export to JSON, CSV, or Excel directly from Apify.

#### Can I automate this in my pipeline?

Yes. You can trigger runs via the Apify API and pull the dataset programmatically to integrate with CRMs or enrichment workflows.

### Final thoughts

Instagram Phone Number Scraper is built to extract publicly available phone numbers tied to Instagram results—cleanly, safely, and at scale. With dial code-aware normalization, robust retries, and structured outputs, it’s ideal for marketers, sales teams, researchers, and developers. Use the Apify API to automate runs, export datasets to your tools, and start building reliable, country-filtered contact datasets today.

# Actor input Schema

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

A list of keywords, Instagram usernames, or profile URLs to search for. Example: \["marketing", "founder"].

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

Select platform. For now this actor targets Instagram via google.com SERP.

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

Select a country to scrape related phone numbers. The dial code is used to normalize and filter phone numbers.

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

Maximum number of phone numbers to collect per keyword. The scraper will stop once this limit is reached.

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

Choose scraping engine. 'cost-effective' uses RESIDENTIAL proxies; 'legacy' uses GOOGLE\_SERP proxy.

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

Configure proxies for this Actor (Apify proxy). The actor will enforce legal GOOGLE\_SERP or RESIDENTIAL groups depending on Engine.

## Actor input object example

```json
{
  "keywords": [
    "marketing"
  ],
  "platform": "Instagram",
  "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"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapepilotapi/instagram-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"] }

# Run the Actor and wait for it to finish
run = client.actor("scrapepilotapi/instagram-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"
  ]
}' |
apify call scrapepilotapi/instagram-phone-number-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Instagram Phone Number Scraper",
        "description": "📱 Instagram Phone Number Scraper extracts publicly available business phone numbers from Instagram profiles & bios at scale. 🔍 Perfect for lead gen, outreach, and CRM enrichment. ✅ Use responsibly—public data only, with consent, and per Instagram & privacy laws.",
        "version": "0.1",
        "x-build-id": "L66dfuhXR6Hg2bHkn"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapepilotapi~instagram-phone-number-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapepilotapi-instagram-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/scrapepilotapi~instagram-phone-number-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapepilotapi-instagram-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/scrapepilotapi~instagram-phone-number-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapepilotapi-instagram-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 / Usernames / URLs",
                        "type": "array",
                        "description": "A list of keywords, Instagram usernames, or profile URLs to search for. Example: [\"marketing\", \"founder\"].",
                        "items": {
                            "type": "string"
                        }
                    },
                    "platform": {
                        "title": "Platform",
                        "enum": [
                            "Instagram"
                        ],
                        "type": "string",
                        "description": "Select platform. For now this actor targets Instagram via google.com SERP.",
                        "default": "Instagram"
                    },
                    "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. The dial code is used to normalize and filter 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 per keyword. The scraper will stop once this limit is reached.",
                        "default": 20
                    },
                    "engine": {
                        "title": "Engine",
                        "enum": [
                            "legacy"
                        ],
                        "type": "string",
                        "description": "Choose scraping engine. 'cost-effective' uses RESIDENTIAL proxies; 'legacy' uses GOOGLE_SERP proxy.",
                        "default": "legacy"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Configure proxies for this Actor (Apify proxy). The actor will enforce legal GOOGLE_SERP or RESIDENTIAL groups depending on Engine."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
