Sephora $1💰URL | Search | Product Data and Reviews
Pricing
from $1.00 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
15 hours ago
Last modified
Categories
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
| Region | Storefronts |
|---|---|
| Americas | us (sephora.com), mx (sephora.com.mx) |
| APAC | com.au (sephora.com.au), nz (sephora.nz), sg (sephora.sg), my (sephora.my), id (sephora.co.id), th (sephora.co.th), ph (sephora.ph) |
| Europe | de (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.
| Field | Example |
|---|---|
| market | sea-nz |
| source.id | 00000001 |
| source.canonicalUrl | https://www.sephora.nz/products/sample-foundation |
| source.retailer | SEPHORA |
| source.currency | NZD |
| source.locale | en-NZ |
| brand | Sample Brand |
| title | Sample Foundation |
| subtitle | 30ml |
| 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"] |
| currentSku | 0000000 |
| categories | ["Makeup", "Face", "Foundation"] |
| options[].name | shade |
| options[].values[].value | 1 Fair Neutral |
| variants[].sku | 0000000 |
| variants[].shade | 1 Fair Neutral |
| variants[].price.current | 77.0 |
| variants[].price.original | 77.0 |
| variants[].price.stockStatus | IN_STOCK |
| variants[].swatchUrl | https://image-optimizer.example.com/swatches/icon_swatch_0000.png |
| variants[].imageUrl | https://image-optimizer.example.com/products/sample.jpg |
| variants[].inventory | 13 |
| medias[].url | https://image-optimizer.example.com/products/sample-zoom.jpg |
| medias[].type | image |
| medias[].role | hero |
| stats.rating | 4.8 |
| stats.reviewCount | 971 |
| stats.recommendedCount | 800 |
| ratingHistogram | [{"RatingValue": 5, "Count": 700}, ...] |
| secondaryRatings | {"Quality": {"AverageRating": 4.8}} |
| sentiments | {"Pros": [{"Value": "Long-lasting", "Count": 300}]} |
| topReviews[].rating | 5 |
| topReviews[].title | "Best foundation I have ever tried" |
| topReviews[].body | "Sample review text appears here..." |
| topReviews[].skinType | combination |
| topReviews[].skinTone | fair |
| topReviews[].publishedAt | 2026-01-01T00:00:00.000Z |
| topQuestions[].question | Is this product fragrance free? |
| isNewArrival | false |
| isOnSpecial | true |
| wasPrice | 36.0 |
| savingsAmount | 18.0 |
| savingsPercent | 50 |
| soldOut | false |
| highlights | ["NEW", "Only at Sephora"] |
| articles[].type | how-to |
| frontend | sea |
| scrapedAt | 2026-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: truequeries 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
| Parameter | Type | Default | Description |
|---|---|---|---|
| mode | enum | search | "search" or "url" |
| storefront | enum | us | One of 21+ regional sites; only used in search mode |
| queries | string[] | ["foundation"] | Keywords to search; one search per query |
| categories | string[] | [] | Category slugs from the storefront's nav |
| brands | string[] | [] | Brand slugs to filter results client-side |
| priceMin | int | unset | Minimum product price in storefront currency |
| priceMax | int | unset | Maximum product price in storefront currency |
| ratingMin | enum | 0 | Minimum average rating (0/3/4/5) |
| sortBy | enum | relevance | relevance, popular, rating, price-asc, price-desc, newest |
| newOnly | bool | false | Only products marked new arrival |
| exclusiveOnly | bool | false | Only "Only at Sephora" products |
| specialsOnly | bool | false | Scrape the "Sale" collection instead of queries/categories (SEA storefronts only, see above) |
| urls | string[] | one example | URLs to crawl in URL mode |
| fetchDetails | bool | false | Pull the full product detail (ingredients, claims, full variant matrix, awards) |
| fetchReviews | bool | false | Pull top reviews and Bazaarvoice rating histogram |
| maxReviewsPerProduct | int | 10 | Cap reviews per product (1-100) |
| fetchQna | bool | false | Pull top questions and answers |
| maxQnaPerProduct | int | 5 | Cap Q&A per product (1-50) |
| maxPages | int | none (unlimited) | Optional bound on result pages walked per query/category/URL. Leave empty to walk every result page. |
| maxProducts | int | 20 | Total cap across all queries/URLs. Set to 0 for unlimited. |
| proxyConfiguration | object | residential US | Proxy block; residential is recommended |
| resumeFromCheckpoint | bool | true | Resume a same-run migration/Resurrect from the KV store checkpoint |
| resumeFromRunId | string | none | Paste 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. |
| incrementalMode | bool | false | Turn 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. |
| stateKey | string | none (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. |
| emitUnchanged | bool | false | Also return (and bill for) products that have not changed since the last run, marked UNCHANGED. |
| emitExpired | bool | false | Also 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.
- Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
- For Notion, also set
notionParentPageUrlto 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.