
TikTok Shop Scraper
scrape.ly/store/shelfbright/tiktok-shop-scraperE-commerceSocial media
1 monthly user

Scrape Houzz professionals (contractors, architects, interior designers, remodelers) by trade and city: business name, contact, phone, website, address, rating, review count, license, services, areas served and awards. Optional reviews.
Turn the Houzz professionals directory into a clean lead list. Search by trade and city ("general contractor" in "New York, NY", "interior designer" in "Austin, TX") and get one row per professional with business name, contact person, phone, website, full address, rating, review count, license number, services, areas served, awards and typical project cost. Add their customer reviews to the same row for free, and optionally the business email from each pro's own website. No login and no browser, and a 10-pro search finishes in seconds.
general contractor, architect, kitchen remodeler).New York, NY, Austin, TX, a ZIP code), or leave them empty to search all of Houzz.| Field | What it does |
|---|---|
searchQueries | Professions or keywords, each searched in every location |
locations | Cities, ZIP codes or areas. Empty means all of Houzz |
startUrls | Houzz profile URLs or directory/search pages (detected automatically) |
maxItems | Maximum professionals saved in the run (default 20) |
maxItemsPerQuery | Cap per keyword × location pair (0 = no cap) |
dedupe | Save each professional only once across searches (default on) |
includeReviews, maxReviewsPerPro | Nest the newest reviews on each row (default 20 per pro) |
enrichEmails | Visit each pro's website (homepage, then up to 2 contact or about pages) and add the email it shows (default off) |
maxConcurrency | Profile pages loaded in parallel (default 15) |
{
"searchQueries": ["general contractor", "architect"],
"locations": ["New York, NY", "Austin, TX"],
"maxItems": 200,
"maxItemsPerQuery": 50,
"includeReviews": true,
"maxReviewsPerPro": 10,
"enrichEmails": true
}
One row per professional. The Professionals table shows the lead fields, Services, areas and license the trade details, Contact emails the website emails, and Reviews one line per review.
| Field | Description |
|---|---|
id, professionalId, userName, profileUrl | Houzz identity and profile link |
displayName, contactName | Business name and contact person |
phone, website, socialLinks | Business contact details as published on Houzz |
location, address, fullAddress, city, state, zip, country, latitude, longitude | Address |
category, aboutMe, servicesProvided, areasServed, awards, houzzBadges | Trade details |
licenseNumber, licenseVerified, licenseBoard, licenseStatus, licenseType | License and Houzz's license check |
numReviews, reviewRating, reviewAspects | Rating out of 5 and per-aspect averages |
photoCount, projectsCount, followerCount | Portfolio size |
costEstimate, costEstimateFrom, costEstimateTo, costCurrency | Typical project cost, when the pro publishes it |
isPaidPro, isBrand, isProfessional, userType | Account flags |
profileImage, hasRealProfileImage | Logo |
distanceMiles, searchQuery, searchLocation, scrapedAt | Where the row came from |
reviews, reviewsFetched, reviewsTotalAvailable | With Include reviews on |
contactEmail | With Find emails on: the best email from the pro's website (the pro's own domain first, then other inboxes) |
contactEmails | All emails found on that website (up to 10) |
contactWebsite | The page the email was found on |
emailEnrichmentStatus | found, none (site loaded, no email shown), blocked (site refused us, timed out or is down) or no-website (no website, or only a social profile, on Houzz) |
Example (fictional business, real shape):
{
"id": "12345678",
"professionalId": "765432",
"userName": "harborlinebuild",
"profileUrl": "https://www.houzz.com/professionals/general-contractors/harborline-build-co-pfvwus-pf~123456789",
"displayName": "Harborline Build Co.",
"contactName": "Office Manager",
"isPaidPro": true,
"userType": "3",
"phone": "+1 212-555-0147",
"website": "https://www.example-harborline.com",
"location": "100 Example Avenue, New York, NY, 10001",
"city": "New York",
"state": "NY",
"zip": "10001",
"country": "US",
"latitude": 40.7484,
"longitude": -73.9967,
"category": "General Contractors",
"servicesProvided": "Home Remodeling, Bathroom Remodeling, Kitchen Remodeling, Home Additions",
"areasServed": "Manhattan, Brooklyn, Queens",
"awards": "",
"houzzBadges": ["Best of Houzz 2026 - Client Satisfaction", "Verified Hires"],
"licenseNumber": "1234567-DCA",
"licenseVerified": false,
"numReviews": 48,
"reviewRating": 4.9,
"reviewAspects": {"Work Quality": 4.9, "Communication": 4.8, "Value": 4.7},
"photoCount": 312,
"projectsCount": 21,
"costEstimate": "$25,000 - $250,000",
"costEstimateFrom": 25000.0,
"costEstimateTo": 250000.0,
"costCurrency": "USD",
"socialLinks": ["https://www.instagram.com/example-harborline/"],
"profileImage": "https://st.hzcdn.com/simgs/0000000000000000_2-0000/_.jpg",
"hasRealProfileImage": true,
"distanceMiles": 1.2,
"searchQuery": "general contractor",
"searchLocation": "New York, NY",
"contactEmail": "info@example-harborline.com",
"contactEmails": ["info@example-harborline.com", "estimates@example-harborline.com"],
"contactWebsite": "https://www.example-harborline.com/contact",
"emailEnrichmentStatus": "found",
"reviewsFetched": 1,
"reviewsTotalAvailable": 48,
"reviews": [
{
"reviewId": "2200000",
"rating": 5,
"relationship": "CLIENT",
"projectDate": "2026-04-01",
"body": "Clear schedule, tidy site and great communication from start to finish.",
"reviewerName": "Houzz user",
"photos": [],
"createdAt": "2026-04-20T15:00:00.000Z",
"proResponse": "Thank you, it was a pleasure working with you!",
"proResponseAt": "2026-04-21T09:30:00.000Z"
}
],
"scrapedAt": "2026-10-15T10:00:00.000Z"
}
You pay $1.10 per 1,000 professionals ($0.0011 per row), plus the platform usage of the run (compute and proxy traffic). Reviews are included at no extra charge, and duplicates are skipped before charging.
Usage in our tests: a 10-pro run used about $0.002; a 1,000-pro run used about $0.27, mostly residential proxy traffic (about 0.13 GB at $2 per GB). Residential IPs are the default because Houzz rate-limits datacenter IPs on big jobs.
Example: 1,000 professionals ≈ $1.10 + about $0.27 usage ≈ $1.37.
Website emails (optional): with Find emails on pro websites on, each row where an email is found costs $0.0007 more (the contact-email event, $0.70 per 1,000 emails). Rows with no email, a blocked site or no website cost nothing extra, and the actor never charges beyond your maximum total charge. Visiting the websites adds a little datacenter traffic (roughly 0.1 MB per site).
Example: 1,000 professionals with emails on, where 650 have an email on their site: $1.10 + 650 × $0.0007 = $1.10 + $0.455 = $1.555 plus platform usage.
Is it legal to scrape Houzz? The actor collects publicly visible business listings, the same data any visitor sees without logging in. Check that your use complies with Houzz's terms and with the privacy and marketing laws that apply to you (for example GDPR, CCPA, TCPA).
Do I need a Houzz account or my own proxy? No. No login is used. A residential proxy is on by default, because Houzz rate-limits datacenter IPs (HTTP 429) on bigger jobs. You can still pick the datacenter proxy; the actor then switches to residential IPs on its own when Houzz keeps refusing them. Website email lookups always use datacenter IPs.
How many professionals can I get? Houzz shows at most about 1,500 professionals per search (keyword + location). For bigger lists, add more locations (nearby cities, ZIP codes) or related keywords; duplicates are removed automatically.
Why is a field empty? Pros fill in their profiles themselves. License numbers, awards, cost estimates and contact names are optional on Houzz, so they are empty when the pro left them blank. Houzz does not publish email addresses; switch on Find emails on pro websites to look for them on the pro's own site.
Does it find emails? Houzz does not show emails, but the actor can find them for you: switch on Find emails on pro websites. For every pro with a website it loads the homepage and, if no email is there, up to two contact or about pages on the same site. It reads mailto links, page text and Cloudflare-protected addresses, drops no-reply, platform and image addresses, and puts an address on the pro's own domain first. Each website is visited once per run. Pros without a website, and sites that block visitors, get no email and no extra charge.
Can I schedule it or use the API? Yes. Schedule runs in the console, or start runs and read datasets through the API.
blocked or none.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchQueriesarrayOptionalProfessions or keywords
What to search in the Houzz professionals directory, one per line, for example "general contractor", "interior designer", "architect", "kitchen remodeler" or "roofer". Each keyword is searched in every location below.
locationsarrayOptionalLocations
Cities, ZIP codes or areas, one per line, for example "New York, NY", "Austin, TX" or "90210". Canadian and other Houzz locations work too ("Toronto, ON"). Leave empty to search all of Houzz for each keyword.
startUrlsarrayOptionalHouzz URLs
Optional houzz.com professional profile URLs (https://www.houzz.com/pro/... or .../professionals/...-pfvwus-pf~...) or directory/search result pages (https://www.houzz.com/professionals/...). The type is detected automatically.
maxItemsintegerOptionaldefault 20Max professionals
Maximum number of professionals to save across all searches and URLs.
maxItemsPerQueryintegerOptionalMax professionals per keyword and location
Cap for each keyword x location pair, useful to spread a budget evenly over many cities. 0 means no cap. Houzz shows at most about 1,500 professionals per search; use more locations or keywords to go beyond that.
dedupebooleanOptionaldefault trueSkip duplicates
Save (and charge for) each professional only once, even when they appear under several keywords or locations.
includeReviewsbooleanOptionaldefault falseInclude reviews
Nest each professional's Houzz reviews (rating, text, date, project details, photos and the pro's reply) on their row. Reviews are free: they ride on the professional row you already pay for, but each pro needs extra requests, so runs take longer.
maxReviewsPerProintegerOptionaldefault 20Max reviews per professional
Newest reviews first. Only used when "Include reviews" is on.
enrichEmailsbooleanOptionaldefault falseFind emails on pro websites
For every professional with a website, visit that site (homepage, then up to 2 contact or about pages) and add the business email it shows: contactEmail (best match, the pro's own domain first), contactEmails (all found), contactWebsite (the page it was found on) and emailEnrichmentStatus (found, none, blocked or no-website). Each website is visited once per run. A found email costs one extra contact-email event; rows without an email cost nothing extra.
maxConcurrencyintegerOptionaldefault 15Max concurrency
How many profile pages are loaded in parallel.
proxyobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["RESIDENTIA…Proxy configuration
Residential proxies are the default: Houzz rate-limits datacenter IPs (HTTP 429) on bigger jobs. Datacenter is still selectable; the actor then switches to residential IPs by itself when Houzz keeps refusing them. Website email lookups always use datacenter IPs.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| profileImage | any | Logo |
| displayName | any | Business |
| category | any | Category |
| phone | any | Phone |
| website | any | Website |
| contactEmail | any | |
| contactName | any | Contact |
| city | any | City |
| state | any | State |
| reviewRating | any | Rating |
| numReviews | any | Reviews |
| licenseNumber | any | License |
| profileUrl | any | Houzz profile |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Contact email | A business email found on the professional's own website (only with 'Find emails on pro websites' on, and only when an email is found). | $0.0007 |
| Professional | One Houzz professional saved with full profile (contact, address, rating, license, services, areas served). Reviews are included at no extra charge. | $0.0011 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('cornerledger/houzz-scraper').call({
"searchQueries": [
"general contractor"
],
"locations": [
"New York, NY"
],
"startUrls": [],
"maxItems": 20,
"proxy": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"RESIDENTIAL"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run cornerledger/houzz-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=cornerledger/houzz-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Houzz pros by trade and city with contact emails.
Pros for two trades with their reviews.
Pros by ZIP code and Canadian city.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.