# Thumbtack Phone Number Scraper (`scrapers-hub/thumbtack-phone-number-scraper`) Actor

📞 Thumbtack Phone Number Scraper extracts verified phone numbers from Thumbtack listings quickly & accurately. 🚀 Perfect for B2B lead generation, sales outreach, and market research. ⚡ Streamline your prospecting with reliable contact data.

- **URL**: https://apify.com/scrapers-hub/thumbtack-phone-number-scraper.md
- **Developed by:** [Scrapers Hub](https://apify.com/scrapers-hub) (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 $2.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.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

### Thumbtack Phone Number Scraper 📞

**Thumbtack Phone Number Scraper** helps you automatically extract phone numbers from Thumbtack profiles, bios, and post content using your **keywords** and a selected **country** target. Whether you’re a marketer building a **Thumbtack outreach lead list**, a data analyst enriching records for a **local business directory phone scraper**, or a researcher validating contact channels, this actor streamlines the tedious work of finding phone numbers from public web data—at scale, without manual copy/paste.

You can also add an optional location filter to improve relevance and stop after a set maximum number of results.

---

### Why choose Thumbtack Phone Number Scraper?

| Feature | Benefit |
|---|---|
| ✅ All-in-one Thumbtack extraction | Pulls phone numbers from Thumbtack profile/bio/post content in one run |
| ✅ Keyword + country targeting | Uses your keywords and country code selection to focus results where you need them |
| ✅ Reliability-focused retries & fallbacks | Includes resilience mechanisms to keep long scraping tasks moving |
| ✅ Structured dataset output | Saves results with consistent fields like `phone_number`, `url`, and `dial_code` |
| ✅ Works for bulk scraping | Designed for large batches by setting limits like `maxPhoneNumbers` |
| ✅ Incremental saving to dataset | Pushes each found row immediately so you don’t lose progress |

---

### Key features

- 📌 **Keyword-driven lead discovery**: Uses your input `keywords` to guide the extraction of relevant Thumbtack content (e.g. “Thumbtack lead scraper” style use cases)
- 🌍 **Country code targeting**: Filters/validates numbers using your selected `country` so the output matches the dial region you want
- 🔎 **Profile + bio + post content coverage**: Extracts phone numbers from Thumbtack profiles, bios, and post content (great for “Thumbtack contact scraper” workflows)
- 🔁 **Resilient scraping behavior**: Includes retry and stop conditions to better handle slower or sparse result sets
- 💾 **Real-time data saving**: Each unique phone number result is pushed as it’s found, building your dataset incrementally
- 🧠 **De-duplication of phone numbers**: Tracks previously found numbers to avoid duplicates within the run
- 🎯 **Result limiting**: Uses `maxPhoneNumbers` to stop after your chosen maximum—ideal for “Thumbtack phone number extractor” runs with strict quotas
- 📊 **Clean, tabular-ready fields**: Outputs a structured dataset designed for easy exporting and analysis

---

### Input

Provide input via an `input.json` file. Example structure:

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

#### Input Fields

| Field | Required | Description |
|---|---|---|
| `keywords` | ✅ Yes | A list of keywords to search for (for example: `["marketing", "founder"]`). These drive what Thumbtack content is targeted. |
| `location` | ❌ No | Optional location text (for example: `London` or `California`). Leave it empty for a global-style search. |
| `country` | ✅ Yes | The country to target for phone numbers (pick one from the provided list like `United Kingdom (+44)`). This helps validate/standardize extracted numbers. |
| `maxPhoneNumbers` | ❌ No | Stop after this many phone numbers are found. Higher values can increase runtime. Must be between `1` and `10000`. Default is `20`. |

***

### Output

The actor saves each found result row into a dataset (view: **“Scraped Phone Numbers”**). Each row includes the phone number plus related Thumbtack metadata.

#### Example output item

```json
{
  "keyword": "marketing",
  "title": "No title",
  "description": "No data",
  "url": "No URL",
  "phone_number": "+447700900123",
  "country": "United Kingdom",
  "dial_code": "+44"
}
```

#### Output Fields

| Field | Type | Description |
|---|---|---|
| `keyword` | string | The keyword used when searching for this result |
| `title` | string | The title extracted from the source item |
| `description` | string | The extracted description/content where the phone number was found |
| `url` | string | The URL associated with the extracted item |
| `phone_number` | string | The normalized phone number in E.164 format |
| `country` | string | The selected country name used for targeting |
| `dial_code` | string | The dial code for the selected country (e.g. `+44`) |

You can export the dataset as JSON/CSV from the Apify UI after the run completes.

***

### How to use Thumbtack Phone Number Scraper (via Apify Console)

1. **Open Apify Console**\
   Log in at https://console.apify.com and go to the **Actors** section.

2. **Find the actor**\
   Search for **Thumbtack Phone Number Scraper** and open the actor page.

3. **Add your input values**\
   In the **INPUT** panel, set:
   - `keywords` (required)
   - `country` (required)
   - `location` (optional)
   - `maxPhoneNumbers` (optional)

4. **Configure run options (if needed)**\
   Large scraping tasks may take time. You can adjust the timeout in **Run Options** (default: `3600s / 1hr`).

5. **Choose your run settings (proxy support)**\
   This actor includes built-in proxy support for reliable scraping, which can help when making large requests.

6. **Start the run & monitor logs**\
   Click **Run**. During execution, watch the actor logs for progress updates and when results are found.

7. **Open the dataset output**\
   When the run finishes, go to the **OUTPUT** tab and open the **Thumbtack Phone Numbers Dataset** (view: **Scraped Phone Numbers**).

8. **Export your results**\
   Export the dataset to JSON or CSV for your CRM, spreadsheet, or analysis pipeline.

No coding required—get your Thumbtack phone numbers in minutes. 🚀

***

### Advanced features & SEO optimization

- ⚡ **Engineered for Thumbtack outreach lead list building**: Works well as a “Thumbtack business email scraper” alternative when your goal is specifically phone outreach data (paired with your own email workflow elsewhere).
- 🧩 **Input normalization**: Accepts `keywords` as an array and uses your provided `country` selection to standardize/validate output formatting.
- 🛡️ **Resilient scraping behavior**: Includes retries and stop conditions designed to handle sparse results and interruptions for long runs.
- 📌 **Incremental dataset storage**: Results are pushed as they’re discovered, keeping your pipeline moving even for large batches.
- 🎯 **Quota control for predictable workflows**: Use `maxPhoneNumbers` to cap output volume when you need consistent batch sizes (perfect for “service provider phone number scraper” style operations).

***

### Best use cases

- 📈 **Sales teams building a local lead database**: Collect phone numbers for a targeted set of services by using focused `keywords` and country dialing rules.
- 🧪 **Researchers validating contact channels**: Compare how businesses present phone numbers across Thumbtack profiles and public bios.
- ✉️ **Marketing teams launching multi-channel outreach**: Quickly generate a “Thumbtack contact information scraper” phone list to pair with your existing email sourcing.
- 🏢 **B2B lead generation workflows**: Use as a “B2B lead scraper for Thumbtack” to enrich records when phone-first outreach matters.
- 🔄 **Data enrichment pipelines**: Feed structured phone results into spreadsheets and analytics tools using consistent dataset fields.
- 🛠️ **Ops & CRM automation**: Run scheduled extractions with `maxPhoneNumbers` limits to keep your CRM updates predictable.
- 🌎 **Regional targeting for service providers**: Extract phone numbers for a chosen dial region using the `country` parameter and optional `location` text.

***

### Technical specifications

- **Supported Input Formats**
  - ✅ `keywords`: array of strings (required)
  - ✅ `country`: one of the listed country options (required)
  - ✅ `location`: optional string
  - ✅ `maxPhoneNumbers`: integer from `1` to `10000` (optional)

- **Proxy Support**
  - ✅ Built-in proxy support for reliable scraping

- **Retry Mechanism**
  - ✅ Includes retries and fallbacks for resilience during scraping

- **Dataset Structure**
  - ✅ Dataset view name: **“Scraped Phone Numbers”**
  - ✅ Fields: `keyword`, `title`, `description`, `url`, `phone_number`, `country`, `dial_code`

- **Limitations**
  - ❌ No data is produced for contacts where no valid phone number can be found in the scraped content
  - ❌ Results may be fewer than expected if keywords are too narrow or country targeting doesn’t match where public numbers are posted

***

### FAQ

#### How many phone numbers can I extract with Thumbtack Phone Number Scraper?

✅ You control this with the `maxPhoneNumbers` input. If you don’t set it, the actor uses a default of `20`. For free users, a maximum of `100 phone numbers` may be enforced by the actor logic.

#### What phone number format do I get in the dataset?

✅ The dataset field `phone_number` is normalized into E.164 format.

#### Can I target a specific country and dial code?

✅ Yes. The `country` input determines the dialing region. The output includes both `country` and `dial_code`, and phone numbers are validated/standardized accordingly.

#### Do I need to provide location?

❌ Not required. You can leave `location` empty for a broader search, or set it (e.g. “London” or “California”) to improve targeting.

#### Does it deduplicate results?

✅ Yes. The actor tracks already seen phone numbers during the run, preventing duplicates in the dataset output.

#### Where do the results get stored?

✅ Each discovered item is pushed into the dataset view **“Scraped Phone Numbers”** as rows with fields like `url`, `phone_number`, and `dial_code`.

#### Can I resume if a run stops early?

✅ Yes. The actor uses progress persistence (including a cursor and `seen_numbers`) so it can resume from the saved state.

#### Is this suitable for bulk scraping?

✅ Yes. Use `keywords`, `country`, and `maxPhoneNumbers` to control batch size, and adjust **Run Options** timeout if needed for larger tasks.

***

### Support & feature requests

If you’re using **Thumbtack Phone Number Scraper** and want improvements, we’d love to hear from you. 💬

- 💡 **Feature Requests**: For example, CSV export enhancements, additional filters for `keywords`, or improvements to how results are stored in your dataset.
- 📧 **Contact**: Email us at <dataforleads@gmail.com>.

Your feedback helps shape the roadmap for making Thumbtack lead scraping workflows smoother and more reliable. 🤝

***

### Closing CTA / Final thoughts

*Thumbtack Phone Number Scraper* is a purpose-built, SEO-optimized **Thumbtack contact information scraper** designed to help you extract phone numbers quickly and reliably—turning public Thumbtack data into structured results you can use immediately.

If you’re ready to build a targeted outreach list at scale, run it with your best `keywords` and `country` settings today. 🚀

***

### Disclaimer

**This actor accesses publicly accessible sources only.** It does not access private profiles, authenticated data, or password-protected pages. It’s your responsibility to comply with applicable laws and regulations (including GDPR, CCPA, and spam regulations) and to respect each platform’s terms of service.

If you need data removal, contact us at <dataforleads@gmail.com>. Please use this tool responsibly, ethically, and for legitimate purposes only.

# Actor input Schema

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

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

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

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

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

Select the country to target for phone numbers.

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

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

## Actor input object example

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

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "marketing",
        "founder"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers-hub/thumbtack-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("scrapers-hub/thumbtack-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 scrapers-hub/thumbtack-phone-number-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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