Beauty retail pricing and assortment research
Mit Sephora-Endpunkten verwandelst du beauty retail pricing and assortment research in wiederholbare API-Requests mit dokumentierten Inputs und JSON-Antworten.
Turn Sephora's public storefront into structured beauty-retail data — keyword product search with real pagination, and full per-product detail with every color/shade variant's own price and availability, rating, review count, and a sample of recent reviews, all as normalized JSON. Credential-free.
Search Sephora's product catalog and get full product detail with every color/shade variant, pricing, and reviews as structured JSON.
Endpunkt-Familien
6
Dokumentierte Parameter
39
Beispiele
9
Live-Katalog-Snapshot
Aktive Endpunkte
9
Methoden
GET
Pflichtparameter
17
Schema-Referenzen
9
{
"platform": "Sephora",
"endpoint": "sephora-search",
"method": "GET",
"path": "/sephora/search",
"auth": "apiKey"
}Use Cases
Search Sephora's product catalog and get full product detail with every color/shade variant, pricing, and reviews as structured JSON.
Mit Sephora-Endpunkten verwandelst du beauty retail pricing and assortment research in wiederholbare API-Requests mit dokumentierten Inputs und JSON-Antworten.
Mit Sephora-Endpunkten verwandelst du product and review monitoring in wiederholbare API-Requests mit dokumentierten Inputs und JSON-Antworten.
Mit Sephora-Endpunkten verwandelst du shade/variant availability tracking in wiederholbare API-Requests mit dokumentierten Inputs und JSON-Antworten.
Managed Execution
Jede Zahl unten stammt direkt aus dem Live-Sephora-Endpunktkatalog — 9 Endpunkte, 39 dokumentierte Request-Parameter und 9 veröffentlichte Response-Schemas — demselben Katalog, gegen den auch Docs und Playground laufen.
9 documented Sephora endpoints, grouped into 7 request families — Product, Brands and Categories, plus 4 more.
39 request parameters are documented across those Sephora endpoints, 17 of them required — the full input contract is public before you write any integration code.
9 of the 9 Sephora endpoints ship a recorded example response, and 9 carry a documented response schema — you can code against the real JSON before the first request.
Sephora 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.
9 hosted MCP tools back the Sephora endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Abdeckungskarte
Diese Karten werden aus dem aktiven Endpunktkatalog generiert, damit die Landingpage dieselbe API-Oberfläche widerspiegelt, die auch Docs und Playground nutzen.
/sephora/product
/sephora/brands
/sephora/categories
/sephora/category
/sephora/search
/sephora/stores
Endpunktkatalog
/sephora/searchSearches Sephora's product catalog by keyword, with real page-based pagination. Returns normalized products with brand, pricing, rating, and review count. Sephora's own search never returns a genuine zero-result state for a nonempty keyword -- an unrecognized/nonsense keyword still returns a full, unrelated fallback result set rather than an empty one. price_min/price_max must be provided together (whole dollars) -- upstream silently ignores a one-sided price range rather than filtering or erroring, so this endpoint rejects a one-sided range as invalid instead of passing it through. brand and filter each accept multiple values (OR'd together within the same facet); brand/rating_min/is_new/filter/price_min/price_max can all be combined with each other (AND'd together across different facets).
Hinweise zur Response
- Sephora's own search never returns a genuine zero-result state for a nonempty keyword -- an unrecognized/nonsense keyword still returns a full, unrelated fallback result set rather than an empty one. `total_products` and `count` reflect whatever the upstream actually returned. - `list_price`/`value_price` are kept as Sephora's own display-formatted strings (e.g. `"$16.00 - $30.00"`) since a search card's price is often a range across a product's own color/shade variants -- only `/sephora/product` (scoped to one specific product) exposes fully resolved per-variant pricing. - `related_searches` lists Sephora's own suggested related keywords, when present. Example response: ```json { "code": 200, "msg": "OK", "data": { "query": "mascara", "page": 1, "page_size": 60, "sort_by": "featured", "total_products": 180, "count": 2, "related_searches": ["foundation", "highlighter"], "products": [ { "product_id": "P520769", "sku_id": "2948230", "brand_name": "tarte", "product_name": "Mini Shape Tape Concealer + Tubing Mascara Set", "list_price": "$25.00", "value_price": "$30.00", "rating": 5, "review_count": 2, "more_colors": 8, "image_url": "https://www.sephora.com/productimages/sku/s2948230-main-zoom.jpg", "url": "https://www.sephora.com/product/travel-size-shape-tape-tubing-set-P520769?skuId=2948230" }, { "product_id": "P446676", "sku_id": "1234567", "brand_name": "Lancôme", "product_name": "Lash Idôle Lengthening & Volumizing Mascara", "list_price": "$29.00", "rating": 4.5, "review_count": 9021, "sponsored": true, "image_url": "https://www.sephora.com/productimages/sku/s1234567-main-zoom.jpg", "url": "https://www.sephora.com/product/lash-idole-P446676" } ], "source_url": "https://www.sephora.com/api/v2/catalog/search/?...", "fetched_at": "2026-08-15T12:00:00Z" } } ```
MCP-Tool sephora_search
/sephora/productReturns one Sephora product's full detail (every color/shade variant with its own price and availability, rating, review count, and a sample of recent reviews), from Sephora's credential-free public JSON-LD. `product_id` is the full product-page slug, e.g. `lip-sleeping-mask-P420652` -- copy it from the path segment after sephora.com/product/ on any product page; unlike some other retailers, an arbitrary or partial slug does not resolve.
Hinweise zur Response
- `variants` lists every purchasable color/shade of the product, each with its own `sku`, `price`, `currency_code`, and `availability` (`InStock` or `OutOfStock`). - `review_sample` is a small sample of recent reviews embedded on the product page itself, not the full review set -- there is currently no separate paginated reviews endpoint for this family. - An unresolved or malformed `product_id` returns `404`. Example response: ```json { "code": 200, "msg": "OK", "data": { "product_group_id": "P420652", "name": "Lip Sleeping Mask – Intense Hydration Lip Treatment with Vitamin C", "description": "Shop LANEIGE's Lip Sleeping Mask at Sephora.", "brand": "LANEIGE", "category": "lip-balm-lip-care", "image": "https://www.sephora.com/productimages/sku/s2961324-main-hero.jpg", "url": "https://www.sephora.com/product/lip-sleeping-mask-P420652", "rating": 4.32, "review_count": 22324, "variants": [ { "sku": "2961324", "name": "Lip Sleeping Mask - Acai Mango Smoothie", "color": "Acai Mango Smoothie", "image": "https://www.sephora.com/productimages/sku/s2961324-main-hero.jpg", "price": "25.00", "currency_code": "USD", "availability": "InStock" }, { "sku": "2743243", "name": "Lip Sleeping Mask - Watermelon Pop", "color": "Watermelon Pop", "price": "24.00", "currency_code": "USD", "availability": "OutOfStock" } ], "review_sample": [ { "id": "400508718", "author": "megankiers", "title": "Love this!!!", "body": "This is my favorite product I've got at Sephora!", "rating": 5, "date_published": "2026-08-15" } ], "source_url": "https://www.sephora.com/product/lip-sleeping-mask-P420652", "fetched_at": "2026-08-15T12:00:00Z" } } ```
MCP-Tool sephora_product
/sephora/brandsReturns Sephora's full brand directory (373 brands at time of writing), sourced from the site's own A-Z brand list page. Each brand's `name` is the exact string GET /sephora/search and GET /sephora/category's repeatable `brand` filter parameter expect.
Hinweise zur Response
- Each brand's `name` is the exact string `/sephora/search` and `/sephora/category`'s repeatable `brand` filter parameter expect -- confirmed live against those endpoints' own documented examples (`Lancôme`, `ILIA`, `tarte` all match this directory's `name` verbatim, diacritics and casing included). - `slug` is the path segment after `sephora.com/brand/` for that brand's own storefront page (e.g. `lancome`). It is informational only -- no other endpoint in this API currently consumes it. - Brands are ordered the same way the site's own A-Z page is: alphabetical by `name`, with brands whose display name starts with a digit (e.g. `5 SENS`) grouped last under a trailing "#" bucket rather than sorted numerically first. - `is_new` reflects Sephora's own "NEW" badge on the brand directory page at fetch time. Example response: ```json {"code":200,"msg":"OK","data":{"total_count":373,"brands":[{"brand_id":"6801","name":"AAVRANI","slug":"aavrani"},{"brand_id":"5644","name":"Lancôme","slug":"lancome"},{"brand_id":"6761","name":"5 SENS","slug":"5-sens"}]}} ```
MCP-Tool sephora_brands
/sephora/categoriesReturns Sephora's own live storefront category navigation (department, group, name, and slug for each), sourced from the site's own "Shop" mega-nav. Each entry's slug is directly usable as GET /sephora/category's own `slug` query parameter.
Hinweise zur Response
- `group` is empty for a department's own direct child entry (e.g. Makeup's "Face", "Eye", "Brushes & Applicators" headings, each of which is itself a real, browsable category one level above the leaf items nested under it), and set to that heading's own name for every leaf item nested under it (e.g. "Foundation" carries group `"Face"`). - The same real category can legitimately appear more than once under a different department/group pairing, or even under the same one with a different name, when Sephora's own navigation cross-lists it that way (for example "Eyelash Serums" and "Mascara" both appear under Makeup's "Eye" group and both resolve to slug `mascara`). This endpoint reflects that faithfully rather than deduplicating by slug. - Coverage spans every mega-nav department that resolves at least one real category, not only the five plain product departments (Makeup, Skincare, Fragrance, Hair, Bath & Body) -- curated departments like "Mini Size" and "Gifts & Value Sets" also carry their own genuine, independently browsable category slugs (e.g. `gifts-under-25`, `shop-travel-size-makeup`) and are included. "50% Off Deals" and "Gift Cards" are present in Sephora's own mega-nav but resolve zero category slugs each, so they are excluded from both the `department` enum and the response. Example response: ```json {"code":200,"msg":"OK","data":{"source_url":"https://www.sephora.com/","fetched_at":"2026-09-15T12:00:00Z","categories":[{"department":"makeup","name":"All Makeup","slug":"makeup-cosmetics"},{"department":"makeup","name":"Eye","slug":"eye-makeup"},{"department":"makeup","group":"Eye","name":"Mascara","slug":"mascara"},{"department":"gifts-value-sets","name":"Gifts Under $25","slug":"gifts-under-25"}]}} ```
MCP-Tool sephora_categories
/sephora/categoryReturns one page of a Sephora category/browse listing (e.g. Makeup, Skincare), with the same sort and facet filters as /sephora/search. slug is the path segment after sephora.com/shop/, e.g. makeup-cosmetics. The response uses Sephora's public catalog search to keep browse listings available when the category page's legacy embedded data is absent.
Hinweise zur Response
- `display_name` is derived from the supplied category slug. - `related_categories` lists related catalog searches when present. - `category_id` is omitted when Sephora's catalog search does not supply a stable category identifier. Example response: ```json { "code": 200, "msg": "OK", "data": { "slug": "makeup-cosmetics", "display_name": "makeup cosmetics", "page": 1, "page_size": 60, "sort_by": "featured", "total_products": 2492, "count": 2, "related_categories": ["Face", "Fragrance"], "products": [ { "product_id": "P467208", "sku_id": "2417145", "brand_name": "Lancôme", "product_name": "Lash Idôle Lengthening & Volumizing Mascara", "list_price": "$16.00 - $30.00", "rating": 4.5012, "review_count": 10757, "more_colors": 2, "image_url": "https://www.sephora.com/productimages/sku/s2417145-main-zoom.jpg", "url": "https://www.sephora.com/product/lancome-lash-idole-lash-lifting-volumizing-mascara-P467208?skuId=2417145" } ], "source_url": "https://www.sephora.com/shop/makeup-cosmetics?currentPage=1", "fetched_at": "2026-08-15T12:00:00Z" } } ```
MCP-Tool sephora_category
/sephora/product/questionsReturns one page of a Sephora product's customer Q&A: each question plus every answer it received (text, author, whether it's a brand answer, helpful votes). product_id is the Sephora productGroupID, e.g. P420652 -- the same value /sephora/product returns as product_group_id.
Hinweise zur Response
- `answer_count` is the platform's own total answer count for a question; `answers` lists the answers this page's response actually included. - `has_best_answer` marks a question where one answer has been flagged as the best/accepted one. - `is_brand_answer` marks an answer posted by the brand/retailer rather than a fellow customer. - A well-formed but unrecognized `product_id` returns a normal, empty result (`total_questions: 0`, `questions: []`) rather than an error. Example response: ```json { "code": 200, "msg": "OK", "data": { "product_id": "P420652", "page": 1, "page_size": 10, "total_pages": 102, "total_questions": 1016, "count": 1, "questions": [ { "id": "8563880", "text": "Is this good one for all types of skins?", "submitted_at": "2026-08-11T18:33:54Z", "answer_count": 1, "answers": [ { "id": "8939279", "text": "yes it works on my skin tone", "author": "soumya345", "submitted_at": "2026-08-11T19:14:45Z" } ] } ], "source_url": "https://api.bazaarvoice.com/data/questions.json?...", "fetched_at": "2026-08-15T12:00:00Z" } } ```
MCP-Tool sephora_product_questions
/sephora/product/reviewsReturns one page of a Sephora product's full customer reviews (title, body, rating, author, helpful votes, secondary ratings, photos), plus the product's site-wide rating rollup (average rating, recommended ratio, star-count histogram). product_id is the Sephora productGroupID, e.g. P420652 -- the same value /sephora/product returns as product_group_id.
Hinweise zur Response
- `rating_count`, `average_rating`, `recommended_ratio`, and `rating_histogram` are the product's site-wide aggregate rating summary, not just this page -- absent (zero-valued) for a product with no reviews yet. `rating_histogram` is ordered ascending: index 0 is 1-star, index 4 is 5-star. - A well-formed but unrecognized `product_id` returns a normal, empty result (`total_reviews: 0`, `reviews: []`) rather than an error -- the review platform does not distinguish an unknown product id from a real, reviewless one. - `secondary_ratings` and `photo_urls` are only present when a given review carries them. Example response: ```json { "code": 200, "msg": "OK", "data": { "product_id": "P420652", "page": 1, "page_size": 10, "total_pages": 1778, "total_reviews": 17771, "rating_count": 22324, "average_rating": 4.316251567819387, "recommended_ratio": 0.8268623183155309, "rating_histogram": [1432, 1238, 1533, 2756, 15365], "count": 1, "reviews": [ { "id": "399903844", "rating": 5, "recommended": true, "title": "", "body": "Noticed the difference within days. Super hydrating and made it easier for my lip stain to peel off since my lips weren't dry!", "author": "paigesephora26", "submitted_at": "2026-08-07T17:42:33Z", "helpful_votes": 1 } ], "source_url": "https://api.bazaarvoice.com/data/reviews.json?...", "fetched_at": "2026-08-15T12:00:00Z" } } ```
MCP-Tool sephora_product_reviews
/sephora/storesReturns Sephora physical store locations near a coordinate (address, hours, BOPIS/curbside/same-day flags). Renders through a JS-executing browser backend, unlike every other Sephora endpoint -- the store-locator data call itself is plain HTTP, but it requires a per-visit access token minted by an endpoint gated behind a bot-management JS challenge, so responses may take longer.
Hinweise zur Response
- Unlike every other Sephora endpoint, this one renders through a JS-executing browser backend rather than a plain HTTP request -- the store-locator data call itself is plain HTTP, but it requires a per-visit access token minted by an endpoint gated behind a bot-management JS challenge. Responses may take noticeably longer than other Sephora endpoints as a result. - `hours` are Sephora's own display-formatted strings per day (e.g. `"10:00AM - 08:00PM"`), plus the store's own IANA time zone. - This endpoint takes coordinates, not a free-text city/zip -- resolve a city or zip to a latitude/longitude first (e.g. via this API's own `/geocoding/*` endpoints) if you have text input rather than coordinates. Example response: ```json { "code": 200, "msg": "OK", "data": { "latitude": 41.88325, "longitude": -87.6323879, "radius": 50, "count": 1, "stores": [ { "store_id": "0662", "store_type": "SEPHORA", "display_name": "STATE STREET", "distance_miles": 0.2, "latitude": 41.88382, "longitude": -87.62816, "address": { "address1": "108 N STATE ST", "address2": "STE 134", "city": "CHICAGO", "state": "IL", "postal_code": "60602-1609", "country": "US", "phone": "3122638688", "mall_name": "BLOCK 37" }, "hours": { "monday": "10:00AM - 08:00PM", "tuesday": "10:00AM - 08:00PM", "wednesday": "10:00AM - 08:00PM", "thursday": "10:00AM - 08:00PM", "friday": "10:00AM - 08:00PM", "saturday": "10:00AM - 08:00PM", "sunday": "11:00AM - 06:00PM", "time_zone": "America/Chicago" }, "same_day_delivery_enabled": true, "is_bopisable": true, "is_online_reservation_enabled": true, "url": "https://www.sephora.com/happening/stores/chicago-state-street" } ], "source_url": "https://www.sephora.com/gway/v1/dotcom-sys/stores?...", "fetched_at": "2026-08-15T12:00:00Z" } } ```
MCP-Tool sephora_stores
/sephora/suggestReturns Sephora's own search-box type-ahead suggestions for a partial keyword: keyword-completion terms, matching products, and trending/related categories. Sephora's own upstream never returns a genuine zero-result state for a nonempty query -- a deliberately nonsense query still returns unrelated product suggestions.
Hinweise zur Response
- Sephora's own upstream never returns a genuine zero-result state for a nonempty query -- a deliberately nonsense query still returns unrelated product suggestions rather than an empty result. Only a literally empty query returns Sephora's own genuine empty state (`terms`, `products`, and `categories` all empty). - `terms` are keyword completions (e.g. `mascara`, `mascara volume`). - `products` are direct product matches, each with brand, rating, review count, and a thumbnail image. - `categories` are trending/related category suggestions with their own browse URL. Example response: ```json { "code": 200, "msg": "OK", "data": { "query": "masc", "terms": [ {"term": "mascara"}, {"term": "mascara smudge proof"} ], "products": [ { "product_id": "P431750", "sku_id": "2850378", "brand_name": "ILIA", "product_name": "Limitless Lash Mascara - Clean Lengthening Mascara", "rating": 4.1361, "review_count": 7773, "image_url": "https://www.sephora.com/productimages/sku/s2850378-main-thumb-50.jpg" } ], "categories": [ {"name": "Mascara", "url": "https://www.sephora.com/shop/mascara"} ], "source_url": "https://www.sephora.com/api/v2/catalog/search/?...", "fetched_at": "2026-08-15T12:00:00Z" } } ```
MCP-Tool sephora_suggest
Verwandte 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.
So scrapst du Sephora
Sephora's storefront held 373 brands in a 2026-09-24 pull, including a cluster of newly flagged Korean-beauty additions like Abib, BANILA CO, and beplain. Its own category slugs deliberately double up — Highlighter sits under both Face and Cheek using the identical slug luminizer-luminous-makeup — and department, when passed to categories, narrows the tree to one of ten storefront departments. Crawlora's nine Sephora endpoints turn search, category browsing, brand and store lookups, and full review and Q&A threads into normalized JSON, no Sephora account required. A retinol-serum search that same day returned 77 total products, from The Ordinary at $12.10 up to an Augustinus Bader serum priced $200 to $380.
/sephora/search takes a free-text query with brand, price, rating, and facet filters; /sephora/category takes a category slug from /sephora/categories instead. A 2026-09-24 search for "retinol serum" returned 77 total products, from innisfree's $37-$52 Green Tea PDRN serum (728 reviews, 4.85 stars) to Augustinus Bader's $200-$380 option.
/sephora/brands returns the full 373-brand directory with the exact name string the search/category brand filter expects; /sephora/categories returns department, group, and slug for every storefront category, and the same real category can legitimately appear twice under different departments.
Pass a product page slug like starter-retinol-us-P520372 to /sephora/product for brand, description, rating, a sample of recent reviews, and every color/shade variant's own price. A 2026-09-24 pull for The INKEY List's Starter Retinol returned a 4.77 rating across 334 reviews at $15.
Pass the P-prefixed productGroupID (not the full slug) to /sephora/product/reviews or /sephora/product/questions. LANEIGE's Lip Sleeping Mask carried 17,799 reviews across 1,780 pages and 1,016 customer questions across 102 pages as of 2026-09-24.
/sephora/stores takes a latitude/longitude pair and returns nearby locations with hours and BOPIS/curbside/same-day flags.
/sephora/suggest returns keyword completions, matching products, and trending categories for a partial term.
FAQ
/sephora/brands returned 373 brands in a 2026-09-24 pull, each with the exact name string /sephora/search and /sephora/category expect for their brand filter.
Yes — /sephora/categories can legitimately list a real category twice under different departments when Sephora's own navigation cross-lists it; Highlighter appears under both Face and Cheek with the identical slug.
/sephora/product needs the full slug, e.g. starter-retinol-us-P520372, while /sephora/product/reviews and /sephora/product/questions take only the P-prefixed productGroupID portion of it.
Deep — a 2026-09-24 pull for one long-running LANEIGE product returned 17,799 total reviews across 1,780 pages, plus 1,016 separate customer questions.
LVMH Moët Hennessy Louis Vuitton, the Paris-based luxury conglomerate, has owned Sephora since acquiring it in 1997; Sephora keeps its own management and board within the LVMH group.