Sephora API
Sephora product data as structured JSON: keyword search with sale, bestseller and same-day flags, every product in a category, and product detail with each shade and size priced, ingredients, rating, and the pro and con themes from reviews.
50 free credits on signup. No card, no Sephora account.
{ "data": { "query": "lipstick", "page": 1, "sort": "relevance", "zip": "10001", "total_results": 169, "total_pages": 3, "count": 60, "products": [ { "position": 1, "product_id": "P510799", "brand": "MAC Cosmetics", "name": "M·A·Cximal Silky Matte 12HR Wear Lipstick", "url": "https://www.sephora.com/product/mac-cosmetics-m-a-cximal-silky-matte-lipstick-P510799?skuId=2764421", "price": 16, "list_price": 16, "sale_price": null, "price_range": { "min": 16, "max": 25 }, "price_text": "$16.00 - $25.00", "rating": 4.5879, "review_count": 774, "more_colors": 27, "on_sale": false, "is_bestseller": true, "same_day_eligible": true }, { "position": 5, "product_id": "P458268", "brand": "Charlotte Tilbury", "name": "Mini Pillow Talk Lipstick & Liner Set", "url": "https://www.sephora.com/product/charlotte-tilbury-mini-pillow-talk-lip-duo-P458268?skuId=2801371", "price": 18.2, "list_price": 26, "sale_price": 18.2, "value_price": 37, "price_text": "$26.00", "rating": 3.6219, "review_count": 1674, "on_sale": true, "sale_scope": "full", "is_sephora_exclusive": true, "same_day_eligible": true } ], "categories": [ { "category_id": "cat140006", "name": "Makeup", "product_count": 168 }, { "category_id": "cat1830032", "name": "Mini Size", "product_count": 7 } ], "related_searches": [ "foundation", "lip gloss", "lip liner", "dior lipstick" ] }, "response_time": 2982}Live call against the real endpoint, with same-day eligibility for ZIP 10001. 3 free runs, then it's your own key.
What is the Scavio Sephora API?
The Scavio Sephora API is a REST API that returns sephora.com (US) product data as structured JSON. Sephora has no public API. Its 3 POST endpoints cover search, category listings and product detail with every shade's price, stock flags, ingredients, rating and review themes, at 1 credit per call.
- 3
- endpoints, all live in production
- 1
- credit per call, every endpoint
- 60
- products per search or category page
The Sephora data buyers actually need
What each shade costs, whether it is on sale, and what reviewers say about it.
Every shade, with its own price
POST /api/v1/sephora/productProduct returns each shade and size as a sku with price, list and sale price, in_stock, only_few_left, ingredients, swatch and images. Our capture of a MAC lipstick returned 31 skus: full-size shades at $25, minis at $16.
What reviews say, in one call
POST /api/v1/sephora/productRating, review count and loves count, plus Sephora's summary of its reviews and the pro and con themes behind it with counts, such as Pigment (88 pros) and Dryness (21 cons).
Search with sale and bestseller flags
POST /api/v1/sephora/search60 products per page sorted by relevance, best selling, rating, price or newest, each with price, sale price, value price for sets, rating, review count and bestseller, new and exclusive flags.
Whole categories, paged
POST /api/v1/sephora/categoryPass any sephora.com/shop/ name, such as lipstick or face-serum, and page every product in it, with the category's total, parent, subcategories and breadcrumbs.
Same-day eligibility by ZIP
POST /api/v1/sephora/searchAdd a US ZIP to a search and each product says whether it can be delivered same day there. For ZIP 10001, 55 of the 60 lipstick results could.
All 3 Sephora API endpoints
Every route is a POST, returns JSON, and takes the same API key. 1 credit per successful call.
| Endpoint | Returns | Credits |
|---|---|---|
Search/api/v1/sephora/search | Keyword search, 60 per page, six sorts: product id, brand, name, price, list and sale price, price range, value price, rating, review count, sale and bestseller flags, category facets and related searches; same-day eligibility with a ZIP | 1 |
Category/api/v1/sephora/category | Every product in a sephora.com/shop/ category, 60 per page, in the search shape, plus total count, parent category, subcategories and breadcrumbs | 1 |
Product detail/api/v1/sephora/product | One product by URL or id: rating, review count, loves, review summary and pro/con themes, description, and every shade or size as a sku with its own price, stock flags and ingredients | 1 |
50 free credits on signup covers 50 Sephora calls. See plans
Search Sephora, then open every shade
Search returns prices, sale flags and ratings for 60 products a page; product turns one result into every shade and size with its own price. The response on the right is a real capture.
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key")
# Search, best sellers first, with same-day eligibility for ZIP 10001 - 1 credit
res = client.sephora.search(query="lipstick", sort="best_selling", zip="10001")
p = res["data"]["products"][0]
print(p["brand"], p["name"], p["price_text"], p["rating"], p["review_count"])
# Every shade and size of that product, with its own price - 1 credit
detail = client.sephora.product(url=p["url"])["data"]
print(detail["review_summary"])
for s in detail["skus"]:
print(s["variation_value"], s["size"], s["price"], s["in_stock"])
# A whole category, page 2 - 1 credit
serums = client.sephora.category(category="face-serum", page=2)["data"]["products"]{
"data": {
"query": "lipstick",
"page": 1,
"sort": "relevance",
"zip": "10001",
"total_results": 169,
"total_pages": 3,
"count": 60,
"products": [
{
"position": 1,
"product_id": "P510799",
"brand": "MAC Cosmetics",
"name": "M·A·Cximal Silky Matte 12HR Wear Lipstick",
"url": "https://www.sephora.com/product/mac-cosmetics-m-a-cximal-silky-matte-lipstick-P510799?skuId=2764421",
"price": 16,
"list_price": 16,
"sale_price": null,
"price_range": { "min": 16, "max": 25 },
"price_text": "$16.00 - $25.00",
"rating": 4.5879,
"review_count": 774,
"more_colors": 27,
"on_sale": false,
"is_bestseller": true,
"same_day_eligible": true
},
{
"position": 5,
"product_id": "P458268",
"brand": "Charlotte Tilbury",
"name": "Mini Pillow Talk Lipstick & Liner Set",
"url": "https://www.sephora.com/product/charlotte-tilbury-mini-pillow-talk-lip-duo-P458268?skuId=2801371",
"price": 18.2,
"list_price": 26,
"sale_price": 18.2,
"value_price": 37,
"price_text": "$26.00",
"rating": 3.6219,
"review_count": 1674,
"on_sale": true,
"sale_scope": "full",
"is_sephora_exclusive": true,
"same_day_eligible": true
}
],
"categories": [
{ "category_id": "cat140006", "name": "Makeup", "product_count": 168 },
{ "category_id": "cat1830032", "name": "Mini Size", "product_count": 7 }
],
"related_searches": ["foundation", "lip gloss", "lip liner", "dior lipstick"]
},
"response_time": 2982
}Why not the official Sephora API?
Sephora has no public API for product, price or review data.
Sephora, without an API
- No public API or self-serve developer key for product, price or review data
- Each shade and size has its own price, so one product means many prices to read
- Review themes and summaries sit on product pages with no export
- Category listings and search results have no bulk download
Scavio Sephora API
- One API key, issued at signup, with no Sephora account
- Every shade and size of a product as a priced sku in one call
- Rating, review count, review summary and pro and con themes
- Search and whole categories, 60 products a page
- Same JSON envelope as every other Scavio platform
Scavio returns publicly available data only, and never signs in as a Sephora customer.
What developers build with it
Beauty price tracking
Track list and sale prices for the shades and sizes you care about, and catch the day a product goes on sale in full or in part.
product + searchBrand and shelf monitoring
Page a category or a brand query to see where a brand ranks, which of its products carry bestseller, new or exclusive flags, and how ratings move.
category + searchReview insight without scraping review pages
Pull Sephora's review summary and the pro and con themes with counts for a product list, to compare how shoppers talk about competing formulas.
productShade and ingredient catalogs
Build a shade finder or an ingredient checker from each sku's shade name, description, swatch, size, highlights and full ingredient list.
productRetail competitive intelligence
Compare a beauty product's Sephora price with Amazon, Walmart and Target on one API key.
search + Amazon + Walmart + TargetHow to get Sephora data as JSON
- 1
Get an API key
Sign up for a Scavio account and copy your key from the dashboard. You get 50 credits free on signup, with no card required and no Sephora account.
- 2
Search or browse a category
Send {"query": "lipstick"} to https://api.scavio.dev/api/v1/sephora/search, or {"category": "lipstick"} to /api/v1/sephora/category, with an Authorization: Bearer header. Each product comes back with its url and product_id.
- 3
Open the product
Pass that url (or product_id) to /api/v1/sephora/product for every shade and size with its own price and stock flags, the ingredients, and the review summary and themes.
Sephora API FAQ
Does Sephora have a public API?
+
No. Sephora does not offer a public developer API for product, price or review data. The Scavio Sephora API fills that gap with 3 POST endpoints that return sephora.com (US) data as structured JSON: search, category listings and product detail.
What is the Scavio Sephora API?
+
It is a REST API that returns public sephora.com product data as structured JSON: keyword search with six sorts, every product in a category, and full product detail with each shade and size as a sku, the review summary and the pro and con review themes. Every call costs 1 credit.
Which prices does it return?
+
The sephora.com (US) online prices, in dollars. Each listing has price, list_price and sale_price; price is the sale price when there is one, else the list price. The API does not return in-store or store-specific prices.
What does the zip parameter do?
+
On search only, a US ZIP fills same_day_eligible on each product: whether it can be delivered same day to that ZIP. It does not change prices or results. Without a zip, same_day_eligible is null. For ZIP 10001, 55 of the 60 lipstick results were eligible.
How do I get the price of each shade or size?
+
Call /api/v1/sephora/product. Per-shade and per-size prices are in skus[], each with price, list_price, sale_price and on_sale. The product itself carries only price_min and price_max. Our capture of a MAC lipstick returned 31 skus: 0.12 oz shades at $25 and 0.06 oz minis at $16.
Why does a search result show a lower price than the product?
+
When a product's sizes are priced differently, the listing's price_text is the range ("$16.00 - $25.00"), price_range has both ends, and price is the low end, usually a mini size. Open the product for the price of each size.
Does the API return Sephora reviews?
+
It returns rating, review count and loves count, plus Sephora's review summary and its pro and con themes with counts (for example Pigment, 88 pros, and Dryness, 21 cons). It does not return individual review text.
Can I check stock?
+
Product returns in_stock and only_few_left for each sku online. pickup_eligible and same_day_eligible are each sku's general eligibility flags. Stock at a particular Sephora store is not available.
How do I browse a Sephora category?
+
POST the name from a sephora.com/shop/ URL, such as lipstick, face-serum or makeup-cosmetics, or the full URL, to /api/v1/sephora/category. It returns 60 products per page plus the total count, parent category, subcategories and breadcrumbs. Lipstick listed 153 products over 3 pages.
How do I find products on sale?
+
Every search and category result carries on_sale and sale_scope: full when every shade is on sale, partial when only some are. Sale items show list_price and sale_price side by side, and sets carry a value_price.
How many results can I get?
+
60 products per page and up to 100 pages per query or category. Our lipstick search returned 169 results over 3 pages. A page past the end returns an empty products list.
How much does a Sephora request cost?
+
Every Sephora endpoint costs 1 credit. New accounts get 50 free credits on signup, one time, with no card required. Paid plans start at $30 per month for 7,000 credits.
How fresh is the data?
+
Every request fetches live from Sephora at the moment you call it, and nothing is cached. Each response carries fetched_at, the time the data was retrieved.
Which languages and tools are supported?
+
Every endpoint is a plain HTTPS POST with a JSON body, so any language works. Scavio also ships Python and JavaScript SDKs, a remote MCP server at mcp.scavio.dev for AI agents, and an n8n community node, all on the same API key.
Is using Sephora data legal?
+
Scavio returns publicly available sephora.com data and does not access Beauty Insider accounts or order history. You remain responsible for how you use the data, including compliance with Sephora's terms. Talk to your own counsel for your specific use case.
Explore more of Scavio
Sephora API docs
All 3 endpoints with params and real responses.
Amazon API
Search, product detail by ASIN and seller offers.
Walmart API
Search, product, reviews and store-level pricing.
Target API
Search, categories, detail and reviews.
Google Shopping API
Compare prices across stores for one product.
Costco API
Warehouse prices, stock and member deals.
Try the Sephora API free
50 free credits on signup, no card. Your first request is a POST with a product name in it.