Ulta Beauty Product & Review Scraper
Pricing
from $3.00 / 1,000 results
Ulta Beauty Product & Review Scraper
Scrape Ulta Beauty (ulta.com) products by search, category, or brand. Get prices, ratings, sale status, and images from listing pages, plus full product details and customer reviews from product pages.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Scrape Ulta Beauty (ulta.com) — the largest US beauty retailer's product catalog. Search products, browse by category or brand, and pull full product details plus customer reviews from any product page. No login, no cookies, no paid proxy required.
What this actor does
- Five modes:
search,byCategory,byBrand,productDetails,productReviews - 253 built-in category paths covering every Ulta department (makeup, skin care, hair, fragrance, body care, tools & brushes, wellness, gifts, and more)
- 57 curated brand slugs plus a free-text override for any of Ulta's ~700 brands
- Sort control: Relevance, Best Sellers, Price (low to high / high to low), New Arrivals, Top Rated — the exact sort orders Ulta's own listing pages offer
- Listing filters: minimum rating, minimum review count, maximum price, on-sale-only, Ulta "Preferences" (Clean Ingredients, Cruelty Free, Vegan, and 20 more Conscious Beauty attributes), Shopping Preference (Only at Ulta, Dermatologist Recommended, K-Beauty, Online Only, Refill, Refillable), and Special Offers (Gift With Purchase, Buy More Save More)
- Full product detail lookup: description, ingredients, how-to-use instructions, clean-beauty badges, price, availability, color/variant, breadcrumb category, and a sample of the most recent customer reviews — all by pasting a product URL
- Per-review export: flatten a product's review sample into one row per review, with product context merged in
- Empty fields are omitted from every record
Output: per product (modes search, byCategory, byBrand, productDetails)
sku— Ulta's numeric product SKUproductUrl— canonical product page URLbrand,productName,fullNamedescription— full product description (mode=productDetailsonly)ingredients— full ingredients list (mode=productDetailsonly, when Ulta publishes one for that product type)howToUse— usage instructions (mode=productDetailsonly, when published)badges[]— Conscious Beauty / Clean at Ulta badges shown on the product page, e.g.Vegan,Cruelty Free,Clean Ingredients,Give Back(mode=productDetailsonly)imageUrlprice,originalPrice(when on sale),priceMax(when the card shows a price range across shades, e.g.$37.00 - $39.00),currencyonSale— true if currently marked downrating,reviewCounttags[]— badges such asSale,New(listing modes)variantInfo— e.g.9 colors(listing modes)color— selected variant/shade (mode=productDetailsonly)productId,availability(mode=productDetailsonly)breadcrumbs[],category(mode=productDetailsonly)reviews[]— sample of recent reviews, each withreviewTitle,reviewerName,rating,reviewText,reviewDate,reviewerLocation(mode=productDetailsonly)recordType: "product",scrapedAt
Output: per review (mode productReviews)
productUrl,productName,brand,sku— product contextreviewTitle,reviewerName,rating,reviewText,reviewDate,reviewerLocationrecordType: "review",scrapedAt
Note: Ulta's product pages embed a sample of recent/featured reviews (typically up to 5), not the full review history — even when reviewCount on the product is much higher. This actor surfaces exactly that sample; it does not fabricate additional reviews.
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | search | search / byCategory / byBrand / productDetails / productReviews |
searchQuery | string | lipstick | Free-text query (mode=search) |
categoryPath | select | makeup/lips/lipstick | One of 253 Ulta category paths (mode=byCategory) |
brandSlug | select | rare-beauty | One of 57 curated Ulta brand slugs (mode=byBrand) |
customBrandSlug | string | – | Any Ulta brand slug; overrides brandSlug (mode=byBrand) |
productUrls | array | – | Ulta product page URLs (mode=productDetails / productReviews) |
sortBy | select | relevance | relevance / best_sellers / price_asc / price_desc / new_arrivals / top_rated (listing modes) |
preferences | multi-select | – | Zero or more of Ulta's 23 "Clean at Ulta" preferences (Vegan, Cruelty Free, Clean Ingredients, ...) — matches ALL selected (listing modes) |
shoppingPreference | select | – | exclusive (Only at Ulta) / dermatologist_recommended / k_beauty / online_only / refill / refillable (listing modes) |
specialOffer | select | – | gwp (Gift With Purchase) / bmsm (Buy More, Save More) (listing modes) |
minRating | number | – | Drop products rated below this (0-5) |
minReviewCount | integer | – | Drop products with fewer reviews than this |
maxPrice | number | – | Drop products priced above this (USD) |
onSaleOnly | boolean | false | Only emit products currently on sale |
maxItems | integer | 60 | Hard cap on emitted records (1-1000) |
proxyConfiguration | object | AUTO | Optional; free AUTO proxy is used automatically as a fallback if direct access is blocked |
Example: search for a product with filters
{"mode": "search","searchQuery": "vitamin c serum","minRating": 4,"maxPrice": 40,"onSaleOnly": false,"maxItems": 100}
Example: browse a category, on-sale items only
{"mode": "byCategory","categoryPath": "skin-care/moisturizers/face-moisturizer","onSaleOnly": true,"maxItems": 50}
Example: browse a brand
{"mode": "byBrand","brandSlug": "rare-beauty","maxItems": 60}
Example: vegan + cruelty-free face moisturizers, cheapest first
{"mode": "byCategory","categoryPath": "skin-care/moisturizers/face-moisturizer","sortBy": "price_asc","preferences": ["vegan", "cruelty_free"],"maxItems": 60}
Example: full product details + review sample
{"mode": "productDetails","productUrls": ["https://www.ulta.com/p/vice-hydrating-lipstick-pimprod2026577?sku=2584521"]}
Example: flattened per-review export
{"mode": "productReviews","productUrls": ["https://www.ulta.com/p/vice-hydrating-lipstick-pimprod2026577?sku=2584521","https://www.ulta.com/p/almost-lipstick-xlsimpprod10792007?sku=2153395"]}
Use cases
- Price monitoring — track sale status and price changes across a category or brand
- Assortment research — see every product Ulta carries in a category, with ratings and review counts
- Voice-of-customer analysis — pull review text and ratings for sentiment analysis on specific products
- Competitive benchmarking — compare pricing and catalog breadth of a brand at Ulta vs. other retailers
- Merchandising audits — spot which products are tagged
SaleorNewwithin a department
FAQ
Is this affiliated with Ulta Beauty? No. This is an independent, third-party actor that reads Ulta's publicly accessible web pages. It is not affiliated with, endorsed by, or connected to Ulta Beauty in any way.
Do I need a login or cookies? No. All modes work without authentication.
Why do some products have no rating or price?
Ulta doesn't display a rating for products with zero reviews, and some cards briefly omit price during a promotional refresh. Those fields are simply left out of the record rather than filled with placeholder values.
Why does mode=productReviews only return a handful of reviews per product, even for products with hundreds of reviews?
Ulta's product pages embed a curated sample of recent/featured reviews (usually up to 5) rather than the full review history. This actor extracts exactly what Ulta publishes on the page — it does not paginate a separate reviews API.
Can I get products from a brand that isn't in the dropdown?
Yes — set customBrandSlug to the brand's slug from its Ulta URL (e.g. https://www.ulta.com/brand/fenty-skin-body → fenty-skin-body). This overrides the brandSlug dropdown.
Can I combine sorting, preferences, and my own filters in one run?
Yes. sortBy, preferences, shoppingPreference, and specialOffer are applied by Ulta itself when the listing page loads, and minRating / minReviewCount / maxPrice / onSaleOnly are then applied on top of the results this actor scrapes — all in the same run.
Why do ingredients, howToUse, and badges only appear on some products?
Ulta doesn't publish an ingredients list, usage instructions, or Conscious Beauty badges for every product type (e.g. hair tools and brushes typically have none of these). The actor includes whatever Ulta actually publishes for that specific product and omits the rest rather than filling in placeholders.
What currency are prices in? USD — Ulta only operates in the United States.
How fresh is the data? Every run scrapes live pages at request time; there is no caching.
Does this use a residential or paid proxy? No. The actor works from Apify's free datacenter (AUTO) proxy group only, and even that is a fallback — most runs complete without any proxy at all.