Sephora Product Reviews Scraper
Pricing
Pay per event
Sephora Product Reviews Scraper
Extract individual Sephora customer reviews, ratings, reviewer attributes, verified purchase signals, helpful votes, photos, and product context.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Extract individual public customer reviews from Sephora product pages and product IDs.
Turn Sephora feedback into structured data for sentiment analysis, launch monitoring, product research, and competitive intelligence—without copying reviews by hand.
- ⭐ Full ratings, titles, and review text
- 👤 Reviewer names, locations, and available beauty-profile attributes
- ✅ Recommendation, verified-purchase, incentivized, and syndicated signals
- 👍 Helpful and not-helpful vote counts
- 📷 Review photo and video URLs
- 🛍️ Product, brand, locale, and campaign context
The Actor accepts one product or a bulk list, follows Sephora product-family review relationships, paginates automatically, and saves one export-ready review per dataset row.
What does Sephora Product Reviews Scraper do?
Sephora Product Reviews Scraper collects public customer review records for products listed on sephora.com.
Give it product page URLs such as:
https://www.sephora.com/product/born-in-roma-P449116
Or provide P-number IDs such as P449116.
The Actor retrieves current review records, applies your locale, sort, and rating filters, removes duplicate review IDs, and exports the result as JSON, CSV, Excel, XML, or another Apify dataset format.
It extracts individual comments—not only the aggregate rating and review count shown in a product catalog.
Who is it for?
Beauty brands use it to watch launches, reformulations, packaging changes, and recurring product complaints.
Ecommerce and category analysts compare customer response across competing fragrances, skincare, haircare, and makeup products.
Product teams identify requested improvements, common use cases, and changing customer language.
Agencies build repeatable voice-of-customer reports for multiple beauty clients.
Researchers and data teams create structured review corpora for sentiment, topic, and recommendation analysis.
Customer experience teams track low-rating feedback and highly helpful reviews that deserve attention.
Why use this Sephora reviews scraper?
- ⚡ Faster than manual collection — paginate thousands of public review records automatically.
- 🧱 Structured output — receive stable fields instead of unstructured copied page text.
- 🎯 Targeted extraction — choose newest, most helpful, highest-rated, or lowest-rated reviews.
- 🌎 Locale control — collect all English reviews or focus on US or Canadian English.
- 🔁 Automation-ready — schedule recurring runs and connect results to your data stack.
- 💳 Pay per result — charges scale with the useful review rows saved.
- 🔍 Product-family aware — preserve both the requested ID and the actual reviewed product ID.
What Sephora review data can I extract?
| Field | Description |
|---|---|
reviewId | Stable public review identifier |
requestedProductId | P-number supplied in the Actor input |
productId | Actual reviewed product or family-member ID |
productTitle | Sephora product name |
productUrl | Canonical Sephora product page |
brandName | Product brand when available |
reviewerName | Public reviewer nickname |
reviewerLocation | Public location when supplied |
reviewerAttributes | Available age, skin, hair, eye, or fragrance preferences |
rating | Star rating from 1 to 5 |
title | Review headline |
reviewText | Full public review body |
isRecommended | Whether the reviewer recommends the product |
isVerifiedPurchase | Public verified-purchaser badge |
isIncentivized | Public incentivized-review disclosure when available |
isSyndicated | Whether the review was syndicated |
submissionTime | Review submission timestamp |
helpfulVotes | Positive helpfulness votes |
notHelpfulVotes | Negative helpfulness votes |
photos / videos | Public review media URLs |
locale | Review content locale |
scrapedAt | UTC extraction timestamp |
How to scrape Sephora reviews
- Open the Actor input page.
- Paste one or more Sephora product URLs, product IDs, or both.
- Set a small
maxReviewsPerProductfor your first run. - Choose the review order and locale.
- Optionally set minimum and maximum ratings.
- Click Start.
- Open the Dataset tab to inspect or export results.
A prefilled run collects 20 recent reviews and normally completes well within two minutes.
Input
{"productUrls": [{ "url": "https://www.sephora.com/product/born-in-roma-P449116" }],"productIds": [],"maxReviewsPerProduct": 20,"sort": "newest","locale": "allEnglish","includeRatingsOnly": false}
Input options
productUrls— Sephora product page URLs. Onlysephora.comtargets are accepted.productIds— P-number IDs such asP449116.maxReviewsPerProduct— maximum saved rows for each requested product; 1–10,000.sort—newest,mostHelpful,highestRating, orlowestRating.locale—allEnglish,en_US, oren_CA.minRating— optional minimum rating from 1 to 5.maxRating— optional maximum rating from 1 to 5.includeRatingsOnly— include submissions with a rating but no written review.
You can submit up to 100 unique products per run.
Output example
{"reviewId": "397642911","requestedProductId": "P449116","productId": "P449117","productTitle": "Donna Born In Roma Eau de Parfum Travel Spray with Bourbon Vanilla & Jasmine","productUrl": "https://www.sephora.com/product/born-in-roma-travel-spray-P449117","brandName": "Valentino","reviewerName": "Beangrean","reviewerLocation": null,"reviewerAttributes": {},"rating": 5,"title": "Great scent","reviewText": "I love the notes of this perfume and always get compliments when wearing it.","isRecommended": true,"isVerifiedPurchase": true,"isIncentivized": null,"isSyndicated": false,"submissionTime": "2026-07-11T01:36:21.000+00:00","helpfulVotes": 1,"notHelpfulVotes": 0,"totalFeedback": 1,"photos": [],"videos": [],"campaignId": "iOS App","locale": "en_US","scrapedAt": "2026-07-21T13:30:00.000Z"}
Null or empty values mean the reviewer or source did not publish that optional attribute.
Product families and review IDs
Sephora may group multiple sizes, variants, or related listings into one review family.
That means a request for P449116 can legitimately return a review whose actual productId is P449117.
Use requestedProductId to trace the input and productId to identify the exact reviewed family member.
The Actor deduplicates by reviewId, including when two supplied products overlap the same review family.
Sorting and rating filters
Use newest for launch and change monitoring.
Use mostHelpful to find comments other customers considered useful.
Use highestRating for advocacy and positive-language research.
Use lowestRating for complaint discovery and product-risk analysis.
Set both minRating and maxRating to the same value to collect one star band—for example, 1-star reviews only.
Filters are applied before rows are saved and charged.
How much does it cost to scrape Sephora reviews?
This Actor uses pay-per-event pricing:
- Start: $0.0005 per run
- Review: tiered by Apify subscription; the BRONZE reference price is $0.0000373 per saved review
You are charged only for the start event and review rows actually stored.
A small 20-review run at the BRONZE reference price is approximately $0.00125 before any platform-plan considerations.
Check the live Actor pricing tab for the current tier values before a large production run.
Scheduling a Sephora review monitor
Create an Apify schedule to run the same input daily, weekly, or monthly.
Common monitoring pattern:
- Run with
sort: "newest". - Store
reviewIdin your warehouse or automation tool. - Compare each new dataset against known IDs.
- Notify a team only when unseen review IDs appear.
For lower-rating alerts, set maxRating to 2 or 3.
For competitor voice-of-customer reporting, include several product IDs in one scheduled run.
Sentiment and review intelligence workflows
Export the dataset to a notebook, warehouse, or language model to:
- classify positive, neutral, and negative themes;
- compare rating distributions across products;
- separate incentivized from non-incentivized feedback;
- identify repeated packaging, shade, scent, or performance complaints;
- summarize highly helpful reviews;
- track language changes after a reformulation or relaunch;
- compare verified-purchase and recommendation signals.
Always preserve review IDs and timestamps for traceability.
Integrations
Connect the Actor to:
- Google Sheets for analyst-friendly review trackers;
- Slack or email for low-rating review alerts;
- Make for no-code scheduling and routing;
- Zapier for CRM or ticket automation;
- Amazon S3 for durable review archives;
- BigQuery, Snowflake, or PostgreSQL for longitudinal analysis;
- webhooks for event-driven pipelines;
- Apify API for application integration.
A useful workflow is Actor schedule → dataset webhook → warehouse upsert keyed by reviewId → dashboard refresh.
API usage with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/sephora-product-reviews-scraper').call({productIds: ['P449116'],maxReviewsPerProduct: 100,sort: 'newest',locale: 'allEnglish',includeRatingsOnly: false,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
API usage with Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/sephora-product-reviews-scraper').call(run_input={'productIds': ['P449116'],'maxReviewsPerProduct': 100,'sort': 'mostHelpful','locale': 'en_US','includeRatingsOnly': False,})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item)
API usage with cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~sephora-product-reviews-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"productIds": ["P449116"],"maxReviewsPerProduct": 20,"sort": "newest","locale": "allEnglish","includeRatingsOnly": false}'
Retrieve dataset items from the run's defaultDatasetId after it succeeds.
Use with Apify MCP and AI agents
Connect this Actor to Claude, Cursor, or another MCP-compatible assistant through Apify MCP.
Claude Code setup:
$claude mcp add --transport http apify https://mcp.apify.com/?tools=automation-lab/sephora-product-reviews-scraper
Claude Desktop setup:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?tools=automation-lab/sephora-product-reviews-scraper"}}}
Cursor setup: add the same Apify MCP URL as a remote HTTP MCP server in Settings → Tools & MCP.
VS Code setup: add the same remote HTTP URL to your workspace MCP server configuration, then enable the Apify server.
Example prompts:
- “Collect the 50 newest reviews for Sephora product P449116 and summarize recurring complaints.”
- “Compare verified-purchase feedback for these three Sephora product URLs.”
- “Find the most helpful one- and two-star reviews and group them by issue.”
Tips for reliable runs
- Start with 10–20 rows while validating a new product.
- Use P-number IDs for compact bulk API inputs.
- Keep
includeRatingsOnlydisabled when you need written comments. - Use all-English locale for broad family coverage.
- Use one locale when regional comparison matters.
- Schedule newest-first runs for monitoring.
- Deduplicate downstream by
reviewId, not review text. - Do not assume every optional reviewer attribute is present.
The Actor retrieves Sephora's current public review-display configuration automatically; users do not supply API keys or cookies.
Limitations
- The Actor covers public English-language reviews exposed for Sephora product families.
- Sephora controls review family relationships, moderation, and available attributes.
- Deleted, pending, private, or unapproved reviews are not available.
- Some reviews contain ratings without text or omit recommendation and demographic fields.
- Review-family expansion can return a product ID different from the requested ID.
- Source changes or temporary upstream outages can interrupt extraction.
- This Actor does not post reviews, authenticate customers, or access private account data.
Legal and responsible use
This Actor extracts information publicly displayed to Sephora visitors.
You are responsible for using the data lawfully and for complying with applicable terms, privacy rules, intellectual-property rights, and data-retention obligations.
Avoid republishing personal information, profiling individual reviewers, or using review text in misleading ways.
Use aggregate analysis where possible and retain source IDs for attribution and correction workflows.
This documentation is not legal advice.
Troubleshooting
The run says it cannot find a product ID.
Use a full Sephora product page URL containing a P-number, or enter the P-number directly in productIds.
The run returns no matching reviews.
Check that the product is public and has reviews. Remove restrictive rating or locale filters and try a small run.
The actual product ID differs from my input.
This is normal for Sephora product families. See requestedProductId and productId together.
Some reviewer attributes are missing.
Those fields are optional and appear only when a reviewer published them.
A run fails during a temporary source outage.
Retry later. The Actor already performs three bounded retries and fails non-zero rather than reporting an empty success.
FAQ
Can I scrape several products in one run?
Yes. Submit up to 100 unique URLs or IDs. Limits apply per requested product.
Can I collect only one-star reviews?
Yes. Set both minRating and maxRating to 1.
Does it need a Sephora login?
No. It extracts public review records and does not accept customer credentials.
Does it require a proxy?
No. The implementation uses Sephora's public structured review display surface rather than the protected product HTML page.
Can it monitor new reviews?
Yes. Schedule newest-first runs and compare stable reviewId values downstream.
Are review photos downloaded?
No. Dataset rows contain public media URLs, which keeps runs fast and exports compact.
What export formats are available?
Apify datasets support JSON, CSV, Excel, XML, RSS, and API access.
Related scrapers
Need to discover product IDs before collecting reviews?
Use Sephora Search Scraper to find Sephora products, prices, ratings, and aggregate review counts by keyword.
Then pass its productId values to this Actor for individual review records.
Support
If a valid public Sephora product repeatedly fails, open an issue from the Actor page.
Include:
- the product URL or ID;
- a small reproducible input;
- the run ID;
- the expected review scope;
- any relevant log message.
Do not include account credentials or private customer information.