Sephora Search Scraper avatar

Sephora Search Scraper

Pricing

Pay per event

Go to Apify Store
Sephora Search Scraper

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

Stas Persiianenko

Stas Persiianenko

Maintained by Community

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

FieldDescription
queryKeyword used for the Sephora search.
rankProduct position within the keyword result set.
brandNameBrand shown by Sephora.
displayNameProduct display name.
productIdSephora product ID.
skuIdCurrent SKU ID.
listPricePrice string from the catalog row.
ratingProduct rating when available.
reviewsReview count when available.
isBestsellerBestseller badge flag.
isNewNew product flag.
isSephoraExclusiveSephora-exclusive flag.
productUrlSephora product page URL.
imageUrlProduct image URL.

How much does it cost to scrape Sephora search results?

This actor uses pay-per-event pricing.

  • A small start event is charged once per run.
  • An item event 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

  1. Add one or more keywords in queries.
  2. Set maxItemsPerQuery to the number of products you need for each keyword.
  3. Leave pageSize at 60 for efficient catalog paging.
  4. Choose whether to include category or refinement context.
  5. Run the actor and download the dataset as JSON, CSV, Excel, XML, or RSS.

Input configuration

The most important fields are:

  • queries — keywords such as moisturizer, sunscreen, vitamin c serum, or foundation.
  • 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 includeRefinements off unless you need filter metadata.
  • Use product IDs and SKU IDs for deduplication across recurring runs.
  • Track rank, rating, and reviews over 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 = new ApifyClient({ 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 ApifyClient
client = 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.

Explore related Automation Lab actors when building retail and ecommerce pipelines:

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.