Houzz Pro Scraper – Contractor & Designer Leads with Emails
Pricing
Pay per usage
Houzz Pro Scraper – Contractor & Designer Leads with Emails
Turn Houzz into a ready-to-use B2B lead list. Pick a category, type a city, and export contractors, architects, interior designers and remodelers with phone, address, rating, reviews, Best-of-Houzz badges and services — plus the verified email addresses no other Houzz scraper provides.
Pricing
Pay per usage
Rating
5.0
(1)
Developer
Malik Mazhar Ali
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
a day ago
Last modified
Categories
Share
Houzz Pro Scraper — Contractor, Designer & Architect Leads (with Emails) 🏠
Turn the Houzz professional directory into a clean, structured B2B lead list: general contractors, architects, interior designers, kitchen & bath remodelers, home builders, landscape architects and more — with names, phones, addresses, ratings, reviews, “Best of Houzz” badges, services, social links, and email addresses.
What makes this scraper different: Houzz hides email addresses behind its internal messenger, so other Houzz scrapers can’t give you emails. This Actor visits each pro’s own website and extracts verified contact emails — the single most valuable field for outreach. No other Houzz scraper on the market does this.
Highlights
- 📧 Verified emails — the only Houzz scraper that has them. We crawl each pro’s own website (Houzz hides emails behind its messenger).
- 🏙️ Search by plain city — just type “Austin, TX”. No cryptic Houzz URLs.
- 🧰 10 categories — general contractors, architects, interior designers, kitchen & bath, home builders, remodelers, landscape architects, closet designers and more.
- ⭐ Rich profiles — rating, review count, Best-of-Houzz badges, services, hire count, address, GPS, social links, description.
- 🔌 Pipeline-ready — stable null-safe schema, ISO dates, one-call API, n8n/Make webhook, CSV/JSON/Excel export.
- 💸 Fair pricing — $3/1k for directory data (same as others), pay the email premium only when an email is actually found.
Table of contents
- Quick start
- Two modes
- Input reference
- Output: what you get
- Full output example
- Field reference
- Run it with the API
- Use it with n8n / Make
- Pricing
- Tips, limits & FAQ
Quick start
- Open the Actor and leave What do you want to scrape? on “Search a city”.
- Pick a Category (e.g. General Contractors).
- Type a City — e.g.
Austin, TX. - Set How many results (e.g.
50) and click Start.
You’ll get a table of pros with name, phone, address, coordinates, website, and social links. Want full detail (reviews, badges, hire count, emails)? Copy the url values from your search and run Full profiles mode on them.
Two modes
Search a city (mode: search) | Full profiles (mode: pro) | |
|---|---|---|
| Input | Category + City | List of pro profile URLs (proUrls) |
| Proxy | None needed | Residential, US (default — datacenter IPs are blocked) |
| Speed | Very fast | Fast |
| Returns | Identity, phone, address, coords, website, socials | Everything: rating, review count, reviews, badges, services, hire count, description, emails, socials |
| Best for | Building a lead list for a city | Enriching/qualifying specific pros |
* In search mode some fields (rating, reviews, badges) are only on the full profile; run Full profiles mode on the URLs you collect to fill them in.
Recommended workflow: Search a city → take the url column → run Full profiles on those URLs with Find email addresses on. You now have a complete, email-enriched lead list.
Input reference
| Field | Key | Applies to | Description |
|---|---|---|---|
| What do you want to scrape? | mode | both | search (default) or pro. |
| Category | proCategory | search | Dropdown — General Contractors, Architects, Interior Designers, Kitchen & Bath Remodelers, Kitchen Remodelers, Home Remodelers, Home Builders, Design-Build Firms, Landscape Architects, Closet Designers. |
| City | location | search | Plain text: Austin, TX, Los Angeles, CA, Brooklyn, NY. Leave blank for nationwide (US). |
| How many results | maxResults | both | 1–1000. Default 50. |
| Profile URLs | proUrls | pro | Houzz profile URLs (contain pfvwus), e.g. https://www.houzz.com/professionals/general-contractors/chapter-pfvwus-pf~666806768. |
| Include reviews | includeReviews | pro | Default true. |
| Only reviews after | reviewsSince | pro | ISO date, e.g. 2026-01-01, for incremental runs. |
| Find email addresses | enrichEmail | both | Default true. Crawls each pro’s website for emails. |
| Webhook URL | webhookUrl | both | POST results to n8n/Make/any endpoint when the run finishes. |
| Advanced: direct URLs | searchUrls | search | Paste any Houzz listing URL to scrape as-is (overrides Category + City). |
| Proxy | proxyConfiguration | both | Residential US by default (required for pro). |
Example input — Search a city
{"mode": "search","proCategory": "general-contractor","location": "Austin, TX","maxResults": 50,"enrichEmail": true}
Example input — Full profiles
{"mode": "pro","proUrls": ["https://www.houzz.com/professionals/general-contractors/chapter-pfvwus-pf~666806768","https://www.houzz.com/professionals/design-build-firms/knockout-renovation-pfvwus-pf~1636076815"],"includeReviews": true,"enrichEmail": true,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "countryCode": "US" }}
Output: what you get
One JSON object per professional. Every field is always present — when Houzz doesn’t provide a value you get null (or []), so your n8n/Zapier/spreadsheet mappings never break. Dates are emitted in ISO‑8601 UTC.
A trimmed example record:
{"name": "Chapter","phone": "(212) 680-4628","email": "itstime@hellochapter.com","website": "https://www.hellochapter.com","address": "345 7th Ave 9th floor, New York, NY, 10001, United States","coordinates": { "lat": 40.7484, "lng": -73.9967 },"rating": 4.8,"reviewsCount": 26,"badges": ["Best of Houzz 2023", "Best of Houzz 2022", "Recommended on Houzz"],"services": ["Bathroom Remodeling", "General Contracting", "Home Additions"],"hireCount": 61,"socialLinks": { "facebook": "https://www.facebook.com/hellochapter", "instagram": "https://www.instagram.com/chapter.renovations/" },"url": "https://www.houzz.com/professionals/general-contractors/chapter-pfvwus-pf~666806768"}
A complete record (all fields) is in docs/example-output-pro.json; a search-mode record is in docs/example-output-search.json.
Full output example
See docs/example-output-pro.json for a real, complete pro-mode record including the full addressComponents, areaServed, reviews, badges, coverImage and description.
Field reference
| Field | Type | Notes |
|---|---|---|
proId | string | Houzz professional ID (the pf~ number). |
slug | string | URL slug. |
name / businessName | string | Business name. |
url | string | Canonical Houzz profile URL. |
sourceUrl | string | The page actually scraped. |
category / categories | string / array | Category (pro mode may be null; search sets it). |
phone | string | Primary phone. |
email | string | Best email (prefers role addresses: info@, contact@…). null if none found. |
emails | array | All verified emails found on the pro’s website. |
website | string | The pro’s own website. |
socialLinks | object | facebook, instagram, twitter, linkedin, youtube, pinterest, tiktok (each null if absent). |
address | string | Formatted single-line address. |
addressComponents | object | streetLine1, city, state, postalCode, country, countryCode. |
coordinates | object | { lat, lng }. |
areaServed | array | Cities/areas the pro serves. |
rating | number | Average rating (e.g. 4.8). |
reviewsCount | number | Total reviews on Houzz. |
ratingDistribution | object | {1..5} star counts (often null — lazy-loaded by Houzz). |
badges | array | Awards, e.g. Best of Houzz 2024, Recommended on Houzz. |
yearsInBusiness | number | null when not published. |
hireCount | number | Completed projects on Houzz. |
verifiedLicense | boolean | null when not published. |
services | array | Service/specialty list. |
projects | array | Portfolio items (when available). |
reviews | array | { rating, comment, author, date, dateFormatted, reply }. See review-coverage note below. |
coverImage / galleryImages | object / array | Image URLs. |
description | string | Business “about” text. |
extractionPath | string | ld+json+hz-ctx (full), ld+json, hz-ctx, or dom. |
partial | boolean | true if only partial data was available. |
scraperVersion | string | Scraper version. |
scrapedAt | string | ISO‑8601 UTC timestamp. |
city / state | string | Flattened from addressComponents for easy CSV/leads view. |
Run it with the API
Replace <YOUR_TOKEN> with your Apify API token. The Actor ID is malikgen~houzz-pro-scraper.
Run and get results in one call (synchronous — best for small/medium runs):
curl -X POST "https://api.apify.com/v2/acts/malikgen~houzz-pro-scraper/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-H "Content-Type: application/json" \-d '{"mode": "search","proCategory": "general-contractor","location": "Austin, TX","maxResults": 50,"enrichEmail": true}'
The response body is the JSON array of records — ready to use.
Start a run asynchronously, then fetch the dataset later:
# 1) startcurl -X POST "https://api.apify.com/v2/acts/malikgen~houzz-pro-scraper/runs?token=<YOUR_TOKEN>" \-H "Content-Type: application/json" \-d '{ "mode": "search", "proCategory": "architect", "location": "Miami, FL", "maxResults": 100 }'# -> note the "defaultDatasetId" in the response# 2) fetch results (JSON; add &format=csv for CSV, &format=xlsx for Excel)curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<YOUR_TOKEN>"
Use it with n8n / Make
Option A — Apify node (recommended). In n8n add the Apify node → Run Actor → Actor malikgen/houzz-pro-scraper → paste the JSON input → connect Get Dataset Items to receive each record as an item.
Option B — HTTP Request node. POST to the run-sync-get-dataset-items URL above; the node receives the records array directly. Works great in Make.com too (HTTP module).
Option C — Push to your own webhook. Set webhookUrl in the input to your n8n Webhook node URL. When the run finishes, the Actor POSTs { mode, recordCount, records, scraperVersion } to it — fully hands-off pipelines.
{"mode": "search","proCategory": "kitchen-and-bath-remodelers","location": "Chicago, IL","maxResults": 200,"enrichEmail": true,"webhookUrl": "https://your-n8n.example.com/webhook/houzz-leads"}
Pricing
Pay only for what you use — value-tiered:
| Charge | Price (Bronze) | When |
|---|---|---|
| Base record | $3 / 1,000 ($0.003) | every professional returned |
| Email enrichment | +$7 / 1,000 ($0.007) | only when a verified email is found |
- Directory data (name, phone, address, rating, reviews, badges, services, socials): ~$3/1k — same as other Houzz scrapers, with richer data and no per-run fee.
- A full, outreach-ready lead with a verified email: ~$10/1k (≈$7/1k on Gold+ tiers).
You never pay the email premium unless we actually deliver an email — and emails are something no other Houzz scraper provides. A home-services lead bought elsewhere commonly costs $50–$500 each; here a complete, email-enriched lead is about one cent.
Turn email enrichment off (
enrichEmail: false) to pay base price only.
Tips, limits & FAQ
- Get emails: keep Find email addresses on and use Full profiles mode (search-mode listings often don’t expose a website). Emails come from the pro’s own site, so a pro with no website returns
email: null. - Review coverage: Houzz loads its full review list lazily (via a background request), so each record currently includes the rating, total review count, and the featured review. Full review history is on the roadmap.
- City not found? Use
City, ST(e.g.Austin, TX). Bare city names usually work; a known suburb works as its own city (e.g.Santa Monica, CA). For anything unusual, paste a Houzz listing URL into Advanced: direct URLs. - Why residential proxy for Full profiles? Houzz returns HTTP 500 to datacenter IPs on profile pages. The Actor defaults the proxy to Residential US so it just works.
- Stable schema: every field is always present (
null/[]when empty) so downstream automations never break when a value is missing. - Compliance: scrapes only publicly available business listing information for legitimate B2B lead-generation and market research.
Changelog
- 0.0.1 — Initial release. Search-by-city + full-profile modes, email enrichment, badges, services, reviews (rating + featured), residential proxy for profiles, n8n webhook, null-safe schema.