Sephora $1💰URL | Search | Product Data and Reviews avatar

Sephora $1💰URL | Search | Product Data and Reviews

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Sephora $1💰URL | Search | Product Data and Reviews

Sephora $1💰URL | Search | Product Data and Reviews

From $1/1K. Scrape Sephora products across 21+ storefronts (US, AU, NZ, SG, MY, ID, TH, PH, MX, DE, RO, SE, GR, DK) with a unified schema. Extract brand, title, ingredients, claims, full SKU and shade variants, ratings histogram, top reviews, Q&A, and rich media.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

15 hours ago

Last modified

Share

Sephora Product Scraper

Scrape the full Sephora product catalog across 14 storefronts (US, AU, NZ, SG, MY, ID, TH, PH, MX, DE, RO, SE, GR, DK) with one unified output schema. Pull brand, title, ingredients, claims, full variant matrix with shades and SKUs, ratings histogram, top reviews, top Q&A, and rich media in a single dataset that drops cleanly into BI, ETL, or comparison tooling.

Why this scraper

  • 14 regional storefronts under one input form, no per-region forking
  • 80+ fields per product: variants (every shade, size, SKU, UPC), options, ingredients, claims, awards, ratings histogram, secondary ratings, sentiment tags, top reviews, top Q&A
  • Search by keyword, by category slug, or paste any Sephora URL (product, category, brand, search) and the scraper auto-detects the storefront
  • Cross-region market field (sea-au, sea-nz, americas-us, europe-de, ...) so multi-market analytics work out of the box
  • Forward-paginated walks with checkpoint resume; pulls 24-60 fully-attributed products per search request

Storefronts

RegionStorefronts
Americasus (sephora.com), mx (sephora.com.mx)
APACcom.au (sephora.com.au), nz (sephora.nz), sg (sephora.sg), my (sephora.my), id (sephora.co.id), th (sephora.co.th), ph (sephora.ph)
Europede (sephora.de), ro (sephora.ro), se (sephora.se), gr (sephora.gr), dk (sephora.dk)

Data you get

Sample shape, values are illustrative placeholders, not from a live listing.

FieldExample
marketsea-nz
source.id00000001
source.canonicalUrlhttps://www.sephora.nz/products/sample-foundation
source.retailerSEPHORA
source.currencyNZD
source.localeen-NZ
brandSample Brand
titleSample Foundation
subtitle30ml
description"

A self-priming foundation, primes, covers and sets...

"
ingredients"Aqua, Cyclopentasiloxane, Glycerin, ..."
howToUse"Shake well. Apply a small amount onto the back of your hand and use a brush..."
claims["Cruelty free", "Paraben free", "Vegan"]
currentSku0000000
categories["Makeup", "Face", "Foundation"]
options[].nameshade
options[].values[].value1 Fair Neutral
variants[].sku0000000
variants[].shade1 Fair Neutral
variants[].price.current77.0
variants[].price.original77.0
variants[].price.stockStatusIN_STOCK
variants[].swatchUrlhttps://image-optimizer.example.com/swatches/icon_swatch_0000.png
variants[].imageUrlhttps://image-optimizer.example.com/products/sample.jpg
variants[].inventory13
medias[].urlhttps://image-optimizer.example.com/products/sample-zoom.jpg
medias[].typeimage
medias[].rolehero
stats.rating4.8
stats.reviewCount971
stats.recommendedCount800
ratingHistogram[{"RatingValue": 5, "Count": 700}, ...]
secondaryRatings{"Quality": {"AverageRating": 4.8}}
sentiments{"Pros": [{"Value": "Long-lasting", "Count": 300}]}
topReviews[].rating5
topReviews[].title"Best foundation I have ever tried"
topReviews[].body"Sample review text appears here..."
topReviews[].skinTypecombination
topReviews[].skinTonefair
topReviews[].publishedAt2026-01-01T00:00:00.000Z
topQuestions[].questionIs this product fragrance free?
isNewArrivalfalse
isOnSpecialtrue
wasPrice36.0
savingsAmount18.0
savingsPercent50
soldOutfalse
highlights["NEW", "Only at Sephora"]
articles[].typehow-to
frontendsea
scrapedAt2026-01-01T00:00:00.000Z
changeType (incremental mode only)NEW
changedFields (incremental mode only)["stats", "variants"]
firstSeenAt (incremental mode only)2026-01-01T00:00:00Z
lastSeenAt (incremental mode only)2026-07-28T00:00:00Z

How to use

Search by keyword

{
"mode": "search",
"storefront": "nz",
"queries": ["foundation", "mascara"],
"maxPages": 5,
"maxProducts": 100,
"fetchDetails": true,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "NZ"
}
}

Search by category

{
"mode": "search",
"storefront": "us",
"categories": ["shop/makeup-cosmetics", "shop/skincare"],
"ratingMin": 4,
"maxPages": 3,
"maxProducts": 60,
"fetchDetails": true,
"fetchReviews": true,
"maxReviewsPerProduct": 10,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
}
}

Specials (Sale collection, SEA storefronts)

{
"mode": "search",
"storefront": "com.au",
"specialsOnly": true,
"maxPages": 3,
"maxProducts": 60,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "AU"
}
}

URL mode (single product)

{
"mode": "url",
"urls": [
"https://www.sephora.nz/products/rare-beauty-true-to-myself-natural-matte-longwear-foundation"
],
"fetchDetails": true,
"fetchReviews": true,
"fetchQna": true,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "NZ"
}
}

URL mode (multiple regions in one run)

{
"mode": "url",
"urls": [
"https://www.sephora.nz/search?keyword=mascara",
"https://www.sephora.com.au/search?keyword=mascara",
"https://www.sephora.fr/recherche?q=mascara"
],
"maxPages": 2,
"maxProducts": 30,
"fetchDetails": false,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Specials, was-price & discount

Sephora's SEA storefronts (AU/NZ/SG/MY/ID/TH/PH) have exactly one discount collection, the site's own "Sale" page (/sale): there is no separate clearance, multibuy or member-price collection on that group. Set

specialsOnly: true
to scrape it. The Sale collection does not combine with queries or categories, so those inputs are ignored while it is on and the whole Sale collection is scraped instead. specialsOnly covers the SEA storefronts only; it is a no-op elsewhere (the US/EU/MX/ME storefronts have their own promo surfaces, not yet covered: file an issue if you need one).

Every product record, from a normal search, a URL, or a specialsOnly run, carries four additive, always-present discount fields: isOnSpecial (bool), wasPrice (the strike-through original price, null when not discounted), savingsAmount and savingsPercent. A non-discounted product gets isOnSpecial: false and wasPrice: null, never a fabricated markdown. soldOut (bool) reports stock status.

Input parameters

ParameterTypeDefaultDescription
modeenumsearch"search" or "url"
storefrontenumusOne of 21+ regional sites; only used in search mode
queriesstring[]["foundation"]Keywords to search; one search per query
categoriesstring[][]Category slugs from the storefront's nav
brandsstring[][]Brand slugs to filter results client-side
priceMinintunsetMinimum product price in storefront currency
priceMaxintunsetMaximum product price in storefront currency
ratingMinenum0Minimum average rating (0/3/4/5)
sortByenumrelevancerelevance, popular, rating, price-asc, price-desc, newest
newOnlyboolfalseOnly products marked new arrival
exclusiveOnlyboolfalseOnly "Only at Sephora" products
specialsOnlyboolfalseScrape the "Sale" collection instead of queries/categories (SEA storefronts only, see above)
urlsstring[]one exampleURLs to crawl in URL mode
fetchDetailsboolfalsePull the full product detail (ingredients, claims, full variant matrix, awards)
fetchReviewsboolfalsePull top reviews and Bazaarvoice rating histogram
maxReviewsPerProductint10Cap reviews per product (1-100)
fetchQnaboolfalsePull top questions and answers
maxQnaPerProductint5Cap Q&A per product (1-50)
maxPagesintnone (unlimited)Optional bound on result pages walked per query/category/URL. Leave empty to walk every result page.
maxProductsint20Total cap across all queries/URLs. Set to 0 for unlimited.
proxyConfigurationobjectresidential USProxy block; residential is recommended
resumeFromCheckpointbooltrueResume a same-run migration/Resurrect from the KV store checkpoint
resumeFromRunIdstringnonePaste a previous run/dataset ID to skip products it already collected and return only new ones (delta resume). For recurring daily/weekly monitoring of the same search, use Incremental mode below instead.
incrementalModeboolfalseTurn on for daily/recurring monitoring of the same search/category/URLs. Classifies every product as NEW/UPDATED/UNCHANGED/REAPPEARED/EXPIRED against state remembered from the previous run instead of pasting a run ID each time.
stateKeystringnone (auto)Name a monitoring campaign to keep its state stable, or to deliberately share state across differently-configured runs. Leave empty to derive a key automatically from the storefront/search/category/URL and filter settings.
emitUnchangedboolfalseAlso return (and bill for) products that have not changed since the last run, marked UNCHANGED.
emitExpiredboolfalseAlso return (and bill for) products that were present in a previous run but are no longer found, marked EXPIRED. Only produced after a run fully scans the tracked search/category/URLs -- not when Max products capped it or when Resume was used.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape — the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each record — not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

Output example

Sample shape, values are illustrative placeholders, not from a live listing.

{
"market": "sea-nz",
"source": {
"id": 0,
"crawlUrl": "https://www.sephora.nz/products/sample-foundation",
"canonicalUrl": "https://www.sephora.nz/products/sample-foundation",
"retailer": "SEPHORA",
"currency": "NZD",
"locale": "en-NZ"
},
"brand": "Sample Brand",
"title": "Sample Foundation",
"subtitle": "30ml",
"description": "<p>A self-priming foundation, primes, covers and sets...</p>",
"shortDescription": "<p>3-in-1 foundation primes, covers and sets...</p>",
"ingredients": "Aqua, Cyclopentasiloxane, Glycerin, ...",
"howToUse": "Shake well. Apply a small amount onto the back of your hand and use a brush or fingertips to blend onto skin.",
"claims": ["Cruelty free", "Paraben free", "Vegan"],
"currentSku": "0000000",
"categories": ["Makeup", "Face", "Foundation"],
"options": [
{
"name": "shade",
"id": "0",
"values": [{ "value": "1 Fair Neutral", "label": "1 Fair Neutral", "id": "0" }]
}
],
"variants": [
{
"id": "0",
"sku": "0000000",
"gtin": "000000000000",
"name": "1 Fair Neutral",
"shade": "1 Fair Neutral",
"size": "30ml",
"price": {
"current": 77.0,
"original": 77.0,
"currency": "NZD",
"stockStatus": "IN_STOCK",
"available": true,
"inventory": 13
},
"highlights": ["NEW", "Only at Sephora"],
"swatchUrl": "https://image-optimizer.example.com/swatches/icon_swatch_0000.png",
"imageUrl": "https://image-optimizer.example.com/products/sample.jpg"
}
],
"medias": [
{ "url": "https://image-optimizer.example.com/products/sample-zoom.jpg", "type": "image", "role": "hero" }
],
"stats": {
"reviewCount": 971,
"rating": 4.8,
"recommendedCount": 800,
"totalPhotoCount": 100
},
"ratingHistogram": [
{ "RatingValue": 5, "Count": 700 },
{ "RatingValue": 4, "Count": 200 },
{ "RatingValue": 3, "Count": 50 },
{ "RatingValue": 2, "Count": 15 },
{ "RatingValue": 1, "Count": 6 }
],
"topReviews": [
{
"id": "0",
"rating": 5,
"title": "Best foundation I have ever tried",
"body": "Sample review text appears here...",
"publishedAt": "2026-01-01T00:00:00.000Z",
"skinType": "combination",
"skinTone": "fair"
}
],
"highlights": ["NEW", "Only at Sephora"],
"isOnSpecial": true,
"wasPrice": 36.0,
"savingsAmount": 18.0,
"savingsPercent": 50,
"soldOut": false,
"frontend": "sea",
"scrapedAt": "2026-01-01T00:00:00.000Z"
}

Plan requirement

  • Free plan: works for AU/NZ/EU storefronts on the default proxy in many cases, may return zero results on the US storefront where residential exits are needed.
  • Starter or higher: required for full reliability across all 21+ storefronts. Residential proxy access is included from Starter; pin the country to the storefront's home country (US for sephora.com, NZ for sephora.nz, FR for sephora.fr, etc.) for the most stable runs.
  • Choose the matching storefront in the input form (or paste URLs from that storefront in URL mode); the actor follows your input and does not auto-redirect across regions.