How to scrape Ulta reviews

Ulta is in the same boat as Sephora: there is no public API that returns review text, and the reviews on a product page are loaded by a third-party ratings widget that renders in JavaScript. Point a basic scraper at the raw HTML and you get nothing, which is why people conclude Ulta reviews cannot be scraped when they simply load a beat after the page.

The payoff is the audience. Ulta's catalogue runs from drugstore to prestige, so its reviewers constantly compare: this dupes that, just as good as the expensive one for half the price, switched from my usual and never going back. That comparison and value language is angle gold. Here are the realistic ways to get it out, ending with pulling a product's reviews as ranked angles in about 60 seconds.

Start free

★ 4.5 on the Chrome Web Store · no card needed

01

Manual collection: quick gut check, slow research

Open the product, sort the reviews, and copy the useful ones. It works for a fast look at a single item. It does not scale: reviews load in batches as you scroll, and the comparison language you actually want, the reviewer weighing Ulta's option against a prestige one, is spread across pages you will not have the patience to reach. You read the loudest few and miss the pattern.

02

No research API, and DIY scripts break

Ulta does not offer a public API for review content, so there is no clean data route. Developers can drive a headless browser to render the review widget and parse it, but because the reviews are client-side, you cannot just fetch HTML, and the setup breaks whenever the markup or widget changes or the traffic looks automated. Maintaining proxies and selectors is a recurring tax, not a one-time build.

03

The paste-a-URL route

Adlicio reads any public Ulta product page through your own browser session, the same reviews any shopper sees, no API key and no script to maintain. Paste the URL and the reviews come back in about 60 seconds.

Then it ranks them. The reviews cluster into angles: the dupe and switched-from comparisons, the price-versus-result trade-offs, and the complaints to answer, each with the verbatim Ulta quotes behind it. The raw reviews stay exportable.

Do it with Adlicio

The 60-second version

  1. 01
    Pick the products buyers cross-shop

    Your product, the drugstore option people compare it to, and the prestige one they call the dupe of. The comparison lives across all three.

  2. 02
    Paste each product URL into Adlicio

    Any public Ulta product page. The scrape reads the reviews through your browser session in about 60 seconds per product.

  3. 03
    Mine the comparisons, keep the quotes

    Work from the ranked clusters. The dupe claim becomes your hook, the value trade-off becomes your bridge, and the verbatim quote becomes your proof line.

FAQ

Questions people also ask

Why does scraping Ulta reviews return an empty page?

Because the reviews render in JavaScript through a ratings widget after the page loads. Reading the raw HTML gets you nothing. A real browser session captures them, which is how Adlicio reads the reviews any shopper sees.

Can I find dupe and comparison language in Ulta reviews?

Yes, and it is the reason to scrape Ulta specifically. Because its catalogue spans mass to prestige, the reviews lean on comparison, so the ranked angles surface which products buyers name as dupes and where the value tips a switch.

How is scraping Ulta different from scraping Amazon?

Amazon reviews skew to product performance across every category. Ulta reviews are beauty-specific and comparison-heavy, so they carry the this-versus-that value language that decides a beauty purchase.

Can I export Ulta reviews to a CSV?

Yes. Every scrape lands in your history with a CSV export, so the raw reviews sit alongside the ranked angles for filtering.

Keep exploring

More guides

Ulta scraperAll scrapersSee pricing

Run this play on your own Ulta page.

Paste one public URL. Adlicio returns the angle, hook, and proof to test next.