Sephora Products Scraper avatar

Sephora Products Scraper

Pricing

from $0.56 / 1,000 results

Go to Apify Store
Sephora Products Scraper

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

Ibnu Adzim

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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

fieldwhat it does
categoriesSephora /shop/ category slugs or URLs. One search each.
maxItemsProducts per category (default 120, 0 = the whole category).
minRequestIntervalSeconds between requests. Never below 5 (see below).
proxyConfigurationUS 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.