Howard Miller APIhowardmiller.com ↗
Access Howard Miller's clock and furniture catalog via API. Search products by keyword, retrieve full variant data, pricing, images, and descriptions.
What is the Howard Miller API?
The Howard Miller API provides 2 endpoints for querying the official Howard Miller product catalog, covering clocks and furniture. Use search_products to run full-text searches across product titles, SKUs, and variants, returning up to 10 results with pricing and availability. Use get_product to fetch complete product details including all variants, option sets, description HTML, and image arrays by product handle.
curl -X GET 'https://api.parse.bot/scraper/395b262c-2a94-4b8e-8118-afa75cda6423/search_products?limit=5&query=grandfather+clock' \ -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 howardmiller-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.
"""Walkthrough: Howard Miller SDK — search products and drill into details."""
from parse_apis.howardmiller_com_api import HowardMiller, ProductNotFound
client = HowardMiller()
# Search for products by keyword, capped at 5 results
for product in client.product_summaries.search(query="wall clock", limit=5):
print(product.title, product.price, product.available)
# Drill into one result's full details via the navigation op
item = client.product_summaries.search(query="grandfather clock", limit=1).first()
if item:
detail = item.details()
print(detail.title, detail.product_type)
for variant in detail.variants:
print(f" SKU: {variant.sku}, Price: {variant.price}")
# Fetch a product directly by handle
try:
product = client.products.get(handle="talus-floor-clock-615138")
print(product.title, product.vendor, len(product.images), "images")
except ProductNotFound as exc:
print(f"Product not found: {exc.handle}")
print("exercised: product_summaries.search / details / products.get")
Full-text search over Howard Miller products by keyword. Returns up to 10 matching products with pricing, availability, and image data. Results are ordered by relevance.
| Param | Type | Description |
|---|---|---|
| limit | integer | Maximum number of products to return. Accepted range: 1-10. |
| queryrequired | string | Search query text to match against product titles, types, variants, vendor, and SKUs. |
{
"type": "object",
"fields": {
"query": "string",
"total": "integer",
"products": "array of product summaries"
},
"sample": {
"query": "grandfather clock",
"total": 5,
"products": [
{
"id": 6735131476012,
"url": "https://howardmiller.com/products/talus-floor-clock-615138",
"tags": [
"Category_Grandfather Clocks",
"Clearance",
"Function_Chiming",
"Type_Designer Furnishings"
],
"price": "1599.00",
"title": "Talus Grandfather Clock",
"handle": "talus-floor-clock-615138",
"vendor": "Howard Miller",
"available": true,
"image_url": "https://cdn.shopify.com/s/files/1/0364/2136/9900/files/615138_airoom.jpg?v=1759412928",
"product_type": "Grandfather Clocks>Modern Grandfather Clocks",
"compare_at_price": "2047.00"
}
]
}
}About the Howard Miller API
Endpoints and Data Coverage
The API exposes two endpoints. search_products accepts a required query string matched against product titles, types, variants, vendor names, and SKUs. An optional limit parameter (1–10) controls result count. Each result in the products array includes a summary with pricing, availability, and image data, plus the handle field needed for deeper lookups. The total field indicates how many products matched the query.
Full Product Details
get_product takes a handle (URL slug, e.g. talus-floor-clock-615138) and returns the complete product record. Response fields include title, vendor, description (as HTML), tags, options, variants, images, updated_at (ISO 8601 timestamp), and the numeric id. The variants array covers all SKU-level combinations with individual pricing, and options describes the axes (such as finish or size) that generate those variants.
Practical Notes
Product handles are returned inside search_products results, making the typical workflow a search followed by one or more get_product calls to retrieve full specs. The updated_at field on product records reflects the last catalog update time, which is useful for cache invalidation or freshness checks. Tag arrays can carry collection membership and attribute metadata that doesn't appear elsewhere in the response.
The Howard Miller API is a managed, monitored endpoint for howardmiller.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when howardmiller.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 howardmiller.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 clock comparison tool using variant pricing and option fields from
get_product - Sync Howard Miller SKUs and availability into an internal inventory or PIM system
- Generate a product feed for affiliate or reseller sites using titles, images, and prices from
search_products - Implement a site search feature scoped to Howard Miller's catalog using the
queryparameter - Monitor price or availability changes by polling
get_productand comparingupdated_attimestamps - Enrich product listings with full HTML descriptions and image arrays for a furniture discovery app
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Howard Miller have an official developer API?+
What does `get_product` return beyond what `search_products` shows?+
search_products returns summary-level data — pricing, availability, and images — sufficient for listing views. get_product adds the full description as HTML, the complete variants array with per-SKU pricing and SKUs, structured options (the axes like finish or size), all images, and tags. Use get_product when you need spec-level detail or need to enumerate every variant.Does the API return customer reviews or ratings for products?+
Is there pagination support for `search_products`?+
total field shows how many products matched, but only the top-ranked results up to the limit are returned. You can fork the API on Parse and revise it to add offset or cursor-based pagination if broader coverage is needed.Can I retrieve products by category or collection rather than keyword?+
search_products. Category or collection browsing is not a dedicated endpoint. You can fork it on Parse and revise it to add a collection endpoint if you need to pull products by category.