Home textile catalog and pricing monitoring
Use Brooklinen endpoints to turn home textile catalog and pricing monitoring into repeatable API requests with documented inputs and JSON responses.
Turn Brooklinen's public Shopify storefront into structured retail data for bedding, bath, and home textiles — full product catalog and detail with every size and color variant, collection browsing, storefront pages, recommendations, and sitemap discovery, all pinned to Brooklinen's own storefront URL so no url parameter is needed. Credential-free.
Get Brooklinen products, collections, pages, and recommendations as structured JSON through a pinned endpoint family — no url parameter needed.
Endpoint families
6
Documented params
30
Examples
11
Live catalog snapshot
Active endpoints
11
Methods
GET
Required params
16
Schema refs
11
{
"platform": "Brooklinen",
"endpoint": "brooklinen-store",
"method": "GET",
"path": "/brooklinen/store",
"auth": "apiKey"
}Use cases
Get Brooklinen products, collections, pages, and recommendations as structured JSON through a pinned endpoint family — no url parameter needed.
Use Brooklinen endpoints to turn home textile catalog and pricing monitoring into repeatable API requests with documented inputs and JSON responses.
Use Brooklinen endpoints to turn collection and merchandising research into repeatable API requests with documented inputs and JSON responses.
Use Brooklinen endpoints to turn storefront page and sitemap discovery into repeatable API requests with documented inputs and JSON responses.
Managed execution
Every figure below is read from the live Brooklinen endpoint catalog — 11 endpoints, 30 documented request parameters, and 11 published response schemas — the same catalog Docs and Playground run against.
11 documented Brooklinen endpoints, grouped into 7 request families — Products, Collections and Pages, plus 4 more.
30 request parameters are documented across those Brooklinen endpoints, 16 of them required — the full input contract is public before you write any integration code.
11 of the 11 Brooklinen endpoints ship a recorded example response, and 11 carry a documented response schema — you can code against the real JSON before the first request.
Brooklinen endpoints document their error responses (400, 404, 429 and 503) alongside the success schema, so a block, a rate limit, or a missing record comes back as a typed error rather than silently empty data.
11 hosted MCP tools back the Brooklinen endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Coverage map
/brooklinen/products
/brooklinen/collections
/brooklinen/pages
/brooklinen/search/suggest
/brooklinen/sitemap/urls
/brooklinen/sitemaps
Endpoint catalog
/brooklinen/storeReturns storefront metadata for Brooklinen (https://www.brooklinen.com). The storefront URL is fixed server-side, so no `url` parameter is accepted.
Response notes
- Returns the resolved source URL used for JSON requests. - Includes `myshopify_domain`, store name, currency, country, and published product/collection counts when `/meta.json` exposes them. - Blocked pages, malformed JSON, missing Shopify roots, and unavailable fallback domains return upstream errors. - When the standard catalog data is unavailable, `transport_mode` is `ssr_embedded`; it is omitted entirely for stores served by the classic catalog JSON. `transport_mode` allowed values: `ssr_embedded` (only ever present, never any other value; omitted for the classic transport).
MCP tool brooklinen_store
/brooklinen/productsReturns products from Brooklinen's (https://www.brooklinen.com) product catalog. The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty products array.
Response notes
- Valid empty result pages return `200` with an empty `products` array. - Product prices are normalized to decimal currency units. - Blocked pages, malformed JSON, and missing `products` roots return upstream errors. - When the standard catalog data is unavailable (some headless storefronts on a Shopify catalog do not expose it), the response includes `transport_mode: "ssr_embedded"`, `total_items`, and `total_pages`, plus additive per-product fields (`colour`, `canonical_colour`, `discount_percentage`, `rating`, `rating_count`, `collection_tags`, `labels`, per-variant `inventory_quantity`). `limit` is honored as an upper bound; the underlying page size is fixed by the storefront and cannot be requested larger in that mode. All of the above are omitted entirely for stores served by the classic catalog JSON. - When the `ssr_embedded` fallback was used, the response may also include `facets` and `facets_stats`, mirroring the storefront's own filter sidebar for that listing. - This brand-pinned endpoint does not accept `sortBy` or facet-filter query parameters (out of scope -- use the generic `/shopify/products` endpoint with `url` set to this brand's storefront for sort/filter support). The response reuses the same shared DTO as the generic family, which carries `sort`/`filters` fields for that feature; they are always omitted here since this endpoint never populates them. `sort` allowed values (never actually returned by this endpoint, listed for schema completeness): `sortLTH`, `sortHTL`, `newest`. This brand-pinned endpoint also does not accept the generic family's `sort_by`/`min_price`/`max_price`/`product_type`/`in_stock_only`/`option_*` Storefront Filtering params (same out-of-scope reasoning -- use the generic `/shopify/products` endpoint with `url` set to this brand's storefront). The response DTO carries the matching `sort_by`/`min_price`/`max_price`/`product_type`/`in_stock_only`/`variant_options` fields for that feature; they are always omitted here since this endpoint never populates them. `sort_by` allowed values (never actually returned by this endpoint, listed for schema completeness): `manual`, `best-selling`, `title-ascending`, `title-descending`, `price-ascending`, `price-descending`, `created-ascending`, `created-descending`. `transport_mode` allowed values: `ssr_embedded`, `storefront_filtered` (only ever these two values; omitted for the classic transport).
MCP tool brooklinen_products
/brooklinen/products/{handle}Returns product detail for one Brooklinen (https://www.brooklinen.com) product handle. The storefront URL is fixed server-side; `handle` is the product's URL slug.
Response notes
- Product prices are returned in decimal currency units. - Missing product handles return `404` when Shopify returns not found. - Blocked pages, malformed JSON, and missing product fields return upstream errors. - When the standard product data is unavailable, the response includes `transport_mode: "ssr_embedded"` and additive fields (`colour`, `canonical_colour`, `discount_percentage`, `rating`, `rating_count`, `collection_tags`, `labels`, per-variant `inventory_quantity`). `transport_mode` is omitted entirely for stores served by the classic transport. `transport_mode` allowed values: `ssr_embedded` (only ever present, never any other value; omitted for the classic transport).
MCP tool brooklinen_product
/brooklinen/products/{handle}/recommendationsReturns recommended products for one Brooklinen (https://www.brooklinen.com) product handle. The storefront URL is fixed server-side.
Response notes
- Missing product handles return `404` when Shopify returns not found while resolving the seed product. - Valid empty recommendation arrays return `200` with an empty `products` array. - Blocked pages, malformed JSON, and missing Shopify roots return upstream errors. - When the standard recommendations data is unavailable, the response includes `transport_mode: "ssr_embedded"`, with the same additive product fields documented for the products endpoint. `transport_mode` allowed values: `ssr_embedded` (only ever present, never any other value; omitted for the classic transport).
MCP tool brooklinen_product_recommendations
/brooklinen/collectionsReturns collections from Brooklinen (https://www.brooklinen.com). The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty collections array.
Response notes
- Valid empty result pages return `200` with an empty `collections` array. - Blocked pages, malformed JSON, and missing `collections` roots return upstream errors. - When the standard collections listing is unavailable, the response includes `transport_mode: "ssr_embedded"`, and `title` is a best-effort derivation from the handle -- **not** the storefront's real display name. `products_count` and other classic-only fields are omitted, never fabricated. - In fallback mode, `handle` is derived from the last path segment of the collection URL and is not guaranteed unique across nested sub-collections; use the item's own `url` to identify a specific one. `transport_mode` allowed values: `ssr_embedded` (only ever present, never any other value; omitted for the classic transport).
MCP tool brooklinen_collections
/brooklinen/collections/{handle}/productsReturns products from one Brooklinen (https://www.brooklinen.com) collection. The storefront URL is fixed server-side; `handle` is the collection's URL slug.
Response notes
- Valid empty result pages return `200` with an empty `products` array. - Missing collections return `404` when Shopify returns not found. - Blocked pages, malformed JSON, and missing `products` roots return upstream errors. - When the standard collection listing is unavailable, the response includes `transport_mode: "ssr_embedded"`, `total_items`, `total_pages`, plus additive per-product fields (`colour`, `canonical_colour`, `discount_percentage`, `rating`, `rating_count`, `collection_tags`, `labels`, per-variant `inventory_quantity`) and may include `facets`/`facets_stats`. `limit` is honored as an upper bound only; the page size is fixed by the storefront in that mode. - This brand-pinned endpoint does not accept `sortBy` or facet-filter query parameters (out of scope -- use the generic `/shopify/collections/{handle}/products` endpoint with `url` set to this brand's storefront for sort/filter support). The response reuses the same shared DTO as the generic family, which carries `sort`/`filters` fields for that feature; they are always omitted here since this endpoint never populates them. `sort` allowed values (never actually returned by this endpoint, listed for schema completeness): `sortLTH`, `sortHTL`, `newest`. This brand-pinned endpoint also does not accept the generic family's `sort_by`/`min_price`/`max_price`/`product_type`/`in_stock_only`/`option_*` Storefront Filtering params (same out-of-scope reasoning -- use the generic `/shopify/collections/{handle}/products` endpoint with `url` set to this brand's storefront). The response DTO carries the matching `sort_by`/`min_price`/`max_price`/`product_type`/`in_stock_only`/`variant_options` fields for that feature; they are always omitted here since this endpoint never populates them. `sort_by` allowed values (never actually returned by this endpoint, listed for schema completeness): `manual`, `best-selling`, `title-ascending`, `title-descending`, `price-ascending`, `price-descending`, `created-ascending`, `created-descending`. `transport_mode` allowed values: `ssr_embedded`, `storefront_filtered` (only ever these two values; omitted for the classic transport).
MCP tool brooklinen_collection_products
/brooklinen/search/suggestReturns products, collections, and query suggestions from Brooklinen's (https://www.brooklinen.com) predictive search. The storefront URL is fixed server-side.
Response notes
- Products and collections use the same shapes as the product and collection endpoints. - Query suggestions include text and a storefront search URL when the storefront provides one. - Valid empty suggestion arrays return `200` with empty arrays. - Blocked pages, malformed JSON, and missing Shopify roots return upstream errors.
MCP tool brooklinen_search_suggest
/brooklinen/pagesLists Brooklinen static pages, `limit` per page (default 50, max 250) and `page` starting at 1. Each page has its handle, title, URL, plain-text content and timestamps. When `transport_mode` is `ssr_embedded`, items carry only `handle`, `url` and `updated_at`; request each handle singly for content.
Response notes
- Page content is cleaned text from Shopify `body_html`; raw HTML is not returned. - Valid empty page arrays return `200` with an empty `pages` array. - Blocked pages, malformed JSON, and missing Shopify roots return upstream errors. - When the standard pages listing is unavailable, the response includes `transport_mode: "ssr_embedded"`, and each item only carries `handle`, `url`, and `updated_at` -- no `title`, `id`, or `content`. Call the single-page endpoint per handle for full content. `transport_mode` allowed values: `ssr_embedded` (only ever present, never any other value; omitted for the classic transport).
MCP tool brooklinen_pages
/brooklinen/pages/{handle}Returns one Brooklinen static page by its `handle`: id, title, URL, plain-text content, and created, published and updated times. A missing handle returns 404. When `transport_mode` is `ssr_embedded`, the content is plain text from the page's rich-text blocks and `id` is omitted.
Response notes
- Page content is cleaned text from Shopify `body_html`; raw HTML is not returned. - Missing page handles return `404` when Shopify returns not found. - Blocked pages, malformed JSON, and missing Shopify roots return upstream errors. - When the standard page data is unavailable, the response includes `transport_mode: "ssr_embedded"`; `content` is plain text rendered from the page's rich-text blocks, and `id` is omitted (the source id is not a Shopify numeric id). `transport_mode` allowed values: `ssr_embedded` (only ever present, never any other value; omitted for the classic transport).
MCP tool brooklinen_page
/brooklinen/sitemapsLists the child sitemaps that Brooklinen publishes, with no parameters. Each entry has its `loc` URL and a `type` of `products`, `collections`, `pages`, `blogs`, `agentic_discovery` or `other`, which tells you which sitemap to pass to the sitemap URL endpoint.
Response notes
- Sitemap `type` is inferred from the child sitemap URL. - Inferred sitemap types are `products`, `collections`, `pages`, `blogs`, `agentic_discovery`, and `other`. - Blocked pages, malformed XML, and missing sitemap entries return upstream errors.
MCP tool brooklinen_sitemaps
/brooklinen/sitemap/urlsLists URL entries from Brooklinen's sitemaps, filtered by `type` (`all` by default, or `products`, `collections`, `pages`, `blogs`, `agentic_discovery`, `other`) and capped by `limit` (default 50, max 250). Each entry has its `loc`, type, handle, `lastmod`, `changefreq` and, where present, images with caption and title.
Response notes
- The service fetches matching child sitemaps from `/sitemap.xml` until `limit` URL entries is reached. - URL entries include `loc`, inferred `type`, `handle`, `lastmod`, `changefreq`, and optional `images`. - Blocked pages, malformed XML, and missing sitemap entries return upstream errors.
MCP tool brooklinen_sitemap_urls
Related APIs
Marketplaces & Retail
Research new, used, and vintage instruments across Reverb listings, seller shops, and the Price Guide. Keep current asking prices separate from historical sales, and preserve model, finish, year, condition, and currency when comparing gear.
Marketplaces & Retail
Collect marketplace product signals from Amazon without building brittle storefront scrapers.
Marketplaces & Retail
Build resale, pricing, and marketplace workflows from structured eBay data.
How to scrape Brooklinen
Crawlora's Brooklinen endpoints return bedding and bath catalog data (products, collections, pages, recommendations, search suggestions, and sitemaps) as normalized JSON, pinned server-side to www.brooklinen.com. Brooklinen is a Brooklyn-based home-textiles store. On 2026-09-18, /brooklinen/store reported 490 published products and 782 collections, and the largest product types were Sheets (105), Towels (71), and Duvet Covers (43).
490 products fit in two pages of /brooklinen/products at limit=250. Drop the 68 rows whose product_type is Content. They are storefront content blocks, not merchandise. A handful of third-party vendors also appear (Marlow, Rise.ai gift cards), so filter on vendor = Brooklinen for house product.
Variants are built from Color and Size, from Twin and Twin XL through King and Cali King, including combined sizes such as Full/Queen. Candles, comforters, and weighted blankets add Scent, Fill, or Weight. The feed also holds test listings; one, Test Classic Percale Core Sheet Set, carries 250 variants. Drop titles that start with Test.
77 products carried a compare_at_price above price on 2026-09-18. Clearance items end in - Last Call, as in Luxe Sateen Flat Sheet - Last Call. Pair that title suffix with the discount fields to monitor end-of-line pricing.
/brooklinen/collections includes real shelves (All Bedding, Beach Towels, Breezeweave) alongside internal Collection Data - … entries that hold content rather than products. /brooklinen/pages lists 114 pages. /brooklinen/search/suggest returns product matches only: for black it offered no collection or query completions.
FAQ
/brooklinen/products/{handle} returns price, compare_at_price, images, and every variant, one for each Color and Size combination, with its own availability. Bed sizes include combined options such as Full/Queen and King/Cali King.
Look for titles ending in - Last Call together with a compare_at_price above price. On 2026-09-18, 77 of the 490 products had a markdown.
Brooklinen stores editorial content as Shopify products. 68 of the 490 rows were typed Content on 2026-09-18. Exclude that type and non-Brooklinen vendors to get the sellable catalog.
/brooklinen/* pins Brooklinen's own storefront URL (https://www.brooklinen.com) server-side, so every call needs only your Crawlora API key — no url parameter. The same storefront is also reachable through /shopify/* by passing url=https://www.brooklinen.com, which is the only way to reach this storefront's sort and filter options on /shopify/products and /shopify/collections/{handle}/products — those two parameters are not exposed on the brand-pinned routes.