Thumbtack Professionals Scraper avatar

Thumbtack Professionals Scraper

Pricing

Pay per event

Go to Apify Store
Thumbtack Professionals Scraper

Thumbtack Professionals Scraper

Find and export public Thumbtack professionals by service, city, state, or profile URL. Get ratings, reviews, hires, badges, prices, media, and links.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 hours ago

Last modified

Share

Thumbtack Professionals Scraper finds public local-service professionals by category and US location or extracts known profile URLs. It returns clean lead records with business names, ratings, reviews, hire signals, badges, pricing context, media, and canonical links. No Thumbtack login, private account, or API key is required.

Use it for repeatable contractor prospecting, local-market coverage research, reputation monitoring, and competitive intelligence. Choose a service, city, and state; start with five records; then export the dataset as JSON, CSV, Excel, XML, or RSS.

What does Thumbtack Professionals Scraper do?

The Actor opens public Thumbtack category and professional pages in a real browser. It resolves Thumbtack's JavaScript challenge and reads structured application data rather than relying only on fragile visual selectors.

It supports three workflows:

  • 🔍 Search by service category plus US city/state or ZIP code.
  • 📚 Browse a public service category using the run's US location context.
  • 👤 Extract profiles from canonical Thumbtack professional URLs.

Search results and profile details use one consistent professional-record schema. Direct profile extraction enriches the same row with description, years in business, employee count, media count, and credentials when visible.

Who is Thumbtack Professionals Scraper for?

Local-service marketing agencies

  • Build prospect lists by trade and metro area.
  • Prioritize providers with strong ratings but limited digital visibility.
  • Refresh campaign lists on a schedule instead of rebuilding spreadsheets manually.

Field-service SaaS sales teams

  • Find cleaning, plumbing, HVAC, landscaping, moving, and other service businesses.
  • Segment leads by reviews, hires, response time, Top Pro status, or background-check signals.
  • Send records to a CRM through Make, Zapier, webhooks, or the Apify API.

Franchise, insurance, and partnership teams

  • Compare provider coverage across cities.
  • Identify established operators using experience and hire signals.
  • Research public marketplace credentials before outreach or deeper verification.

Market researchers and analysts

  • Track category density, rating distributions, and visible price context.
  • Monitor selected profiles for review, badge, description, or media changes.
  • Create reproducible snapshots for local-market reports.

Why use this Thumbtack scraper?

  • No Thumbtack account required — it reads public pages only.
  • Location-aware search — use a city/state or an exact five-digit ZIP code.
  • Search and profile modes together — discover leads or enrich known URLs.
  • Structured-state extraction — more resilient than CSS-only scraping.
  • Fail-closed filters — missing source values never silently pass a requested threshold.
  • Typed flat records — ready for spreadsheets, BI tools, CRMs, and databases.
  • Duplicate control — each Thumbtack service ID is emitted once per run.
  • Apify-native automation — schedule runs, call an API, use webhooks, or connect through MCP.

What Thumbtack professional data can you extract?

Data groupFieldsExample
IdentityproId, name, businessName524848507703738374, Moreira’s cleaning
ServiceserviceCategory, serviceDescriptionhouse-cleaning
Locationcity, state, zipCodeSharon, CT, 06069
Reputationrating, reviewCount, reviewQualifier5, 20, Exceptional
Marketplace activityhireCount, responseTime, inHighDemand16, within an hour, false
Business profileyearsInBusiness, numEmployees4, 1 employee
Trust signalsisVerified, isBackgroundChecked, topProtrue, true, false
Commercial contextprice, highlightedReviewContact for price
Media and linksavatarUrl, mediaCount, profileUrlPublic image and profile URLs
ProvenancerecordType, siteName, scrapedAtprofessional, Thumbtack, ISO time

Fields appear only when Thumbtack makes them visible for that listing or profile. Optional fields are omitted instead of filled with invented values.

How much does it cost to scrape Thumbtack professionals?

This Actor uses pay-per-event pricing. A small one-time start event covers browser startup, and each saved professional uses one result event. Apify platform usage is included according to the active Store pricing record.

Apify plan tierStartPer professional
Free$0.005$0.00071106
Starter / Bronze$0.005$0.00061831
Scale / Silver$0.005$0.00048228
Business / Gold$0.005$0.00037099
Platinum$0.005$0.00024733
Diamond$0.005$0.00017313

At the Free-tier rate, 10 saved professionals cost about $0.0121 including the start event. One hundred saved professionals in one run cost about $0.0761 including the start event. The final charge is visible before and after each Apify run.

With $5 of monthly Free-plan credits, the per-result component alone covers about 7,000 records; browser availability and source volume determine actual throughput. Start with a five-record run to verify the category and location before increasing volume.

How to scrape Thumbtack professionals by city

  1. Open Thumbtack Professionals Scraper on Apify.
  2. Select Search by service and location.
  3. Enter a Thumbtack service slug such as house-cleaning, plumbers, or personal-trainers.
  4. Enter a US city and two-letter state code.
  5. Optionally enter an exact ZIP code for precise targeting.
  6. Set a small maximum such as 5 or 10.
  7. Add rating, review, Top Pro, or background-check filters if needed.
  8. Click Start.
  9. Preview the dataset, then export it or connect an integration.

A city/state search resolves a representative public ZIP code. Provide zipCode when a metro spans many ZIP codes or when reproducibility matters most.

Input parameters

ParameterTypeDefaultDescription
modestringsearchsearch, byCategory, or byProfile
categorystringhouse-cleaningThumbtack category slug for search/category modes
profileUrlsarraysample public profileCanonical Thumbtack /service/<id> URLs
citystringSan FranciscoUS city for search mode
statestringCATwo-letter US state code
zipCodestringnoneOptional exact five-digit location override
maxItemsinteger10Maximum unique professionals, from 1 to 100
minRatingnumbernoneMinimum visible rating from 0 to 5
minReviewsintegernoneMinimum visible review count
topProOnlybooleanfalseKeep only visible Top Pro records
backgroundCheckedOnlybooleanfalseKeep only visible background-checked records
proxyConfigurationobjectdirect connectionOptional Apify Proxy fallback

Mode-specific validation is strict. Direct profile mode requires at least one valid Thumbtack service URL. Search mode requires a valid city/state pair or an explicit ZIP code.

Search input example

Find house cleaners around San Francisco:

{
"mode": "search",
"category": "house-cleaning",
"city": "San Francisco",
"state": "CA",
"maxItems": 10
}

Use a ZIP code and reputation filters for New York plumbers:

{
"mode": "search",
"category": "plumbers",
"zipCode": "10001",
"minRating": 4.8,
"minReviews": 10,
"maxItems": 20
}

Direct Thumbtack profile input example

Use byProfile when you already know the professional URLs:

{
"mode": "byProfile",
"profileUrls": [
{
"url": "https://www.thumbtack.com/ct/sharon/house-cleaning/moreiras-cleaning/service/524848507703738374"
}
],
"maxItems": 1
}

Only public thumbtack.com paths containing /service/<numeric-id> are accepted. Query parameters are removed from canonical output links.

Output example

{
"proId": "524848507703738374",
"name": "Moreira’s cleaning",
"businessName": "Moreira’s cleaning",
"serviceCategory": "commercial-cleaning",
"serviceDescription": "Ready to make your home shine. We are cleaning experts.",
"city": "Sharon",
"state": "CT",
"zipCode": "06069",
"rating": 5,
"reviewCount": 20,
"reviewQualifier": "Exceptional",
"hireCount": 16,
"yearsInBusiness": 4,
"numEmployees": "1 employee",
"isVerified": true,
"isBackgroundChecked": true,
"topPro": false,
"price": "Contact for price",
"mediaCount": 49,
"profileUrl": "https://www.thumbtack.com/ct/sharon/house-cleaning/moreiras-cleaning/service/524848507703738374",
"recordType": "professional",
"siteName": "Thumbtack",
"scrapedAt": "2026-07-23T06:54:09.893Z"
}

Numbers are emitted as numbers and booleans as booleans. URLs are absolute and timestamps use ISO 8601 UTC.

How filters behave

Filters apply after extraction and before a row is saved or charged. They deliberately fail closed:

  • If minRating is set and a listing has no parseable rating, it is excluded.
  • If minReviews is set and a listing has no parseable count, it is excluded.
  • If topProOnly is true, only an explicit Top Pro signal passes.
  • If backgroundCheckedOnly is true, only an explicit background-check signal passes.

This behavior prevents unknown values from being mistaken for verified qualifications. Run without filters first when evaluating a new category.

Search coverage and pagination

A public Thumbtack category page normally exposes roughly 10–15 professionals in its initial structured payload. The Actor saves up to maxItems from that payload. For broader coverage, run multiple category/ZIP combinations and merge records by proId.

maxItems is a hard cap, not a promise that the source contains that many matching professionals. Strict filters can naturally produce fewer rows. Category browse mode reflects the browser's US location context unless you provide a ZIP code.

Tips for reliable results

  • 🎯 Use an exact ZIP code for repeatable metro targeting.
  • 🧪 Start with maxItems: 5 before scheduling larger workflows.
  • 🧹 Use the category slug shown in Thumbtack URLs, not a sentence or keyword list.
  • 🔗 Prefer canonical service profile URLs without tracking parameters.
  • 📊 Test filters separately before combining several strict conditions.
  • 🕐 Schedule moderate refreshes; public professional data rarely requires minute-by-minute polling.
  • 🧭 Search neighboring ZIP codes when a market spans several cities.
  • 🪪 Treat badges as marketplace signals, not as substitutes for independent credential checks.

Integrate Thumbtack data with Google Sheets

Use the Apify Google Sheets integration to append each run's professional records to a lead workbook. A practical workflow is:

  1. Run one task per service category and ZIP code.
  2. Append rows to a shared sheet.
  3. Deduplicate on proId.
  4. Assign outreach owners by city or category.
  5. Refresh weekly and compare reviewCount, rating, and topPro.

This creates a lightweight local-market CRM without custom infrastructure.

Integrate with Make, Zapier, Slack, and webhooks

Thumbtack → Make or Zapier

Trigger a scenario after a successful run, filter for high-rating providers, and create CRM contacts or enrichment jobs.

Thumbtack → Slack or Discord

Schedule direct-profile monitoring and post an alert when a provider's rating, review count, badge, description, or price context changes.

Thumbtack → database or data warehouse

Send the dataset webhook to an ingestion endpoint and upsert rows using proId as the stable source key.

Thumbtack → qualification workflow

Use isBackgroundChecked and topPro only as routing signals, then perform the independent checks required by your organization.

Use the Apify API with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/thumbtack-professionals-scraper').call({
mode: 'search',
category: 'house-cleaning',
city: 'Austin',
state: 'TX',
maxItems: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Keep the API token in an environment variable rather than source control. The returned run object contains links to logs, dataset storage, and usage information.

Use the Apify API with Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("automation-lab/thumbtack-professionals-scraper").call(run_input={
"mode": "search",
"category": "plumbers",
"zipCode": "10001",
"maxItems": 10,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

Use scheduled Actor tasks when the same search should run repeatedly. Store the proId and scrapedAt fields to compare snapshots over time.

Use the Apify API with cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~thumbtack-professionals-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"mode": "search",
"category": "personal-trainers",
"city": "Chicago",
"state": "IL",
"maxItems": 5
}'

For long-running automation, use the asynchronous /runs endpoint and poll the run status. For small workflows, the synchronous dataset endpoint returns records directly.

Use Thumbtack Professionals Scraper with AI agents via MCP

The Actor is available to AI assistants through Apify's hosted Model Context Protocol server.

For Claude Code:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/thumbtack-professionals-scraper"

For Claude Desktop, Cursor, or VS Code, add this configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/thumbtack-professionals-scraper"
}
}
}

Your client will ask you to authenticate with Apify.

Example prompts

Try these prompts:

  • “Use automation-lab/thumbtack-professionals-scraper to find house cleaners in Austin, Texas with at least 20 reviews.”
  • “Extract this public Thumbtack professional profile and summarize its reputation and business signals.”
  • “Create a weekly monitor for five Thumbtack profiles and alert me when review counts or badges change.”

This Actor extracts publicly available professional marketplace information. Scraping public data is generally legal in many jurisdictions, but the purpose, scale, storage, and use of data matter.

You are responsible for complying with Thumbtack's terms, applicable privacy and database laws, and outreach regulations. Do not use the Actor to collect private account information, circumvent access controls, harass professionals, or make automated eligibility decisions without appropriate review.

Minimize personal data, keep only what your workflow requires, honor deletion requests where applicable, and use reasonable refresh intervals. Marketplace badges and background-check labels should be verified independently before high-impact decisions.

Troubleshooting empty or short datasets

Why did I receive fewer rows than maxItems?

maxItems is a cap. The page may expose fewer professionals, filters may exclude records, or the chosen category/ZIP combination may have limited coverage. Run without filters, verify the category slug, and try a neighboring ZIP code.

Why did the run fail instead of returning an empty dataset?

A total extraction failure is treated as an error so broken source pages are not mistaken for valid zero-result markets. Inspect the run log, retry once, and enable a US Apify Proxy fallback if repeated logs show browser blocking.

Why is a profile URL rejected?

Direct URLs must use thumbtack.com and contain a canonical /service/<numeric-id> path. Search pages, sign-in links, shortened URLs, and other domains are rejected to preserve product scope.

Performance and resource use

The Actor runs Chromium with images, fonts, media, and common analytics requests blocked. A category or profile page usually completes within tens of seconds, including the JavaScript challenge. The default memory allocation is 1024 MB.

Pages are processed conservatively to reduce block risk and source load. Direct browsing is the default and avoids proxy bandwidth charges. If you enable a proxy fallback, residential or datacenter transfer may add platform usage according to your Apify plan.

Data quality and known limitations

  • Thumbtack controls which fields are visible for each professional and category.
  • Category pages provide listing-level data; direct profiles provide richer optional fields.
  • Public page structure and marketplace labels can change.
  • The initial category payload is finite and may not include every provider in a metro.
  • isVerified represents visible Thumbtack trust signals, not independent verification by Automation Lab.
  • City/state lookup chooses a representative ZIP; provide zipCode for exact targeting.
  • Highlighted review text may be a source-provided excerpt rather than the full review.
  • No private contact details, account data, or messages are accessed.

FAQ

How fast is the Thumbtack scraper?

A small category or profile run typically finishes in tens of seconds. The browser must resolve Thumbtack's public JavaScript challenge before structured data becomes available.

Does it require a Thumbtack login or API key?

No. The Actor accesses public professional and category pages without a Thumbtack account.

Can it search any US city?

Search mode accepts a city and two-letter state code and resolves a representative ZIP through a public place directory. For the most reliable location, enter a five-digit ZIP directly.

Can I scrape more than one category in a run?

One category is processed per search run. Create several Apify tasks or API calls, then merge datasets using proId.

How are records charged?

The start event is charged once per run, and the result event is charged only for each record saved after filtering and deduplication. Rejected or duplicate rows are not result events.

Is this an official Thumbtack API?

No. It is an independent public-web data extraction Actor and is not affiliated with or endorsed by Thumbtack.

Can I use results for cold outreach?

You must comply with applicable marketing, privacy, anti-spam, and platform rules. Use public business context responsibly and maintain suppression and opt-out processes.

Other lead generation and business directory scrapers

Combine this Actor with other Automation Lab tools:

Use source-specific IDs when joining datasets and preserve each source URL for traceability.