Houzz APIhouzz.com ↗
Access Houzz product listings, professional profiles, reviews, and design inspiration photos via 7 structured endpoints. Search contractors, furniture, and ideas.
What is the Houzz API?
The Houzz API covers 7 endpoints that expose product listings from ShopHouzz, professional contractor and designer profiles, customer reviews, and design inspiration photos. The search_professionals endpoint returns names, phone numbers, addresses, ratings, review counts, and sponsorship flags for home pros filtered by category slug and location. Product data from search_products includes pricing, sale price, brand, rating, and review count in a single paginated response.
curl -X GET 'https://api.parse.bot/scraper/9ec72a41-fd5b-4fed-b495-a7f1bae93836/search_products?page=1&limit=2&query=chairs' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace houzz-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""
Houzz API - Usage Example
Get your API key from: https://parse.bot/settings
"""
from parse_apis.houzz_api import Houzz, Category, Location, ProfessionalNotFound
houzz = Houzz(api_key="YOUR_API_KEY")
# Search for plumbing professionals in Toronto
for pro in houzz.professionals.search(category=Category.PLUMBING_CONTRACTORS, location=Location.TORONTO_ON_CA, limit=5):
print(pro.name, pro.phone, pro.rating, pro.review_count)
# Drill down: get reviews for the first professional
pro = houzz.professionals.search(category=Category.GENERAL_CONTRACTORS, limit=1).first()
if pro:
for review in pro.reviews(limit=3):
print(review.reviewer_name, review.rating, review.body[:80])
# Get full profile details
profile = pro.profile()
print(profile.display_name, profile.pro_type, profile.num_reviews)
# Search for design inspiration photos
for photo in houzz.photos.search(query="modern kitchen", limit=5):
print(photo.image_id, photo.width, photo.height)
# Typed error handling
try:
pro = houzz.professionals.search(location=Location.NEW_YORK_METRO_AREA, limit=1).first()
if pro:
print(pro.name, pro.city, pro.state)
except ProfessionalNotFound as exc:
print(f"Professional not found: {exc.url}")
print("exercised: professionals.search / pro.reviews / pro.profile / photos.search")
Search for products on ShopHouzz using Constructor.io. Returns paginated product listings with pricing, images, and ratings.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number |
| limit | integer | Results per page |
| queryrequired | string | Search keyword (e.g. 'chairs', 'modern sofa') |
{
"type": "object",
"fields": {
"page": "integer current page number",
"items": "array of product objects with name, product_id, price, sale_price, brand, image_url, url, rating, review_count, slug",
"total_results": "integer total number of matching products"
},
"sample": {
"data": {
"page": 1,
"items": [
{
"url": "/products/baxton-studio-lissette-modern-glam-velvet-fabric-upholstered-chair-prvw-vr-207720330",
"name": "Baxton Studio Lissette Modern Glam Velvet Fabric Upholstered Chair",
"slug": "baxton-studio-lissette-modern-glam-velvet-fabric-upholstered-chair-prvw-vr-207720330",
"brand": "Baxton Studio",
"price": 301.63,
"rating": null,
"image_url": "https://cdn.shopify.com/s/files/1/0941/8535/7624/files/7edab2c6-ec32-4ba5-b5a1-e25f6a8cdf83.jpg",
"product_id": "10167542603064",
"sale_price": null,
"review_count": null
}
],
"total_results": 5428
},
"status": "success"
}
}About the Houzz API
Products and Shopping
The search_products endpoint accepts a query string (e.g. 'modern sofa') plus optional page and limit parameters and returns an array of product objects, each containing product_id, name, price, sale_price, brand, image_url, url, rating, review_count, and slug. To retrieve richer detail—materials, style, images array, vendor, and on_sale flag—call get_product_details with the product's slug including its prvw-vr-{id} suffix. Product reviews are available separately via get_product_reviews, which takes a product_id and returns Yotpo-sourced data: paginated review objects, aggregate bottomline stats, and social link metadata.
Professionals Directory
search_professionals accepts a category slug (e.g. 'interior-design', 'plumbing-contractors') and a location slug matching Houzz's URL structure. Pagination is controlled by offset. Each professional record in the response includes name, user_id, pro_id, phone, address, city, state, url, rating, review_count, and an is_sponsored boolean. The full profile—badges, awards, services provided, areas served, project counts, and user display info—is returned by get_professional_profile when given a profile URL from the directory results.
Professional Reviews
get_professional_reviews requires both user_id and pro_id from directory or profile results. It returns paginated review objects containing review_id, body, rating, relationship, project_date, project_price, created, reviewer_name, and nested comments. limit and offset control pagination, and total_count tells you the full review volume for that professional.
Design Inspiration Photos
search_ideas_photos accepts any combination of query, room (e.g. 'kitchen', 'bathroom'), and style (e.g. 'farmhouse', 'contemporary'), plus an offset for pagination. Results come back as an images object keyed by external photo ID, each record carrying imageId, width, height, hires, and sourceType fields. A url field in the response shows the exact request path constructed from your parameters.
The Houzz API is a managed, monitored endpoint for houzz.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when houzz.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official houzz.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a contractor comparison tool using
search_professionalsfiltered by category and location, surfacing phone, rating, and review count. - Track furniture pricing and sale status across ShopHouzz categories using
search_productsandget_product_detailsfields likeprice,sale_price, andon_sale. - Aggregate professional reputation data by pulling
get_professional_reviewsfor a set of pros and analyzingrating,project_price, andrelationshipdistributions. - Populate a design mood-board application using
search_ideas_photoswithroomandstylefilters to retrieve high-resolution image metadata. - Monitor product review sentiment on ShopHouzz items by periodically calling
get_product_reviewsand storing Yotpobottomlinerating stats. - Build a local contractor directory by combining
search_professionalswithget_professional_profileto expose badges, service areas, and project counts. - Enrich an interior design dataset by pairing
search_ideas_photosresults with product data fromsearch_productsfor the same style keywords.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Houzz have an official public developer API?+
What location format does `search_professionals` expect?+
location parameter takes a Houzz URL-style slug such as 'toronto-on-ca-probr0-bo~t_11817~r_6167865' or a metro area slug like 'new-york-metro-area'. These slugs correspond directly to the location segment found in Houzz professionals directory URLs.Does the API return professional portfolio photos or project images?+
get_professional_profile, but individual project photos are not exposed as a separate endpoint. You can fork this API on Parse and revise it to add a project-photos endpoint using the pro's profile data.Does `get_product_details` require the full slug including the ID suffix?+
slug parameter must include the prvw-vr-{id} suffix appended to the product name, for example 'milan-3-seat-sofa-prvw-vr-20075322'. This suffix is present in the slug field returned by search_products.