# Thumbtack Scraper - Home Service Pros, Reviews & Leads (`scrapesage/thumbtack-scraper`) Actor

Scrape Thumbtack home-service pros by category and city. Get business names, ratings, reviews, hire counts, years in business, services, business hours, credentials, websites & socials — plus lead scoring, reviews and monitoring. No login, no browser.

- **URL**: https://apify.com/scrapesage/thumbtack-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** Lead generation, Agents, Integrations
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.77 / 1,000 pro scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#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 Scraper — Home Service Pros, Reviews & Leads

Extract **complete Thumbtack pro data** for any service in any US city — business names, **star ratings, review counts, number of hires, average response time, Top Pro & background-check status, years in business, employee count, services offered, weekly business hours, payment methods, credentials, project photos, the pro's published price, full reviews with the pro's replies**, and their **social profiles** (Facebook / Instagram / X) when published. Every pro is scored 0–100 as a ready-to-work **lead**.

No login, no cookies, no browser — fast JSON/SSR extraction with 99%+ reliability.

### Why this Thumbtack scraper?

Most Thumbtack scrapers do one thing — just the listing, just a profile, or just reviews — and return `null` for the fields that matter. This actor ships the **richest dataset in the category in a single run**: the ranked pro list **and** the full profile **and** reviews **and** the pro's price **and** their social profiles **and** a lead score, with built-in monitoring.

It also gets you **more pros per city**. Thumbtack's city page ranks only ~10 pros and does not paginate — but the same page names more pros in the surrounding metro. Turn on `includeNearbyPros` and you get those too, **typically +13 to +21 extra pros per city/category at no extra request**.

| Data | Typical scrapers | This actor |
|---|---|---|
| Business name, rating, # reviews | ✅ | ✅ |
| Number of hires on Thumbtack | partial | ✅ |
| Average response time | ❌ | ✅ |
| Top Pro badge + Top Pro years | ❌ | ✅ |
| Background-check status | ❌ | ✅ |
| Years in business + employee count | ❌ | ✅ |
| Services offered / specialties (categorised) | ❌ | ✅ |
| Weekly business hours + payment methods | ❌ | ✅ |
| Credentials (license / business verification) | ❌ | ✅ |
| Full review list + rating histogram | partial | ✅ |
| Review **service tag + the pro's own reply** | ❌ | ✅ |
| **Published price** (`$130/hour`, `$49/service call`, free estimate) | ❌ | ✅ ~85% of pros |
| City / state / **ZIP** + service area | partial | ✅ |
| Pro's **social profiles**, resolved to real URLs | ❌ | ✅ ~45% of pros |
| **Nearby metro pros** beyond the ranked top 10 | ❌ | ✅ +13–21 per page |
| Lead score (0–100) per pro | ❌ | ✅ |
| Monitoring — only NEW pros | ❌ | ✅ |

> **On contact details — read this before you buy.** Thumbtack routes all messaging in-app. It does **not**
> publish a pro's email or phone, and as of **August 2026 it no longer publishes a pro's own website** either
> (we measured 0 of 20 pros across 10 categories; the website link endpoint 404s). What you get instead is the
> pro's **social profiles** — present on about **45%** of pros and resolved to their real
> `instagram.com/…` / `facebook.com/…` URLs — plus the full qualified business record and a direct profile
> link. The `withWebsiteOnly` filter is kept for the rare pro who still lists a site, but expect it to match
> almost nothing. (A website-crawling email-enrichment option used to live here; it was **removed in August
> 2026** rather than left as a paid switch that could never do any work.) We would rather tell you that here
> than have you find out after a run.

### Use cases

- **Lead generation** — home-service pros (cleaners, handymen, plumbers, electricians, HVAC, landscapers, roofers, movers, painters, contractors, photographers, trainers) are active buyers of CRMs, scheduling/booking software, insurance, marketing, supplies and franchise/financing offers. Score them by hires, ratings and recency, then reach them via their social profiles or their Thumbtack page.
- **Market & competitor intelligence** — see who the **top-rated, most-hired pros** are in every city for any category, track their pricing signals, response times and review velocity.
- **Local SEO & agency prospecting** — every pro here is running their business through Thumbtack rather than their own site (Thumbtack no longer publishes pro websites at all), and `withSocialsOnly: false` surfaces the ~55% with no social presence either — a clean list for pitching web design, SEO and Google Business Profile services.
- **Aggregation & directories** — build niche home-service directories with structured, deduplicated pro data for any metro.
- **Recruiting & franchising** — identify established, background-checked operators by years in business and employee count.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up) — the free plan is enough to try this actor.
2. Open the **Thumbtack Scraper**, enter service categories and locations (or paste Thumbtack URLs), and click **Start**.
3. Watch pros stream into the dataset table.
4. **Export** as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).

### Input

```json
{
    "categories": ["House Cleaning", "Plumbing"],
    "locations": ["Austin, TX", "Miami, FL"],
    "maxPros": 200,
    "includeProfileDetails": true,
    "includeReviews": true,
    "monitorMode": false
}
```

- **categories** — friendly names (`House Cleaning`, `Plumbing`, `Electrician`, `HVAC`, `Landscaping`, `Roofing`, `Handyman`, `Movers`, `Pest Control`, `General Contractor`, `Interior Painting`, `Photography`, `Personal Training`, `Catering`, `Interior Design`, `Tree Services`, `Pressure Washing`, `Carpet Cleaning`, `Window Cleaning`, `Appliance Repair`, `Junk Removal`, `Gutter Cleaning`, `Home Inspection`, …) or a raw Thumbtack slug (`house-cleaning`, `hvac-contractors`). Combined with every location.
- **locations** — cities as `City, ST` (`Austin, TX`, `Seattle, WA`). Thumbtack lists pros by city, so a state is required.
- **startUrls** — direct pro profiles (`/tx/austin/house-cleaning/<slug>/service/<id>`) or category listings (`/tx/austin/house-cleaning/`). Processed in addition to categories × locations.
- **maxPros** — global cap on pro records (default 200).
- **minRating / minReviews / minHires / topProOnly / backgroundCheckedOnly / withSocialsOnly / withWebsiteOnly** — filters.
- **includeProfileDetails** *(default true)* — open each profile for the deep fields (intro/bio, years in business, employees, hours, payment methods, full services, credentials, ZIP, full reviews, published price and social profiles).
- **includeReviews** *(default false)* — also output review records (`type: "review"`).
- **includeNearbyPros** *(default false)* — also collect the extra metro pros named on the same city page (+13–21 per category/city, no extra request). Tagged `source: "nearby"`.
- **resolveSocialLinks** *(default true)* — follow Thumbtack's social redirect links once each to return the pro's real `instagram.com` / `facebook.com` URL.
- **monitorMode** *(default false)* — emit only pros not seen in previous runs; pair with Schedules to track newly-listed pros.

### Output

One record per pro (`type: "pro"`), plus optional review records (`type: "review"`):

```json
{
    "type": "pro",
    "proId": "544927104834420740",
    "profileUrl": "https://www.thumbtack.com/tx/austin/house-cleaning/personal-castles-cleaning-services/service/544927104834420740",
    "businessName": "Personal Castles Cleaning Services",
    "categoryName": "The 10 Best House Cleaning Services in Austin, TX 2026",
    "rating": 4.9,
    "reviewCount": 113,
    "reviewQualifier": "Excellent",
    "topPro": true,
    "topProYears": ["2025"],
    "numHires": 89,
    "responseTimeHours": 2.1,
    "backgroundChecked": true,
    "yearsInBusiness": 33,
    "yearFounded": 1993,
    "employees": 29,
    "priceRange": null,
    "description": "Reliable, detail-oriented residential & commercial cleaning…",
    "introduction": "Personal Castles Cleaning Service is a reliable and detail-oriented cleaning company…",
    "services": ["House Cleaning"],
    "specialties": ["Cleaning type: Standard cleaning", "Cleaning type: Deep cleaning", "Extra services: Interior window cleaning"],
    "businessHours": { "Mon": "12:00 am - 11:59 pm", "Sat": "Closed" },
    "paymentMethods": "This pro accepts payments via Credit card.",
    "credentials": [{ "type": "Background Check", "detail": "Austin Mccracken" }, { "type": "Business Verifications", "detail": null }],
    "ratingHistogram": [{ "stars": 5, "percent": "95%", "fraction": 0.95 }],
    "reviewsHighlight": "Customers rated this pro highly for work quality, professionalism and responsiveness.",
    "city": "Austin",
    "state": "TX",
    "zipCode": "78704",
    "serviceArea": "Austin, TX",
    "priceText": "$130/hour",
    "priceAmountUsd": 130,
    "priceUnit": "hour",
    "priceNote": "2 hour minimum",
    "freeEstimate": false,
    "socialMedia": { "facebook": "https://www.facebook.com/theprofile", "instagram": "https://www.instagram.com/theprofile" },
    "socialPlatforms": ["Facebook", "Instagram"],
    "socialLinksResolved": true,
    "website": null,
    "imageUrl": "https://production-next-images-cdn.thumbtack.com/i/544933911918706690/desktop/standard/400square-legacy",
    "mediaImages": ["https://production-next-images-cdn.thumbtack.com/i/546985913145810953/…"],
    "leadScore": 78,
    "searchCategory": "House Cleaning",
    "searchLocation": "Austin, TX",
    "scrapedAt": "2026-06-16T12:00:00.000Z"
}
```

### Automate & schedule

Run this actor on autopilot and pull results into your own stack:

- **[Apify API](https://docs.apify.com/api/v2)** — start runs, fetch datasets, and manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[apify-client for Python](https://docs.apify.com/api/client/python/)** — official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** — run it daily/weekly with `monitorMode` to capture only newly-listed pros in a city or category; perfect for lead pipelines.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** — trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/thumbtack-scraper').call({
    categories: ['House Cleaning', 'Handyman'],
    locations: ['Austin, TX'],
    maxPros: 100,
    includeReviews: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} pros & reviews`);
```

### Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)** — multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** — push new pro leads straight into your CRM.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** — get notified when a monitored search finds new pros.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** — auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** — pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)** — trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. You can call this actor from Claude, ChatGPT, or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** — ask your assistant to "find the top-rated plumbers in Dallas and list their contact details" and let it run this scraper for you.

### Agent-ready: autonomous payments (x402 & Skyfire)

This actor is **agent-ready** — AI agents can discover it, run it, and **pay for it autonomously**, with no Apify account and no human in the loop. It uses [pay-per-event](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:

- **[x402](https://docs.apify.com/platform/integrations/x402)** — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) — no account, no API key.
- **[Skyfire](https://docs.apify.com/platform/integrations/skyfire)** — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

### More scrapers from scrapesage

Build a complete **local-business & home-services lead-gen stack**:

- **[Bark Listing Scraper](https://apify.com/scrapesage/bark-listing-scraper)** — service-provider listings & profile URLs from Bark.
- **[Bark Scraper](https://apify.com/scrapesage/bark-scraper)** — full Bark service-provider profiles.
- **[Houzz Scraper](https://apify.com/scrapesage/houzz-scraper)** — home-improvement pros, contacts & reviews.
- **[Booksy Scraper](https://apify.com/scrapesage/booksy-scraper)** — salon, barber & beauty provider leads.
- **[Fresha Scraper](https://apify.com/scrapesage/fresha-scraper)** — salon, spa & wellness business leads.
- **[FastExpert Scraper](https://apify.com/scrapesage/fastexpert-agent-scraper)** — real estate agent leads & reviews.
- **[Healthgrades Scraper](https://apify.com/scrapesage/healthgrades-scraper)** — doctors, reviews & provider leads.
- **[DesignRush Scraper](https://apify.com/scrapesage/designrush-scraper)** — marketing & design agency leads.
- **[Google Ads Transparency Scraper](https://apify.com/scrapesage/google-ads-transparency-scraper)** — who's advertising what on Google.

### Tips

- **More pros per run**: Thumbtack's public listing shows the **top ~10 pros per category + city** and does not deep-paginate (`?page=N` returns the same set). To collect more, add more **categories** and more **cities** — `["House Cleaning","Handyman","Plumbing"] × ["Austin, TX","Dallas, TX","Houston, TX"]` yields up to ~90 pros.
- **Top producers only**: combine `minHires`, `minReviews`, `topProOnly` and `backgroundCheckedOnly` to keep only the strongest, most contactable leads.
- **Cost control**: turn off `includeProfileDetails` for fast, cheap bulk records — the listing already carries name, rating, # reviews, # hires, response time, Top Pro badge, services and a highlighted review. Email enrichment only runs when a pro actually has a website.
- **Recurring monitoring**: combine [Schedules](https://docs.apify.com/platform/schedules) with `monitorMode` to track only newly-listed pros over time.
- **Proxies**: keep the default **Residential (US)** proxy — Thumbtack's bot wall challenges datacenter IPs but serves clean pages to residential ones. The actor fails loudly (rather than returning 0 rows) if a non-residential proxy gets blocked.

### FAQ

**How do I scrape Thumbtack pros for a specific city?** Put the city in `locations` as `City, ST` (e.g. `Austin, TX`) and add one or more `categories` (e.g. `House Cleaning`, `Plumbing`). Each category is scraped in each city.

**Can I get a pro's phone number or email?** No — and no scraper can. Thumbtack routes messaging in-app and publishes neither a pro's phone/email nor (since 2026) their website. This actor captures everything that *is* public: the full qualified business record, the published price, the direct profile link, and the pro's social profiles (~45% of pros) resolved to real URLs — which is the contact wedge on Thumbtack today.

**Why ~10 pros per city?** Thumbtack's public category page is a curated "10 best" list and doesn't deep-paginate. Breadth comes from running more categories and more cities — see Tips.

**Can I export to Google Sheets, CSV, or Excel?** Yes — one click in the dataset view, or automatically on every run via the [Google Drive integration](https://docs.apify.com/platform/integrations/drive).

**How do I monitor new pros automatically?** Turn on `monitorMode` and create a [Schedule](https://docs.apify.com/platform/schedules); each run emits only pros not seen before. Add a [webhook](https://docs.apify.com/platform/integrations/webhooks) or [Zapier zap](https://docs.apify.com/platform/integrations/zapier) to push them into your CRM.

**Is scraping Thumbtack legal?** This actor collects publicly available data only. You are responsible for using the data in compliance with applicable laws (GDPR/CCPA for personal data) and Thumbtack's terms.

**A field is null — why?** Some pros genuinely don't publish a price, employee count or certain credentials, and roughly 55% publish no social profile at all. Two fields are null by *source policy* rather than by chance: **`website`** (Thumbtack stopped publishing pro websites — measured 0 of 20 pros across 10 categories in August 2026) — the website-crawl enrichment that used to depend on it was removed rather than shipped broken. Everything else is null only when the data isn't on the page.

### Need help?

Open an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests are welcome — this actor is actively maintained.

# Actor input Schema

## `categories` (type: `array`):

Thumbtack service categories to scrape, combined with every location below. Use friendly names (`House Cleaning`, `Plumbing`, `Electrician`, `HVAC`, `Landscaping`, `Roofing`, `Handyman`, `Movers`, `Pest Control`, `General Contractor`, `Interior Painting`, `Photography`, `Personal Training`, `Catering`, `Interior Design`, `Tree Services`, `Pressure Washing`, `Carpet Cleaning`, `Window Cleaning`, `Appliance Repair`, `Junk Removal`, `Gutter Cleaning`, `Home Inspection`) or a raw Thumbtack slug from the URL (e.g. `house-cleaning`, `hvac-contractors`).

## `locations` (type: `array`):

Cities to search, as `City, ST` (e.g. `Austin, TX`, `Miami, FL`, `Seattle, WA`). Thumbtack lists pros by city, so a state is required. Each category is scraped in each city.

## `startUrls` (type: `array`):

Paste Thumbtack URLs: a pro profile (`/tx/austin/house-cleaning/<slug>/service/<id>`) or a category listing (`/tx/austin/house-cleaning/`). Processed in addition to the categories × locations above.

## `maxPros` (type: `integer`):

Global cap on the number of pro records emitted this run. Thumbtack's public listing shows the top ~10 pros per category + city (it does not deep-paginate), so to collect more pros add more categories and/or cities.

## `minRating` (type: `number`):

Keep only pros with an overall star rating at or above this value (0 = no filter). Rated 1-5.

## `minReviews` (type: `integer`):

Keep only pros with at least this many reviews (0 = no filter).

## `minHires` (type: `integer`):

Keep only pros hired at least this many times on Thumbtack (0 = no filter). Great for targeting established, in-demand pros.

## `topProOnly` (type: `boolean`):

Keep only pros with Thumbtack's 'Top Pro' badge (highest-rated, most-hired professionals).

## `backgroundCheckedOnly` (type: `boolean`):

Keep only pros that passed Thumbtack's background check. Requires opening profiles (background-check status only appears on the profile).

## `withSocialsOnly` (type: `boolean`):

Keep only pros who published a Facebook / Instagram / X profile — the contact wedge on Thumbtack today (about 45% of pros). Requires opening profiles.

## `withWebsiteOnly` (type: `boolean`):

Keep only pros that list their own website. NOTE: Thumbtack no longer publishes pro websites on the profile — measured 0 of 20 pros across 10 categories — so this filter will usually return 0 rows. Use 'Only pros with social links' instead. Kept for the rare pro who still lists one.

## `includeProfileDetails` (type: `boolean`):

Visit each pro's profile to add the deep fields: introduction/bio, years in business, employee count, background-check status, weekly business hours, payment methods, the full services-offered list, credentials, project photos, ZIP code, the full review list, the pro's published price (about 85% of pros) and their social links (about 45%). One extra request per pro. Turn OFF for fast, low-cost bulk records — the listing already includes name, rating, # reviews, # hires, response time, Top Pro badge, services and a highlighted review.

## `includeNearbyPros` (type: `boolean`):

Thumbtack's city page ranks only ~10 pros, but the review strip on that SAME page names more pros in the surrounding metro. Turning this on collects them too — typically +13 to +21 extra pros per city/category — with NO extra listing request. They are tagged `source: "nearby"` so you can tell them apart from the city's ranked top 10. Requires 'Open each profile for full details' (a nearby pro is only a name + link until the profile is opened).

## `resolveSocialLinks` (type: `boolean`):

Thumbtack publishes a pro's socials as redirect links on its own domain. With this on, each one is followed once to return the pro's REAL profile URL (e.g. `https://www.instagram.com/theprofile/`) instead of a Thumbtack redirect. Costs one tiny request per link (~200 bytes) and only runs for pros who actually published socials.

## `includeReviews` (type: `boolean`):

Also output review records (type `review`) for each pro — star rating, review text, author, date and service. Requires opening profiles.

## `maxReviewsPerPro` (type: `integer`):

How many reviews to emit per pro when 'Include pro reviews' is on.

## `deduplicatePros` (type: `boolean`):

Emit each pro only once per run (keyed by Thumbtack pro id / profile URL), even if they appear under multiple categories or cities.

## `monitorMode` (type: `boolean`):

Remember pros already returned and emit ONLY pros not seen in previous runs. Pairs with Apify Schedules to track newly-listed pros in a city or category over time. Independent of the scheduler — it dedupes records, the schedule decides when to run.

## `monitorStoreName` (type: `string`):

Named key-value store that holds the 'already seen' pro ids for monitoring mode. Use a different name per tracked search to keep their histories separate.

## `maxConcurrency` (type: `integer`):

Maximum parallel requests. Lower it if you hit rate limits on very large runs.

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

Proxy settings. Thumbtack's bot wall challenges datacenter IPs but serves clean pages to RESIDENTIAL IPs, so this actor defaults to the Apify Residential proxy (US). Keep this default for reliable results.

## `urlsFromFile` (type: `string`):

Paste a list of URLs (one per line), OR one link to a .txt/.csv file, Google Sheet or Google Drive file containing them. Lets you import many Start URLs at once instead of typing each. Google Sheet/Drive share links are handled automatically.

## Actor input object example

```json
{
  "categories": [
    "House Cleaning"
  ],
  "locations": [
    "Austin, TX"
  ],
  "maxPros": 200,
  "minRating": 0,
  "minReviews": 0,
  "minHires": 0,
  "topProOnly": false,
  "backgroundCheckedOnly": false,
  "withSocialsOnly": false,
  "withWebsiteOnly": false,
  "includeProfileDetails": true,
  "includeNearbyPros": false,
  "resolveSocialLinks": true,
  "includeReviews": false,
  "maxReviewsPerPro": 20,
  "deduplicatePros": true,
  "monitorMode": false,
  "monitorStoreName": "thumbtack-monitor",
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped records in the default dataset. Pro rows carry the business profile, ratings, hire count, years in business, services, business hours, credentials, website, socials and lead data; review rows carry their own fields.

# 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 = {
    "categories": [
        "House Cleaning"
    ],
    "locations": [
        "Austin, TX"
    ],
    "urlsFromFile": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/thumbtack-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 = {
    "categories": ["House Cleaning"],
    "locations": ["Austin, TX"],
    "urlsFromFile": "",
}

# Run the Actor and wait for it to finish
run = client.actor("scrapesage/thumbtack-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 '{
  "categories": [
    "House Cleaning"
  ],
  "locations": [
    "Austin, TX"
  ],
  "urlsFromFile": ""
}' |
apify call scrapesage/thumbtack-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapesage/thumbtack-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/EUSxs8NIgz7wOqzFO/builds/FRuglLyBwUGuTR4Ju/openapi.json
