find-all-products▌
dior.com/find-all-products-qxm8lj · updated May 21, 2026
MDX-style export adds YAML metadata + attribution linking explainx.ai and this canonical listing URL.
Enumerate every product in Dior's storefront for a given locale via the public Algolia search index for /fashion (~5.7k products per locale, 18 API calls) and the per-locale beauty sitemap for /beauty (~350 products). Returns objectID, name, category path, price, color, material, image, URL, and stock state per product. Read-only.
| name | find-all-products |
| title | Dior Find All Products |
| description | >- Enumerate every product in Dior's storefront for a given locale via the public Algolia search index for /fashion (~5.7k products per locale, 18 API calls) and the per-locale beauty sitemap for /beauty (~350 products). Returns objectID, name, category path, price, color, material, image, URL, and stock state per product. Read-only. |
| website | dior.com |
| category | luxury-retail |
| tags | - luxury - fashion - beauty - catalog - algolia - akamai - read-only |
| source | 'browserbase: agent-runtime 2026-05-21' |
| updated | '2026-05-21' |
| recommended_method | hybrid |
| alternative_methods | - method: api rationale: >- Fashion catalog (~5.7k products per locale) is served by a public Algolia search index. Region-specific app IDs (CLOUD_US=C1J7AZ5107, CLOUD_EU=6EGOOSX817, CLOUD_JP=9CHAZ88O0K) and search-only API keys are inlined in any fashion page's window.__ENV__. Slice by category_lvl0/category_lvl1 to defeat the 1000-result paginationLimitedTo cap; full dump in ~18 POSTs. - method: fetch rationale: >- Beauty catalog (~350 products per locale) has no public JSON API — SFCC/Demandware OCAPI and controller endpoints return 404. The per-locale sitemap at /{locale}/beauty/sitemap.xml is the only canonical product-URL source; product IDs (Y\d{7}) are encoded in the URL and image URLs are constructable from them. - method: browser rationale: >- Per-product hydration on beauty (and Algolia-key re-discovery when keys rotate) needs a stealth Browserbase session (--verified --proxies) because Akamai 403s direct origin fetches of dior.com PDPs. |
| verified | true |
| proxies | true |
Dior Find All Products
Purpose
Enumerate every product currently offered on Dior's storefront for a given locale and return one record per product (objectID, name, category path, price, color, material, primary image asset, product URL, stock availability). The fashion (couture) catalog is served by a public Algolia search index — full catalog dumps in ~18 HTTP calls, no auth flow, no anti-bot. The beauty catalog runs on a separate Salesforce Commerce Cloud (SFCC/Demandware) stack with no public JSON API; the recommended path there is the per-locale sitemap (/{locale}/beauty/sitemap.xml) plus optional stealth-browser hydration of individual product detail pages. Read-only — never adds to cart, places orders, or signs in.
When to Use
- Daily or weekly snapshot of the entire fashion catalog for a locale (price + availability monitoring, new-arrival detection, color/material/category analytics).
- Cross-locale comparison (US vs UK vs Japan vs France assortments and pricing).
- Building a search index, product feed, or affiliate catalog mirror.
- Fashion is the primary path (~5.7k products, fully structured JSON). Beauty (~350 products) is sitemap + browser scrape.
Workflow
Recommended method — fashion: public Algolia API (no browser needed)
Every Dior /{locale}/fashion/* listing page is rendered client-side from a public Algolia search index. The Algolia App ID + search-only API Key are inlined in window.__ENV__ of any fashion page and are stable across locales — they are the production keys, not staging. The endpoint requires no cookies, no Referer, no stealth, and no proxy. The only constraint is Algolia's per-query pagination cap (paginationLimitedTo ≈ 1000 hits per query for these keys, browse ACL is disabled), so a full catalog dump slices by category_lvl0 / category_lvl1 facets.
Region → App ID → API Key → index name (verified 2026-05-21 against dior.com/{locale}/fashion):
| Region (cloud) | App ID | Search API Key | Index name pattern | Verified locales |
|---|---|---|---|---|
| US | C1J7AZ5107 | 2c1e320cc4d942713a65869b99252740 | search_prod_live_{locale} | en_us (5,736 products) |
| EU | 6EGOOSX817 | 5d568623ff9f43194a18399a53d04ae4 | search_prod_live_{locale} | fr_fr (5,946), en_gb (5,971) |
| JP | 9CHAZ88O0K | feb72a58eb3214acf582857bc6e8e04a | search_prod_live_{locale} | ja_jp (5,537) |
For any other locale, pull window.__ENV__ from one of its fashion pages (e.g. https://www.dior.com/en_int/fashion/womens-fashion/all-ready-to-wear) and read ALGOLIA_CLOUD_{REGION}_APP_ID / ALGOLIA_CLOUD_{REGION}_API_KEY / ALGOLIA_CLOUD_{REGION}_LOCALES to map locale → region. The fashion page HTML is itself protected by Akamai for some network shapes, so use a stealth Browserbase session (browse cloud sessions create --verified --proxies) to fetch it the first time per locale, cache the result, and never re-do the bootstrap fetch.
-
Discover bucket sizes for the locale:
POST https://{APPID}-dsn.algolia.net/1/indexes/search_prod_live_{locale}/query X-Algolia-Application-Id: {APPID} X-Algolia-API-Key: {KEY} Content-Type: application/json Body: { "query": "", "hitsPerPage": 0, "facets": ["category_lvl0","category_lvl1"] }The response's
facets.category_lvl0is a small map (5 buckets for en_us: Women=3405, Men=1567, Baby Dior=514, Jewellery=152, Timepieces=96). Anything ≤ 1000 is fetchable in one query; anything > 1000 needs lvl1 drill-down (Women + Men in en_us). -
Fetch each bucket. For buckets ≤ 1000:
Body: { "query": "", "hitsPerPage": 1000, "filters": "category_lvl0:\"Baby Dior\"", "attributesToRetrieve": ["objectID","name","subtitle","description","price","minimumPrice","categories","category_lvl0","category_lvl1","category_lvl2","category_lvl3","color.label","color.code","material.label","damAssets.defaultView","variants.size","stock.hasStock","levelOfStocks","availableOnline","isNew","is_bestseller","collection","saison_diorcom"], "attributesToHighlight": [] }For buckets > 1000 (Women, Men in en_us), first re-facet within the bucket:
Body: { "query":"", "hitsPerPage":0, "filters":"category_lvl0:\"Women\"", "facets":["category_lvl1"] }then iterate
category_lvl1values and send one query per(lvl0, lvl1)pair:Body: { "query":"", "hitsPerPage":1000, "filters":"category_lvl0:\"Women\" AND category_lvl1:\"Clothing\"", ... }The deepest split needed in practice is two levels — every
(lvl0, lvl1)pair observed on en_us is < 1000. -
Construct product URL from
objectID:https://www.dior.com/{locale}/fashion/products/{objectID}(e.g.KCO531DET_S30T→…/fashion/products/KCO531DET_S30T). The objectID is{styleCode}_{colorCode}— a SKU-variant key, already deduped at the color level. -
Construct image URL from
damAssets.defaultView.viewCode:https://assets.christiandior.com/is/image/diorprod/{objectID}_{viewCode}-1?wid=800&hei=1000(Scene7 path; the viewCode is typicallyE01/E02/E03). The fashion image base path is hard-coded on the Scene7 CDN — not inwindow.__ENV__. -
Verify totality: sum hits across every bucket and compare to the
nbHitsof an unfilteredhitsPerPage:0query. Expect a small (< 1%) gap from products that fall outside the lvl0+lvl1 taxonomy entirely (2 / 5,736 missing on en_us 2026-05-21). To recover them, run a final unfilteredhitsPerPage:1000, page:0query and union the result.
Total cost for en_us full dump: 18 Algolia POSTs, ~5 seconds wall, $0 LLM. Cross-locale: multiply by however many locales you need.
Recommended method — beauty: sitemap + optional stealth-browser hydration
Beauty runs on SFCC/Demandware (site name dior_us, master library BGXS_PRD). No public JSON API — OCAPI (/s/BGXS_PRD/dw/shop/v22_8/...) returns 404 from the public origin; Sites-DiorUS-Site and Sites-dior_us-Site Demandware controller paths (Search-Show, Product-Show) also 404. The beauty catalog must be enumerated from the per-locale beauty sitemap.
-
Get the product URL list (no browser, no proxy):
GET https://www.dior.com/{locale}/beauty/sitemap.xmlParse
<loc>…/beauty/products/{slug}-{Y\d+}.html</loc>entries. Foren_us: 347 product URLs out of 555 total entries (rest are editorial pages, fragrance landing pages, etc.). -
Extract product ID from URL: the trailing
Y\d{7}token is the SFCC master product ID (e.g.Y0998004for Sauvage Parfum). Image URLs followhttps://www.dior.com/dw/image/v2/BGXS_PRD/on/demandware.static/-/Sites-master_dior/default/dw{hash}/{Y_ID}/{Y_ID}_C{COLOR_ID}_E{VIEW}_{R|G}HC.jpg. -
Hydrate per-product detail (optional — only if you need title, price, description, in-stock state). The beauty PDP is server-rendered behind Akamai. Use a stealth Browserbase session:
sid=$(browse cloud sessions create --keep-alive --verified --proxies | node -e "let s='';process.stdin.on('data',c=>s+=c).on('end',()=>process.stdout.write(JSON.parse(s.match(/\{[\s\S]*\}/)[0]).id))") browse open "https://www.dior.com/en_us/beauty/products/sauvage-parfum-Y0998004.html" --remote --session "$sid" browse get title --remote --session "$sid" browse get html body --remote --session "$sid"Title comes back clean (e.g.
"Sauvage Parfum: Refillable Citrus and Woody Fragrance | Dior US"). Price strings ($199.00) are inline in the HTML; there is no JSON-LDProductblock, so regex the rendered DOM rather than waiting for structured data. -
Pace and reuse the session: keep the same stealth session warm across requests (one
--keep-alivesession can fetch hundreds of beauty pages serially). Don't open new sessions per URL — that triggers Akamai re-challenges.
Browser fallback (if Algolia keys ever rotate or get rate-limited)
The fashion side has a fallback at https://www.dior.com/{locale}/fashion/{category}/all-{type} listing pages (e.g. /en_us/fashion/womens-fashion/all-ready-to-wear). These are CSR React pages — browse snapshot returns few refs, so don't drive clicks. Instead, scroll/lazy-load triggers more Algolia calls; you can also extract window.__ENV__ directly from any fashion page HTML to rediscover the Algolia keys if the values in this skill ever change. Stealth + residential proxy (--verified --proxies) is mandatory for direct fetches; a bare proxy fetch lands on an Akamai challenge page (sec-if-cpt-container div, Powered and protected by Akamai).
For beauty there is no API fallback — the sitemap + stealth browser path is the only path.
Site-Specific Gotchas
- Two different storefronts share
dior.com:/fashion/*is a React SPA driven by Algolia;/beauty/*is a Salesforce Commerce Cloud (Sites-dior_us-Site) classic-rendered site. Their product ID spaces don't overlap (fashion ={8-9chars}_{4chars}likeKCO531DET_S30T; beauty =Y\d{7}likeY0998004), their image CDNs are different (assets.christiandior.com/is/image/diorprod/vswww.dior.com/dw/image/v2/BGXS_PRD/on/demandware.static/), and the data-acquisition strategy is different for each. Always handle them as two separate pipelines, then merge. - The Algolia search key is search-only:
listIndexesreturns 403 ("missing ACL list"), thebrowseendpoint returns 403 ("missing ACL browse"), andpaginationLimitedTocapsqueryresults at the first 1000 hits per request —nbPageswill be1even whennbHitsis 5,736. Slice by facet (category_lvl0thencategory_lvl1) to get the rest. Don't bother tryingpage: 1, 2, 3, ...— those return empty. merch_prod_live_en_usis the wrong index for product enumeration: it lives on a different app (KPGNQ6FJI9), holds 6,419 entries, and includes "push" / promotional card objects (objectID prefixpush-NNNNNN) interleaved with real products. The clean catalog issearch_prod_live_{locale}on theCLOUD_{region}apps.- Locales are split across three Algolia apps:
ALGOLIA_CLOUD_US_LOCALES=en_us,ALGOLIA_CLOUD_EU_LOCALES=fr_fr,en_gb,ALGOLIA_CLOUD_JP_LOCALES=ja_jp— these are the only locales explicitly mapped inwindow.__ENV__as of 2026-05-21. Other dior.com locales (e.g.en_int,es_es,de_de,it_it) likely route to the EU app but were not verified in this skill's iteration. Test before trusting. merch_prod_live_{locale}indexes are 403 from the CLOUD apps and 200 from MERCH, but the MERCH app does not have search indices for other locales — the apps are partitioned by role (search vs merchandising) AND by region. Don't cross-query.- The
PRODUCTS_FRAindex on the CDC app (N0ZEMF08FA) is the internal master catalog: 352,729 entries, French-language metadata, exploded to every size/color variant, includes internal codes (reference_style_couleur,code_distribution,talendUpdatedAt). It's a leaked internal index — useful for deep enrichment if needed, but not the right surface for a customer-facing product list. The customer-facing surface issearch_prod_live_{locale}. objectIDis style+color, not style alone: a single named product like "Dior Book Tote" appears once per color variant (e.g.M1296ZRIW_M928,M1296ZRIW_M928…— same first 9 chars, different suffix). If you want deduped "design" rows, group by the prefix before_. If you want every purchasable color, keep the objectID as-is.- No
url/permalink/slugfield in the Algolia hit — construct it:https://www.dior.com/{locale}/fashion/products/{objectID}. The same objectID is the canonical path segment used by the React router. - Image URL is constructed, not stored: only
damAssets.defaultView.viewCodeis in the hit. Full URL:https://assets.christiandior.com/is/image/diorprod/{objectID}_{viewCode}-1?wid=800&hei=1000. Scene7 supportswid/hei/scaleparams for resizing; preset names liker4x5listingare also valid. - Sitemap is bigger than Algolia:
/{locale}/fashion/sitemap.xmlhas 6,104 product URLs for en_us, but Algolia reports 5,736 live products. The ~370-product gap is archived/discontinued URLs that still return a 200 on the PDP (with a "no longer available" message) but are excluded from the search index. If you want purchasable products, use Algolia; if you want every URL Dior has ever shipped under/fashion/products/, use the sitemap. - Beauty has no JSON-LD: the SFCC PDP renders product info as plain HTML — no
<script type="application/ld+json">Product block, no inlinewindow.__APP_CONFIG__style global. Title is in<title>, prices in the visible DOM as$NNN.NNstrings. Plan for regex-on-DOM, not JSON parsing. - Akamai challenges direct PDP fetches:
browse cloud fetch --proxies https://www.dior.com/en_us/fashion/products/{objectID}returns a 403 "Page unavailable" page (withReference IDand an Akamai challenge script). Stealth + verified + residential proxies in a real Chrome session passes. Listing pages have the same protection. Algolia bypasses Akamai entirely — it's a third-party host (*.algolia.net). - Don't waste time on: SFCC OCAPI (
/s/BGXS_PRD/dw/shop/v22_8/products/*→ 404), Demandware Search-Show / Product-Show controllers underSites-DiorUS-SiteorSites-dior_us-Site(both 404 from the public origin),https://api-fashion.dior.com/*(private, requires JWT from a logged-in dior.com session), the GraphQL endpoint pattern (none observed for fashion or beauty).
Expected Output
{
"locale": "en_us",
"fashion_total": 5736,
"beauty_total": 347,
"products": [
{
"section": "fashion",
"objectID": "KCO531DET_S30T",
"style_code": "KCO531DET",
"color_code": "S30T",
"name": "Dior Dentelle Slide",
"subtitle": "Trench beige embroidered cotton with Dior Oblique motif and white lace",
"description": "Designed by Jonathan Anderson for the House, the Dior Dentelle slide is a subtle new take on Dior codes of elegance...",
"categories": ["Women", "Shoes", "Sandals"],
"category_lvl0": "Women",
"category_lvl1": "Shoes",
"category_lvl2": "Sandals",
"price": { "value": 890, "currency": "USD" },
"color": { "label": "Beige", "code": "S30T" },
"material": { "label": "Cotton" },
"variants": [{ "size": "T34" }, { "size": "T345" }, { "size": "T35" }],
"stock": { "hasStock": true, "level": "normal" },
"available_online": true,
"is_new": false,
"url": "https://www.dior.com/en_us/fashion/products/KCO531DET_S30T",
"image_url": "https://assets.christiandior.com/is/image/diorprod/KCO531DET_S30T_E02-1?wid=800&hei=1000"
},
{
"section": "beauty",
"product_id": "Y0998004",
"slug": "sauvage-parfum",
"name": "Sauvage Parfum",
"url": "https://www.dior.com/en_us/beauty/products/sauvage-parfum-Y0998004.html",
"price": "$199.00",
"image_url": "https://www.dior.com/dw/image/v2/BGXS_PRD/on/demandware.static/-/Sites-master_dior/default/dw8bef6812/Y0998004/Y0998004_C099600455_E01_RHC.jpg?sw=800",
"source": "sitemap+pdp"
}
],
"discovery_meta": {
"fashion_index": "search_prod_live_en_us",
"fashion_app": "C1J7AZ5107",
"fashion_queries_used": 18,
"fashion_unique_ids": 5734,
"fashion_reported_nb": 5736,
"fashion_coverage_pct": 99.96,
"beauty_sitemap": "https://www.dior.com/en_us/beauty/sitemap.xml",
"beauty_urls_in_sitemap": 555,
"beauty_product_urls": 347
}
}
How to use find-all-products on Cursor
AI-first code editor with Composer
Prerequisites
Before installing skills in Cursor, ensure your development environment meets these requirements:
- ›Cursor installed and configured on your development machine
- ›Node.js version 16.0+ with npm package manager (verify with
node --version) - ›Active project directory or workspace where you want to add find-all-products
Execute installation command
Execute the skills CLI command in your project's root directory to begin installation:
The skills CLI fetches find-all-products from GitHub repository dior.com/find-all-products-qxm8lj and configures it for Cursor.
Select Cursor when prompted
The CLI will show a list of available agents. Use arrow keys to navigate and space to select Cursor:
Verify installation
Confirm successful installation by checking the skill directory location:
Reload or restart Cursor to activate find-all-products. Access the skill through slash commands (e.g., /find-all-products) or your agent's skill management interface.
Security & Verification Notice
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your development environment. Always verify the publisher's identity, review recent commits, and test in isolated environments before production deployment.
List & Monetize Your Skill
Submit your Claude Code skill and start earning
Use Cases▌
Task Automation & Efficiency
Automate repetitive workflows and reduce manual effort
Example
Generate reports, summarize documents, draft communications
Save 3-5 hours per week on routine tasks
Knowledge Enhancement
Learn new skills, understand complex topics, get expert guidance
Example
Explain concepts, provide examples, suggest learning resources
Accelerate learning and skill development by 2x
Quality Improvement
Enhance output quality through reviews, suggestions, and refinements
Example
Review drafts, suggest improvements, catch errors
Improve work quality by 30-40% with less effort
Implementation Guide▌
Prerequisites
- ›Claude Desktop or compatible AI client with skill support
- ›Clear understanding of task or problem to solve
- ›Willingness to iterate and refine outputs
Time Estimate
15-45 minutes depending on use case complexity
Installation Steps
- 1.Install skill using provided installation command
- 2.Test with simple use case relevant to your work
- 3.Evaluate output quality and relevance
- 4.Iterate on prompts to improve results
- 5.Integrate into regular workflow if valuable
Common Pitfalls
- ⚠Expecting perfect results without iteration
- ⚠Not providing enough context in prompts
- ⚠Using skill for tasks outside its intended scope
- ⚠Accepting outputs without review and validation
Best Practices▌
✓ Do
- +Start with clear, specific prompts
- +Provide relevant context and constraints
- +Review and refine all outputs before using
- +Iterate to improve output quality
- +Document successful prompt patterns
✗ Don't
- −Don't use without understanding skill limitations
- −Don't skip validation of outputs
- −Don't share sensitive information in prompts
- −Don't expect skill to replace human judgment
💡 Pro Tips
- ★Be specific about desired format and style
- ★Ask for multiple options to choose from
- ★Request explanations to understand reasoning
- ★Combine AI efficiency with human expertise
When to Use This▌
✓ Use When
Use when skill capabilities match your task, clear ROI on time saved, and you can validate outputs. Best for repetitive tasks, learning, and quality improvement.
✗ Avoid When
Avoid when task requires deep expertise you can't validate, involves sensitive decisions, or when learning process is more valuable than speed of completion.
Learning Path▌
- 1Familiarize yourself with skill capabilities and limitations
- 2Start with low-risk, non-critical tasks
- 3Progress to more complex and valuable use cases
- 4Build expertise through regular use and experimentation
Discussion
Product Hunt–style comments (not star reviews)- No comments yet — start the thread.
Ratings
4.8★★★★★42 reviews- ★★★★★Dhruvi Jain· Dec 28, 2024
find-all-products reduced setup friction for our internal harness; good balance of opinion and flexibility.
- ★★★★★Hassan Haddad· Dec 24, 2024
find-all-products is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
- ★★★★★Harper Martinez· Nov 23, 2024
Registry listing for find-all-products matched our evaluation — installs cleanly and behaves as described in the markdown.
- ★★★★★Oshnikdeep· Nov 19, 2024
I recommend find-all-products for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
- ★★★★★Hassan Yang· Nov 15, 2024
Solid pick for teams standardizing on skills: find-all-products is focused, and the summary matches what you get after install.
- ★★★★★Harper Anderson· Oct 14, 2024
find-all-products reduced setup friction for our internal harness; good balance of opinion and flexibility.
- ★★★★★Ganesh Mohane· Oct 10, 2024
Useful defaults in find-all-products — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
- ★★★★★Harper Verma· Oct 6, 2024
find-all-products has been reliable in day-to-day use. Documentation quality is above average for community skills.
- ★★★★★Harper Robinson· Sep 25, 2024
find-all-products fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
- ★★★★★Harper Mehta· Sep 9, 2024
Solid pick for teams standardizing on skills: find-all-products is focused, and the summary matches what you get after install.
showing 1-10 of 42