Sephora Scraper avatar

Sephora Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Sephora Scraper

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

Shahid Irfan

Maintained by Community

Actor stats

2

Bookmarked

17

Total users

1

Monthly active users

4 days ago

Last modified

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_stock and is_low_stock signals 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?

FieldTypeDescription
product_idStringSephora product identifier when available
brandStringProduct brand
titleStringProduct name
image_urlStringProduct image URL
product_urlStringDirect product detail page URL
current_priceNumberCurrent listed price
original_priceNumberPrevious price when a discount is shown
currencyStringPrice currency, commonly AED for the default locale
ratingNumberAverage customer rating
review_countIntegerNumber of customer reviews
shadesStringShade or variant count label, such as 8 shades
is_newBooleanWhether the listing has a new-product badge
is_exclusiveBooleanWhether the listing has a Sephora-exclusive badge
in_stockBooleanProduct availability status when provided
is_low_stockBooleanLow-stock signal when provided
product_typeStringProduct type classification
product_natureStringProduct formulation or nature classification
scraped_atStringISO 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

  1. Open Sephora Scraper in Apify Console.
  2. Enter a public Sephora category URL in startUrl, or keep the default new makeup URL.
  3. Set results_wanted to the maximum number of products you want.
  4. Set max_pages to limit how many listing pages the run can process.
  5. For larger or recurring runs, configure Apify Proxy, preferably with a residential proxy group.
  6. Start the run and review the dataset preview.
  7. Download the results or connect the dataset to a spreadsheet, webhook, automation, or API workflow.

Input Parameters

ParameterTypeRequiredDefaultDescription
startUrlStringNoNew makeup category URLPublic Sephora category page to collect from
results_wantedIntegerNo20Maximum number of products to save; leave unset to continue through available results
max_pagesIntegerNo10Maximum number of listing pages to process
proxyConfigurationObjectNoResidential Apify Proxy in the input formOptional 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.

FieldTypeDescription
product_idStringStable product identifier
brandStringBrand name
titleStringProduct title
current_priceNumberCurrent price
original_priceNumberOriginal price when discounted
currencyStringCurrency code
ratingNumberAverage rating
review_countIntegerReview total
shadesStringShade or variant count
in_stockBooleanCurrent stock status
is_low_stockBooleanCurrent low-stock status
is_newBooleanNew-product badge
is_exclusiveBooleanSephora-exclusive badge
product_typeStringProduct type
product_natureStringProduct nature or formulation category
product_urlStringProduct page link
image_urlStringProduct image link
scraped_atStringCollection 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_wanted controls saved products, while max_pages limits 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.

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.

  • 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.

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.