Beauty retail pricing and availability monitoring
Mit Ulta Beauty-Endpunkten verwandelst du beauty retail pricing and availability monitoring in wiederholbare API-Requests mit dokumentierten Inputs und JSON-Antworten.
Turn Ulta Beauty's own storefront data into structured beauty-retail data — keyword product search with real pagination, and per-product detail with pricing, rating, review count, images, and every purchasable color/shade variant, all as normalized JSON. Credential-free.
Search Ulta Beauty's product catalog and get full product detail — pricing, ratings, reviews, and every color/shade variant — as structured JSON.
Endpunkt-Familien
6
Dokumentierte Parameter
25
Beispiele
8
Live-Katalog-Snapshot
Aktive Endpunkte
8
Methoden
GET
Pflichtparameter
14
Schema-Referenzen
8
{
"platform": "Ulta Beauty",
"endpoint": "ulta-search",
"method": "GET",
"path": "/ulta/search",
"auth": "apiKey"
}Use Cases
Search Ulta Beauty's product catalog and get full product detail — pricing, ratings, reviews, and every color/shade variant — as structured JSON.
Mit Ulta Beauty-Endpunkten verwandelst du beauty retail pricing and availability monitoring in wiederholbare API-Requests mit dokumentierten Inputs und JSON-Antworten.
Mit Ulta Beauty-Endpunkten verwandelst du product catalog research in wiederholbare API-Requests mit dokumentierten Inputs und JSON-Antworten.
Mit Ulta Beauty-Endpunkten verwandelst du shade/color-variant tracking in wiederholbare API-Requests mit dokumentierten Inputs und JSON-Antworten.
Managed Execution
Jede Zahl unten stammt direkt aus dem Live-Ulta Beauty-Endpunktkatalog — 8 Endpunkte, 25 dokumentierte Request-Parameter und 8 veröffentlichte Response-Schemas — demselben Katalog, gegen den auch Docs und Playground laufen.
8 documented Ulta Beauty endpoints, grouped into 6 request families — Product, Categories and Category, plus 3 more.
25 request parameters are documented across those Ulta Beauty endpoints, 14 of them required — the full input contract is public before you write any integration code.
8 of the 8 Ulta Beauty endpoints ship a recorded example response, and 8 carry a documented response schema — you can code against the real JSON before the first request.
Ulta Beauty endpoints document their error responses (400, 404, 429 and 503) alongside the success schema, so a block, a rate limit, or a missing record comes back as a typed error rather than silently empty data.
8 hosted MCP tools back the Ulta Beauty endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Abdeckungskarte
/ulta/product/{productId}
/ulta/categories
/ulta/category
/ulta/search
/ulta/stores
/ulta/suggest
Endpunktkatalog
/ulta/searchSearches Ulta Beauty's product catalog by keyword, with real page-based pagination. Returns products with brand, pricing, rating, and review count. An unrecognized/nonsense keyword returns a genuine empty result rather than a fallback set. Requesting a page beyond the available results returns a normal, empty result rather than an error.
Hinweise zur Response
- Pagination is real and page-based, 64 results per page. `has_more` is the upstream's own genuine "more pages available" marker: `true` on every page with more results after it, `false` on the real last page and on any page beyond it. - Requesting a `page` beyond the available results returns a normal `200` with an empty `products` array and `has_more: false`, not an error. - An unrecognized/nonsense `query` returns a genuine empty result (`count: 0`, `result_count: 0`) rather than a fallback set. - `list_price`/`sale_price` are Ulta's own display-formatted price strings (e.g. `"$12.99 - $13.99"`), since a search card's list price is often a range across a product's own color/shade variants -- use `/ulta/product/{productId}` for one variant's single resolved price.
MCP-Tool ulta_search
/ulta/product/{productId}Returns one Ulta Beauty product's full detail: name, brand, description, category, pricing, rating, review count, images, and every purchasable color/shade variant. productId is taken from a search result's product_id field or a product page's URL (e.g. pimprod2020260). sku is optional and selects a specific color/shade variant; an omitted or invalid sku still resolves the base product using its own default variant. An unrecognized productId returns 404.
Hinweise zur Response
- `category` lists the product's category breadcrumb (e.g. `["Makeup", "Eyes", "Mascara"]`). - `variants` lists every purchasable color/shade of the base product, each with its own `product_id`/`sku_id`/`name`. - `images` is the featured variant's image gallery as absolute URLs. - `sale_price` is only present when the product is currently on sale. - An unrecognized `productId` returns `404`. A malformed `productId` returns `400` before any upstream request is made.
MCP-Tool ulta_product
/ulta/categoriesLists Ulta Beauty's own storefront category navigation: department, group, name, and a URL usable directly as GET /ulta/category's own category parameter. Closes the discovery gap of not already knowing a category path. department, if set, filters to just that department's entries. group is empty for a department's own top-level link or a group's own heading link, and set to that group's name for the leaf categories nested under it. The exact same real category can legitimately appear more than once under a different department/group when the site's own navigation cross-lists it.
Hinweise zur Response
- `group` is empty for two kinds of entries: a department's own top-level link (e.g. "All Makeup & Nails"), and a group's own heading link (e.g. "Face"), which is itself a real, browsable category one level above its own leaf items. Every leaf item nested under a group carries that group's name as `group` (e.g. "Foundation" carries group `"Face"`). - `department`/`group` reflect the site's own navigation grouping, not a slug derived from the returned URL's path. Some categories are cross-listed by Ulta's own navigation under more than one department -- for example "Tinted Moisturizer" and "Makeup Remover" appear under the Makeup & Nails department's "Face" group, but their URLs resolve under `shop/skin-care/...`, and the same two categories also appear separately under the Skin Care department's own "Moisturizers"/"Cleansers" groups. This is expected: the same real category can legitimately appear more than once with a different `department`/`group` pairing. - A small number of groups have a heading link but no nested leaf items at all (for example Men's Care's "Cologne") and surface as a single group-empty entry, the same shape as a department's own top-level link.
MCP-Tool ulta_categories
/ulta/categoryBrowses an Ulta Beauty category page's product grid, with real page-based pagination and the category's own guided-navigation refinement options. category accepts a category path or full URL copied from Ulta's own site navigation (e.g. shop/makeup/eyes/mascara). filter narrows results using Ulta's own guided-navigation facet-code shape (e.g. BENEFIT--WATERPROOF, or a comma-joined combination of codes) -- discover valid codes for a category from that category's own response facets field, whose value is ready to use directly as this parameter. An unrecognized category returns 404.
Hinweise zur Response
- Pagination is real and page-based, 64 results per page. `has_more` is the upstream's own genuine "more pages available" marker, the same as `/ulta/search`. - `facets` lists the category's own guided-navigation refinement options (label, a ready-to-use `value`, and whether it is already applied) -- present whenever the upstream returns them. An already-selected facet carries an empty `value`, since the caller already knows they set that filter themselves. - An unrecognized `category` returns `404`. - `list_price`/`sale_price` are Ulta's own display-formatted price strings, the same as `/ulta/search`.
MCP-Tool ulta_category
/ulta/product/questionsReturns one page of an Ulta Beauty product's customer questions, each with every answer it received. product_id is taken from a search result's product_id field or a product page's URL. A product with zero questions, or a well-formed but unrecognized product_id, returns a normal, empty result rather than an error.
Hinweise zur Response
- Each question's `answers` lists every answer it received, in the order the source returns them. `is_expert` marks an answer from a brand representative rather than a fellow customer. - A product with zero questions, or a well-formed but unrecognized `product_id`, returns a normal, empty result (`count: 0`, `total_questions: 0`) rather than an error -- the review source does not distinguish an unknown product id from a real, question-free product. - A malformed `product_id` returns `400` before any upstream request is made.
MCP-Tool ulta_product_questions
/ulta/product/reviewsReturns one page of an Ulta Beauty product's customer reviews, plus the retailer's own site-wide rating summary (rating count, average rating, recommended ratio, rating histogram) for the product. product_id is taken from a search result's product_id field or a product page's URL. A product with zero reviews, or a well-formed but unrecognized product_id, returns a normal, empty result rather than an error.
Hinweise zur Response
- `rating_count`, `average_rating`, `recommended_ratio`, and `rating_histogram` are the product's site-wide aggregate rating summary, not just this page. `rating_histogram` is the count of ratings per star, ascending: index 0 is 1-star, index 4 is 5-star. - A product with zero reviews, or a well-formed but unrecognized `product_id`, returns a normal, empty result (`count: 0`, `total_reviews: 0`) rather than an error -- the review source does not distinguish an unknown product id from a real, reviewless product. - A malformed `product_id` returns `400` before any upstream request is made.
MCP-Tool ulta_product_reviews
/ulta/storesReturns Ulta Beauty physical retail store locations near a point: name, phone, full address, hours, services, and coordinates. Either search, or both lat and lng, is required. search is a free-text zip code, city, or address that is first resolved to coordinates; if it does not resolve to any location, a well-formed empty result is returned rather than an error. lat and lng, when given directly, skip that resolution step. radius_meters is optional (1000 to 50000, defaults to 25000). A location with no stores within the radius returns a well-formed empty result rather than an error.
Hinweise zur Response
- Each store includes its name, phone number, full street address, hours of operation, in-store services, and coordinates. - `lat`/`lng` in the response always reflect the coordinates actually searched -- the caller's own values when given directly, or the coordinates resolved from `search` otherwise. - A `search` value that does not resolve to any location returns a well-formed empty result (`count: 0`, `stores: []`), not an error. - A location with no stores within the radius returns a well-formed empty result, not an error. - `hours` maps a three-letter day abbreviation (`Mon`..`Sun`) to that day's opening range, e.g. `"09:00-21:00"`.
MCP-Tool ulta_stores
/ulta/suggestReturns Ulta Beauty's own search-suggestion (typeahead) result for a partial search term: suggested search terms, each with its own top product matches, plus a featured top result matching what a real user sees at the top of the dropdown. A partial term with no matches returns a normal, empty result rather than an error.
Hinweise zur Response
- `suggestions` lists each suggested search term with its own `label`, `url` (a category/search page), and `top_results` (up to a handful of matching products). - `first_top_result` mirrors what a real user sees featured at the top of the dropdown -- it is one of `suggestions`' own top results, not a separate search. - A partial term with no matches returns a normal, empty result (`count: 0`, empty `suggestions`) rather than an error.
MCP-Tool ulta_suggest
Verwandte APIs
Marketplaces & Retail
Separate an auction that is still open from a completed sale, and use BaT's own make and model directory to carry valid IDs into search and price-history requests.
Marketplaces & Retail
Treat Glovo as a local marketplace: discover the supported city first, then follow that city's category, store, menu, and collection identifiers through the catalog.
Marketplaces & Retail
Use PetSmart's hierarchical paths to scope product searches, then keep product SKU, price range, online availability, pickup eligibility, and store inventory as separate fields.
Unternehmensabdeckung
Ulta Beauty, Inc. · ULTA
Ulta Beauty wird von Ulta Beauty, Inc. (ULTA) betrieben. Crawloras SEC-Endpunkte nutzen dieselbe CIK dieses Unternehmens, sodass Filings, Finanzdaten, Insider-Transaktionen und 13F-Beteiligungen mit demselben API-Key wie die Ulta Beauty-Endpunkte oben abrufbar sind.
SEC-Filings & Finanzdaten-API →So scrapst du Ulta Beauty
Ulta Beauty's category tree spans nine departments, including a Wellness section covering vitamins, feminine hygiene, and sleep support alongside the expected makeup and skin care groups. A 2026-09-24 search for "moisturizer" reported 1,295 total results, led by a $12 Good Molecules moisturizer (4.4 stars, 1,176 reviews). Crawlora's eight Ulta Beauty endpoints turn that search, category browsing, product detail, reviews, Q&A, and the store locator into normalized JSON, no Ulta account required.
/ulta/search takes a free-text query and returns page-based results with brand, pricing, rating, and review count. A 2026-09-24 pull for "moisturizer" reported 1,295 total matches, 64 per page, with has_more true.
Pass a category path or url from /ulta/categories to /ulta/category, optionally narrowed with filter codes taken straight from that category's own facets field. Face Moisturizer alone exposed over 40 refinement codes, from SKIN_TYPE--DRY to PREFERENCE--fragrance+free, and reported 1,116 matching products in total.
Pass a product_id (and optional sku) to /ulta/product/{productId} for pricing, images, and every color/shade variant. A Good Molecules Lightweight Daily Moisturizer pull returned two size variants, 1.0 oz and 3.3 oz, each its own sku_id.
/ulta/product/reviews returns paginated reviews plus a rating_histogram and recommended_ratio, both taken from Ulta's review provider. That same moisturizer showed a 4.44 average from 1,176 ratings but a recommended_ratio of 0.44, so the star average and the would-recommend share are worth tracking separately.
/ulta/product/questions returns customer questions with every answer, including ones flagged is_expert when an Ulta or brand representative replies: 13 of them for that moisturizer, mostly staff-answered.
/ulta/stores takes a free-text search or a lat/lng pair and returns nearby locations with hours and services like Benefit_Brow_Services. A search for zip 10019 returned 18 stores within the default 25 km radius.
Agent Skills
Installiere einen Crawlora Agent Skill, und dein Agent ruft Ulta Beauty-Daten als JSON über die dokumentierte API ab, ohne einen Scraper zu schreiben. Diese Skills decken Ulta Beauty ab:
Researches Ulta Beauty's catalog — categories, products, shades, questions, reviews, and nearby stores — using the Crawlora API, returning clean…
npx skills add github.com/Crawlora-org/crawlora-skills --skill ulta-researchResearch products, prices, sellers, and reviews across major online marketplaces and retailers, including African Jumia storefronts. Use when the…
npx skills add github.com/Crawlora-org/crawlora-skills --skill product-price-researchFAQ
count is the number of products on the page you received; result_count is the total across every page of that category. A 2026-09-24 pull of Face Moisturizer returned 71 products on the page against a result_count of 1,116.
Not necessarily. /ulta/product/reviews returns both separately, and one 4.4-star, 1,176-review moisturizer carried a recommended_ratio of 0.44 on 2026-09-24.
A mix of shoppers and staff. /ulta/product/questions flags staff replies with is_expert true, and on a bestselling product most answered questions carry that flag.
Read them off that category's own response rather than guessing. The facets field of /ulta/category returns ready-to-use codes like SKIN_TYPE--DRY or PREFERENCE--fragrance+free that pass directly into the filter parameter.
No. Every endpoint here reads Ulta's public storefront, review, Q&A, and store-locator data with only your Crawlora API key, no Ulta account needed.