ParseForge Scrapers

Ulta Beauty Products Scraper

parseforge/ulta-scraper

E-commerceAutomation

Scrapes Ulta Beauty product listings from any category slug. Returns each product as a flat row with price, brand, rating, and options.

Run this scraper See the API call
Total users
2
Monthly active
0
Total runs
98
Bookmarked
0
Rating
Not rated yet
Last modified
9 days ago

Overview

ParseForge

Ulta Beauty Products Scraper

Scrape Ulta Beauty product listings from any category, up to a million per run. Every product row includes price, ratings, brand, and variant details. No API key required. Export to CSV, JSON, Excel, or XML.

Ulta Beauty's product catalog is massive, and manually copying prices, ratings, or shade names across hundreds of SKUs is slow and error-prone. This Actor reads the public category pages directly, so you can pull a structured list of products by category slug without writing any code. It is built for analysts, brand managers, and developers who need clean beauty product data on a schedule.

Who uses it What they scrape Ulta Beauty for
Market researchers Track which brands and product types are trending in a category this month.
E-commerce managers Monitor competitor pricing and assortment gaps across makeup or skincare.
Data analysts Build a clean dataset of beauty product attributes for pricing models.
Brand managers Audit how your own products appear in Ulta's category listings.

What it does

This Actor collects Ulta Beauty product listings by category slug and returns each product as a flat row with its price, brand, rating, and available options.

  • ๐Ÿท๏ธ Category browsing: supply a category slug like makeup, skincare, or hair and the Actor walks the listing pages.
  • ๐Ÿ”ข Volume control: set a hard cap from 1 to 1,000,000 products so a single run stays within your budget.
  • ๐Ÿ“ฆ Flat row output: every product lands as one row, ready for pivot tables, databases, or BI tools.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

What you can do with Ulta Beauty data

๐Ÿ’„ Monitor makeup pricing.

A beauty brand manager runs the Actor weekly on the makeup category to track how competitor lipstick prices shift during a promotion cycle.

๐Ÿงด Build a skincare catalog.

A data analyst scrapes the skincare category to populate a product database with brand, price, rating, and ingredient highlights for a market report.

๐Ÿ’‡ Audit hair-care assortment.

An e-commerce manager pulls the hair category to compare Ulta's assortment against their own store and identify missing high-rated products.

๐Ÿ“Š Feed a pricing model.

A pricing analyst collects fragrance listings to train a model that recommends price points for a new private-label launch.

Why choose this scraper

What you get
No API registration Ulta does not offer a public product API. This Actor reads the live site so you do not need a partner token or manual approval.
Fixed schema Every run returns the same columns, even when a product is missing a field, so your downstream pipeline never breaks.
Runs on schedule Set it on Apify Scheduler to pull fresh prices and ratings daily or weekly without touching a browser.

How it compares

Two other Apify actors also scrape Ulta Beauty. This one focuses on fast category listing extraction with a simple slug input, while the alternatives add detail-page enrichment.

Feature ParseForge Ulta Scraper Ulta Product Scraper
Category browsing by slug Yes Not listed Yes
Product price and sale price Yes Yes Yes
Product ratings and review count Yes Not listed Yes
Brand name per product Yes Not listed Yes
Ingredient list extraction Not listed Not listed Yes
Shade and size variant details Not listed Not listed Yes

Configure the run

Drive the Actor from a single Ulta category slug and set a maximum number of products to collect per run. The Input tab lists every parameter.

A first run with the defaults:

{
  "maxItems": 10
}

A larger pull:

{
  "maxItems": 200
}

Pricing

Pay-per-result: $0.021 per result collected. You pay only for the results written to your dataset.

Results collected Approximate cost
100 results $2.10
1,000 results $21.00
10,000 results $210.00

New Apify accounts start with $5 in free credit.

Free users

Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the Ulta Beauty Products Scraper.
  3. Set your inputs and any filters, then click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent live access to Ulta Beauty through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/ulta-scraper"

Then prompt it in plain language to run the scraper and read back the results.

Troubleshooting

Why am I getting no results?

Check that the category slug is spelled exactly as it appears in the Ulta URL. A typo or a slug that does not exist on the site will return an empty dataset. Also confirm the category still has products listed.

The run stopped before reaching my max items limit.

The Actor stops when it runs out of pagination on the category. If the category has fewer products than your limit, the run ends early with whatever it found.

Some products are missing a price or rating.

Ulta sometimes shows a range or hides a rating until a variant is selected. The Actor captures what is visible on the listing card. Missing values appear as empty cells in your dataset.

The run timed out or was blocked.

Increase the run timeout in your Actor settings and consider using a higher-performance proxy group if you are scraping a very large category. Apify's automatic retries handle most transient blocks.

I need data from a specific URL, not a category slug.

This Actor is built for category browsing by slug. If you need to scrape a specific product URL or a search results page, you may need a different scraper configuration.

FAQ

Question Answer
What is a category slug and where do I find it? A category slug is the last part of the Ulta URL when you browse a category, for example 'makeup' in ulta.com/shop/makeup. Copy that word and paste it into the Category Slug input field.
Does this Actor scrape product detail pages? It collects the listing data shown on category pages. If you need full detail-page enrichment like ingredients or shade variants, you may need a separate detail scraper.
Can I scrape multiple categories in one run? One run handles one category slug. To scrape several categories, launch multiple runs in parallel or queue them one after another using the Apify API or scheduler.
How many products can I scrape? You set the limit with the Maximum products field, anywhere from 1 to 1,000,000. The Actor stops when it hits your number or runs out of pages.
Does this Actor handle Ulta's anti-bot protections? It runs on Apify's infrastructure with rotating proxies and browser fingerprints, which helps avoid blocks during normal use.
Can I export the data to Google Sheets? Yes. After a run finishes, use Apify's built-in integration to send the dataset directly to Google Sheets, or download as CSV, JSON, Excel, or XML.
Is a login required? No. The Actor reads publicly visible category pages, so you do not need an Ulta account or any credentials.
What fields does each product row contain? Each row includes the product name, brand, price, sale price, rating, review count, and available options like shade or size, all in a consistent schema.
Can I filter by brand or price inside the Actor? The Actor pulls the full category listing. To filter by brand or price, apply those filters to the output dataset in your spreadsheet, database, or code after the run.
How often can I run this Actor? You can run it as often as you like. Many users set a daily or weekly schedule to track price and assortment changes over time.

Related actors

Browse the full ParseForge collection for more scrapers.

๐Ÿ†˜ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

โš ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Ulta Beauty, Inc. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

Input

FieldTypeWhat it doesDefault
maxItems integer How many products to collect per run. 10
category string Ulta category slug (e.g. makeup, skincare, hair). makeup

Pricing

from $19.00 per 1,000 results

Charged forWhat it isPrice each
result Single result in the default dataset. $0.019 to $0.021

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

API

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST ยท run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~ulta-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "helloWorld": 123
  }'

Examples

Input that runs as-is.

input.json
{
  "helloWorld": 123
}

Reviews

No reviews yet. Be the first.

Issues

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

Related scrapers

Run Ulta Beauty Products Scraper on Apify All scrapers