Sephora Products Scraper
Pricing
from $0.56 / 1,000 results
Sephora Products Scraper
Every product in a Sephora US category: brand, name, price or price range in USD, sale price, rating and review count, bestseller / new / Sephora-exclusive flags, variants, image and product URL. HTTP only, no login, no proxy.
Pricing
from $0.56 / 1,000 results
Rating
0.0
(0)
Developer
Ibnu Adzim
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Sephora Products Scraper (US)
Every product in a Sephora US category: brand, product name, price or price range in USD, sale price, star rating and review count, Bestseller / New / Sephora Exclusive / Limited Edition / Online Only flags, number of variants, image and product URL.
Give it category slugs or URLs (face-serum, lipstick,
https://www.sephora.com/shop/moisturizing-cream-oils-mists); it reads every
page of each category, 60 products per page.
HTTP only, no login, no browser.
What it is for
- Price monitoring — list and sale prices across a whole category.
- Assortment and brand research — who sells what in a category, which products are bestsellers, new, or Sephora exclusives.
- Review-volume benchmarking — rating and review count for every product.
Input
| field | what it does |
|---|---|
categories | Sephora /shop/ category slugs or URLs. One search each. |
maxItems | Products per category (default 120, 0 = the whole category). |
minRequestInterval | Seconds between requests. Never below 5 (see below). |
proxyConfiguration | US residential by default (see below). |
Search (/search?keyword=) and brand pages are not supported: Sephora's
robots.txt disallows search, and this Actor only reads the category pages it
was measured against. An unsupported URL gets an invalid_input row.
Things about this site worth knowing before you trust a run
1. Prices are often ranges, and a sale can cover only some sizes
listPrice is "$82.00 - $119.00" for a product sold in several sizes
(about a quarter of products). The Actor adds priceMin / priceMax.
A discount adds salePrice, and saleScope says whether it covers
all_variants or some_variants. A partial sale can equal the bottom of the
list range — "$37.00 - $39.00" with a $37.00 sale is the $39 size marked
down — so compare against priceMax, not priceMin, in that case.
2. Sorting is not available
Asking for the site's own "Bestselling" order by URL is refused by Sephora's
firewall (HTTP 403). Rows come in Sephora's default order, with searchRank.
Bestsellers are still flagged per product (isBestseller).
3. The last page is empty, not an error
Face Serums reports 517 products: pages 1–8 hold 60, page 9 holds 37, and page 10 answers normally with nothing on it. The Actor stops at the site's own product count and checks every page it gets is the page it asked for.
4. Delivery flags are left out
Sephora's listing marks every product "not eligible" for pickup, same-day and even ship-to-home when no store is chosen. Those five fields describe a store the page doesn't have, so they are dropped rather than passed on.
5. Expect refusals — they are retried, and counted
Sephora's firewall (Akamai) judges each address + browser fingerprint
pair: the same fingerprint passes from one IP and is refused from the
next. No single fingerprint or network was reliable in testing, so every
refusal moves to another browser fingerprint and a fresh US residential IP
(up to 10 tries per page). Measured: a full 517-product category took 12
requests with 2 refused; a bad minute refused 19 of 28. Each summary row
reports refusedRequests and totalRequests.
If a page still can't be read, the category keeps the products already
read: its summary says stoppedBecause: "refused_at_page_N" and an
ERROR row (fetch_failed_partial) explains. Run again for the rest.
A page of 60 products is 200–400 KB of residential traffic; the 517-product category cost $0.02 in total.
Sephora's robots.txt asks crawlers to wait 5 seconds between requests. This Actor always does, across all categories in a run — a 500-product category takes about 45 seconds.
Output
One PRODUCT row per product — Sephora's own listing object with parsed
fields added — plus one CATEGORY_SUMMARY per category and an ERROR row
for anything that could not be read.
{"recordType": "PRODUCT","brandName": "MAC Cosmetics","displayName": "M·A·Cximal Silky Matte 12HR Wear Lipstick","priceMin": 16.0,"priceMax": 25.0,"priceIsRange": true,"onSale": false,"ratingValue": 4.5929,"reviewCount": 759,"isBestseller": true,"productId": "P510799","skuId": "2837425","productUrl": "https://www.sephora.com/product/mac-cosmetics-m-a-cximal-silky-matte-lipstick-P510799?skuId=2837425","categoryName": "Lipstick","categoryPath": ["Makeup", "Lip", "Lipstick"],"searchPage": 1,"searchRank": 1}
{"recordType": "CATEGORY_SUMMARY","_input": "face-serum","categoryName": "Face Serums","categoryPath": ["Skincare", "Treatments", "Face Serums"],"siteTotal": 517,"pagesFetched": 2,"returnedCount": 70,"stoppedBecause": "maxItems","refusedRequests": 0,"totalRequests": 2}
Limits
- Sephora US (sephora.com) only, prices in USD.
- Product pages (ingredients, full review text, every shade) are not fetched; each row links to its product page.