Ulta Beauty Scraper
Pricing
from $5.50 / 1,000 results
Ulta Beauty Scraper
Scrape Ulta Beauty from category, brand, sale or product URLs: sale and list prices, stock status, ratings and review counts, product size and highlight badges. Every shade and size is grouped into one record, with each shade's undertone and finish - and costs one event, not forty.
Pricing
from $5.50 / 1,000 results
Rating
0.0
(0)
Developer
Richard Feng
Maintained by CommunityActor stats
3
Bookmarked
47
Total users
6
Monthly active users
19 hours
Issues response
4 hours ago
Last modified
Categories
Share
Ulta Scraper
Ulta Scraper provide a way to crawl product details of site Ulta.
🎯 Features
- 🗂️ Support fetch products of category;
- 📦 Support fetch product detail with prices,descriptions,images and sku info;
- 🧩 Group skus in same product.
- 🎨 Per-shade undertone/finish description, product size, and highlights badges.
💡 The price values are multiplied by 100 to avoiding floating point calculations.
🚀 How it works
Instead of scraping the WAF-protected www.ulta.com website HTML, this actor talks
directly to the Ulta mobile app's GraphQL API (api.ulta.com/dxl/graphql). That
endpoint runs the same "DXL" content backend the website uses, but lives on separate
infrastructure that answers anonymous read requests with a static app API key — no
login, no browser, and no bot challenge. The request contract (host, headers, API key,
GraphQL operation) was recovered from the official Android app.
For each start URL the actor:
- Resolves the page path to a DXL
NonCachedPagequery. - For listing pages, reads the inlined
ProductListingResultsitems and follows theloadMoreActionto page through all results. - For product pages, reads the
ProductPricing/ProductVariant/MediaGallery/… modules and re-renders the page per SKU to collect each variant's price and images.
💳 Cost note — all SKUs are merged into one product. Ulta lists every shade/size as a separate SKU. This scraper groups all of them under a single product record (one dataset item with a
variants[]array) rather than emitting one item per SKU. The trade-off is request cost: a product's default SKU comes free with the product page, but every additional SKU needs its own API call to read that variant's own price and images. So a product with N variants costs roughly N requests — and products with many shades (foundations, concealers) dominate the run time and cost.Use
maxVariantFetchesto cap the per-product variant calls. Variants beyond the cap are still included, using the product-level price and their single listing image (no extra call), so you trade some per-variant price/image accuracy for a much cheaper, faster run.
📋 Input Parameters
The input of this scraper shoule be JSON formated. Fields are:
| Field | Type | Description |
|---|---|---|
| startUrls | Array | Start URLs of Ulta site to start the scraper. Category page, product page urls are all supported. |
| proxy | Object | Proxies for the api.ulta.com app API. DATACENTER (or no proxy) is recommended — RESIDENTIAL often adds upstream 502/504/ECONNRESET against this mobile API. Use RESIDENTIAL only if you see blocks. |
| maxConcurrency | Object | Actor running max concurrency, which helps you to not getting blocked. |
| maxRequestsPerCrawl | Integer | Maximum number of requests that can be made by this crawler, 0 to ignore. |
| maxVariantFetches | Integer | Cap of per-product variant detail calls (each non-default shade/size costs one extra API call). Empty = fetch all. |
🔗 Supported Pages
Supported of fetch data from below pages:
| Page | Example |
|---|---|
| Product Detail Page | https://www.ulta.com/p/studio-fix-powder-plus-foundation-makeup-xlsImpprod15921242?sku=2510752 |
| Category Page | https://www.ulta.com/shop/makeup/face |
| Brand Page | https://www.ulta.com/brand/ulta-beauty-collection |
| Sale Page | https://www.ulta.com/promotion/sale |
📤 Data storage
Ulta scraper stores the product data to default data set in JSON format.
{"source": {"id": "pimprod2048637","crawlUrl": "https://www.ulta.com/p/radiance-conscious-beauty-kit-pimprod2048637?sku=2630776","canonicalUrl": "https://www.ulta.com/p/radiance-conscious-beauty-kit-pimprod2048637?sku=2630776","retailer": "ulta","currency": "USD"},"brand": "Beauty Finds by ULTA Beauty","title": "Radiance Conscious Beauty Kit","description": {"short_desc": "Unwrap Radiance with Our Beauty Kit! Celebrate the season with the ultimate gift of clean beauty. Our beauty kit features luxurious, eco-friendly products designed to nourish and glow.","full_desc": "#### Includes\n\n- Bubble, Skincare Day Dream Tone + Texture Serum Vitamin C + Niacinamide (0.17 oz)\n- Dermalogica, Special Cleansing Gel (0.5 oz)\n- House Of Lashes, Boudoir Lite Full False Lashes (1 pair)\n- Lolavie, Glossing Detangler (0.85 oz)\n- Nemat, Vanilla Musk Roll-On Fragrance Oil (0.17 oz)\n- ‘Ôrǝbella, NIGHTCAP Parfum (0.05 oz)\n- Peace Out, Acne Dots (4 dot patches)\n- Pür Beauty, Fully Charged Mascara Powered By Magnetic Technology Mini (0.14 oz)\n- St. Tropez, St. Tropez Self Tan Purity Bronzing Water Face Mist (0.47 oz)\n- Sunday Riley, Good Genes All-In-One Lactic Acid Treatment (0.17 oz)\n- Thayers, Thayers PH Cleanser (3.0 oz)\n- Viviscal, Thickening Conditioner (1.7 oz)\n- Viviscal, Thickening Shampoo (1.7 oz)\n\n"},"categories": ["Gifts","By Price","$50 and Under"],"options": [],"variants": [{"id": "2630776","sku": "2630776","options": [],"price": {"list": 4000,"listFormatted": "$40.00","sale": 2400,"stockStatus": "InStock"},"medias": [{"id": "2630776","type": "Image","url": "https://media.ulta.com/i/ulta/2630776","alt": "Beauty Finds by ULTA Beauty Radiance Conscious Beauty Kit #1","width": 2000,"height": 2000},{"id": "2630776_alt01","type": "Image","url": "https://media.ulta.com/i/ulta/2630776_alt01","alt": "Beauty Finds by ULTA Beauty Radiance Conscious Beauty Kit #2","width": 2000,"height": 2000}]}],"stats": {"rating": 4.4,"reviewCount": 7},"price": {"sale": 2400,"list": 4000,"listFormatted": "$40.00","stockStatus": "InStock"}}
Product attributes (undertone / finish, size, highlights)
For makeup with shades, each colour option value carries a description — the
"undertone / finish" line Ulta shows under the swatch. The product also carries a
size (volume/dimension) and a highlights badge row (Clean Ingredients, Cruelty
Free, Vegan, …). description is omitted for shades Ulta doesn't describe (e.g. some
eyeliners), and highlights/size are omitted when the product has none.
{"title": "Double Wear Stay-in-Place Longwear Matte Foundation","size": "1.0 oz","highlights": [{ "label": "Sustainable Packaging", "icon": "SustainablePackaging", "imageUrl": "https://media.ultainc.com/i/ulta/Sustainable-Packagingicon", "description": "..." }],"options": [{"type": "Colour","values": [{"id": "1C1 Cool Bone","name": "1C1 Cool Bone","description": "light with cool rosy-peach undertones","swatchIcon": { "url": "https://media.ultainc.com/i/ulta/2651973_sw", "alt": "1C1 Cool Bone …" },"smooshIcon": { "url": "https://media.ultainc.com/i/ulta/2651973_sm", "alt": "1C1 Cool Bone …" }}]}]}
💳 Pricing
This Actor uses pay per event — you are charged per product saved to the dataset, not for compute time or run duration. One event covers the whole product, including every shade and size variant.
| Event | Free / Starter | Scale / Business+ |
|---|---|---|
| Product saved to dataset | $0.0070 | $0.0055 |
What the free plan gets you: Apify's free plan includes $5 of platform credit every month, which is about 710 Ulta products per month at no cost. 10,000 products cost $70 on the free/starter rate, $55 on Scale or above.
A product with 40 shades still costs one event, not 40. You are never charged for failed requests or for products the Actor could not parse. Set Max total charge on the run to cap spend.
🧰 Other Actors by autofacts
Apify only auto-recommends Actors in the same category, so here are the ones that actually pair with this scraper:
| Actor | What it's for |
|---|---|
| Sephora Product Scraper (Global) | The other big beauty retailer — 20 storefronts, same output shape |
| Macy's Scraper | Department-store beauty and wider catalog |
| Boohoo Scraper | Fast-fashion catalog across 7 regions |
| Lululemon Scraper | Activewear catalog and pricing |
| Farfetch Scraper | Luxury fashion, multi-currency |
All of them: apify.com/autofacts