API Anything

Ulta Beauty APIunofficial

Public US beauty product documents.

all live 3 operations, checked by the installs that call them.

Try it

Set up API Anything for your agents:

npx -y api-anything setup

Then ask your agent, which finds this site by itself, or call it from a shell:

api-anything pull ulta
api-anything call ulta getProduct productPath=niacinamide-10-zinc-1-serum-oily-skin-pimprod2007111 sku=2551167

Operations

OperationMethodLoginWritesStatus
getProduct(productPath, sku) -> familyId, sku, name, brand, size, price, currency, offerUrl

Read public US product document identity, size and advertised main offer; no stock or delivery guarantees.

GET no no Live0 confirmations
listBrandProducts(brandSlug) -> name, brand, url, sku

List the product cards in a public US brand document, in document order, with names and SKU-bearing detail links. Initial document only; no full-catalog or stock guarantee.

GET no no Live0 confirmations
listCategoryProducts(department, category, subcategory) -> name, brand, url, sku

Discover products across brands in a public three-level US category document. Returns initial product cards in document order with SKU-bearing detail links; no full-catalog or stock guarantee.

GET no no Live0 confirmations

Notes

listCategoryProducts(department, category, subcategory) discovers across brands using three ordered segments from a public /shop/ link, such as makeup/face/foundation or skin-care/moisturizers/night-cream. Each input is one segment. It returns initial category cards; full catalog, pagination and filters are unverified. Pass each returned product URL and SKU to getProduct as above.

listBrandProducts(brandSlug) reads product cards from the initial public brand document, in document order. Copy the slug from an Ulta /brand/ link, such as olaplex or redken. For detail, split the returned url at /p/ to get productPath and pass its sku to getProduct. Results may cover only part of the catalog; pagination, filters and hydrated updates are unverified. Card SKU is the linked item, not a promise that all variants are listed.

getProduct(productPath, sku) reads a public US product document. Copy both inputs from the same Ulta product link. productPath is the complete segment after /p/, without slash or query. For example, use productPath=niacinamide-10-zinc-1-serum-oily-skin-pimprod2007111 sku=2551167.

The family ID and SKU identify different things. The returned SKU, size and offer URL describe the item actually represented by the document; check them against the requested item. The checked larger niacinamide variant returned SKU 2614594, 4.0 oz, and 19.60 USD, while the original item returned SKU 2551167, 1.0 oz, and 6.00 USD.

price is the main advertised schema.org offer in the returned document, not a subscription amount, checkout total or delivery quote. Prices may change. Stock, pickup, store availability, delivery and reviews are outside this operation. No account or private browser session was used. Other product layouts, countries and currencies are unverified.

About these operations

Each operation is a request learned from Ulta Beauty's own web pages: API Anything replays it over plain HTTP and falls back to a browser when it must. Read them as JSON.

← All shared sites