Pricing
Pay per event
Sephora Search Scraper
Extract Sephora product search results with product IDs, SKU IDs, brands, prices, ratings, reviews, badges, images, and URLs.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Extract structured Sephora product search results from the public catalog JSON endpoint. Use it to monitor assortment, pricing, ratings, reviews, badges, SKU IDs, and product URLs for beauty keywords such as moisturizer, sunscreen, serum, cleanser, foundation, or fragrance.
What does Sephora Search Scraper do?
Sephora Search Scraper turns keyword searches into clean product rows.
It collects product information that appears in Sephora search and catalog responses, including brand, product name, product ID, SKU ID, list price, rating, review count, image URL, product URL, bestseller flags, new-product flags, sponsored flags, and Sephora-exclusive markers.
The actor is HTTP-first and uses Sephora catalog JSON instead of browser automation, so it is designed for fast and inexpensive catalog monitoring.
Who is it for?
- ποΈ Ecommerce teams tracking Sephora assortment and search visibility.
- π Beauty brands monitoring rank, pricing, and review counts for their own and competitor products.
- π DTC growth teams watching bestseller and new-product badges.
- π§΄ Category managers researching skincare, haircare, makeup, fragrance, and wellness keywords.
- βοΈ SEO and content teams building product roundups from current Sephora catalog data.
- π€ Data teams feeding BI dashboards, enrichment jobs, and price monitors.
Why use this actor?
Sephora catalog search pages contain high-value retail signals, but manually checking them is slow and inconsistent.
This actor gives you repeatable exports with:
- product IDs and SKU IDs for matching across runs,
- keyword and rank fields for search-position tracking,
- prices and badge flags for merchandising analysis,
- ratings and reviews for social-proof monitoring,
- product URLs and image URLs for downstream enrichment.
Data you can extract
| Field | Description |
|---|---|
query | Keyword used for the Sephora search. |
rank | Product position within the keyword result set. |
brandName | Brand shown by Sephora. |
displayName | Product display name. |
productId | Sephora product ID. |
skuId | Current SKU ID. |
listPrice | Price string from the catalog row. |
rating | Product rating when available. |
reviews | Review count when available. |
isBestseller | Bestseller badge flag. |
isNew | New product flag. |
isSephoraExclusive | Sephora-exclusive flag. |
productUrl | Sephora product page URL. |
imageUrl | Product image URL. |
How much does it cost to scrape Sephora search results?
This actor uses pay-per-event pricing.
- A small
startevent is charged once per run. - An
itemevent is charged for each product row saved to the dataset.
Your exact cost depends on how many keywords you run and the maxItemsPerQuery value. Start with a small test, review output quality, then scale to larger recurring monitoring jobs.
How to use Sephora Search Scraper
- Add one or more keywords in
queries. - Set
maxItemsPerQueryto the number of products you need for each keyword. - Leave
pageSizeat 60 for efficient catalog paging. - Choose whether to include category or refinement context.
- Run the actor and download the dataset as JSON, CSV, Excel, XML, or RSS.
Input configuration
The most important fields are:
queriesβ keywords such asmoisturizer,sunscreen,vitamin c serum, orfoundation.startUrlsβ optional Sephora search URLs if you prefer URL-based input.maxItemsPerQueryβ how many product rows to collect per keyword.pageSizeβ API page size, capped at 60.includeCategoriesβ adds category names returned by Sephora search.includeRefinementsβ adds available filter groups and values.proxyConfigurationβ optional; the public JSON endpoint typically works without proxy.
Example input
{"queries":["moisturizer","sunscreen"],"maxItemsPerQuery":100,"pageSize":60,"includeCategories":true,"includeRefinements":false}
Example output
{"query":"moisturizer","rank":1,"page":1,"productId":"P517477","skuId":"2895787","brandName":"rhode","displayName":"Barrier Restore Cream Hydrating Daily Moisturizer","listPrice":"$20.00 - $32.00","rating":4.1755,"reviews":245,"isBestseller":true,"isSephoraExclusive":true,"productUrl":"https://www.sephora.com/product/barrier-restore-cream-P517477?skuId=2895787"}
Tips for better results
- Use exact retail search terms, not long natural-language prompts.
- Run multiple related keywords to compare assortment overlap.
- Keep
includeRefinementsoff unless you need filter metadata. - Use product IDs and SKU IDs for deduplication across recurring runs.
- Track
rank,rating, andreviewsover time to spot changes.
Common workflows
Beauty brand monitoring
Track your own product lines and competitor terms weekly. Export product ranks, badges, ratings, and review counts to a spreadsheet or BI tool.
Price and assortment research
Collect product rows for category terms such as retinol, cleanser, mascara, or fragrance to compare current Sephora assortment.
SEO and editorial research
Use the dataset to identify products, brands, and price ranges currently visible for high-intent beauty searches.
Integrations
You can connect the actor to:
- Google Sheets for recurring catalog exports,
- Airtable for product-monitoring tables,
- Make or Zapier for scheduled alerts,
- BI tools for assortment dashboards,
- data warehouses using Apify API dataset exports.
API usage with Node.js
import{ ApifyClient }from'apify-client';const client =newApifyClient({token: process.env.APIFY_TOKEN});const run =await client.actor('automation-lab/sephora-search-scraper').call({queries:['moisturizer'],maxItemsPerQuery:100});console.log(run.defaultDatasetId);
API usage with Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('automation-lab/sephora-search-scraper').call(run_input={'queries':['sunscreen'],'maxItemsPerQuery':100,})print(run['defaultDatasetId'])
API usage with cURL
curl-X POST 'https://api.apify.com/v2/acts/automation-lab~sephora-search-scraper/runs?token=YOUR_APIFY_TOKEN'\-H'Content-Type: application/json'\-d'{"queries":["vitamin c serum"],"maxItemsPerQuery":100}'
MCP usage
Use this actor from Claude Desktop, Claude Code, or other MCP-compatible clients through the Apify MCP server.
MCP URL:
https://mcp.apify.com/?tools=automation-lab/sephora-search-scraper
Claude Code setup:
$claude mcp add apify-sephora-search https://mcp.apify.com/?tools=automation-lab/sephora-search-scraper
Claude Desktop JSON config:
{"mcpServers":{"apify-sephora-search":{"url":"https://mcp.apify.com/?tools=automation-lab/sephora-search-scraper"}}}
Example prompts:
- "Run the Sephora Search Scraper for moisturizer and summarize the top brands."
- "Export Sephora sunscreen product prices, ratings, and review counts."
- "Compare bestseller flags for retinol and vitamin C serum searches."
Proxy and rate-limit notes
The tested endpoint returned JSON without login, cookies, or proxy. Leave proxy disabled for normal use.
If you see geo-specific differences, temporary rate limits, or unusual empty responses, enable Apify Proxy in the input. Start with low volume before scaling.
Data quality notes
The actor saves the fields returned by Sephora's search API. Some products may not have ratings, reviews, or every badge flag. Price values are strings because Sephora can return ranges such as $20.00 - $32.00.
Legality
This actor extracts publicly reachable catalog data. You are responsible for using the results in a lawful way and respecting applicable terms, privacy rules, and data-use requirements. Do not use the data for spam, harassment, or unlawful profiling.
FAQ
Does it scrape product reviews?
No. Version 1 focuses on search and catalog rows. Reviews are a separate data type and should be collected only through a stable, validated endpoint.
Does it need a Sephora account?
No. The catalog search endpoint used by this actor worked without login in feasibility testing.
Why is price a string?
Sephora may return price ranges, sale labels, or formatted currency strings. Keeping the original string avoids losing meaning.
Why did I get fewer rows than requested?
The keyword may have fewer products than your maxItemsPerQuery, or Sephora may return fewer products for that query and region.
Related scrapers
Explore related Automation Lab actors when building retail and ecommerce pipelines:
- https://apify.com/automation-lab/google-shopping-scraper
- https://apify.com/automation-lab/amazon-product-scraper
- https://apify.com/automation-lab/walmart-search-scraper
- https://apify.com/automation-lab/target-product-scraper
Changelog
0.1
Initial private build for Sephora keyword search/catalog extraction.
Support
If you need a new field from search rows, include a sample keyword and expected field. If you need product details, reviews, or ingredients, describe the workflow so it can be assessed as a separate feature.
