~/ecommerce/ulta-scraper

Ulta Beauty Scraper — Products, Prices & SKUs

Extract product details, pricing, images, and SKU information from Ulta Beauty including category pages, brand pages, and sale sections.

beauty TypeScriptCrawlee US
proooxy/ulta-scraper — spec
categoryecommerce / beauty
languageTypeScript
stackTypeScript, Crawlee
marketsUS
outputclean, RAG-ready JSON

key features

Supports category, product detail, brand, and sale pages

Full product details with prices, descriptions, and images

SKU-level data extraction with variant grouping

Automatic detection of page type from URL

Fast and reliable — no browser needed

Groups related SKUs under the same product

use cases

  • Beauty industry competitive analysis — Ulta vs Sephora pricing
  • Product catalog building for comparison shopping platforms
  • Sale and promotion monitoring
  • Brand discovery and market presence tracking
  • SKU-level inventory monitoring

input parameters

ParameterTypeRequiredDescription
startUrlsarrayrequiredUlta product, category, brand, or sale URLs
proxyobjectoptionalApify proxy (US) by default. Datacenter or no proxy is usually faster and more reliable than residential.
maxConcurrencynumberoptionalMaximum parallel requests
maxRequestsPerCrawlnumberoptionalLimit total requests per run

Output Example

 1{
 2  "source": {
 3    "id": "pimprod2046768",
 4    "crawlUrl": "https://www.ulta.com/p/luxe-satin-lipstick-pimprod2046768?sku=2624602",
 5    "canonicalUrl": "https://www.ulta.com/p/luxe-satin-lipstick-pimprod2046768",
 6    "retailer": "ulta",
 7    "currency": "USD"
 8  },
 9  "brand": "ULTA Beauty Collection",
10  "title": "Luxe Satin Lipstick",
11  "description": {
12    "short_desc": "A lipstick with extra comfort. Ulta Beauty Collection's Luxe Satin Lipstick is an ultra-creamy, smooth formula that delivers rich pigment in just one swipe."
13  },
14  "categories": ["Makeup", "Lips", "Lipstick"],
15  "variants": [
16    {
17      "id": "2624603",
18      "sku": "2624603",
19      "options": ["Barely There 300"],
20      "price": { "list": 1200, "listFormatted": "$12.00", "stockStatus": "InStock" },
21      "medias": [
22        { "id": "2624603", "type": "Image", "url": "https://media.ultainc.com/i/ulta/2624603", "alt": "Barely There 300 Luxe Satin Lipstick" }
23      ]
24    }
25  ],
26  "stats": { "rating": 4.2, "reviewCount": 802 }
27}

faq

What types of Ulta pages can be scraped?
The scraper supports product detail pages, category listing pages, brand pages, and sale/promotion pages. It automatically detects the page type from the URL.
How are product variants handled?
Variants (different shades, sizes) are grouped under the same parent product. Each variant includes its own SKU, price, and availability status.

related in ~/ecommerce

Run Ulta Beauty Scraper — Products, Prices & SKUs, or get a custom build

Start extracting on Apify in minutes, or hire me to build a bespoke scraper and RAG pipeline for your exact source and schema.

run on Apify get custom data