Houzz Pros [$2💰] Contractor & Designer Leads, Reviews, Emails
Pricing
Pay per event
Houzz Pros [$2💰] Contractor & Designer Leads, Reviews, Emails
Houzz professionals scraper — find contractors, architects, designers and remodelers by trade and city. One row per pro: phone, website, address, rating, review count, services, areas served, license and cost estimate. Opt-in nested reviews and emails. Pure HTTP, no browser.
Pricing
Pay per event
Rating
5.0
(1)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
1
Bookmarked
36
Total users
12
Monthly active users
2 days ago
Last modified
Categories
Share
Houzz Professionals Scraper
Turn the Houzz professionals directory into a clean lead list.
Search by trade and city — general contractor in New York, NY, architect in Austin, TX — and get one flat row per professional with phone, website, full address, review score, services provided, areas served, license number and cost estimate. Optional add-ons nest real customer reviews on the same row and hunt for a contact email on the pro's own website.
No URLs to collect, no login, no browser. JSON, CSV, Excel or straight into your API.
Why Use This Scraper?
- The whole profile arrives in one call. Phone, website, address, license and service list come back with the search hit itself — there is no slow per-profile detail step to pay for or wait on.
- Reviews cost nothing extra. Flip
includeReviewson and each professional's reviews are nested on that pro's row. Competing Houzz actors bill reviews as separate rows; here they ride under the singleprofessionalcharge you already paid. - Trade × city grid. Every keyword is searched in every city you list, deduped by Houzz id, so
["general contractor","roofer"] × ["Austin, TX","Dallas, TX"]is one run, not four. - Talks to Houzz's own mobile API. The actor speaks the signed iOS endpoint, so a website redesign cannot break the parser and no WAF stands in the way. Cheap datacenter proxies are enough — you do not need residential IPs.
- Deep pagination. Major metros carry tens of thousands of pros per trade. Page as far as you want, or cap it with
maxItems/maxItemsPerQuery. - Pay per professional. $2 per 1,000 rows, and duplicates are never billed twice.
Overview
The output is one row per professional, not one row per project, photo or review. Everything about a pro — identity, contact block, address, trade detail, ratings, media and (optionally) their reviews — lives in that single row.
That matters when you export to CSV: you get a lead list you can hand to a sales team as-is, with phone and website populated on the great majority of rows. Reviews, when enabled, sit in a nested reviews array on the same row rather than exploding your file into one line per review.
The scraper searches Houzz's US professionals index. It has no login, so it sees exactly what a logged-out Houzz app user sees.
Supported Inputs
| Input | What it does | Example |
|---|---|---|
searchQueries | Profession or keyword, searched and paginated | "general contractor", "architect", "interior designer", "kitchen remodeler", "landscape architect" |
locations | Optional city/area; each query runs in each location | "New York, NY", "Los Angeles, CA", "Austin, TX" |
| (no locations) | Leave the list empty for a nationwide US search | [] |
Not supported: pasting an individual Houzz profile URL, Houzz ideabooks, photos, products, or the Houzz Shop catalogue. This actor is a professionals-directory search tool.
Use Cases
| Who | What they do with it |
|---|---|
| Home-services sales teams | Build call lists of contractors, roofers and remodelers by metro, with phone and website on every row |
| Building-material & tool suppliers | Target pros by trade and service list (servicesProvided) rather than by generic SIC code |
| Franchise & marketplace recruiters | Find high-rated, licensed pros in expansion cities using reviewRating, numReviews and licenseNumber |
| Market researchers | Measure trade density, rating distribution and cost-estimate ranges across cities |
| Competitive analysts | Pull a rival's Houzz profile, review history and pro replies to track reputation over time |
| Lead-gen agencies | Layer enrichEmails on top to attach a contact email scraped from each pro's own website |
How It Works
- Input — you give professions and (optionally) cities. The actor builds one task per keyword × location pair.
- Engine — each task calls Houzz's signed iOS mobile API with an HMAC digest, 40 professionals per page, taking a fresh proxy exit IP for every page. Throttled pages rotate and retry automatically.
- Depth (optional) — with
includeReviewson, each pro's reviews are fetched from the profile reviews endpoint and nested on the row. WithenrichEmailson, the pro's own website is crawled for a contact email. - Output — rows stream into your dataset, deduped by Houzz id across every keyword and city in the run.
Input Configuration
| Field | Type | Default | Notes |
|---|---|---|---|
searchQueries | array of strings | ["general contractor"] | Professions/keywords. Each is searched and paginated. |
locations | array of strings | ["New York, NY"] | Optional. Each query runs once per location. Empty ⇒ nationwide US. |
maxItems | integer | 1000 | Hard cap on professional rows for the whole run. Free-tier accounts are additionally capped at 100. |
maxItemsPerQuery | integer | 1000 | Cap per keyword × location pair. |
dedupe | boolean | true | Drop professionals already emitted under another query/location. |
includeReviews | boolean | false | Nest each pro's reviews on their row. No extra charge. |
maxReviewsPerPro | integer | 20 | Newest-first cap per pro; only used when includeReviews is on. Max 500. |
enrichEmails | boolean | false | Best-effort contact email from the pro's own website. Billed per email found. |
maxConcurrency | integer | 4 | Parallel keyword × location tasks (1–10). |
maxRequestRetries | integer | 8 | Per-page retry budget; each retry rotates the exit IP. |
proxy | object | Apify Proxy (datacenter) | The Houzz API has no WAF, so datacenter IPs are enough. Override to use your own. |
Example input
{"searchQueries": ["general contractor", "architect"],"locations": ["New York, NY", "Los Angeles, CA"],"maxItems": 1000,"maxItemsPerQuery": 500,"dedupe": true}
Example input with reviews
{"searchQueries": ["general contractor"],"locations": ["New York, NY"],"maxItems": 50,"includeReviews": true,"maxReviewsPerPro": 20}
Output Overview
Every row is a professional. The shape never changes between runs — the two optional features only add fields:
| Mode | Fields on the row |
|---|---|
| Default | 34 flat fields: identity, contact, address, trade detail, ratings, media, provenance |
includeReviews: true | adds reviews[], reviewsFetched, reviewsTotalAvailable |
enrichEmails: true | adds contactEmail, contactWebsite, emailEnrichment |
Because the extras nest, a CSV export stays one line per professional in every mode.
Output Samples
Professional (default run)
{"id": "1967866","userName": "creativedesignconstruction","profileUrl": "https://www.houzz.com/pro/creativedesignconstruction","displayName": "Creative Design Construction, Inc.","contactName": "Glen Lumia","isProfessional": true,"isBrand": false,"isPaidPro": true,"userType": "3","phone": "+1 201-885-5308","fax": "+1 201-784-5772","website": "https://www.CreativeDesignConstruction.com","email": "","location": "Northvale, New Jersey, 07647, United States","city": "Northvale","state": "New Jersey","zip": "07647","country": "United States","category": "Design & Build","aboutMe": "WELCOME TO CREATIVE DESIGN CONSTRUCTION & REMODELING…","servicesProvided": "3D Rendering, Basement Remodeling, Bathroom Remodeling, Home Additions, Kitchen Remodeling, Custom Cabinets","areasServed": "Glen Rock, Hillsdale, Mahwah, Nanuet, New City, Old Tappan, Paramus, Ridgewood, Teaneck, Tenafly","awards": "Creative Design Construction & Remodeling is proud to be Nationally and Regionally recognized…","licenseNumber": "NJ: 13VH01178400","numReviews": 133,"reviewRating": 4.9,"photoCount": 731,"costEstimateFrom": null,"costEstimateTo": null,"costCurrency": "","profileImage": "https://st.hzcdn.com/simgs/a643b57d0fd9df32_2-5536/_.jpg","hasRealProfileImage": true,"searchQuery": "general contractor","searchLocation": "New York, NY"}
The same row with includeReviews: true
Three extra fields appear; everything above is unchanged.
{// …all professional fields as above…"reviewsFetched": 6,"reviewsTotalAvailable": 133,"reviews": [{"reviewId": "2240097","rating": 5,"relationship": "CLIENT","projectDate": "2026-08-01","projectPrice": null,"projectPriceLabel": "Choose one","body": "Hello, my name is Joseph Salamone. Work was done in my condo… we are pleased with the work that was done and would recommend your company.","reviewerName": "HU-824331203","reviewerUserName": "webuser_824331203","reviewerProfileImage": "","reviewerIsProfessional": false,"photos": [],"numberOfLikes": 0,"createdAt": "2026-08-03T14:57:51.000Z","modifiedAt": "2026-08-03T14:57:51.000Z","status": "ACTIVE","proResponse": "","proResponseAt": ""}]}
Key Output Fields
Identity
| Field | Description |
|---|---|
id | Houzz professional id — the dedupe key |
userName | Houzz handle |
profileUrl | Public profile permalink |
displayName | Business name |
contactName | Primary contact person |
isProfessional, isBrand, isPaidPro, userType | Account flags |
Contact
| Field | Description |
|---|---|
phone, fax | Formatted numbers |
website | Business website, normalised to https:// |
email | Only when Houzz exposes one (rare) — see enrichEmails |
contactEmail, contactWebsite, emailEnrichment | Present when enrichEmails is on |
Address
| Field | Description |
|---|---|
location | Full address string as Houzz stores it |
city, state, zip, country | Parsed components |
Trade detail
| Field | Description |
|---|---|
category | Primary Houzz category, e.g. Design & Build |
aboutMe | Business description |
servicesProvided | Comma-separated service list |
areasServed | Comma-separated service area list |
awards | Awards and recognitions |
licenseNumber | State licence number(s) where published |
costEstimateFrom, costEstimateTo, costCurrency | Published typical-project cost range |
Ratings & media
| Field | Description |
|---|---|
numReviews | Review count from the search index |
reviewRating | Average rating out of 5 (e.g. 4.9) |
photoCount | Project photos on the profile |
profileImage, hasRealProfileImage | Avatar URL and whether it is a real photo |
Reviews (when includeReviews is on)
| Field | Description |
|---|---|
reviewsFetched | How many reviews were attached to this row |
reviewsTotalAvailable | How many the pro has in total |
reviews[].rating | 1–5 stars |
reviews[].body | Full review text |
reviews[].reviewerName, reviews[].reviewerUserName | Reviewer identity as Houzz publishes it |
reviews[].relationship | e.g. CLIENT |
reviews[].projectDate, reviews[].projectPrice, reviews[].projectPriceLabel | Project metadata |
reviews[].photos[] | Full-size review photo URLs |
reviews[].proResponse, reviews[].proResponseAt | The pro's public reply, when they left one |
reviews[].createdAt, reviews[].modifiedAt, reviews[].status | Timestamps and moderation status |
Provenance
| Field | Description |
|---|---|
searchQuery, searchLocation | Which keyword and city produced this row |
Pricing
Pay-per-event. You are billed for what the run produces, not for how long it takes.
| Event | When it fires | Price |
|---|---|---|
| Professional | Once per unique professional row pushed | $0.002 ($2 per 1,000) |
| Actor start | Once per run, per GB of memory | $0.0005 |
| Additional data | Only when enrichEmails finds a contact email | $0.001 |
Reviews are not a billable event. With includeReviews on, a pro with 200 reviews costs exactly the same as a pro with none — the reviews nest inside the row you already paid $0.002 for.
Duplicates are dropped before charging, so a keyword × city grid never bills the same pro twice.
FAQ
Do I need to log in, supply cookies, or run a browser? No. The actor is pure HTTP against Houzz's own mobile API and works fully anonymously.
Can I paste a Houzz profile URL instead of searching? Not currently. Input is profession + location searches. A specific business is usually easiest to reach by searching its name as the keyword in its own city.
Which countries does it cover?
Houzz's US professionals index. locations takes US cities/areas such as Austin, TX; leaving the list empty runs a nationwide US search.
Why is email usually empty?
Houzz rarely publishes email addresses on professional profiles. Turn on enrichEmails and the actor visits each pro's own website (already captured on the row) to find a contact address, filling contactEmail plus a detailed emailEnrichment object. It is best-effort and billed only when an email is actually found.
How do I get reviews, and what do they cost?
Set includeReviews: true and optionally maxReviewsPerPro (default 20, max 500). Reviews are fetched newest-first and nested on the professional's row — reviewer, rating, date, full text, project relationship, photos and the pro's reply. There is no extra charge for them.
Why does reviewsTotalAvailable differ from numReviews?
numReviews comes from the search index, which is cached; reviewsTotalAvailable is the live count reported by the reviews endpoint at fetch time. A small difference is normal.
Why are some reviewer names like HU-824331203?
That is exactly how Houzz publishes them — reviewers who never set a display name show as their internal handle. The actor reports what the site shows rather than inventing a name.
Why are costEstimateFrom / costEstimateTo often null?
Publishing a typical-project cost range is optional for pros, and most skip it. The fields stay present and null so your schema is stable.
Do I need residential proxies? No. The mobile API has no WAF, so the default Apify datacenter proxy is both sufficient and cheap. Each page takes a fresh exit IP, and throttled pages retry automatically.
How many professionals can I get for one keyword?
Large metros carry tens of thousands per trade. The practical limit is your own maxItems / maxItemsPerQuery budget rather than the actor.
Why did my free run stop at 100 rows?
Free-tier Apify accounts are capped at 100 rows per run. Paid accounts run to your configured maxItems.
The run finished with 0 rows — what happened?
If pages were being blocked, the run fails loudly with the retry and rate-limit counts rather than reporting a silent empty result. Re-run, or lower maxConcurrency.
Support
Found a bug, need a field that is not exposed, or want a different Houzz surface covered? Open an issue on the actor's Issues tab — issues are read and answered.
Additional Services
Need this data on a schedule, merged with another source, pushed into a CRM, or delivered as a private actor tuned to your exact schema? Custom scraping and data-pipeline work is available — start a conversation through the Issues tab and it will be routed.
Explore More Scrapers
| Actor | What it does |
|---|---|
| Checkatrade Scraper | UK tradesperson directory — the Houzz equivalent for Britain |
| Clutch.co Scraper | B2B agencies, reviews and emails |
| Justdial Business Scraper | Indian business directory leads with phone and email |
| Google Maps Reviews Scraper | Reviews for any local business on Maps |
| Trustpilot Scraper | Full Trustpilot review history, incremental |
🤖 For AI Agents & LLM Apps
Compact reference for AI agents calling this actor via the Apify MCP server or the Apify API (actor: memo23/houzz-professionals-scraper).
Purpose: search the Houzz US professionals directory by trade and city and return one flat lead row per contractor, architect, designer or remodeler, with reviews optionally nested on the same row at no extra cost.
Minimal input:
{ "searchQueries": ["general contractor"], "locations": ["Austin, TX"], "maxItems": 25 }
Output: one dataset row per professional — id, userName, profileUrl, displayName, contactName, isProfessional, isBrand, isPaidPro, userType, phone, fax, website, email, location, city, state, zip, country, category, aboutMe, servicesProvided, areasServed, awards, licenseNumber, numReviews, reviewRating, photoCount, costEstimateFrom, costEstimateTo, costCurrency, profileImage, hasRealProfileImage, searchQuery, searchLocation. With includeReviews: reviewsFetched, reviewsTotalAvailable, reviews[{reviewId, rating, relationship, projectDate, projectPrice, projectPriceLabel, body, reviewerName, reviewerUserName, reviewerProfileImage, reviewerIsProfessional, photos[], numberOfLikes, createdAt, modifiedAt, status, proResponse, proResponseAt}]. With enrichEmails: contactEmail, contactWebsite, emailEnrichment.
Behaviors an agent should know:
- Always set
maxItems— an uncapped keyword in a large metro can return tens of thousands of professionals. - Tasks are the cartesian product of
searchQueries×locations; an emptylocationsmeans one nationwide US search per keyword. dedupe(default true) drops repeat professionals across the grid, so row count can be lower thanmaxItemsby design.- Billing:
professional$0.002 per unique row,apify-actor-start$0.0005 per run/GB,additional-data$0.001 only whenenrichEmailsfinds an email. Reviews are never billed separately. includeReviewsadds one or more extra HTTP requests per professional, so runs take longer; keepmaxReviewsPerPromodest for wide sweeps.- Limitations: US index only, no profile-URL input,
emailis usually empty withoutenrichEmails, and cost-estimate fields are frequently null. - Free Apify accounts are capped at 100 rows per run.
⚠️ Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Houzz Inc. or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.
The scraper accesses only publicly available professional-directory data — no authenticated endpoints, paid features, or content behind the houzz.com login wall. Users are responsible for ensuring their use complies with houzz.com's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organization. Scraped data is returned directly to your Apify dataset; it is not stored or resold by this Actor.
SEO Keywords
houzz scraper, houzz professionals scraper, houzz contractor scraper, houzz pro directory scraper, houzz reviews scraper, houzz api alternative, houzz data extraction, houzz bulk export, contractor leads scraper, home services lead generation, general contractor database, architect directory scraper, interior designer leads, remodeler contact list, home improvement market research, trade directory scraper, b2b lead generation, sales prospecting data, local business data extraction, contractor email finder, houzz json export, houzz csv export, apify scraper, no-code scraper