# Houzz Pros Scraper (`khadinakbar/houzz-scraper`) Actor

Scrape Houzz professionals and products with contact, rating, and price data. MCP/API-ready.

- **URL**: https://apify.com/khadinakbar/houzz-scraper.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** Lead generation, MCP servers, Real estate
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 result (listing)s

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Houzz Pros Scraper — Contractors, Designers & Architects

Scrape the **Houzz professional directory** into clean, structured JSON: general contractors, interior designers, architects, remodelers, landscapers and more — with **phone numbers, addresses, websites, star ratings, review counts, and project counts**. Built for B2B lead generation, market research, and AI agents.

### What you get — per professional

| field | example |
|---|---|
| name | `Marie Burgos Design` |
| category | `Interior Designers & Decorators` |
| phone | `(917) 924-9620` |
| website / social | `https://marieburgosdesign.example` |
| addressFull | `New York, NY 10001` |
| city / region / postalCode | `New York` / `NY` / `10001` |
| rating | `4.9` |
| reviewCount | `56` |
| projectCount | `24` |
| costEstimate | `$500 - 75,000` |
| latitude / longitude | `40.71` / `-74.00` |
| description | full "About" text |
| profileUrl | `https://www.houzz.com/professionals/...-pfvwus-pf~58812302` |

```json
{
  "type": "professional",
  "name": "Marie Burgos Design",
  "category": "Interior Designers & Decorators",
  "phone": "(917) 924-9620",
  "city": "New York",
  "region": "NY",
  "rating": 4.9,
  "reviewCount": 56,
  "projectCount": 24,
  "profileUrl": "https://www.houzz.com/professionals/interior-designers-and-decorators/marie-burgos-design-pfvwus-pf~58812302",
  "scrapedAt": "2026-06-26T00:00:00.000Z"
}
```

Phone, address, rating and reviews come straight from the directory listing — **no slow per-profile crawl required**.

#### With `enrichDetails: true` you also get

The official **business website** (not just a social link), **services provided**, **areas served**, **awards** (Best of Houzz), **license number**, a **featured review**, and a **review-aspect breakdown** (Work Quality / Communication / Value). These come from each pro's profile page and are billed at the enriched-result rate.

### When to use this

- Build B2B lead lists of home-improvement pros by metro (contractors, designers, architects, remodelers).
- Source verified businesses with phone + rating for outreach.
- Feed an AI agent structured Houzz directory data via Apify MCP.

**Not for:** Houzz Shop products or ideabook photos — this returns professional/business records only.

### Pricing (Pay-Per-Event)

| Event | Price |
|---|---|
| Actor start | $0.00005 (×RAM GB) |
| Result (listing) | **$0.01** per professional |
| Enriched result (profile page) | **$0.02** per professional |

Pay-Per-Usage (compute + proxy) is also available — pick at run time. A 50-pro run costs about **$0.50**. The `maxResults` cap is a hard limit on records charged; the run never charges past it.

### Input

| Field | Description |
|---|---|
| `category` | Professional type, e.g. `general contractor`, `interior designer`, `architect` |
| `location` | City/state, e.g. `New York, NY` (blank = nationwide) |
| `startUrls` | Exact Houzz `/professionals/...` listing or profile URLs (overrides search) |
| `enrichDetails` | Also open each pro's profile page (default `false` — listing data is already complete) |
| `maxResults` | Hard cap, 1–2000 (default 50) |
| `proxyCountry` | Residential proxy exit country (default `US`) |

#### Example

```json
{
  "category": "general contractor",
  "location": "Austin, TX",
  "maxResults": 50
}
```

### Reliability

Houzz uses PerimeterX anti-bot protection. This actor runs an anti-detect **Camoufox** (Firefox) browser over **Apify Residential proxies**, with session rotation and retry, and reads Houzz's own embedded page state for accurate, complete fields. Datacenter IPs do not work against Houzz — residential is required. If every request is blocked, the run fails honestly rather than returning an empty success.

### Use via API / MCP

Exposed in Apify MCP as `apify--houzz-scraper`. Call with a single structured input; returns a JSON dataset of professional records.

### Legal

Use this actor only for data you are legally permitted to collect. Scrape publicly available information, respect Houzz's Terms of Service and applicable laws (including GDPR/CCPA), and do not use scraped personal data for unlawful purposes. You are responsible for your use of the output.

# Actor input Schema

## `category` (type: `string`):

The Houzz professional type to search, e.g. 'general contractor', 'interior designer', 'kitchen and bathroom remodeler', 'architect', 'landscape architect'. Free text — slugified automatically to the Houzz directory. Leave blank only if you pass startUrls instead.

## `location` (type: `string`):

City and state/region to filter professionals, e.g. 'New York, NY' or 'Austin, TX'. Encoded to Houzz's 'City--ST' URL form automatically. Leave blank for a nationwide search. Ignored when startUrls are supplied.

## `startUrls` (type: `array`):

Optional list of exact Houzz URLs to scrape directly: professional directory listings (/professionals/...) or individual pro profiles (/professionals/...-pfvwus-pf~ID). When provided, these override category/location. Accepts plain strings or {"url": "..."} objects.

## `enrichDetails` (type: `boolean`):

Listing pages already include phone, address, rating, reviews and a description. Set this true to additionally open each pro's profile page for the official business website, services provided, areas served, awards, license number, a featured review, and a review-aspect breakdown (billed at the higher enriched-result rate). Default false — listing data alone is complete for basic lead-gen.

## `maxResults` (type: `integer`):

Hard cap on the number of professionals pushed (and charged) in one run. Range 1-2000, default 50. The run stops and never charges beyond this number. Use a small value first to preview output and cost.

## `proxyCountry` (type: `string`):

Two-letter country code for the residential proxy exit, e.g. 'US', 'GB', 'CA', 'AU'. Defaults to 'US'. Match this to the Houzz market you want. Residential proxies are required — Houzz (PerimeterX) blocks datacenter IPs.

## `maxRequestRetries` (type: `integer`):

How many times a blocked or failed page is retried with a fresh session before giving up. Default 8 (Houzz uses PerimeterX, so retries matter). Range 1-15. Higher values raise reliability but also compute cost on hard blocks.

## Actor input object example

```json
{
  "category": "interior designer",
  "location": "Los Angeles, CA",
  "startUrls": [
    "https://www.houzz.com/professionals/general-contractor/c/Austin--TX"
  ],
  "enrichDetails": false,
  "maxResults": 50,
  "proxyCountry": "GB",
  "maxRequestRetries": 8
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "category": "general contractor",
    "location": "New York, NY",
    "maxResults": 50,
    "proxyCountry": "US"
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/houzz-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "category": "general contractor",
    "location": "New York, NY",
    "maxResults": 50,
    "proxyCountry": "US",
}

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/houzz-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "category": "general contractor",
  "location": "New York, NY",
  "maxResults": 50,
  "proxyCountry": "US"
}' |
apify call khadinakbar/houzz-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=khadinakbar/houzz-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/iEvCUyjKXa3tCUGe2/builds/RdLyU8QTotFGg7Tcp/openapi.json
