ActorStack.dev
Lead generationBusinessDeveloper toolsv0.1.10updated 18 September 2026

Thumbtack Scraper — Pro Listings, Reviews & Ratings

The professionals behind the See more button, too.

Public data on US service professionals listed on Thumbtack: rating, review count, jobs booked through Thumbtack, response time and Thumbtack's own signals. With profiles enabled, the full review text, the star histogram, credentials, specialties and the professional's own ZIP code.

oswaldocarabano/thumbtack-pros-scraper

input.json
{
  "maxResults": 200,
  "cities": ["tx/austin", "ca/san-diego"],
  "categories": ["plumbers", "hvac"],
  "scrapeProfiles": true,
  "maxReviewsPerPro": 20,
  "minRating": 4
}
Version
v0.1.10
Memory
4096 MB
Browser
none
Proxy
Residential, built in

Short answer

The Thumbtack Scraper exports public data on US service professionals from thumbtack.com: rating, review count, jobs booked through Thumbtack, average response time, Top Pro status and, with profiles enabled, the full review text, the 1-to-5 star histogram, credentials and the professional's own ZIP code. Across 192 city-and-category pairs it returned 1,603 unique professionals, 73.1% of whom appear only behind the page's "See more" control. Thumbtack publishes no phone numbers or email addresses, so the output carries none. Pricing is $0.0025 per professional and $0.008 per professional with the full profile, with no start fee.

Key points

  • Thumbtack's category pages show seven to nine professionals; across 192 city-and-category pairs, 1,172 of 1,603 unique professionals (73.1%) appeared only behind "See more".
  • Thumbtack's `?page=2` returns the same professionals as page 1 with HTTP 200, so a scraper advertising deep pagination on Thumbtack is charging for repeats.
  • Rating and review count were filled on 96.4% of 1,603 professionals, and jobs booked and response time on 100%.
  • Thumbtack does not publish professionals' phone numbers or email addresses, so no Thumbtack scraper can return them from the public pages.
  • The professional's own ZIP code was on 90.9% of 110 profile pages, against the search ZIP that a listing row carries.
  • `is_licensed_signal` means Thumbtack displayed a licence badge; its absence does not mean a professional is unlicensed.
  • One city and category returned about 14 professionals on average across 15 example tasks, so volume comes from sweeping many categories rather than one deep query.
On this page11 sections

What it does

Public data on US service professionals listed on Thumbtack: rating, review count, jobs booked through Thumbtack, response time and Thumbtack's own signals. With profiles enabled, the full review text, the star histogram, credentials, specialties and the professional's own ZIP code.

output — one row
{
  "service_pk": "548554120258822149",
  "url": "https://www.thumbtack.com/tx/austin/plumbers/example-plumbing/service/548554120258822149",
  "business_name": "Example Plumbing",
  "category": "plumbers",
  "city": "austin",
  "state": "tx",
  "rating": 4.9,
  "num_reviews": 87,
  "num_hires": 142,
  "avg_response_time_hours": 0.5,
  "is_top_pro": true,
  "is_licensed_signal": false,
  "urgency_signals": ["RESPONSIVE"],
  "postal_code": "78745",
  "locality": "Austin",
  "region": "TX",
  "years_in_business": 12,
  "num_employees": 4,
  "is_background_checked": true,
  "review_histogram": [
    { "stars": 5, "percent": "94%" },
    { "stars": 4, "percent": "5%" }
  ],
  "redactions": 0,
  "from_cache": false,
  "fetched_at": "2026-09-18T22:14:28.498Z",
  "data_age_hours": 0
}

Why this one

The list behind See more

Thumbtack's visible page lists seven to nine professionals per city and category. The Thumbtack Scraper also reads the list the "See more" control loads, which is where 1,172 of 1,603 measured professionals were found and nowhere else. A scraper that reads only the rendered page delivers roughly a quarter of what Thumbtack holds for the same query.

Breadth from the sitemaps

Paging does not work on Thumbtack: `?page=2` repeats page 1. Coverage comes from Thumbtack's own sitemaps instead — 905,197 URLs, of which 406,500 are professional profiles, across 3,264 categories and 3,656 cities. `profilesFromSitemap` goes straight to the profile URLs, one request per professional with no overlap between cities.

Nothing billed before a row exists

No start event exists, error rows are not charged, and duplicates are removed before the meter runs. A run that finds nothing costs exactly zero, and 1,000 professionals cost $2.50, or $8.00 with full profiles and reviews.

Two empty columns admitted

`badges` and `is_sponsored` came back empty on all 1,603 rows measured. The columns exist because the fields exist upstream, and the README says plainly that they are not promised rather than listing them as features.

Use cases

  • Prospect for anyone selling to contractors — software, insurance, financing, marketing — ranked by hires, rating and response time.
  • Analyse a trade in a metro: how many plumbers or roofers compete, how they rate and how much work they win through Thumbtack.
  • Mine reviews for one professional or a whole category, with rating, date, job type and the professional's reply.
  • Monitor the reputation of home-service brands and franchise locations over time.
  • Build a local directory from a category-by-city sweep, using the professional's own ZIP rather than the search ZIP.

Input

Every field has a default, and the defaults are deliberately small so a first run is cheap enough to inspect before you commit to a sweep. This table mirrors the Actor's own input schema field for field.

FieldDefaultWhat it does
maxResultsinteger100Maximum professionalsCharged per professional delivered, never for an error row, and duplicates are removed before charging. Hard cap 50,000 per run.
categoriesstring[][]Service categoriesThumbtack category slugs such as `plumbers`, `house-cleaning` or `roofing`. Thumbtack publishes 3,264. Leave empty to sweep what the sitemap offers.
citiesstring[][]Cities`state/city` slugs such as `tx/austin`. Thumbtack publishes 3,656 cities.
statesstring[][]StatesTwo-letter codes such as `tx`, to narrow sitemap discovery without naming every city.
discoverFromSitemapbooleantrueDiscover pages from Thumbtack's sitemapHow the Actor gets coverage: 489,781 city-by-category landing pages and 406,500 professional pages in Thumbtack's sitemaps. `?page=2` returns page 1 again.
profilesFromSitemapbooleanfalseGo straight to professional pagesReads professionals from the 406,500 profile URLs: one request per professional, no overlap between cities, every profile field filled. Slower per row.
scrapeProfilesbooleanfalseAlso open each professional's profile pagepersonal dataAdds introduction, real ZIP, credentials, specialties, hours, star histogram, photo count and Q&A. One extra request per professional, billed as the profile event.
maxReviewsPerProinteger5Reviews per professionalThe profile page carries five; above that the Actor pages through the rest five at a time. Only applies when profiles are fetched.
minRatingintegernoneMinimum rating1 to 5. Professionals without a rating are excluded when set.
minReviewsintegernoneMinimum number of reviewsProfessionals without a review count are excluded when set.
topProOnlybooleanfalseOnly Top Pro professionalsThumbtack's Top Pro badge, shown on 19.8% of 1,603 measured professionals.
licensedOnlybooleanfalseOnly professionals showing a licence signalAbsence of the signal means Thumbtack did not show it, not that the professional is unlicensed.
maxConcurrencyinteger4Maximum concurrencyLeave at 4. Listing pages weigh about 490 KB each, so more concurrency mostly buys memory pressure.
useCachebooleantrueServe unchanged professionals from a shared cacheCached rows always declare their age with `from_cache`, `fetched_at` and `data_age_hours`.
maxCacheAgeDaysinteger7Maximum age of cached data, in days0 forces a fresh fetch of everything. Empty means the default of 7 days.
proxyConfigurationobjectnoneProxyThe Actor brings its own residential proxy. Set this only to route through your own.

Output and fill rates

A field being in the schema is not the same as it having a value. The percentages below were counted on real runs; the sample sizes are in Measurements. Anything not listed here is not promised.

FieldFilledMeaning
business_namestring100%With `url` and `service_pk`, Thumbtack's id for the professional's service.
num_hiresinteger100%Jobs booked through Thumbtack.
avg_response_time_hoursnumber100%How fast the professional replies.
business_factsstring[]100%The short facts Thumbtack shows on the listing card.
service_area_textstring97.3%The service area as displayed.
ratingnumber96.4%With `num_reviews`.
highlighted_reviewstring84.9%The review excerpt Thumbtack features on the card.
descriptionstring55.1%The listing description.
urgency_signalsstring[]35.2%Thumbtack's codes such as `LICENSED`, `RESPONSIVE` and `LOW_PRICE`, 18 in all.
price_minnumber27.8%What Thumbtack publishes, when it publishes it. `price_unit` was 19.7%.
is_top_probooleannot measuredTrue on 19.8% of 1,603 professionals.
is_licensed_signalbooleannot measuredTrue on 4.6%. A displayed signal, not a verification.
postal_codestring90.9%The professional's own ZIP, not the search ZIP. With `locality`, `region` and `schema_type`. Profile pages only, n=110.
introductionstring88.2%The professional's own pitch, in full. With `years_in_business` and `num_employees` at the same rate. Profile pages only.
review_histogramobject[]88.2%The 1-to-5 star breakdown. Profile pages only.
reviewsobject[]88.2%Full text, author, date, labels and the professional's reply. Profile pages only.
credentialsobject[]87.3%With `is_background_checked`. Profile pages only.
business_hoursobject[]37.3%Profile pages only. The professional's own Q&A in `faq` was 42.7%.
badgesstring[]0%Empty on all 1,603 measured rows, as was `is_sponsored`. Kept because the field exists upstream; not promised.
from_cacheboolean100%With `fetched_at` and `data_age_hours`.

Every key is always present. A field that exists but is empty comes back as explicit null, so a parser never has to guess.

Datasets

Different record types go to different datasets, so the main table never carries columns that are blank on most rows.

  • defaultOne row per professional, deduplicated before charging, with the profile and reviews inline when profiles are fetched.billed
  • Error rowsA professional whose page failed, with the reason. Never a silent empty row.never billed

Pricing

Pay per delivered result. Charges are applied as each row is produced rather than in a lump at the end, so an aborted run bills only for what it actually gave you.

EventPriceNotes
pro-listedProfessional$0.0025One service professional with rating, review count, hires, response time and Thumbtack signals. Deduplicated before charging; error rows are never charged.
pro-profileProfessional with full profile$0.008The same row plus the profile page: full review text, the star histogram, credentials, specialties, years in business and the professional's real ZIP code.

Measurements

Each figure is shown with the method that produced it. A benchmark without a method is a marketing claim wearing a number's clothes.

Listing fill-rate sample

1,603 unique professionals

192 city-and-category pairs drawn from 192 categories and 160 cities. Every listing-field rate on this page comes from that sample.

Profile fill-rate sample

110 profile pages, 0 errors

Every profile-field rate on this page comes from that sample.

Only behind See more

1,172 of 1,603 professionals (73.1%)

243 found on the visible page only, 883 on both, 1,172 only in the list "See more" loads, across the same 192 pairs.

Per city and category

about 14 professionals

Average across the 15 public example tasks, each sweeping a whole metro. Austin alone returned 10; Austin plus five neighbouring cities returned 12.

Sitemap inventory

905,197 URLs, 406,500 professional profiles

Counted from Thumbtack's own sitemaps, across 3,264 categories and 3,656 cities.

Speed

2.8 s per city-and-category pair, 1.9 s per profile

Mean latencies over the same contract measurement: 192 city-and-category pairs (landing page plus the list behind See more) and 110 profile pages. A repeat run of the same query was served 100% from cache with zero network requests.

What it will not do

Stated plainly so you can judge fit before spending anything.

  • No phone numbers or email addresses: Thumbtack does not publish them, and contact happens inside its platform.
  • About 14 professionals per city and category on average across 15 example tasks. Adding suburbs barely helps: Austin alone returned 10 and Austin plus five neighbours returned 12.
  • `is_licensed_signal` (4.6%) and `is_background_checked` are Thumbtack's displayed signals, not verifications, and should not be resold as proof of licensing.
  • `badges` and `is_sponsored` were empty on all 1,603 measured rows.
  • The "See more" list and review pagination come from Thumbtack's GraphQL endpoint, and Thumbtack's robots.txt disallows `/graphql` on both www.thumbtack.com and app.thumbtack.com. The listing and profile pages themselves are not disallowed.
  • Thumbtack's terms of service prohibit accessing the platform with automated tools without its prior written consent. Read them before relying on the output.
  • Freshness over 24 hours and 7 days has not been measured; the 7-day cache window is a default rather than a result. Every row declares `data_age_hours`.
  • A single run is capped at 50,000 professionals, and the default memory is 4,096 MB.

Privacy

  • No phone numbers or email addresses are collected; Thumbtack does not publish them.
  • Reviews are written by third parties. A phone number or email inside a review is removed, and the row records how many times in `redactions`.
  • The output describes professionals acting in a business capacity on a marketplace where they advertise for customers.
  • Removal requests: privacy@actorstack.dev

See also the data removal process.

Frequently asked questions

Is there a Thumbtack API?
Thumbtack runs a Partner Platform with access granted on request, built for integrations that help customers find pros and help pros manage leads. There is no open data API for exporting professionals; the Thumbtack Scraper reads the public pages instead.
Can I get Thumbtack phone numbers or emails?
No, and no scraper of the public pages can: Thumbtack does not publish them, because contact happens inside its platform. The Thumbtack Scraper returns reputation and demand signals instead — ratings, review text, hires, response time and credentials.
Why does one city and category return so few professionals?
Thumbtack lists about 14 professionals per city and category, averaged over 15 example tasks, and serves nearly the same regional professionals for every city in a metro. Volume comes from sweeping many categories, or from `profilesFromSitemap`, which reads the 406,500 profile URLs directly.
Does Thumbtack's ?page=2 give more results?
No. Thumbtack's `?page=2` returns the same professionals as page 1, with HTTP 200, indefinitely. The extra coverage comes from the list behind "See more", which held 73.1% of 1,603 measured professionals, and from the sitemaps.
Does the licence signal mean a Thumbtack pro is licensed?
Not necessarily. `is_licensed_signal` records that Thumbtack displayed a licence badge, which it did on 4.6% of 1,603 professionals. Its absence does not mean a professional is unlicensed, and neither it nor `is_background_checked` is a verification.
What does a Thumbtack Scraper run cost?
Each professional costs $0.0025, or $0.008 with the full profile and reviews, so 1,000 professionals cost $2.50 or $8.00. Starting a run, error rows and duplicates are not billed, so a run that finds nothing costs zero.

Guides for this Actor