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

📞 Thumbtack Phone Number Scraper extracts verified phone numbers from Thumbtack listings fast. 🚀 Perfect for lead generation, B2B sales, and targeted outreach. Save time, boost accuracy, and grow your pipeline.

- **URL**: https://apify.com/scraperoka/thumbtack-phone-number-scraper.md
- **Developed by:** [Scraperoka](https://apify.com/scraperoka) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.99 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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 🎯 — Extract Phone Numbers at Scale from Public Thumbtack Profiles

Manually collecting phone numbers from lots of Thumbtack profiles and posts wastes hours you could spend on outreach. **Thumbtack Phone Number Scraper** automatically extracts phone numbers from publicly available Thumbtack bios, profiles, and post content using your keywords and country targeting. It’s ideal for marketers, recruiters, and growth teams doing thumbtack lead generation, thumbtack contact scraping, and contractor phone number research at speed—so you can build large lists quickly instead of one profile at a time.

***

### What You Get: Sample Output

Here's a sample record from a single run:

```json
{
  "platform": "Thumbtack",
  "keyword": "marketing",
  "title": "Marketing & Growth",
  "description": "We help teams grow through marketing strategy. WhatsApp: +1-415-555-0123",
  "url": "https://www.thumbtack.com/Some-Service",
  "phone_number": "+14155550123",
  "country": "United States",
  "dial_code": "+1"
}
```

| Field | Type | What It Tells You |
|---|---|---|
| `platform` | string | Confirms where the phone number was collected from (Thumbtack) |
| `keyword` | string | Which keyword was used to find this profile (great for campaign matching) |
| `title` | string | The profile/search result title captured alongside the contact info |
| `description` | string | The public text the scraper scanned for phone numbers (useful for validation) |
| `url` | string | The profile/page URL you can use as a reference for follow-up |
| `phone_number` | string | The extracted phone number (formatted in E.164) |
| `country` | string | The country setting used for targeting during extraction |
| `dial_code` | string | The dial code associated with your selected country |
| `error_message` | string | Not included in the dataset mapping; use dataset contents only (the dataset view shows the fields listed below) |
| `status` | string | Not included in the dataset mapping; the dataset view fields are: `keyword`, `title`, `description`, `url`, `phone_number`, `country`, `dial_code` |

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

***

### Why Thumbtack Phone Number Scraper?

There are a lot of ways to pull contact data from Thumbtack — here’s what sets Thumbtack Phone Number Scraper apart when you need a thumbtack phone number scraper that’s practical for real-world lead generation.

#### Keyword-first phone number mining

You provide `keywords` and select the `country`, and the actor focuses extraction on phone numbers found in publicly available Thumbtack profile bios and post content. This makes it easier to align your thumbtack outreach list with the services or industries you actually target.

#### Country targeting for cleaner results

Phone numbers are normalized and filtered based on the country you choose, helping you avoid mixing in unrelated regions. This is especially helpful when you’re building contractor phone numbers or region-specific lead lists.

#### Incremental dataset writing

As results are found, records are pushed to the dataset immediately, so you don’t have to wait until the very end to start exporting or validating. That means faster feedback loops for your thumbtack contact scraper workflows.

#### Deduplicated phone numbers in a single run

The actor tracks `seen_numbers` and prevents duplicates from being pushed again within the run’s progress scope. If you’re running thumbtack phone number data mining at scale, this helps keep your dataset cleaner for downstream importing.

***

### Configuring Your Run

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

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

| Parameter | Required | What It Does |
|---|---|---|
| `keywords` | ✅ | The keywords used to target relevant Thumbtack profiles/posts (supports multiple keywords for broader coverage) |
| `location` | ⬜ | Optional location filter (for example, “London” or “California”); leave empty for global search |
| `country` | ✅ | Select the country to target for phone numbers (drives formatting and filtering) |
| `maxPhoneNumbers` | ⬜ | Stop scraping after this many phone numbers are found (higher limits may take longer) |

***

### Core Capabilities

#### Thumbtack phone numbers from bios, profiles, and posts

Thumbtack Phone Number Scraper extracts phone numbers from publicly available Thumbtack bios, profiles, and post content. It’s built for thumbtack listing scraper use cases where contact info is embedded in visible text.

#### Flexible keyword targeting

Use one or many items in `keywords` to steer the crawl toward the niches you care about—making it useful as a thumbtack lead scraper for different service categories and audience segments.

#### Resilience for longer scraping runs

The actor includes operational resilience features such as progress saving and iterative processing across multiple pages/keywords. For longer runs, you can adjust your execution timeout in Apify Run Options (default: 3600s / 1hr).

#### Structured, integration-ready dataset output

Each dataset row includes: `keyword`, `title`, `description`, `url`, `phone_number`, `country`, and `dial_code`. This makes the thumbtack email and phone scraper workflow easier when you’re importing results into spreadsheets or CRMs for outreach.

#### Built-in control over volume

Use `maxPhoneNumbers` to cap results and keep runs aligned with your budget and validation process. This is useful when you’re testing thumbtack contractor phone numbers quality before scaling up.

***

### Who Gets the Most Out of This

Here's how different teams put Thumbtack Phone Number Scraper to work:

**Sales development reps (SDRs)** — Turn keyword-focused searches into a ready-to-import list of phone numbers linked to the exact Thumbtack URLs, so you can move from prospecting to outreach faster.

**Marketers running local lead generation** — Use `keywords` plus a country selection to generate region-targeted phone lists for campaigns, then validate and segment using the `description` text and `title` captured in each record.

**Recruiters sourcing contractors** — Quickly build a shortlist of Thumbtack contractor phone numbers for specific roles or services, while keeping the data organized by keyword and country.

**Freelance researchers & analysts** — Collect phone number datasets for exploratory analysis or reporting, using structured fields like `phone_number`, `country`, and `dial_code` plus the source `url` for auditability.

**Automation specialists (developers & integrators)** — Automate thumbtack data extraction tool runs via the Apify platform, then export or push the dataset into downstream pipelines using the actor’s consistent dataset fields.

***

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

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

1. **Open the actor on Apify** — go to [console.apify.com](https://console.apify.com) and open **Thumbtack Phone Number Scraper**.
2. **Enter your inputs** — set `keywords` (required), choose `country` (required), optionally add `location`, and optionally set `maxPhoneNumbers`.
3. **Configure proxy settings** — use Apify’s proxy support for better scraping reliability on larger jobs.
4. **Hit Run and watch the live log** — monitor progress as phone numbers are found and pushed to the dataset.
5. **View results in the dataset tab** — inspect `keyword`, `title`, `description`, `url`, `phone_number`, `country`, and `dial_code`.
6. **Export as JSON, CSV, or Excel** — download the dataset in the format that fits your workflow.

The whole process takes under 5 minutes to set up.

***

### Integrations & Export Options

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

You can export your dataset from the Apify dashboard as **JSON**, **CSV**, or **Excel**. From there, you can import into spreadsheets, outreach tools, or CRMs with minimal cleanup.

For automation and programmatic use, you can connect runs to your stack via **Apify API** and webhook-style automations supported by the Apify ecosystem. For deeper integration details, see the Apify API documentation: [apify.com/docs/api](https://docs.apify.com/api).

***

### Pricing & Free Trial

Thumbtack Phone Number Scraper runs on the Apify platform, which offers a **free tier** — no credit card required to get started. You’ll typically use platform credits for test runs, then scale by upgrading to meet your volume needs.

For exact pricing and current plan details, please check Apify’s pricing pages. Start for free at [apify.com](https://apify.com) and scale when you're ready.

***

### Reliability & Performance

| What We Handle | How |
|---|---|
| Public-page variability | Extracts phone numbers from publicly visible Thumbtack text like bios, profiles, and post content |
| Large scraping tasks | Designed to run across multiple pages/keywords with a stoppable `maxPhoneNumbers` cap |
| Resumable runs | Progress saving helps you continue without losing prior captures |
| Data cleanliness | Deduplication prevents pushing the same phone number multiple times within the run scope |

**Limitations:** The actor works with publicly available Thumbtack content; it can’t access private or login-gated profiles. If a niche has limited public phone data, you may see fewer results—try broader `keywords` or different country settings.

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

***

### Frequently Asked Questions

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

Yes—Apify offers a free tier to get started with smaller scraping jobs. Larger runs may require a paid Apify plan depending on your usage.

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

No. This actor extracts from publicly available Thumbtack pages, so no Thumbtack login is required.

#### How accurate is the data?

The actor extracts phone numbers from the publicly visible text it scans on Thumbtack profiles and posts. Accuracy depends on what the account owner has published.

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

You can control this using the `maxPhoneNumbers` input. This caps how many unique phone numbers the actor will collect in a single run.

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

Freshness depends on when you run the actor. Each run captures the public content available at that time and outputs the extracted phone numbers in your dataset.

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

Use of the actor depends on how you handle and store the resulting data. The actor works with **publicly available data**, but you are responsible for complying with GDPR, CCPA, platform terms, and any applicable local regulations.

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

Yes. You can download the dataset from the Apify dashboard and import it into tools like Excel, and you can also use integrations such as Zapier/Make depending on your setup.

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

Yes. Apify supports scheduled runs so you can automate thumbtack phone number scraping on a recurring basis.

#### Can I access this via API?

Yes. You can trigger and retrieve results programmatically using Apify’s API. See: [apify.com/docs/api](https://docs.apify.com/api).

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

The actor pushes records to the dataset incrementally, so you typically keep the data captured before interruptions. It also saves progress to help you resume in subsequent runs.

***

### Need Help or Have a Request?

Got a question about Thumbtack Phone Number Scraper or want a new feature added? Reach out at <dataforleads@gmail.com>. We welcome requests like adding webhook notifications on completion and improving bulk CSV-style exporting workflows.

***

### Disclaimer & Responsible Use

*Thumbtack Phone Number Scraper is the fastest, most reliable way to build phone-number outreach lists from Thumbtack — start your free run today.*

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

# Actor input Schema

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

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

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

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

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

Select the country to target for phone numbers.

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

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

## Actor input object example

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

# API

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

## JavaScript example

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

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

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

// Run the Actor and wait for it to finish
const run = await client.actor("scraperoka/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("scraperoka/thumbtack-phone-number-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "marketing",
    "founder"
  ]
}' |
apify call scraperoka/thumbtack-phone-number-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scraperoka/thumbtack-phone-number-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/9uj2CpxU6J1ESaA9t/builds/Qm5IlOyeGb0WEb2gJ/openapi.json
