Houzz Scraper - Extract Home Professionals, Reviews & Projects avatar

Houzz Scraper - Extract Home Professionals, Reviews & Projects

Pricing

from $0.01 / 1,000 results

Go to Apify Store
Houzz Scraper - Extract Home Professionals, Reviews & Projects

Houzz Scraper - Extract Home Professionals, Reviews & Projects

Extract comprehensive data from Houzz including home improvement professionals, customer reviews, portfolio projects, and business details. Perfect for lead generation, market research, and competitive analysis in the home services industry.

Pricing

from $0.01 / 1,000 results

Rating

0.0

(0)

Developer

The Howlers

The Howlers

Maintained by Community

Actor stats

0

Bookmarked

28

Total users

0

Monthly active users

6 days ago

Last modified

Security

Limited permissions

Share

Houzz Professional Scraper

Find Houzz professionals by business name or by trade near any US city, or read one profile by URL. Each result is read from the pro's own public Houzz profile: profile URL, name, street address, phone, website, rating, review count, category, services, areas served, license number, badges and social links, plus reviews and project photos when you ask for them. Built by John Rippy (https://www.linkedin.com/in/johnrippy/).

Good for citation and NAP audits (is this business on Houzz, and is its listing right?), lead lists of contractors and designers in a market, and feeding Houzz data into your own app.


How it works

The actor opens Houzz the way a person does, in a real browser (Camoufox, a hardened Firefox with a realistic fingerprint) on US residential IPs, one page at a time with short pauses. It never logs in.

  • Search by business name: set businessName and location. Houzz's own search runs for that place, and because it ranks by place and trade it can leave the named pro out, Google's index of houzz.com is searched for the name too (Google often hides those links; the actor follows each one only far enough to read the Houzz address). Every profile with that name is opened and read, and a profile is kept only when its name, phone or street matches. Profiles in the city you gave come first. When a business has several Houzz profiles (one per office is common), give businessPhone or businessAddress and the profile with that phone or street comes first.
  • Search by trade: set searchTerm (for example General Contractor, Interior Designer, Roofing) and location. You get the pros Houzz ranks for that place, in Houzz's order, up to maxResults.
  • One profile: set scrapeType to professional_profile (or reviews) and professionalUrl.

When a name search finds nothing, the run returns one notice row, never charged as a professional:

  • status: "not_found": Houzz's search and Google's index of houzz.com were both searched, every profile they returned for the name was read, and none is this business. otherResults lists the names Houzz showed instead.
  • status: "unverified": the search could not be completed (see reasons: Google did not answer, a result link could not be opened, or a profile did not load). This is not evidence that the business is missing from Houzz.
  • status: "blocked": neither Houzz nor the search answered after retries.

Quick start

Find one business

{
"scrapeType": "search",
"businessName": "Bone Dry Roofing",
"location": "Indianapolis, IN",
"businessAddress": "7735 Winton Dr",
"maxResults": 3,
"includeReviews": false,
"demoMode": false
}

Pros for a trade in a city

{
"scrapeType": "search",
"searchTerm": "General Contractor",
"location": "Los Angeles, CA",
"maxResults": 25,
"includeReviews": true,
"maxReviewsPerProfessional": 10,
"demoMode": false
}

One profile with its reviews

{
"scrapeType": "reviews",
"professionalUrl": "https://www.houzz.com/professionals/building-designers-and-drafters/stephen-davis-home-designs-llc-pfvwus-pf~1544664725",
"maxReviewsPerProfessional": 20,
"demoMode": false
}

Sample data

{"demoMode": true} returns labeled sample rows (demo: true) without visiting Houzz. Sample rows are not charged as professionals.


Input

ParameterTypeDefaultDescription
scrapeTypestring"search"search, professional_profile or reviews
businessNamestring-Business to look up by name near location
businessPhonestring-Optional, with businessName: ranks the profile with this phone first
businessAddressstring-Optional, with businessName: ranks the profile at this street first
searchTermstring"General Contractor"Trade or name to search for when businessName is empty
locationstring"Los Angeles, CA"City and state, or a ZIP code
professionalUrlstring-A houzz.com professional page, for professional_profile and reviews
professionalTypestring"all"Narrow a trade search to one Houzz category
minRatingnumber0Skip pros rated below this
includeReviewsbooleantrueRead reviews for each profile
maxReviewsPerProfessionalinteger20Reviews per profile, up to 100
includeProjectsbooleanfalseCollect project photo URLs from each profile
maxResultsinteger50Most profiles to read
proxyConfigurationobjectRESIDENTIALKeep residential proxies on; Houzz turns away most datacenter IPs
demoModebooleanfalseLabeled sample data, nothing fetched
webhookUrlstring-Each profile is also POSTed here as it is read
sessionCookiesstring-Optional cookies (JSON from Cookie-Editor) from your own Houzz session
cookieStorageKey / cookieKvStoreNamestring-Load those cookies from a key-value store instead

Output

One row per profile:

{
"name": "Bone Dry Roofing",
"houzzUrl": "https://www.houzz.com/professionals/roofing-and-gutters/bone-dry-roofing-pfvwus-pf~886341101",
"houzzId": "886341101",
"professionalType": "Roofing & Gutters",
"address": { "street": "7735 Winton Dr", "city": "Indianapolis", "state": "IN", "zip": "46268", "full": "7735 Winton Dr, Indianapolis, IN 46268" },
"fullAddress": "7735 Winton Dr, Indianapolis, IN 46268",
"phone": "(317) 427-5131",
"website": "https://bonedry.com/indianapolis/",
"rating": null,
"reviewCount": 0,
"specialty": ["Gutter Installation", "Roof Replacement", "Roof Repair"],
"serviceAreas": [],
"latitude": 39.8682,
"longitude": -86.2123,
"reviews": [],
"searchQuery": "Bone Dry Roofing",
"searchLocation": "Indianapolis, IN",
"nameMatchScore": 1,
"inSearchedCity": true,
"matchesStreet": true
}

rating is null when the pro has no reviews yet (Houzz shows no rating), never 0. location ({city, state, zipCode}) is kept for older integrations. nameMatchScore is 1 for the same name, ignoring case, punctuation and LLC or Inc.


Pricing

This actor uses pay-per-event billing:

EventWhen it is chargedPrice
Actor startOnce when the run starts, one event per GB of memory (minimum one). At the default 2 GB of memory a run starts at $0.20$0.10 per GB
Professional ResultEach professional profile scraped$0.002
ReviewEach review scraped$0.001
ProjectEach project photo scraped$0.001
ResultEach item written to the default dataset$0.00001

A profile is charged once, after it has been read. Not-found and blocked notices and sample rows are never charged as professionals.


Troubleshooting

A name search returns unverified

The search could not be completed (see reasons), so the business may still be on Houzz. Run again; nothing was charged.

A name search returns not_found

Neither Houzz's search nor Google's index of houzz.com has a profile with that name near that place. The row lists the names Houzz showed instead. Try the name as it appears on Houzz, or a nearby city.

status: "blocked"

Houzz did not serve the page after several tries on fresh residential IPs. Run again later; keep proxyConfiguration on RESIDENTIAL.

Several profiles with the same name

Many businesses keep one Houzz profile per office. Pass businessPhone or businessAddress to put the right one first, and read matchesPhone and matchesStreet on each row.


Built by John Rippy | Actor Arsenal