Retail category monitoring
Use Lululemon endpoints to turn retail category monitoring into repeatable API requests with documented inputs and JSON responses.
Turn lululemon's storefront data into structured retail data — category navigation and product listings with pricing and sale detection, full per-SKU product detail with live availability and customer reviews, curated outfit recommendations, and the physical store directory, all as normalized JSON. Credential-free.
Browse lululemon categories and products, get full product detail with pricing and reviews, get outfit picks, and find stores — as structured JSON.
Endpoint families
5
Documented params
18
Examples
5
Live catalog snapshot
Active endpoints
5
Methods
GET
Required params
10
Schema refs
5
{
"platform": "Lululemon",
"endpoint": "lululemon-category",
"method": "GET",
"path": "/lululemon/category",
"auth": "apiKey"
}Use cases
Browse lululemon categories and products, get full product detail with pricing and reviews, get outfit picks, and find stores — as structured JSON.
Use Lululemon endpoints to turn retail category monitoring into repeatable API requests with documented inputs and JSON responses.
Use Lululemon endpoints to turn sale and price tracking into repeatable API requests with documented inputs and JSON responses.
Use Lululemon endpoints to turn product catalog and review research into repeatable API requests with documented inputs and JSON responses.
Managed execution
Every figure below is read from the live Lululemon endpoint catalog — 5 endpoints, 18 documented request parameters, and 5 published response schemas — the same catalog Docs and Playground run against.
5 documented Lululemon endpoints, grouped into 5 request families — Categories, Category and Outfit, plus 2 more.
18 request parameters are documented across those Lululemon endpoints, 10 of them required — the full input contract is public before you write any integration code.
5 of the 5 Lululemon endpoints ship a recorded example response, and 5 carry a documented response schema — you can code against the real JSON before the first request.
Lululemon 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.
5 hosted MCP tools back the Lululemon endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Coverage map
These cards are generated from the active endpoint catalog, so the landing page reflects the same API surface used by Docs and Playground.
/lululemon/categories
/lululemon/category
/lululemon/outfit
/lululemon/product/{product_id}
/lululemon/stores
Endpoint catalog
/lululemon/categoriesReturns lululemon's own storefront category navigation, flattened out of the site's shared header nav: every navigable category with its display name, breadcrumb path, and the exact category/cdp_hash pair lululemon-category's own parameters expect (read directly from the nav's own URL, not guessed from the display label). section, when given, filters the result to one top-level nav section.
Response notes
- `category` and `cdp_hash` are read directly from the nav's own URL for every single entry, not guessed or derived from the display label -- unlike this repo's H&M-family precedent, where a real `category_id` is only present for a confirmed subset of entries. - `path[]` is the breadcrumb of parent nav labels above the entry (e.g. `["Women", "Women's Clothes"]`); empty for a top-level section's own direct category. - A section can itself be a direct category (`path` empty, `name` equal to the section's own display name) in addition to any nested subcategories underneath it. - `activity` currently resolves to zero categories -- its nav node carries no category link of its own at capture time -- but remains a valid `section` value since nothing rules out the site populating it later. Example response: ```json {"code":200,"msg":"OK","data":{"source_url":"https://shop.lululemon.com/?locale=en_US&sl=US","fetched_at":"2026-08-14T08:00:00Z","count":2,"categories":[{"section":"women","name":"Women's Clothes","url":"https://shop.lululemon.com/c/women-clothes/n14uwk","category":"women-clothes","cdp_hash":"n14uwk"},{"section":"women","path":["Women's Clothes"],"name":"Scuba","url":"https://shop.lululemon.com/c/women-scuba-clothes/n14uwkz9uld","category":"women-scuba-clothes","cdp_hash":"n14uwkz9uld"}]}} ```
MCP tool lululemon_categories
/lululemon/categoryReturns one lululemon category's product listing page: normalized products with pricing, sale detection, sizes, colors, and style numbers, sourced from lululemon's own app-backend category data. category and cdp_hash are the two path segments of a lululemon category URL (https://shop.lululemon.com/c/{category}/{cdp_hash}), e.g. women-new-styles and n14f1wz6o10 -- both are also available from lululemon-categories's own category and cdp_hash fields. Pagination is page-based and real: requesting a page beyond the category's real last page returns a normal response with an empty products array rather than an error. An unrecognized category/cdp_hash pair returns 404.
Response notes
- Pagination is real and page-based: the same `page` returns identical results on repeat requests, and different pages return different, non-overlapping products. - Requesting a `page` beyond the category's real last page returns a normal `200` with an empty `products` array. `total_products` stays at its real, nonzero value in that case. - An unrecognized `category`/`cdp_hash` pair returns `404`. - `products[].colors[]` and `products[].style_numbers[]` are parallel arrays: index `i` of one corresponds to index `i` of the other. - `products[].image_url` is the first image lululemon's own listing lists for the product — not reliably paired to a specific color, since a product can carry more images than colors. - `products[].sale_price` is only populated when `on_sale` is `true`. Example response: ```json {"code":200,"msg":"OK","data":{"category":"women-scuba-clothes","cdp_hash":"n14uwkz9uld","page":1,"page_size":2,"total_products":31,"count":2,"source_url":"https://shop.lululemon.com/c/women-scuba-clothes/n14uwkz9uld?format=json&No=0&Nrpp=2&locale=en_US&sl=US","fetched_at":"2026-08-14T06:00:00Z","products":[{"id":"lt5o6p8kho","unified_id":"Scuba-Evolve-Straight-Leg-Pant-Regular","name":"Scuba Evolve Straight-Leg Pant *Regular","url":"https://shop.lululemon.com/p/scuba-evolve-straight-leg-pant-regular/lt5o6p8kho","image_url":"https://images.lululemon.com/is/image/lululemon/LW5JKOS_077007_1","currency":"USD","price":118,"list_price":118,"on_sale":false,"new_arrival":true,"category":"Sweatpants","category_id":"womens-sweatpants","activities":["Casual","Lounge"],"sizes":["L","M","S","XL","XS","XXS"],"colors":["Raspberry Rave","Heathered Core Ultra Light Grey","Mahogany Muse","Black"],"style_numbers":["LW5JKOS-077007","LW5JL9S-032493","LW5JKOS-074110","LW5JKOS-0001"]},{"id":"lp4yqrz3sp","name":"Scuba Evolve Half-Zip Hoodie","url":"https://shop.lululemon.com/p/scuba-evolve-half-zip-hoodie/lp4yqrz3sp","currency":"USD","price":128,"list_price":128,"sale_price":98,"on_sale":true,"category":"Hoodies & Sweatshirts","category_id":"womens-hoodies-and-sweatshirts","colors":["Black","True Navy"],"style_numbers":["LW1AXQS-0001","LW1AXQS-069243"]}]}} ```
MCP tool lululemon_category
/lululemon/product/{product_id}Returns one lululemon product's full detail: every purchasable color/size SKU with its own price, sale status, and live availability, plus an aggregate rating and real customer reviews when the product has any -- none of which lululemon-category exposes (it only carries one representative color/price per product). product_id is the id from a lululemon-category result's id field or a lululemon product URL's trailing path segment (https://shop.lululemon.com/p/{slug}/{product_id}) -- the slug itself is not needed. An unrecognized product_id returns 404.
Response notes
- `skus[]` is one entry per purchasable color/size combination, each with its own `price`, `on_sale`/`sale_price`, and live `available` status -- unlike `lululemon-category`, which only carries one representative color/price for the whole product. - `colors[]` is the product-level color palette (code, name, swatch image); per-color/per-size price and availability live on `skus[]`, not nested here. - `rating` is present only when the product has at least one review; a product with none omits it entirely rather than sending a zero value. - `reviews[].badge` is a display label (e.g. `"Sweat Collective member"`, `"lululemon team"`), not a personal name -- lululemon does not expose reviewer nicknames through this data. - `reviews[].fit` and `reviews[].size_purchased`, when present, are fit feedback the reviewer left alongside their review text. - An unrecognized `product_id` returns `404`. A malformed `product_id` returns `400` before any upstream request is made. Example response: ```json {"code":200,"msg":"OK","data":{"product_id":"lt5o6p8kho","unified_id":"Scuba-Evolve-Straight-Leg-Pant-Regular","name":"Scuba Evolve Straight-Leg Pant *Regular","url":"https://shop.lululemon.com/p/scuba-evolve-straight-leg-pant-regular/lt5o6p8kho","description":"An evolution of our Scuba collection, cut from SuperLoft Light fabric.","category":"Sweatpants","category_id":"womens-sweatpants","currency":"USD","price":118,"on_sale":false,"gender":["Women"],"activities":["Casual","Lounge"],"sizes":["XXS","XS","S","M","L","XL"],"highlights":["Trending"],"colors":[{"code":"0001","name":"Black","swatch_url":"https://images.lululemon.com/is/image/lululemon/0001"},{"code":"77007","name":"Raspberry Rave","swatch_url":"https://images.lululemon.com/is/image/lululemon/77007"}],"skus":[{"id":"159399680","url":"https://shop.lululemon.com/p/scuba-evolve-straight-leg-pant-regular/lt5o6p8kho?color=LW5JKOS-077007&skuId=159399680","size":"M","color_code":"77007","color_name":"Raspberry Rave","style_id":"LW5JKOS-077007","style_number":"LW5JKOS","price":118,"on_sale":false,"available":true}],"rating":{"value":4.5,"count":2},"reviews":[{"id":"264791222","title":"Great","body":"These are great, fit larger than the previous version.","rating":5,"badge":"Sweat Collective member","fit":"Runs large","size_purchased":"Medium","submitted_at":"2026-08-13T19:19:09.000+00:00"}],"source_url":"https://shop.lululemon.com/p/product/lt5o6p8kho?format=json&locale=en_US&sl=US","fetched_at":"2026-08-14T07:00:00Z"}} ```
MCP tool lululemon_product
/lululemon/outfitReturns lululemon's own curated outfit/style recommendations for one product color: every complementary item in each styled look, plus the anchor product itself. unified_id and color_code are lululemon-product's own unified_id response field and a color's code field (from lululemon-product's colors[] or lululemon-category's style_numbers-paired colors[]) -- not lululemon-product's own product_id, which is a different id space. Recommended items' own id is a separate, third-party catalog id (not lululemon-product's product_id) -- use each item's url to reach its product page. An unrecognized unified_id/color_code pair returns 404.
Response notes
- `item.id` and `looks[].items[].id` are FindMine's own catalog ids (e.g. `prod11870949`), not `lululemon-product`'s `product_id` -- confirmed these do not round-trip through `lululemon-product`. Use each item's `url` to reach its own product page, not `id`. - `item` is the anchor product this outfit was built around (echoing the `unified_id`/`color_code` input); `looks[]` are the recommended complementary items, grouped by curated look. - `currency` is hardcoded to `USD` -- this endpoint only queries the US storefront. - A product/color with no curated outfit returns a well-formed empty `looks` array rather than an error. - An unrecognized `unified_id`/`color_code` pair returns `404`. Example response: ```json {"code":200,"msg":"OK","data":{"unified_id":"Scuba-Relaxed-Half-Zip-Colourblock","color_code":"79895","item":{"id":"adf2c3ab-194e-4004-b063-84691cfae3c1","title":"Scuba Relaxed Half-Zip *Colourblock","url":"https://shop.lululemon.com/p/scuba-relaxed-half-zip-colourblock/j321dxtscf?color=79895","image_url":"https://pdimg-prod-fmv3.findmine.com/v3/adf2c3ab-194e-4004-b063-84691cfae3c1/6d1df7a8-5ba1-4dba-b843-ad17e37f9d0b.lg.png","category":"Women Apparel.Sweater.Casual","currency":"USD","list_price":138,"on_sale":false},"looks":[{"id":"5456783d-e77a-4429-8f92-4d3c329be4bd","items":[{"id":"10c3668f-10ed-45fc-b0c9-0ee00f78f397","title":"Wundermost Ultra-Soft Nulu Spaghetti-Strap Adjustable Cami","url":"https://shop.lululemon.com/p/women-tanks/Wundermost-USoft-Nulu-Spag-Strap-Cami-Tank-Adjust/_/prod11870949?color=0001","image_url":"https://pdimg-prod-fmv3.findmine.com/v3/10c3668f-10ed-45fc-b0c9-0ee00f78f397/0b9bec93-4ca1-4abb-9014-cdde6bdfe10d.0800.lg.png","category":"Women Apparel.Shirt.Tank Top.Full Length","currency":"USD","list_price":48,"on_sale":false}]}],"source_url":"https://shop.lululemon.com/outfitting/api/v3/complete-the-look?product_color_id=79895&product_id=Scuba-Relaxed-Half-Zip-Colourblock&application=...&return_pdp_item=true®ion=US&language=en","fetched_at":"2026-08-14T08:00:00Z"}} ```
MCP tool lululemon_outfit
/lululemon/storesReturns lululemon's own complete physical store directory (480 US and 86 Canada locations as of this endpoint's own research), including regular weekly hours and in-store amenities. All filters are optional and applied locally after fetching the full directory -- there is no live geo-search API on a credential-free host for this platform. country and state are free-text equality filters against the values this directory actually carries (2-letter codes, e.g. US/CA, NY/CA), not an enforced enum. lat and lng (both required together) filter to stores within radius_miles (1 to 500, defaults to 50), sorted nearest-first.
Response notes
- Omitting every filter returns the complete directory. - `hours[]` is regular (non-holiday) weekly hours, sorted Monday-first — the upstream's own array order is alphabetical by day name, not calendar order. - `distance_miles` is populated only when `lat`/`lng` were given. - `status` and `store_type` are passed through as free strings (e.g. `active`, `regular`) rather than an enforced enum — the site's own UI shows additional states (`Opening Soon`, `Closed`) not yet captured in this field's raw upstream value, so unrecognized values are not dropped. - `message`, when non-empty, is a store-specific notice from the upstream (e.g. a temporary closure note). Example response: ```json {"code":200,"msg":"OK","data":{"count":1,"source_url":"https://shop.lululemon.com/stores/all-lululemon-stores?locale=en_US&sl=US","fetched_at":"2026-08-14T09:00:00Z","stores":[{"id":"00500","name":"The Shops at Hudson Yards","slug":"/stores/us/new-york/hudson-yards","url":"https://shop.lululemon.com/stores/us/new-york/hudson-yards","address":"500 West 33rd Street, RU 313A, New York, NY, US, 10001","city":"New York","state":"NY","state_name":"New York","country":"US","latitude":40.7538,"longitude":-74.0022,"store_type":"regular","status":"active","hours":[{"day":"monday","open":"10:00","close":"21:00"},{"day":"friday","open":"10:00","close":"21:00"}],"amenities":{"footwear":true,"has_mirror":false,"personal_shopping":true,"like_new":true,"buy_online_pickup_store":true,"curbside_pickup":true,"complementary_hemming":true,"returns_exchanges":true}}]}} ```
MCP tool lululemon_stores
Related APIs
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.
Marketplaces & Retail
Turn public Shop.app product and merchant pages into structured JSON for e-commerce product intelligence, price research, shop monitoring, and marketplace discovery workflows.
Company coverage
lululemon athletica inc. · LULU
Lululemon is operated by lululemon athletica inc. (LULU). Crawlora's SEC endpoints take the same company's CIK, so filings, financials, insider transactions and 13F holdings come from the same API key as the Lululemon endpoints above.
SEC filings & financials API →How to scrape Lululemon
Crawlora's 5 Lululemon endpoints return category navigation, category listings, product detail, outfit recommendations, and the physical store directory as normalized JSON with one API key — no lululemon account required.
Call /lululemon/categories for lululemon's own storefront nav, flattened — every category's display name, breadcrumb path, and the exact category/cdp_hash pair /lululemon/category expects. Pass section (new-featured, women, men, accessories, bags, activity, or we-made-too-much) to filter to one nav section.
Pass a category and cdp_hash — from /lululemon/categories, or the two path segments of a lululemon category URL (https://shop.lululemon.com/c/{category}/{cdp_hash}) — to /lululemon/category for that page's normalized products: pricing, sale price, sizes, colors, and style numbers, with real page-based pagination.
Pass a product's id (from a category result's id field, or a product URL's trailing path segment) to /lululemon/product/{product_id} for every purchasable color/size SKU with its own price, sale status, and live availability, plus an aggregate rating and customer reviews when the product has any.
Pass a product's unified_id and a color's code (both from a /lululemon/product result) to /lululemon/outfit for lululemon's own curated styled looks — every complementary item in each look, plus the anchor product.
Call /lululemon/stores for the full US/Canada store directory with weekly hours and amenities. Filter locally by country/state (free-text 2-letter codes), or pass lat+lng for a nearest-first radius search (radius_miles, 1-500, defaults to 50) — there's no live geo-search API on lululemon's own credential-free surface, so filtering happens against the full fetched directory.
FAQ
Call /lululemon/categories for the full storefront nav, flattened — each entry's category and cdp_hash are read directly from the nav's own URL, ready to pass straight into /lululemon/category. You can still build a category/cdp_hash pair from a known storefront URL instead.
/lululemon/category's pagination is real and page-based. Requesting a page beyond the category's real last page returns a normal response with an empty products array rather than an error.
Not directly — there's no free-text search endpoint. /lululemon/categories covers nav-tree discovery, and /lululemon/category covers per-category browsing, but neither takes a keyword query.
Pass the product's id (from a /lululemon/category result's id field, or a product URL's trailing path segment) to /lululemon/product/{product_id}. Unlike /lululemon/category — which only carries one representative color/price per product — this returns every SKU's own price, sale status, and live availability, plus the aggregate rating and customer reviews.
Pass a /lululemon/product result's unified_id and a colors[].code value to /lululemon/outfit. Note unified_id and color_code are a different id space from /lululemon/product's own product_id — an unrecognized pair returns 404.
Yes — pass lat and lng (both required together) to /lululemon/stores for a nearest-first list within radius_miles (1-500, defaults to 50). country and state are optional free-text 2-letter-code filters. All filtering runs locally over lululemon's full directory, since there's no live geo-search endpoint on a credential-free host.