MillerKnoll APImillerknoll.com ↗
Access MillerKnoll's full product catalog, collective brand data, and editorial content via 6 API endpoints covering Herman Miller, Knoll, Muuto, HAY, and more.
What is the MillerKnoll API?
The MillerKnoll API provides 6 endpoints covering the full MillerKnoll collective — brands, product listings, product details, category facets, keyword search, and editorial articles. The get_product_detail endpoint returns up to ten fields per product including SKU, designer, features, collection membership, and image URLs, making it straightforward to build furniture research tools, product comparison apps, or procurement catalogs.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/cdc95322-b8df-4e50-8e94-d15302beed05/get_all_brands' \ -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 millerknoll-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.
from parse_apis.millerknoll_api import MillerKnoll, BrandSlug, ProductNotFound
client = MillerKnoll()
# List all brands in the MillerKnoll collective
for brand in client.brands.list():
print(brand.name, brand.tagline, brand.external_url)
# Get a specific brand and explore its categories
hm = client.brand(BrandSlug.HERMAN_MILLER)
for category in hm.categories.list():
print(category.name, category.count)
# Browse paginated products for that brand
for product in hm.products.list(limit=5):
print(product.name, product.brand, product.url)
# Search products across all brands
for result in client.productsummaries.search(query="desk", limit=3):
print(result.id, result.name, result.brand)
# Drill into full product detail
detail = result.details()
print(detail.sku, detail.designer, detail.description)
# Fetch a product directly by slug
aeron = client.products.get(slug="aeron-chair")
print(aeron.name, aeron.brand, aeron.sku, aeron.url)
# List editorial articles
for article in client.articles.list():
print(article.title, article.url)
Retrieve the complete list of all MillerKnoll collective brands including name, tagline, slug, product URL, and external site link. Returns the full brand roster in a single unpaginated response.
No input parameters required.
{
"type": "object",
"fields": {
"brands": "array of brand objects with name, tagline, slug, url, and external_url"
},
"sample": {
"data": {
"brands": [
{
"url": "/products/herman-miller",
"name": "Herman Miller",
"slug": "herman-miller",
"tagline": "Problem-solving designs that inspire the best in people",
"external_url": "https://www.hermanmiller.com/"
},
{
"url": "/products/knoll",
"name": "Knoll",
"slug": "knoll",
"tagline": "Bringing order and beauty to workplace, hospitality, and residential environments",
"external_url": "https://www.knoll.com/"
}
]
},
"status": "success"
}
}About the MillerKnoll API
Brand and Category Coverage
The get_all_brands endpoint returns every brand in the MillerKnoll collective — Herman Miller, Knoll, Geiger, Muuto, Naughtone, HAY, and Holly Hunt — with each brand's name, tagline, slug, url, and external_url. The brand_slug values returned here are the same identifiers used as required inputs to get_brand_product_categories and get_products_by_brand, so a typical workflow starts by fetching the brand list and using those slugs downstream. get_brand_product_categories returns category facets (e.g. seating, storage, tables) with product counts per category, giving a fast summary of what's available for a given brand without fetching the full catalog.
Product Listings and Search
get_products_by_brand and search_products both return paginated product summaries: id, name, brand, description, url, and images. Pagination is 0-indexed via the page parameter, and the response includes total and pages so you can iterate the full result set. search_products accepts a free-text query (e.g. 'aeron', 'lounge chair', 'standing desk') and searches across all brands simultaneously, making it the right entry point when you don't know which brand carries a product.
Product Detail
get_product_detail accepts either a short slug like 'aeron-chair' or a full pathname like '/products/seating/office-chairs/aeron-chair'. The response adds fields not available in listing endpoints: sku, designer, features (an object of feature key-value pairs), and collection (an array of collection names the product belongs to). designer may be null for products without attributed authorship. This endpoint is the primary source for structured product specifications.
Editorial Content
get_insights returns articles from the MillerKnoll editorial section with title, description, url, and image for each article. The endpoint takes no parameters and returns the current article list — useful for surfacing workspace research, design thinking content, or keeping a content aggregator up to date.
The MillerKnoll API is a managed, monitored endpoint for millerknoll.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when millerknoll.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 millerknoll.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 cross-brand furniture search tool using
search_productswith keyword queries like 'ergonomic chair' or 'height adjustable desk'. - Generate a structured product database with SKU, designer, and feature data from
get_product_detailfor procurement or interior design platforms. - Display brand landing pages by pulling taglines, URLs, and external site links from
get_all_brands. - Show category breakdowns with product counts per brand using
get_brand_product_categoriesto help users navigate large catalogs. - Aggregate MillerKnoll editorial articles into a workspace design content feed using
get_insights. - Power a product comparison UI by fetching detail records for multiple items via
get_product_detailand diffing theirfeaturesobjects. - Sync a showroom or dealer catalog by iterating paginated results from
get_products_by_brandfor each brand slug.
| 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 MillerKnoll have an official public developer API?+
What does `get_product_detail` return that the listing endpoints don't?+
get_product_detail adds sku, designer, features (a structured key-value object of product attributes), and collection (an array of collection names). The listing endpoints get_products_by_brand and search_products return only id, name, brand, description, url, and images — enough to display a catalog card but not enough for a full product spec page.Can I filter products by category within a brand?+
get_brand_product_categories returns category names and counts for a brand, but get_products_by_brand does not currently accept a category filter parameter — it returns all products for the brand with pagination. You can fork this API on Parse and revise it to add a category filter input to the listing endpoint.Does the API return pricing or availability for products?+
name, brand, sku, description, images, designer, features, and collection. You can fork this API on Parse and revise it to add a pricing or availability endpoint if that data becomes accessible.