Houzz $1๐ฐ URL | Keywords | Reviews and Pro Data
Pricing
from $1.00 / 1,000 results
Houzz $1๐ฐ URL | Keywords | Reviews and Pro Data
From $1/1K. Pull Houzz pro listings across global sites. Search by category and location, keyword, or URL, plus review mode for specific pros. Returns 35+ fields including ratings, reviews, awards, services, address, GPS, contacts, social links, project counts, and featured review.
Pricing
from $1.00 / 1,000 results
Rating
5.0
(1)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
20
Total users
8
Monthly active users
14 days ago
Last modified
Categories
Share
Houzz Pros Scraper
Pull every interior designer, architect, builder, kitchen remodeler, photographer, contractor and home stylist on Houzz, with 35+ fields per pro: ratings, reviews, awards, services, full address, GPS, contact, social links, project counts, and a featured review excerpt. Three modes (search by category + location, free-text keyword, paginate by URL) plus a fourth review mode for deep-fetching specific pros. Works on every Houzz country site (.com, .com.au, .co.nz, .ie, .com.sg, .in, .it, .es, .dk, .se).
Why This Scraper?
- 35+ fields per pro vs 8-10 in alternatives: per-aspect ratings (communication / on time / quality / value), Best of Houzz awards by year, full services list, operating hours, GPS, social links across six platforms.
- Four modes in one actor: search by category + city, free-text keyword, paste pro URLs, or paste any directory URL.
- Worldwide coverage: same input shape for ten Houzz country sites; the actor maps your category choice to the right country category id automatically.
- Filter at the source: minimum rating, minimum review count, verified-only toggle. Sort by rating, review count, newest, or alphabetical.
- Full review history: review mode pulls every review per pro (rating, reviewer, text, project price, and the pro's reply), not just the headline one.
- Runs on any Apify plan: the default proxy setting is enabled on every plan, including the free tier.
- Reliable at scale: results keep flowing across long runs, with automatic recovery if a request is rejected.
Data You Get
Sample shape, values are illustrative placeholders, not from a live listing.
| Field | Example |
|---|---|
id | "00000001" |
userId | 00000001 |
professionalId | 0000 |
displayName | "Sample Design Studio" |
userName | "sample_studio" |
proType | 2 |
proTypeDisplayName | "Interior Designers & Decorators" |
country | "US" |
state | "NY" |
city | "New York" |
zip | "10001" |
latitude | 40.0000 |
longitude | -74.0000 |
formattedAddress | "100 Sample Ave, New York, NY 10001" |
formattedPhone | "(000) 000-0000" |
website | "sample-studio.com" |
numReviews | 0 |
reviewRating | 0.0 |
aspectCommunication | 0.0 |
aspectOnTime | 0.0 |
aspectQuality | 0.0 |
aspectValue | 0.0 |
featuredReviewText | "Sample featured review excerpt appears here when present in the page." |
mostRecentReview | { "id": "0", "rating": 0.0, "text": "...", "author": "Reviewer Name", "date": "2026-01-01" } |
verified | false |
hasVerifiedLicense | false |
awards | [] (Best of Houzz year + category when present) |
badges | [] |
merits | [] |
aboutMe | "Sample about-me text describing the pro's specialty and approach." |
aiDescription | "Sample AI summary if Houzz pre-generated one." |
servicesProvided | ["3D Rendering", "Bathroom Design", "..."] |
areasServed | ["..."] |
costEstimate | null |
socialFacebook | "https://facebook.com/..." |
socialInstagram | "https://instagram.com/..." |
socialLinkedin | null |
profileImage | { ... } (Houzz CDN image record) |
coverImage | { ... } |
siteOrigin | "houzz.com" |
url | "https://www.houzz.com/professionals/interior-designers-and-decorators/sample-design-studio-pfvwus-pf~00000001" |
mode | "search" |
category | "interior-designers" |
location | "New-York--NY" |
How to Use
Search by category + location (most common):
{"mode": "search","site": "houzz.com","category": "interior-designers","locations": ["New-York--NY", "Los-Angeles--CA"],"maxPages": 5,"maxListings": 100}
Search Australia for Sydney architects:
{"mode": "search","site": "houzz.com.au","category": "architects","locations": ["Sydney--NSW"],"minRating": 4,"minReviewCount": 5,"sortBy": "rating-desc","maxPages": 10}
Free-text keyword search:
{"mode": "keyword","site": "houzz.com","queries": ["mid century kitchen designer", "sustainable architect"],"locations": ["San-Francisco--CA"],"maxPages": 3}
Deep-fetch specific pros (review mode, with full reviews + aggregates):
{"mode": "review","proUrls": ["https://www.houzz.com/professionals/interior-designers-and-decorators/sample-pro-pfvwus-pf~00000001","https://www.houzz.com/pro/another-pro/__public"]}
Paste any Houzz directory URL:
{"mode": "url","urls": ["https://www.houzz.com/professionals/kitchen-and-bath/probr0-bo~t_11790","https://www.houzz.com.au/professionals/interior-designers-and-decorators/c/Sydney--NSW"],"maxPages": 3}
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | enum | "search" | "search", "keyword", "review", or "url". |
site | enum | "houzz.com" | Country site: houzz.com, houzz.com.au, houzz.co.nz, houzz.ie, houzz.com.sg, houzz.in, houzz.it, houzz.es, houzz.dk, houzz.se. |
category | enum | "interior-designers" | Service category. Auto-mapped per country. |
locations | array of strings | [] | Format: City--State, City--Country, or just State / Region. Empty = all locations for the category. |
queries | array of strings | [] | Free-text queries (keyword mode). |
proUrls | array of strings | [] | Houzz pro profile URLs or raw pro IDs (review mode). |
urls | array of strings | [] | Any Houzz directory URLs (url mode). |
minRating | integer | 0 | Filter to pros with rating >= this (0-5). |
minReviewCount | integer | 0 | Filter to pros with at least N reviews. |
verifiedOnly | boolean | false | Skip pros without a verified company profile. |
sortBy | enum | "default" | default, rating-desc, review-count-desc, newest, name-asc. |
maxPages | integer | 5 | Max pagination pages per search. 15 pros per page. |
maxListings | integer | 0 | Total cap across all searches. 0 = unlimited (still capped by maxPages). |
fetchDetails | boolean | false | Visit each pro detail page for richer fields. Auto-on in review mode. |
resumeFromRunId | string | (empty) | Continue one specific interrupted run. See "Resume & recurring updates" below. |
incrementalMode | boolean | false | Track a scheduled search across runs and classify changes. See below. |
stateKey | string | (empty) | Optional name for the Incremental mode baseline. Auto-derived when empty. |
emitUnchanged | boolean | false | Also push rows unchanged since the last Incremental mode run. Bills extra rows. |
emitExpired | boolean | false | Push a synthetic row for pros that dropped out of a fully-scanned search. Bills extra rows. |
proxy | object | Apify Proxy | Proxy configuration. The default works on any plan; Residential is optional and recommended for very large runs. |
Resume & recurring updates
Resume (resumeFromRunId) continues one specific interrupted run: paste the run ID or dataset ID from a previous run and this one skips every pro (or review, in review mode) already collected there, picking up only what's still missing.
Incremental mode (incrementalMode) is for a search you run on a schedule (daily/weekly) against the same category/location/query. Turn it on and the actor remembers what the search returned last time and classifies every pro as:
NEW- not seen beforeUPDATED- content changed since last time (seechangedFields)UNCHANGED- identical to last timeREAPPEARED- was gone, is backEXPIRED- tracked before, no longer found (only after a run that scanned every page of every search with nothing capping or interrupting it - a partial scan can't tell "gone" from "not reached yet")
Off by default, so every existing scheduled run is unaffected. stateKey names the saved baseline; leave it empty and the actor derives one automatically from your mode/category/locations/queries/filters, so two differently-configured searches never share a baseline by accident.
By default, only NEW/UPDATED/REAPPEARED/EXPIRED rows are pushed. Turning on emitUnchanged or emitExpired bills extra rows (the per-result event, plus the detail-enrichment surcharge if fetchDetails is on) for the additional rows those toggles push - leave them off if you only want to pay for what actually changed.
Send results into your apps (MCP connectors)
Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape; the Apify dataset is never changed.
What gets written to the connector: a condensed, human-readable summary of each record, not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.
- Authorize a connector once under Apify โ Settings โ Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
- For Notion, also set
notionParentPageUrlto the page where items should be created.
The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.
Output Example
Sample shape, values are illustrative placeholders, not from a live listing.
{"id": "00000001","userId": 1,"professionalId": 0,"displayName": "Sample Design Studio","userName": "sample_studio","proType": 2,"proTypeDisplayName": "Interior Designers & Decorators","country": "US","state": "NY","city": "New York","zip": "10001","latitude": 40.0,"longitude": -74.0,"formattedAddress": "100 Sample Ave, New York, NY 10001","formattedPhone": "(000) 000-0000","website": "sample-studio.com","numReviews": 0,"reviewRating": 0.0,"aspectCommunication": null,"aspectOnTime": null,"aspectQuality": null,"aspectValue": null,"featuredReview": {"id": "0","rating": 0.0,"text": "Sample featured review excerpt appears here.","author": "Reviewer Name","date": "2026-01-01"},"mostRecentReview": {"id": "0","rating": 0.0,"text": "Sample most-recent review excerpt.","author": "Reviewer Name","date": "2026-01-01"},"verified": true,"awards": [],"badges": [],"aboutMe": "Sample about-me text describing the pro's specialty.","servicesProvided": ["3D Rendering", "Bathroom Design", "Kitchen Design"],"areasServed": ["Manhattan", "Brooklyn"],"socialFacebook": null,"socialInstagram": null,"siteOrigin": "houzz.com","url": "https://www.houzz.com/professionals/interior-designers-and-decorators/sample-design-studio-pfvwus-pf~00000001","mode": "search","category": "interior-designers","location": "New-York--NY"}
Plan Requirement
Works on every Apify plan including the free tier. The default proxy setting is enabled on every plan. Residential proxy is optional and recommended only for very large runs (10k+ results). Country-pin the proxy to match the Houzz country site you are scraping for the most stable results.