# Houzz $1💰 URL | Keywords | Reviews and Pro Data (`abotapi/houzz-scraper`) Actor

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.

- **URL**: https://apify.com/abotapi/houzz-scraper.md
- **Developed by:** [AbotAPI](https://apify.com/abotapi) (community)
- **Categories:** Lead generation, Agents, Real estate
- **Stats:** 4 total users, 2 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $1.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

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.
- **15 pros per fetch + gzip on the wire**: under one cent of bandwidth per 1000 results on standard plans.
- **Free plan compatible**: the default proxy setting works on Apify's free tier without paid Residential.
- **Self-recovering**: connections are refreshed automatically on the rare soft-rejection; pagination resumes seamlessly.

### 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):**

```json
{
  "mode": "search",
  "site": "houzz.com",
  "category": "interior-designers",
  "locations": ["New-York--NY", "Los-Angeles--CA"],
  "maxPages": 5,
  "maxListings": 100
}
````

**Search Australia for Sydney architects:**

```json
{
  "mode": "search",
  "site": "houzz.com.au",
  "category": "architects",
  "locations": ["Sydney--NSW"],
  "minRating": 4,
  "minReviewCount": 5,
  "sortBy": "rating-desc",
  "maxPages": 10
}
```

**Free-text keyword search:**

```json
{
  "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):**

```json
{
  "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:**

```json
{
  "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. |
| `proxy` | object | Apify Datacenter | Proxy configuration. Datacenter works fine; Residential recommended for very large runs. |

### Output Example

> Sample shape, values are illustrative placeholders, not from a live listing.

```json
{
  "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 (Apify Datacenter) is enabled on every plan. Residential proxy is optional and recommended only for very large runs (10k+ results) where you want extra exit-IP rotation. Country-pin the proxy to match the Houzz country site you are scraping for the most stable results.

# Actor input Schema

## `mode` (type: `string`):

Pick what each output row should be. 'search' returns one row per pro (full profile). 'review' iterates the same SERP but emits one row per review with a slim pro reference. 'url' walks any directory URL you paste, one row per pro.

## `site` (type: `string`):

Houzz operates a separate site per country. Pick the one that matches the pros you want. Applied in 'search' mode.

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

Service category. Auto-mapped to the right Houzz category id per country at runtime.

## `queries` (type: `array`):

Optional free-text searches (e.g. 'mid century kitchen', 'sustainable architect'). Each query runs as a separate search and combines with the chosen category and locations. Leave empty to skip keyword filtering.

## `locations` (type: `array`):

Cities, regions, or country segments. Format examples: 'Sydney--NSW', 'New-York--NY', 'Berlin--BE', 'CA'. Each location runs as a separate search and combines with the chosen category and keywords. Leave empty to scrape across all locations.

## `reviewTypes` (type: `array`):

Which reviews to emit per pro. 'featured' is the pro's headline review, 'most\_recent' is the latest. Pick one or both. Houzz embeds these two reviews per pro in each SERP card.

## `urls` (type: `array`):

Paste any Houzz directory or search URL. The actor walks pagination via the ?fi=N parameter. Multi-URL supported.

## `minRating` (type: `integer`):

Only return pros with average rating >= this value (1 to 5). 0 = include all.

## `minReviewCount` (type: `integer`):

Only return pros with at least this many reviews. 0 = include all.

## `verifiedOnly` (type: `boolean`):

Skip pros without a verified company profile.

## `maxPages` (type: `integer`):

Stop after this many SERP pages per search. Each page has 15 pros.

## `maxListings` (type: `integer`):

Hard cap on total pros emitted across all searches. 0 = unlimited (still capped by maxPages).

## `fetchDetails` (type: `boolean`):

Visit each pro's detail page for richer fields: full aboutMe, all services, awards, social links, operating hours, featured review, per-aspect ratings (communication / on-time / quality / value). Adds ~1 fetch per pro. Auto-enabled in 'review' mode.

## `proxy` (type: `object`):

Houzz works on Apify Datacenter (free plan) and Residential. Residential is recommended for large volumes. Country pin is auto-applied to match the chosen country when residential groups are selected.

## Actor input object example

```json
{
  "mode": "search",
  "site": "houzz.com",
  "category": "interior-designers",
  "queries": [],
  "locations": [],
  "reviewTypes": [
    "featured",
    "most_recent"
  ],
  "urls": [
    "https://www.houzz.com/professionals/interior-designer/probr0-bo~t_11785"
  ],
  "minRating": 0,
  "minReviewCount": 0,
  "verifiedOnly": false,
  "maxPages": 1,
  "maxListings": 0,
  "fetchDetails": false,
  "proxy": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "queries": [],
    "locations": [],
    "urls": [
        "https://www.houzz.com/professionals/interior-designer/probr0-bo~t_11785"
    ],
    "proxy": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("abotapi/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 = {
    "queries": [],
    "locations": [],
    "urls": ["https://www.houzz.com/professionals/interior-designer/probr0-bo~t_11785"],
    "proxy": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("abotapi/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 '{
  "queries": [],
  "locations": [],
  "urls": [
    "https://www.houzz.com/professionals/interior-designer/probr0-bo~t_11785"
  ],
  "proxy": {
    "useApifyProxy": true
  }
}' |
apify call abotapi/houzz-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Houzz $1💰 URL | Keywords | Reviews and Pro Data",
        "description": "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.",
        "version": "1.0",
        "x-build-id": "JHymMbcfcMW8JGVzz"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/abotapi~houzz-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-abotapi-houzz-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/abotapi~houzz-scraper/runs": {
            "post": {
                "operationId": "runs-sync-abotapi-houzz-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/abotapi~houzz-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-abotapi-houzz-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "review",
                            "url"
                        ],
                        "type": "string",
                        "description": "Pick what each output row should be. 'search' returns one row per pro (full profile). 'review' iterates the same SERP but emits one row per review with a slim pro reference. 'url' walks any directory URL you paste, one row per pro.",
                        "default": "search"
                    },
                    "site": {
                        "title": "Country",
                        "enum": [
                            "houzz.com",
                            "houzz.com.au",
                            "houzz.co.nz",
                            "houzz.co.uk",
                            "houzz.ie",
                            "houzz.de",
                            "houzz.fr",
                            "houzz.it",
                            "houzz.es",
                            "houzz.dk",
                            "houzz.se",
                            "houzz.com.sg",
                            "houzz.in",
                            "houzz.jp"
                        ],
                        "type": "string",
                        "description": "Houzz operates a separate site per country. Pick the one that matches the pros you want. Applied in 'search' mode.",
                        "default": "houzz.com"
                    },
                    "category": {
                        "title": "Category",
                        "enum": [
                            "all",
                            "interior-designers",
                            "architects",
                            "home-builders",
                            "general-contractors",
                            "design-build-firms",
                            "kitchen-and-bath-designers",
                            "kitchen-and-bath-remodelers",
                            "kitchen-remodelers",
                            "bathroom-remodelers",
                            "landscape-architects",
                            "landscape-contractors",
                            "lighting-designers",
                            "home-stagers",
                            "photographers",
                            "tile-and-stone-contractors",
                            "custom-countertops",
                            "custom-cabinets",
                            "flooring-contractors",
                            "painters",
                            "deck-and-patio-builders",
                            "swimming-pool-builders",
                            "fence-contractors",
                            "garage-door-services",
                            "roofing-and-gutters",
                            "siding-and-exteriors",
                            "carpenters",
                            "electricians",
                            "plumbers",
                            "hvac-contractors"
                        ],
                        "type": "string",
                        "description": "Service category. Auto-mapped to the right Houzz category id per country at runtime.",
                        "default": "interior-designers"
                    },
                    "queries": {
                        "title": "Keywords (free-text)",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Optional free-text searches (e.g. 'mid century kitchen', 'sustainable architect'). Each query runs as a separate search and combines with the chosen category and locations. Leave empty to skip keyword filtering.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "locations": {
                        "title": "Locations",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Cities, regions, or country segments. Format examples: 'Sydney--NSW', 'New-York--NY', 'Berlin--BE', 'CA'. Each location runs as a separate search and combines with the chosen category and keywords. Leave empty to scrape across all locations.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "reviewTypes": {
                        "title": "Review types to include",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Which reviews to emit per pro. 'featured' is the pro's headline review, 'most_recent' is the latest. Pick one or both. Houzz embeds these two reviews per pro in each SERP card.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "featured",
                                "most_recent"
                            ],
                            "enumTitles": [
                                "Featured review (the pro's headline)",
                                "Most recent review"
                            ]
                        },
                        "default": [
                            "featured",
                            "most_recent"
                        ]
                    },
                    "urls": {
                        "title": "Directory URLs",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Paste any Houzz directory or search URL. The actor walks pagination via the ?fi=N parameter. Multi-URL supported.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "minRating": {
                        "title": "Minimum rating",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Only return pros with average rating >= this value (1 to 5). 0 = include all.",
                        "default": 0
                    },
                    "minReviewCount": {
                        "title": "Minimum review count",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only return pros with at least this many reviews. 0 = include all.",
                        "default": 0
                    },
                    "verifiedOnly": {
                        "title": "Verified pros only",
                        "type": "boolean",
                        "description": "Skip pros without a verified company profile.",
                        "default": false
                    },
                    "maxPages": {
                        "title": "Max pages per search",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Stop after this many SERP pages per search. Each page has 15 pros.",
                        "default": 1
                    },
                    "maxListings": {
                        "title": "Max pros total",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Hard cap on total pros emitted across all searches. 0 = unlimited (still capped by maxPages).",
                        "default": 0
                    },
                    "fetchDetails": {
                        "title": "Fetch full profile per pro",
                        "type": "boolean",
                        "description": "Visit each pro's detail page for richer fields: full aboutMe, all services, awards, social links, operating hours, featured review, per-aspect ratings (communication / on-time / quality / value). Adds ~1 fetch per pro. Auto-enabled in 'review' mode.",
                        "default": false
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Houzz works on Apify Datacenter (free plan) and Residential. Residential is recommended for large volumes. Country pin is auto-applied to match the chosen country when residential groups are selected.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
