Skip to content

Ulta Reviews Scraper

Try for free

Scrape Ulta Beauty product reviews by product URL, product id, or category/brand page: star rating, title, text, recommendation, reviewer nickname and location, verified-buyer badge, helpful votes, photos and syndicated brand reviews. No login needed.

💄 Ulta Reviews Scraper

Collect every public review of any Ulta Beauty product: star rating, title, full text, "would recommend", reviewer nickname and location, verified-buyer badge, helpful votes, customer photos and the reviews Ulta syndicates from brand websites. Paste product URLs, product ids, or a whole category or brand page, and get clean rows in seconds. No login, no browser, and only $0.25 per 1,000 reviews.

✨ Why use Ulta Reviews Scraper?

  • ⚡ Fast — reads the same review data the product page loads, 25 reviews per request and several pages in parallel: 1,000 reviews in about 12 seconds in our tests.
  • 📚 Past the 10,000 wall — Ulta's review service only pages through 10,000 reviews per sort order. For bigger products the actor combines star ratings and sort orders, and removes duplicates, so you get far more than the page shows (all 10,234 reviews of a 10,234-review foundation in our test).
  • 🗂️ Whole categories and brands — give a category or brand page and it scrapes the reviews of every product listed, with the product's brand and price on each row.
  • 🎯 Precise filters — star ratings, "newer than" dates, keyword search inside reviews, photo reviews only, verified buyers only, and Ulta-only (native) reviews.
  • 🧾 Rich, flat rows — product summary (average rating, review count, recommend ratio) on every review, ISO dates, absolute photo URLs, and survey answers such as skin type or age.
  • 🔓 No login, no cookies — public data only.

🎯 Use cases

  • 📊 Product and brand research — compare how shades, formulas and competing products are rated, and why.
  • 🧪 Voice of the customer — mine reviews for complaints ("smell", "breakout", "packaging") before a reformulation or launch.
  • 📈 Rating monitoring — schedule a daily run with "Reviews newer than: 1 day" to track new reviews and rating drift.
  • 🤖 Sentiment and AI datasets — export thousands of labelled beauty reviews (text plus star rating) for training or analysis.
  • 🛍️ Retail and agency reporting — summarize reviews of a whole category or brand page for a client report.

🚀 How to use

  1. Paste one or more Ulta product URLs (or ids such as pimprod2021615), or a category or brand page such as https://www.ulta.com/brand/clinique.
  2. Set Max reviews per product (0 = all reviews).
  3. Optionally pick a sort order and filters (star ratings, date, keyword, photos only, verified buyers, Ulta-only reviews).
  4. Click Start and watch the reviews arrive.
  5. Download the results as JSON, CSV, Excel or HTML, or read them through the API.

📥 Input

FieldWhat it does
startUrlsUlta product URLs, product ids (pimprod..., xlsImpprod..., mkt...), or category/brand pages
maxReviewsPerProductReviews per product, 0 = all (default 20)
sortBynewest, oldest, most_helpful, highest_rating, lowest_rating, with_media
ratingsOnly these star ratings, e.g. ["1", "2"]
reviewsSinceOnly reviews on or after a date (2026-01-01) or a relative age (30 days)
keywordOnly reviews matching these words (Ulta's own review search)
withMediaOnly / verifiedBuyersOnly / nativeOnlyPhoto reviews only / verified buyers only / reviews written on ulta.com only
maxProductsPerListingFor category and brand pages: products to scrape (default 10, 0 = all)
proxyConfigurationDatacenter proxy by default
{
  "startUrls": [
    "https://www.ulta.com/p/moisture-surge-100h-auto-replenishing-hydrator-gel-moisturizer-with-hyaluronic-acid-pimprod2021615",
    "https://www.ulta.com/brand/clinique"
  ],
  "maxReviewsPerProduct": 100,
  "sortBy": "newest",
  "ratings": ["1", "2"],
  "reviewsSince": "2026-01-01",
  "maxProductsPerListing": 5
}

📤 Output

One row per review.

FieldDescription
review_idReview id (also ugc_id, legacy_id, internal_review_id)
product_page_id, product_name, product_urlThe product
product_brand, product_price, product_sale_priceFilled for products found on a category or brand page
product_average_rating, product_review_count, product_recommended_ratioProduct summary at scrape time
ratingStars, 1 to 5
headline, commentsReview title and text
bottom_line"Yes" / "No": would recommend
nickname, location, localeReviewer as shown on Ulta
created_date, updated_dateISO 8601 (UTC)
helpful_votes, not_helpful_votes, helpful_scoreHelpfulness
is_verified_buyer, is_verified_reviewer, is_staff_reviewerBadges
sourcenative (written on ulta.com) or syndicated (from the brand's site)
brand_name, brand_base_url, brand_logo_uri, disclosure_codeSyndication source and disclosure (e.g. sampling for free-product reviews)
propertiesSurvey answers such as age, skin type, "was this a gift?"
media, image_urlsCustomer photos and videos with captions
position, scraped_atOrder within the product, scrape time

Example row from a test run (shortened):

{
  "review_id": 588488125,
  "product_page_id": "pimprod2057355",
  "product_name": "Double Wear Stay-in-Place Longwear Matte Foundation",
  "product_url": "https://www.ulta.com/p/double-wear-stay-in-place-longwear-matte-foundation-pimprod2057355",
  "product_average_rating": 4.24,
  "product_review_count": 10234,
  "product_recommended_ratio": 0.88,
  "rating": 5,
  "headline": "Best makeup",
  "comments": "I really enjoyed trying the Estée Lauder Double Wear Foundation! It blends well into my skin and provides great coverage without feeling overly heavy...",
  "bottom_line": "Yes",
  "nickname": "Christy99",
  "location": "US",
  "created_date": "2026-10-14T17:33:28.179Z",
  "helpful_votes": 1,
  "is_verified_buyer": false,
  "is_verified_reviewer": true,
  "source": "syndicated",
  "brand_name": "Estee Lauder US",
  "disclosure_code": "communitycontent",
  "properties": [{"key": "wasthisagift", "label": "Was this a gift?", "type": "tag", "value": ["Yes"]}],
  "image_urls": ["https://res.cloudinary.com/powerreviews/image/upload/f_auto,q_auto,h_768,w_auto/d_portal-no-product-image_ttlfpi.svg/prod/fpetg6dwrscibrexccdn.jpg"],
  "position": 22,
  "scraped_at": "2026-10-22T04:25:55Z"
}

💰 Pricing

You pay $0.25 per 1,000 reviews ($0.00025 per review saved), plus the small platform usage of the run (compute and datacenter proxy traffic).

  • 1,000 reviews of one product ≈ $0.25 in review events plus well under one cent of usage in our tests.
  • Nothing is charged for products or filters that return no reviews, or for input that is not an Ulta product.
  • Set a maximum cost per run and the actor stops cleanly when it is reached.

❓ FAQ

Is it legal to scrape Ulta reviews? The actor only reads reviews that anyone can see on ulta.com without logging in. Reviews contain nicknames and locations that people chose to publish; check the rules that apply to how you use personal data (for example GDPR or CCPA).

Do I need an Ulta account or a proxy? No account. The default datacenter proxy works; the run switches to US residential proxies by itself if requests start being refused.

How many reviews can I get? As many as you ask for. Ulta's review service pages through at most 10,000 reviews per sort order; past that the actor combines star ratings and sort orders. For the very largest products (tens of thousands of reviews, most of them 5 stars) some reviews in the middle of the 5-star range can still be out of reach; the run's status message says so when it happens.

Why is a field empty? Fields are empty when Ulta has no value: bottom_line is missing when the reviewer did not answer, brand_name only exists for syndicated reviews, and product_brand / product_price are only filled for products found on a category or brand page.

Can I schedule it or use the API? Yes. Schedule it (for example daily with "Reviews newer than: 1 day"), call it from the API, or connect it to your integrations.

I used a similar actor on another platform. Will my input work? Yes: product_urls, max_results_per_product, sort (Newest, Mosthelpful...) and native_only are understood, and the output keeps the familiar review field names.

⚠️ Limits

  • Reviews only: questions and answers, product details and prices of single product URLs are not scraped.
  • Ulta's review service serves 10,000 reviews per sort order; see the FAQ for how the actor works around it.
  • The keyword filter uses Ulta's own review search, which also matches related words.
  • Ulta's search result pages are built in the browser and are not supported; use category or brand pages instead.
  • US site (ulta.com) only, in English.

Related actors

//From the blog\\

Latest articles

All articles
G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.