Sephora Scraper
Pricing
from $1.00 / 1,000 results
Sephora Scraper
Extract product details, prices, and reviews directly from Sephora's vast catalog. Unlock valuable beauty market insights, track cosmetics trends, and power your competitor analysis with ease. For the most reliable and seamless data extraction, residential proxies are recommended.
Pricing
from $1.00 / 1,000 results
Rating
5.0
(4)
Developer
Shahid Irfan
Maintained by CommunityActor stats
2
Bookmarked
17
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
What does Sephora Scraper do?
Sephora Scraper is a Sephora product scraper for collecting structured product listings from public category pages on sephora.me. Enter a Sephora category URL, choose how many products and pages to collect, and receive a clean dataset with product names, brands, prices, ratings, reviews, availability, badges, images, and direct product links.
The Actor starts with new makeup products by default, but it can also process other Sephora category pages on the same storefront. The resulting dataset is useful for beauty market research, price monitoring, assortment analysis, merchandising, and competitor tracking.
Why use Sephora Scraper?
- Product and price research - Collect current prices, previous prices when available, currency, ratings, and review counts in one dataset.
- Beauty assortment analysis - Compare brands, product types, product nature, shade or variant counts, and category composition.
- Availability monitoring - Track
in_stockandis_low_stocksignals across scheduled runs. - Launch and exclusivity tracking - Identify products marked as new or exclusive to Sephora.
- Automation-ready output - Download results as JSON, CSV, Excel, XML, or connect the dataset to downstream workflows through Apify integrations and API access.
- Controlled collection size - Set a product limit and page limit for quick tests, focused category snapshots, or larger catalog runs.
What data can you extract from Sephora?
| Field | Type | Description |
|---|---|---|
product_id | String | Sephora product identifier when available |
brand | String | Product brand |
title | String | Product name |
image_url | String | Product image URL |
product_url | String | Direct product detail page URL |
current_price | Number | Current listed price |
original_price | Number | Previous price when a discount is shown |
currency | String | Price currency, commonly AED for the default locale |
rating | Number | Average customer rating |
review_count | Integer | Number of customer reviews |
shades | String | Shade or variant count label, such as 8 shades |
is_new | Boolean | Whether the listing has a new-product badge |
is_exclusive | Boolean | Whether the listing has a Sephora-exclusive badge |
in_stock | Boolean | Product availability status when provided |
is_low_stock | Boolean | Low-stock signal when provided |
product_type | String | Product type classification |
product_nature | String | Product formulation or nature classification |
scraped_at | String | ISO timestamp for the collected record |
Fields that are not supplied by the source are omitted from that dataset item. This keeps the output compact while preserving the values that Sephora publishes.
How to use Sephora Scraper
- Open Sephora Scraper in Apify Console.
- Enter a public Sephora category URL in
startUrl, or keep the default new makeup URL. - Set
results_wantedto the maximum number of products you want. - Set
max_pagesto limit how many listing pages the run can process. - For larger or recurring runs, configure Apify Proxy, preferably with a residential proxy group.
- Start the run and review the dataset preview.
- Download the results or connect the dataset to a spreadsheet, webhook, automation, or API workflow.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startUrl | String | No | New makeup category URL | Public Sephora category page to collect from |
results_wanted | Integer | No | 20 | Maximum number of products to save; leave unset to continue through available results |
max_pages | Integer | No | 10 | Maximum number of listing pages to process |
proxyConfiguration | Object | No | Residential Apify Proxy in the input form | Optional proxy settings for higher-volume or recurring runs |
Output Data
Every saved dataset item represents one Sephora product listing. Prices are numeric values, rating is a numeric average when available, and status and badge fields are booleans when the source supplies them.
| Field | Type | Description |
|---|---|---|
product_id | String | Stable product identifier |
brand | String | Brand name |
title | String | Product title |
current_price | Number | Current price |
original_price | Number | Original price when discounted |
currency | String | Currency code |
rating | Number | Average rating |
review_count | Integer | Review total |
shades | String | Shade or variant count |
in_stock | Boolean | Current stock status |
is_low_stock | Boolean | Current low-stock status |
is_new | Boolean | New-product badge |
is_exclusive | Boolean | Sephora-exclusive badge |
product_type | String | Product type |
product_nature | String | Product nature or formulation category |
product_url | String | Product page link |
image_url | String | Product image link |
scraped_at | String | Collection timestamp |
Usage Examples
Quick Validation Run
Use a small limit and page cap to check the dataset before a larger collection.
{"results_wanted": 20,"max_pages": 3}
Collect a Skincare Category
Provide another public Sephora category URL to collect products from that category.
{"startUrl": "https://www.sephora.me/ae-en/shop/skincare/view-all/skincare","results_wanted": 100,"max_pages": 10}
Run a Larger Collection With Residential Proxy
Use a residential Apify Proxy configuration for a larger category snapshot or a recurring monitoring run.
{"startUrl": "https://www.sephora.me/ae-en/shop/makeup/face","results_wanted": 500,"max_pages": 20,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Sample Output
The following example shows a typical product record. Optional fields such as original_price may be absent when Sephora does not show a previous price.
{"product_id": "P10064328","brand": "HUDA BEAUTY","title": "Liquid Matte Mousse","image_url": "https://img-product.sephora.me/example/liquid-matte-mousse.jpg","product_url": "https://www.sephora.me/ae-en/p/liquid-matte-mousse/P10064328","current_price": 125,"currency": "AED","rating": 4.59,"review_count": 41,"shades": "8 shades","is_new": true,"is_exclusive": true,"in_stock": true,"is_low_stock": false,"product_type": "master","product_nature": "Makeup","scraped_at": "2026-08-06T09:18:27.133Z"}
Tips for Best Results
- Start with a small run - Use 20 to 50 products to confirm the category URL and output before increasing the limit.
- Use stable category URLs - Prefer permanent category pages over short-lived campaign links for repeatable monitoring.
- Keep locale paths consistent - Use the same country and language path when comparing scheduled datasets.
- Set both limits for control -
results_wantedcontrols saved products, whilemax_pageslimits the amount of source pagination processed. - Use proxy settings for scale - Residential Apify Proxy is useful for larger collections and frequent scheduled runs.
- Review missing values by source - A missing price, rating, shade count, or stock signal can mean Sephora did not publish that value for the listing.
Integrations and Export Formats
- Google Sheets - Export CSV or Excel for category comparisons, price tables, and reporting.
- Airtable - Maintain a searchable product catalog with brand and availability fields.
- Webhooks - Notify another service when a run finishes.
- Make or Zapier - Send product records into reporting, alerts, or business workflows.
- API access - Retrieve dataset items programmatically after a run.
Apify datasets can be exported as JSON, CSV, Excel, XML, and other supported formats.
Frequently Asked Questions
Can I collect categories other than new makeup?
Yes. Set startUrl to another public Sephora category URL on sephora.me. The Actor uses the category and locale information in that URL when collecting products.
Does the Actor collect product detail pages?
The main result is a category-listing dataset. Each record includes a direct product_url and image_url when those links are available in the listing data.
Does the output include discounted prices?
Yes. current_price contains the active listed price, and original_price is included when a higher previous price is available.
Why are some fields missing?
Fields are omitted when the source listing does not provide a value. This is expected for optional information such as original price, ratings, shade counts, or stock indicators.
Does the Actor remove duplicate products?
Yes. Products are deduplicated before they are saved, using the product identifier or product URL when available.
Can I schedule recurring Sephora monitoring?
Yes. Create an Apify schedule to rerun the Actor hourly, daily, weekly, or at another interval, then compare datasets to monitor price, stock, and assortment changes.
Is Sephora data legal to collect?
You are responsible for complying with Sephora's terms, applicable laws, privacy requirements, and any restrictions on using or redistributing collected data. Use this Actor for legitimate research and business workflows involving publicly available information.
Related Actors
- Sephora Reviews Scraper - Collect detailed customer reviews and ratings for Sephora products for sentiment, product research, and competitive analysis.
- Fragrantica.com Scraper - Collect perfume listings, ratings, fragrance notes, reviews, and price signals for beauty and fragrance market research.
Support
For issues, feature requests, or reports about changed Sephora fields, use the Issues or contact options on the Actor page in Apify Console.
Legal Notice
This Actor is intended for legitimate collection and analysis of publicly available product information. You are responsible for complying with Sephora's terms of service and all applicable laws. Do not use collected data for unlawful purposes or in ways that violate privacy, intellectual property, or redistribution requirements.