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

📱 Instagram Phone Number Scraper extracts publicly available business contact numbers from IG profiles at scale. ⚡ Fast, accurate, deduped CSV/CRM exports. 🔎 Ideal for B2B lead gen & sales—use responsibly and respect privacy & platform terms.

- **URL**: https://apify.com/scrapeflow/instagram-phone-number-scraper.md
- **Developed by:** [ScrapeFlow](https://apify.com/scrapeflow) (community)
- **Categories:** Automation, Lead generation, Social media
- **Stats:** 6 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 a focused data extraction tool that finds publicly available phone numbers from Instagram content via Google search results. It removes the manual work of scanning posts and profiles one by one by targeting dial codes and keywords, then normalizing and deduplicating phone numbers at scale. Built for marketers, sales teams, data analysts, and researchers, it enables repeatable phone-number discovery campaigns across countries and topics with clean, structured outputs.

### What data / output can you get?

You’ll receive a structured record for each phone number found in Google’s results that point to Instagram content. Fields are normalized and pushed to the Apify dataset for easy export (JSON, CSV).

| Data field     | Description                                                                 | Example value                                                                 |
| -------------- | --------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
| platform       | Platform label derived from input (formatted for display)                   | "Instagram.com"                                                               |
| keyword        | The keyword you searched for                                                | "marketing"                                                                   |
| title          | Result title captured from the Google SERP                                  | "+44 7413 081142 RSA Marketing provides premium digital ..."                  |
| description    | Result snippet/description from the Google SERP                             | "WhatsApp: +44 7413 081142 RSA Marketing provides premium digital marketing…" |
| url            | Resolved result URL (must contain instagram.com)                            | "https://www.instagram.com/p/DTAqEJrAsFl/"                                    |
| phone_number   | Normalized phone number (prefixed with country dial code)                   | "+447413081142"                                                               |
| country        | Country name parsed from the input                                          | "United Kingdom"                                                              |
| dial_code      | Country dial code parsed from the input (used for filtering/normalization)  | "+44"                                                                          |

Note: Results are pushed to the Apify dataset and can be downloaded in JSON or CSV. Duplicate Instagram URLs are automatically skipped.

### Key features

- 🔎 Strong dial-code targeting  
  Extracts phone numbers that match your selected country’s dial code. Numbers are normalized and filtered to ensure they start with the correct code.

- 🧼 Clean normalization & deduplication  
  Cleans and normalizes phone numbers, and avoids duplicates by skipping repeated result URLs within a run.

- 🔁 Resilient fetching with anti-blocking jitter  
  Retries Google SERP requests with randomized headers and delays, and stops early on repeated blocked/empty pages to save credits.

- 🎯 Per-keyword limits  
  Enforce a hard cap with maxPhoneNumbers so the run stops when enough numbers are found for each keyword.

- 🌍 Country-aware queries  
  Builds Google queries like: site:instagram.com "<dial_code>" "<keyword>" for precise filtering by region and topic.

- 🧰 Apify Proxy support (GOOGLE_SERP group)  
  Integrates with Apify Proxy through the Engine setting, using the legal GOOGLE_SERP proxy group for compliant SERP access.

- 📦 Structured dataset outputs  
  Pushes each record with platform, keyword, title, description, url, phone_number, country, and dial_code for seamless analysis and exports.

- 🚪 No Instagram login required  
  Works from public Google SERP results pointing to instagram.com—no cookies or account authentication needed.

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

1. Create or log in to your Apify account.  
2. Open the Instagram Phone Number Scraper actor.  
3. Add input data:  
   - Fill keywords with a list of topics, usernames, or Instagram URLs (array of strings).  
   - Choose the country to control dial-code filtering and normalization.  
4. (Optional) Set maxPhoneNumbers to cap results per keyword.  
5. (Optional) Configure proxyConfiguration if needed; by default, the actor uses Apify Proxy with the GOOGLE_SERP group via Engine=legacy.  
6. Start the run. The actor will query Google, parse results pointing to instagram.com, extract, normalize, and push phone numbers.  
7. Monitor logs for progress, blocks, and per-keyword counts. The actor will stop early if it hits empty/blocked pages repeatedly.  
8. Download your dataset as JSON or CSV from the run’s Dataset tab.

Pro tip: Use more specific keywords plus the right country to improve precision. Increase maxPhoneNumbers for larger lists, and schedule runs to refresh leads over time.

### Use cases

| Use case name                                       | Description                                                                                  |
| --------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| B2B lead generation via Instagram                   | Build phone-number lists by combining niche keywords and country dial codes for outreach.    |
| Sales outreach to creators and local businesses     | Discover public numbers associated with Instagram content for targeted contact campaigns.    |
| Market research on contact availability             | Analyze how often public phone numbers appear for a topic or region over time.               |
| CRM enrichment from public sources                  | Augment existing records with normalized phone numbers discovered via Google-to-Instagram.   |
| Agency campaign targeting                           | Rapidly collect contact numbers linked to Instagram posts that match client niches.          |
| Academic or policy research                         | Measure visibility of public phone numbers across geographies and categories on Instagram.   |

### Why choose Instagram Phone Number Scraper?

- 🎯 Precision-first approach: dial-code filtering plus normalization for clean, country-aligned results.  
- ⚡ Built for scale: per-keyword limits, pagination through Google SERP, and auto-stop on empty pages.  
- 🔒 Safe by design: targets public Google results pointing to instagram.com—no login or private data access.  
- 🧩 Developer-friendly: outputs pushed to Apify datasets for use via API or in automation pipelines.  
- 🌐 Proxy-ready: integrates with Apify Proxy (GOOGLE_SERP group) through Engine=legacy for compliant SERP access.  
- 📥 Easy exports: download JSON/CSV for analytics, BI, or CRM workflows.  
- 🛠️ Production-grade reliability: randomized headers, retries, and block detection reduce interruptions.

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

Yes—when used responsibly. This actor collects phone numbers from publicly visible Google search results that link to instagram.com. It does not access private profiles or require authentication.

Guidelines for compliant use:
- Only collect publicly available information.  
- Avoid scraping private or restricted profiles.  
- Follow local data protection laws and regulations.  
- Respect platform terms and use the data ethically.  
- Consult your legal team for edge cases and jurisdiction-specific requirements.

### Input parameters & output format

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

#### Input parameters

- keywords (array of string)\
  Description: A list of keywords, Instagram usernames, or profile URLs to search for. Example: \["marketing", "founder"].\
  Default: Not set\
  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: full country list 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.\
  Default: Not set\
  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:

- Each record is pushed individually to the run’s dataset.
- Fields may be empty if a given result doesn’t contain a detectable phone number or snippet text.

### FAQ

#### Is Instagram Phone Number Scraper free?

You can run the actor on Apify using your account’s available resources. Pricing and trial minutes depend on your Apify plan.

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

No. The actor works from public Google SERP results that point to instagram.com and does not require login or cookies.

#### Which countries are supported?

You can choose from a wide list of countries (e.g., United Kingdom (+44), United States (+1), India (+91), and many more). The dial code is used for normalization and filtering.

#### How are phone numbers normalized?

Numbers are cleaned, converted to international format, and prefixed with the selected country’s dial code when needed. Only numbers matching the chosen dial code are kept when a dial code is set.

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

Use maxPhoneNumbers to control the cap per keyword. The scraper stops for that keyword once the limit is reached or when multiple pages return no results.

#### Does it use proxies?

Yes. With Engine set to "legacy", the actor uses the GOOGLE\_SERP proxy group via Apify Proxy. You can also configure proxyConfiguration in the input.

#### What data formats can I export?

All results are stored in the Apify dataset and can be exported as JSON or CSV directly from the run.

#### How can I integrate the results into my systems?

Access the dataset via the Apify API or export files and import them into your CRM, BI tool, or custom automation.

### Closing CTA / Final thoughts

Instagram Phone Number Scraper is built to discover and normalize public phone numbers from Instagram-linked Google results—fast, clean, and at scale. With dial-code filtering, deduplication, retry logic, and proxy support, you’ll generate structured datasets for outreach, analytics, and research in minutes. Marketers, sales teams, and analysts can download JSON/CSV or connect via the Apify API to automate lead workflows. Start extracting smarter, country-targeted phone leads 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("scrapeflow/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("scrapeflow/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 scrapeflow/instagram-phone-number-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapeflow/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 contact numbers from IG profiles at scale. ⚡ Fast, accurate, deduped CSV/CRM exports. 🔎 Ideal for B2B lead gen & sales—use responsibly and respect privacy & platform terms.",
        "version": "0.1",
        "x-build-id": "7dDuaUMJF1u5AVXCz"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapeflow~instagram-phone-number-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapeflow-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/scrapeflow~instagram-phone-number-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapeflow-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/scrapeflow~instagram-phone-number-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapeflow-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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
