Discover/Ulta API
live

Ulta APIulta.com

Access Ulta Beauty product catalog data via API: search products, browse categories, get ingredients, pricing, and customer reviews from PowerReviews.

Endpoint health
verified 5d ago
search_products
get_product_details
get_product_reviews
browse_category
4/4 passing latest checkself-healing
Endpoints
4
Updated
22d ago

What is the Ulta API?

The Ulta Beauty API covers 4 endpoints that expose product catalog data from ulta.com, including real-time pricing, ingredients, usage instructions, and customer reviews. Using search_products, you can query the full catalog by keyword and get up to 64 results per request with brand name, list price, sale price, rating, and review count. The get_product_details endpoint adds full ingredient lists, how-to instructions, and markdown-formatted descriptions for any product ID.

Try it
Search keyword (e.g. 'mascara', 'moisturizer', 'lipstick')
api.parse.bot/scraper/05c4d11c-559b-4def-a722-d169488a2138/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/05c4d11c-559b-4def-a722-d169488a2138/search_products?query=mascara' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace ulta-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

from parse_apis.ulta_beauty_api import Ulta, Product, ProductSummary, ReviewResult, Review, Category

ulta = Ulta()

# Search for mascara products
for product in ulta.products.search(query="mascara"):
    print(product.product_id, product.brand_name, product.list_price, product.rating)

    # Get full details for the first product found
    full = product.details()
    print(full.brand, full.product_name, full.price, full.ingredients)

    # Get reviews for this product
    review_result = full.reviews()
    print(review_result.average_rating, review_result.review_count, review_result.recommended_ratio)

    for review in review_result.reviews:
        print(review.headline, review.rating, review.nickname, review.comments)
    break

# Browse a category by constructing it directly
skincare = ulta.category(path="/shop/skin-care/moisturizers")
for item in skincare.browse():
    print(item.brand_name, item.product_name, item.list_price, item.review_count)
All endpoints · 4 totalmissing one? ·

Full-text search over Ulta Beauty's product catalog. Returns up to 64 products per request with pricing, ratings, and product URLs. Single-page result set; query refinement is the primary narrowing tool.

Input
ParamTypeDescription
queryrequiredstringSearch keyword (e.g. 'mascara', 'moisturizer', 'lipstick')
Response
{
  "type": "object",
  "fields": {
    "products": "array of product summary objects",
    "totalResults": "integer total number of matching products"
  },
  "sample": {
    "data": {
      "products": [
        {
          "skuId": "2596644",
          "rating": 4.1,
          "discount": null,
          "imageUrl": "https://media.ultainc.com/i/ulta/2596644",
          "brandName": "Tarte",
          "listPrice": "$28.00",
          "productId": "pimprod2033171",
          "promoText": null,
          "salePrice": null,
          "sponsored": false,
          "productUrl": "https://www.ulta.com/p/tartelette-tubing-mascara-pimprod2033171?sku=2596644",
          "productName": "Tartelette Tubing Mascara",
          "reviewCount": 1846,
          "variantLabel": "6 colors"
        }
      ],
      "totalResults": 377
    },
    "status": "success"
  }
}

About the Ulta API

Catalog Search and Category Browsing

The search_products endpoint accepts a query string (e.g. 'mascara', 'moisturizer') and returns an array of product objects alongside a totalResults count. Each product object includes productId, skuId, brandName, productName, listPrice, salePrice, discount, rating, reviewCount, and an image URL. The browse_category endpoint works the same way but navigates by category_path — for example /shop/skin-care/moisturizers or /shop/makeup/face/foundation — making it straightforward to enumerate an entire product segment without guessing search terms.

Product Detail Data

get_product_details takes a product_id obtained from either search or browse and returns the full data record: brand, price, salePrice, rating, reviewCount, a markdown details description, howToUse instructions, and a full ingredients string. Enhanced content from Syndigo is included where available. This is the endpoint to use when building ingredient checkers, product comparison tools, or retail feed integrations.

Customer Reviews

get_product_reviews retrieves PowerReviews data for any product_id. The response includes a paging object with total_results, pages_total, page_size, current_page_number, and next_page_url for cursor-style pagination. The results array contains a rollup with aggregate rating summary, a rating histogram, and featured faceoff reviews, plus an array of individual review objects. The limit parameter controls page size.

Reliability & maintenanceVerified

The Ulta API is a managed, monitored endpoint for ulta.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ulta.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official ulta.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
5d ago
Latest check
4/4 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build an ingredient safety checker using the ingredients field from get_product_details.
  • Track price drops across a category by polling browse_category for listPrice and salePrice changes.
  • Aggregate PowerReviews sentiment data using the rating histogram and review text from get_product_reviews.
  • Populate a beauty product comparison table with brand, price, rating, and reviewCount from search_products.
  • Sync an affiliate product feed by iterating category paths through browse_category to collect productId and image fields.
  • Surface how-to content for a beauty app using the howToUse field returned by get_product_details.
  • Monitor discount depth across a skincare category using the discount field in browse or search results.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Ulta Beauty have an official developer API?+
Ulta does not publish a public developer API or API documentation for external developers. There is no official API portal or key sign-up on ulta.com.
What does get_product_reviews return beyond a star rating?+
The endpoint returns a rollup object containing the aggregate average rating, a per-star histogram, and featured faceoff reviews (best/worst). It also returns an array of individual reviews with their own metadata. Pagination is handled via the paging object, which includes next_page_url so you can walk through all pages for high-review-count products.
Does the API return inventory or in-store availability data?+
Current endpoints return pricing fields (listPrice, salePrice, discount) but do not expose store-level inventory counts or in-store availability status. The API covers product catalog and review data. You can fork it on Parse and revise to add an inventory or store-locator endpoint if that data surface is needed.
How many products are returned per search or category request, and can I paginate?+
Both search_products and browse_category return up to 64 products per request along with a total count (totalResults or total). Currently the endpoints do not expose an explicit page or offset parameter. You can fork the API on Parse and revise it to add offset or page parameters if deeper pagination is required.
Does the API return shade or variant-level SKU data for multi-variant products?+
The search and browse endpoints return a single skuId per product object, representing a default or primary SKU. Variant-level shade enumeration and per-SKU pricing differences are not currently exposed. You can fork the API on Parse and revise get_product_details to return the full variant and shade list.
Page content last updated . Spec covers 4 endpoints from ulta.com.
Related APIs in EcommerceSee all →
sephora.com API
Search and browse Sephora's product catalog to find detailed information about beauty items, including specifications, customer reviews, Q&A discussions, pricing, and real-time availability. Filter products by category or brand, and access comprehensive brand listings to discover exactly what you're looking for.
cultbeauty.co.uk API
Browse and search Cult Beauty's product catalog by category or brand, view detailed product information including ingredients and loyalty points, and read customer reviews. Discover new arrivals, sale items, and filter products to find exactly what you're looking for.
urbanoutfitters.com API
Search Urban Outfitters' catalog to find products and browse categories, then view detailed information including prices, descriptions, color and size availability for each item. Check current sale counts and discover what's trending across the store's product lineup.
theordinary.com API
Browse and search The Ordinary's complete product catalog by category or ingredients. View detailed product information including formulas and key actives, apply filters by product type, concern, or ingredient, and read customer reviews to compare and evaluate products.
drunkelephant.com API
Search and browse Drunk Elephant's full product catalog by category or collection, view detailed product information including ingredients and specifications, and access customer ratings and reviews. Find the perfect skincare and beauty products for your needs with comprehensive product details and authentic customer feedback.
lookfantastic.com API
Browse Lookfantastic category pages to retrieve live product listings (price, ratings, reviews, and ingredients), and fetch detailed information for a specific product by SKU including reviews, directions, and images.
uline.com API
Search Uline's catalog by keyword or category to instantly access product details, pricing, and real-time stock availability. Browse product lines and subcategories, retrieve individual model specifications, and check inventory levels across Uline's full range of industrial and commercial supplies.
paulaschoice.com API
Search and explore Paula's Choice skincare products with detailed ingredient lists, allergen information, and skin type recommendations all in one place. Find best sellers, look up specific ingredient details, and discover products organized by category to build your perfect skincare routine.