+Ulta Beauty API
Ulta Beauty products, prices, shades, ingredients and reviews as clean JSON.
The API.SH Ulta Beauty API turns public Ulta.com pages into structured JSON. List any category or brand page with Ulta's own sort and filters (brand, price, rating, sale, finish, coverage, skin type, SPF and more), then read a product for its price, list and sale price, availability, every shade and size variant, rating, description, how-to-use text, ingredient list and attributes. Add a reviews page to get reviews with ratings, verified-buyer flags and photos.
- 2 endpoints
- from $1 / 1,000 calls
- 1,000 free credits / month
- failed calls free
GET https://api.api.sh/ulta/v1/ product
{ "success": true } What you can build with the Ulta Beauty API
Beauty price and promotion tracking
Track price, list and sale price, discounts and promotions across a category or brand to see when products go on sale.
Assortment and shelf research
Read a category with its filter facets and product counts to see which brands, finishes and price points Ulta carries.
Ingredient and claims analysis
Collect ingredient lists and attributes such as skin type, SPF and preferences to compare formulas across brands.
Review and sentiment analysis
Page through a product's reviews with rating, verified-buyer flag and helpful votes to learn what shoppers like or dislike.
Brand monitoring
Watch your brand's page for ratings, review counts, badges and sponsored placements next to competitors.
Ulta Beauty data you get
Field names from real responses. Numbers come parsed, URLs absolute, dates in ISO 8601.
Ulta Beauty API endpoints and prices
Every Ulta Beauty endpoint costs 1 credit per call: credits are $1 per 1,000 on a monthly plan, $2 pay-as-you-go. Pricing
| Ulta Beauty product /ulta/ | $1 · $2 PAYG 1 credit |
| Ulta Beauty category /ulta/ | $1 · $2 PAYG 1 credit |
Call the Ulta Beauty API
Ulta Beauty product: GET https://api.api.sh/ulta/
curl "https://api.api.sh/ulta/v1/product?url=https%3A%2F%2Fwww.ulta.com%2Fp%2Finfallible-up-32-hour-fresh-wear-foundation-pimprod2002481%3Fsku%3D2538199" \
-H "x-api-key: $APISH_KEY" import os, requests
res = requests.get(
"https://api.api.sh/ulta/v1/product",
params={"url": "https://www.ulta.com/p/infallible-up-32-hour-fresh-wear-foundation-pimprod2002481?sku=2538199"},
headers={"x-api-key": os.environ["APISH_KEY"]},
timeout=120,
)
res.raise_for_status()
data = res.json() const url = new URL("https://api.api.sh/ulta/v1/product");
url.searchParams.set("url", "https://www.ulta.com/p/infallible-up-32-hour-fresh-wear-foundation-pimprod2002481?sku=2538199");
const res = await fetch(url, { headers: { "x-api-key": process.env.APISH_KEY } });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json(); # Google Sheets (API.SH add-on)
=APISH("/ulta/v1/product", "url", "https://www.ulta.com/p/infallible-up-32-hour-fresh-wear-foundation-pimprod2002481?sku=2538199")
# Zapier, Make, n8n (verified node): pick the API.SH app,
# choose "Ulta Beauty" and "Ulta Beauty product".
# AI agents (Claude, ChatGPT, Cursor): add the
# API.SH MCP server https://api.sh/mcp - Create a free accountConfirm your email and get 1,000 free credits every month. No card needed.
- Create an API keyOne key works for all 482 platforms.
- Send the requestJSON back in one call. Add
output=csvoroutput=ndjsonfor files.
Why API.SH for Ulta Beauty data
- Public data only: no Ulta Beauty login, cookies or account needed
- One key and one response shape for Ulta Beauty and 481 other platforms
- Built and maintained by API.SH, not third-party publishers
- Pay per call; errors on our side cost nothing
- Live status for every endpoint
API.SH vs the official Ulta Beauty API
Ulta Beauty does not offer a public developer API for product, price or review data; its programs for outside partners are affiliate and creator programs. API.SH returns public Ulta.com product and category data as JSON with no partnership or login.
Instead of an Apify Ulta actor, a beauty data feed subscription or your own scraper, API.SH gives you one key, a fixed price per call and the same JSON shape it uses for other retailers.
Ulta Beauty API questions
What Ulta Beauty data can I get?+
Category and brand listings with prices, discounts, ratings, badges and filter facets (/ulta/v1/category), and full product pages with variants, availability, ingredients, how to use, attributes and paged reviews (/ulta/v1/product).
How much does the Ulta Beauty API cost?+
Every Ulta Beauty endpoint costs 1 credit per call. On a monthly plan 1,000 credits cost $1 (Starter is $50/month for 50,000 credits). Pay-as-you-go is $2 per 1,000 credits, with top-ups from $15 that never expire.
Is there a free trial?+
Yes. Every account gets 1,000 free credits every month. That is 1,000 calls to /ulta/v1/category at 1 credit each.
Is there an official Ulta Beauty API?+
No public one. Ulta does not publish a developer API for product or price data. Third-party options are scrapers and beauty data feeds; API.SH is one of them, with pay-per-call pricing.
Do I need an Ulta account or login?+
No. API.SH reads public Ulta.com pages only. No endpoint uses a login, Ulta Beauty Rewards account or cookies.
Can I track Ulta sales and price drops?+
Yes. Category listings and product pages return price, list price, sale price, discount and promotion, so you can call them on a schedule and compare. Category listings can also be filtered to sale items only.
Can I get product reviews and ingredients?+
Yes. /ulta/v1/product returns the ingredient list and the latest reviews, and with reviews_page it returns a full page of reviews (title, text, rating, date, verified buyer, helpful votes, photos) with the next page number.
How do I get started?+
1. Sign up at api.sh. 2. Copy your API key from the dashboard. 3. Call /ulta/v1/product with the url of an Ulta product page. Every parameter and request examples are in the docs at https://api.sh/docs. You can also use the JS or Python SDK, Google Sheets, Zapier, Make, n8n or the MCP server at https://api.sh/mcp.