Sephora Eu Scraper
Pricing
from $4.50 / 1,000 results
Sephora Eu Scraper
Sephora EU Scraper is a professional-grade actor designed to extract high-fidelity product data from Sephora's European stores. Built for reliability and scale, it intelligently handles authentication, manages sessions, and delivers detailed structured data for your e-commerce analytics.
Pricing
from $4.50 / 1,000 results
Rating
0.0
(0)
Developer
Richard Feng
Actor stats
1
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Sephora EU Scraper is a professional-grade Apify actor designed to extract high-fidelity product data from Sephora's European stores. Built for reliability and scale, it intelligently handles authentication, manages sessions, and delivers detailed structured data for your e-commerce analytics.
🚀 Features
- Deep Product Extraction: Retrieves detailed product specifications, including:
- Multiple variants (shades, sizes) with individual pricing and stock status.
- High-resolution image galleries and media assets.
- Rich HTML descriptions, short descriptions, ingredients, and usage guides.
- Review counts, ratings, and wishlist/loves metrics.
- Variant highlights and product flags.
- Smart URL Parsing: Automatically detects category and product pages from standard web URLs.
- Category pages: URLs ending with
-c{digits}/(e.g.,maquillage-c302/) - Product pages: URLs ending with
-P{digits}.html(e.g.,-P1000212190.html)
- Category pages: URLs ending with
- Multi-Market Support: Supports 9 European markets via locale configuration.
- Anti-Blocking Architecture:
- Uses browser-grade TLS fingerprinting to bypass WAF detection without proxies.
- Automatic guest token management with refresh on expiry.
- Smart retries with exponential backoff (up to 3 attempts).
- Scalable Performance: Configurable concurrency to balance speed and stability.
🌍 Supported Markets
| Locale | Market | Domain | Currency |
|---|---|---|---|
fr-FR | France | sephora.fr | EUR |
it-IT | Italy | sephora.it | EUR |
de-DE | Germany | sephora.de | EUR |
es-ES | Spain | sephora.es | EUR |
pl-PL | Poland | sephora.pl | PLN |
cs-CZ | Czech Republic | sephora.cz | CZK |
el-GR | Greece | sephora.gr | EUR |
ro-RO | Romania | sephora.ro | RON |
pt-PT | Portugal | sephora.pt | EUR |
📋 Input Parameters
The actor accepts a JSON object with the following configuration:
| Field | Type | Description | Default |
|---|---|---|---|
startUrls | Array | A list of Sephora EU URLs to scrape. Supports category and product pages. | [] |
categoryIds | Array | Catalog category IDs (e.g. ["C302", "C301"]). Alternative to startUrls. | ["C302"] |
locale | String | BCP 47 locale that selects the EU market. See supported markets above. | "fr-FR" |
maxProducts | Integer | Maximum number of products to scrape per run. | 100 |
maxConcurrency | Integer | Number of parallel product detail requests (1–10). | 3 |
proxyConfiguration | Object | Required. Proxy settings. Residential proxies are recommended. | — |
Common French Category IDs
| ID | Name | Approx. Products |
|---|---|---|
| C302 | Maquillage (Makeup) | ~2,700 |
| C301 | Parfum (Fragrance) | ~2,000 |
| C303 | Soin Visage (Skincare) | ~1,800 |
| C304 | Corps & Bain (Body & Bath) | ~1,500 |
| C307 | Cheveux (Hair) | ~1,200 |
| C342 | Teint (Complexion) | ~885 |
| C343 | Yeux (Eyes) | ~600 |
| C344 | Lèvres (Lips) | ~500 |
Input Examples
Using Start URLs:
{"startUrls": [{ "url": "https://www.sephora.fr/shop/corps-et-bain/soin-du-corps/huile-nourrissante-c479/" },{ "url": "https://www.sephora.fr/p/prada-reflection----baume-liquide-effet-gloss-P1000212190.html" }],"locale": "fr-FR","maxProducts": 100,"proxyConfiguration": { "useApifyProxy": true }}
Using Category IDs:
{"categoryIds": ["C302", "C301"],"locale": "fr-FR","maxProducts": 500,"maxConcurrency": 3,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
Scraping a different market (Italy):
{"categoryIds": ["C302"],"locale": "it-IT","maxProducts": 200,"proxyConfiguration": { "useApifyProxy": true }}
📦 Output Data
Data is stored in the default dataset in JSON format. Each item represents a unique product.
Data Schema
| Field | Type | Description |
|---|---|---|
source | Object | Metadata about the crawl (ID, URL, Retailer, Currency). |
brand | String | Product brand name. |
title | String | Product title (localized to the selected market). |
description | String | Full HTML description. |
shortDescription | String | Brief HTML summary. |
categories | Array | Category IDs and product family. |
options | Array | Variation attributes (shades, sizes) with orderable status. |
variants | Array | List of all SKUs/variants with pricing and stock. |
variants[].price | Object | Pricing details: current price, original price, stock status. |
medias | Array | All images associated with the product. |
stats | Object | Review count, rating, and loves/wishlist count. |
🔧 Advanced Configuration
Proxy Configuration
- Residential Proxies: Recommended for consistent access across all markets.
- Note: The scraper uses browser-grade TLS fingerprinting (via
got-scraping) that bypasses Akamai WAF in many cases without requiring a proxy. If you encounter blocks, switch to residential proxies and reduce concurrency.
Performance Tuning
- Default Concurrency: Set to
3for safe, stable operation. - Scaling Up: Increase
maxConcurrencyup to10for faster speeds with quality residential proxies. - Debugging: Set
maxProductsto a low number (e.g.,10) to verify your configuration before a full run.
❓ FAQ & Troubleshooting
Q: Which URL formats are supported?
A: Category pages ending with -c{digits}/ (e.g., sephora.fr/shop/maquillage-c302/) and product pages ending with -P{digits}.html (e.g., sephora.fr/p/product-name-P1000212190.html).
Q: Can I scrape multiple markets in one run?
A: One locale per run. Launch separate actors for each market, setting the locale field accordingly.
Q: I'm getting authentication errors.
A: The actor manages guest tokens automatically. If errors persist, try reducing maxConcurrency or adding a proxy.
Q: Does it scrape all variants of a product? A: Yes. The scraper returns all variants with individual pricing and stock status.
⚖️ Legal & Ethical Use
This actor only collects data that is publicly accessible on Sephora's website — the same product information visible to any anonymous visitor without logging in. No authentication credentials, private user data, or paywalled content is accessed.
Please use responsibly:
- Do not run at heavy load. Keep
maxConcurrencyat3or below and avoid scheduling frequent back-to-back runs. Excessive request rates may degrade the website experience for real users and could result in your IP being blocked. - Ensure your use case complies with Sephora's Terms of Service and applicable data protection laws (e.g. GDPR) in your jurisdiction.
- Do not use scraped data for purposes that compete unfairly with or harm Sephora's business.