# Ulta Beauty (ulta.com) product data API

> Search Ulta Beauty products with StoreRouter’s API. Get prices, images, and details as JSON. See coverage and curl, Python, and TypeScript examples.

- Catalog key: `ulta` (pass in `"catalogs"` to narrow a search to this store)
- Products: 13
- Snapshot: 2026-10-14T16:57:21Z (counts are approximate and refreshed about daily)
- Search endpoint: `POST https://api.storerouter.ai/v1/products/search`
- Human page: https://storerouter.ai/catalog-coverage/stores/ulta
- Get an API key: https://platform.storerouter.ai/auth/organization

## Questions

### What does Ulta Beauty sell?

Almost entirely Beauty: 92.3% of its 13 products. Hair Care is the largest department with 5 products, followed by Makeup (3) and Skincare (3). The most common Ulta Beauty categories are Cleansers & Makeup Removal (2), Tools & Accessories (2) and Treatments & Solutions (2).

### How are Ulta Beauty products categorized?

Into a shared taxonomy 6 levels deep. The first level separates Beauty and Apparel & Accessories; the second separates departments such as Hair Care; 5 levels down, categories are as specific as Combs & Brushes (1 product). Every level is a search facet.

### What can I filter Ulta Beauty products by?

43 searchable fields. Well-covered attributes include product form (53% of products), constitutive ingredients (30%) and package type (30%). For product form, the most common values are Cream, Liquid and Foam; for constitutive ingredients, the most common values are Water, Alcohol and Glycerin.

### Is this API provided by Ulta Beauty or StoreRouter?

StoreRouter. One API key gives your app or agent access to Ulta Beauty product data and thousands more stores.

### Can I get Ulta Beauty product prices and stock status?

Yes. Bring pricing and availability into your shopping experience with structured data for selling prices, original prices, currency, and stock status.

### Can I get sizes and variants for Ulta Beauty products?

Yes. Help shoppers find their perfect match with size, color, SKU, and stock details from product lookup.

### How fresh is the data?

StoreRouter continually recrawls product pages to update product details. This page tracks 13 Ulta Beauty products, with coverage counts refreshed about daily.

### Where does the data come from?

Straight from ulta.com. StoreRouter turns product pages into rich, searchable data—organized into consistent categories and attributes so your app can connect shoppers with the right products.

## Example product

### Invigo Brilliance Mask For Normal Hair

#### Benefits  - Prevents shade fade - Defends against damaging environmental aggressors - Helps to maintain vibrancy and shine for up to 7 weeks  #### Key Ingredients  - Lime Caviar - Copper encapsulating molecules - Histidine - Vitamin E  Item 2541258

Indexed response retrieved 2026-10-15T06:18:17.198Z. Price and availability may change.
Availability: In stock
Sizes: 5.0 oz, 16.0 oz

### Product details

Product content returned by the lookup API, ready for a product page.

```json
{
  "source": "indexed",
  "catalogKey": "ulta",
  "product": {
    "title": "Invigo Brilliance Mask For Normal Hair",
    "brand": null,
    "productUrl": "https://www.ulta.com/p/invigo-brilliance-mask-normal-hair-pimprod2003699",
    "currentPrice": 21,
    "currency": "USD",
    "inStock": true,
    "description": "#### Benefits  - Prevents shade fade - Defends against damaging environmental aggressors - Helps to maintain vibrancy and shine for up to 7 weeks  #### Key Ingredients  - Lime Caviar - Copper encapsulating molecules - Histidine - Vitamin E  Item 2541258",
    "primaryImage": {
      "url": "https://media.ultainc.com/i/ulta/2541258?w=2048&h=2048",
      "cdnUrl": "https://cdn.octogen.ai/7c2001e9fe4d7c2125423a9337210c3e/a6d6658881b010034aea10ce56de6d70.webp?request_id=ce97c94a-27d8-4482-a059-d96c2d23d421",
      "width": 2048,
      "height": 2048,
      "sizeBytes": 279128,
      "mimeType": "image/webp"
    },
    "details": {
      "materials": [
        "Aqua/Water/Eau",
        "Stearyl Alcohol",
        "Cetyl Alcohol",
        "Behenamidopropyl Dimethylamine",
        "Bis-Aminopropyl Dimethicone",
        "Glutamic Acid",
        "Fragrance/Parfum",
        "Benzyl Alcohol",
        "Phenoxyethanol",
        "Glycerin",
        "Methylparaben",
        "Tocopheryl Acetate",
        "Propylparaben",
        "Limonene",
        "Histidine",
        "EDTA",
        "Sodium Chloride",
        "Citric Acid",
        "Linalool",
        "Hexyl Cinnamal",
        "Microcitrus Australasica Fruit Extract."
      ],
      "fit": [],
      "dimensions": null,
      "patterns": []
    }
  }
}
```

### Enrichment

StoreRouter classification and attributes. Use attribute_handles as search facet values.

```json
{
  "source": "indexed",
  "catalogKey": "ulta",
  "product": {
    "enrichment": {
      "type": "hair mask",
      "category_path": [
        "Beauty",
        "Hair Care",
        "Treatments & Solutions",
        "Hair Masks, Oils & Serums"
      ],
      "styles": null,
      "attributes": {
        "Package type": [
          "Jar"
        ],
        "Product form": [
          "Cream"
        ],
        "Treatment type": [
          "Topical"
        ],
        "Suitable for hair type": [
          "Dyed",
          "Fine",
          "Normal"
        ],
        "Constitutive ingredients": [
          "Alcohol",
          "Fruit Extracts",
          "Glycerin",
          "Vitamin E",
          "Water"
        ]
      },
      "attribute_handles": {
        "package_type": [
          "package_type__jar"
        ],
        "product_form": [
          "product_form__cream"
        ],
        "treatment_type": [
          "treatment_type__topical"
        ],
        "suitable_for_hair_type": [
          "suitable_for_hair_type__dyed",
          "suitable_for_hair_type__fine",
          "suitable_for_hair_type__normal"
        ],
        "constitutive_ingredients": [
          "constitutive_ingredients__alcohol",
          "constitutive_ingredients__fruit_extracts",
          "constitutive_ingredients__glycerin",
          "constitutive_ingredients__vitamin_e",
          "constitutive_ingredients__water"
        ]
      }
    }
  }
}
```

## Query this store

```bash
curl -sS https://api.storerouter.ai/v1/products/search \
  -H "Authorization: Bearer $OCTOGEN_PLATFORM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "catalogs": ["ulta"],
    "limit": 5
  }'
```

Selected matching products on October 15, 2026 (not the complete search response):

- [Invigo Brilliance Mask For Normal Hair](https://www.ulta.com/p/invigo-brilliance-mask-normal-hair-pimprod2003699) — $21.00
- [8 HR Deluxe Face Self-Tanning Cream](https://www.ulta.com/p/8-hr-deluxe-face-self-tanning-cream-pimprod2023376) — $33.00
- [ICONIC Eau de Parfum](https://www.ulta.com/p/iconic-eau-de-parfum-pimprod2051606) — $80.00
- [Satin Ultra Petite Hair Scrunchies](https://www.ulta.com/p/satin-ultra-petite-hair-scrunchies-pimprod2038251) — $10.00
- [Gentle Skin Cleanser Face Wash, For Sensitive Skin](https://www.ulta.com/p/gentle-skin-cleanser-face-wash-sensitive-skin-pimprod2028662) — $11.99

## Categories

| Category | Products |
| --- | --- |
| Cleansers & Makeup Removal | 2 |
| Tools & Accessories | 2 |
| Treatments & Solutions | 2 |
| Eaux de Parfum | 1 |
| Eyes | 1 |
| Face | 1 |
| Hair Accessories | 1 |
| Lips | 1 |
| Styling Products | 1 |
| Sun & Body Protection | 1 |

## Searchable fields

Use `name` and a `value` as a facet: `{"name": "<name>", "values": ["<value>"]}`.

| name | Field | Source | Coverage | Distinct values | Top values (`value` = label, products) |
| --- | --- | --- | --- | --- | --- |
| `is_activewear` | Activewear | Merchant data | 100% | 1 | `false` = False, 13 |
| `color` | Product color | Merchant data | 23% | 3 | `beige` = Beige, 1; `olive` = Olive, 1; `tan` = Tan, 1 |
| `color_family` | Color family | Merchant data | 23% | 2 | `Brown` = Brown, 2; `Green` = Green, 1 |
| `category_path.depth_0` | Category at depth 0 | StoreRouter enrichment | 100% | 2 | `beauty` = Beauty, 12; `apparel & accessories` = Apparel & Accessories, 1 |
| `category_path.depth_1` | Category at depth 1 | StoreRouter enrichment | 100% | 5 | `hair care` = Hair Care, 5; `makeup` = Makeup, 3; `skincare` = Skincare, 3; `accessories` = Accessories, 1; `fragrance` = Fragrance, 1 |
| `category_path.depth_2` | Category at depth 2 | StoreRouter enrichment | 100% | 10 | `cleansers & makeup removal` = Cleansers & Makeup Removal, 2; `tools & accessories` = Tools & Accessories, 2; `treatments & solutions` = Treatments & Solutions, 2; `eaux de parfum` = Eaux de Parfum, 1; `eyes` = Eyes, 1 |
| `category_path.depth_3` | Category at depth 3 | StoreRouter enrichment | 92% | 10 | `hair masks, oils & serums` = Hair Masks, Oils & Serums, 2; `hair styling tools` = Hair Styling Tools, 2; `facial cleansers` = Facial Cleansers, 1; `foundations & concealers` = Foundations & Concealers, 1; `hair bands` = Hair Bands, 1 |
| `age_groups` | Age Group | StoreRouter enrichment | 69% | 1 | `adult` = Adult, 9 |
| `gender` | Gender | StoreRouter enrichment | 69% | 2 | `unisex` = Unisex, 8; `female` = Female, 1 |
| `product_form` | Product form | StoreRouter enrichment | 54% | 4 | `product_form__cream` = Cream, 3; `product_form__liquid` = Liquid, 3; `product_form__foam` = Foam, 1; `product_form__spray` = Spray, 1 |
| `category_path.depth_4` | Category at depth 4 | StoreRouter enrichment | 39% | 5 | `combs & brushes` = Combs & Brushes, 1; `hair dryers` = Hair Dryers, 1; `mascaras` = Mascaras, 1; `ponytail holders` = Ponytail Holders, 1; `self tanner` = Self Tanner, 1 |
| `constitutive_ingredients` | Constitutive ingredients | StoreRouter enrichment | 31% | 6 | `constitutive_ingredients__water` = Water, 4; `constitutive_ingredients__alcohol` = Alcohol, 2; `constitutive_ingredients__glycerin` = Glycerin, 2; `constitutive_ingredients__vitamin_e` = Vitamin E, 2; `constitutive_ingredients__castor_oil` = Castor Oil, 1 |
| `package_type` | Package type | StoreRouter enrichment | 31% | 5 | `package_type__bottle` = Bottle, 3; `package_type__pump_bottle` = Pump Bottle, 2; `package_type__jar` = Jar, 1; `package_type__plastic_bottle` = Plastic Bottle, 1; `package_type__spray_bottle` = Spray Bottle, 1 |
| `product_certifications_standards` | Product certifications & standards | StoreRouter enrichment | 31% | 9 | `product_certifications_standards__dermatologist_tested` = Dermatologist Tested, 3; `product_certifications_standards__alcohol_free` = Alcohol Free, 2; `product_certifications_standards__sensitive_skin` = Sensitive Skin, 2; `product_certifications_standards__no_artificial_fragrance` = No Artificial Fragrance, 1; `product_certifications_standards__oil_free` = Oil Free, 1 |
| `makeup_features` | Makeup features | StoreRouter enrichment | 23% | 5 | `makeup_features__moisturizing` = Moisturizing, 2; `makeup_features__contains_hyaluronic_acid` = Contains Hyaluronic Acid, 1; `makeup_features__easy_to_apply` = Easy to Apply, 1; `makeup_features__hydrating` = Hydrating, 1; `makeup_features__nourishing` = Nourishing, 1 |
| `skin_care_effect` | Skin care effect | StoreRouter enrichment | 23% | 8 | `skin_care_effect__hydrating` = Hydrating, 2; `skin_care_effect__moisturizing` = Moisturizing, 2; `skin_care_effect__bronzing` = Bronzing, 1; `skin_care_effect__cleansing` = Cleansing, 1; `skin_care_effect__illuminating` = Illuminating, 1 |
| `cosmetic_finish` | Cosmetic finish | StoreRouter enrichment | 15% | 3 | `cosmetic_finish__glossy` = Glossy, 1; `cosmetic_finish__natural` = Natural, 1; `cosmetic_finish__sheer` = Sheer, 1 |
| `dispenser_type` | Dispenser type | StoreRouter enrichment | 15% | 2 | `dispenser_type__pump_bottle` = Pump Bottle, 1; `dispenser_type__tube` = Tube, 1 |
| `pattern` | Pattern | StoreRouter enrichment | 15% | 3 | `pattern__abstract` = Abstract, 1; `pattern__solid` = Solid, 1; `pattern__texture` = Texture, 1 |
| `suitable_for_hair_type` | Suitable for hair type | StoreRouter enrichment | 15% | 6 | `suitable_for_hair_type__colored` = Colored, 1; `suitable_for_hair_type__damaged` = Damaged, 1; `suitable_for_hair_type__dyed` = Dyed, 1; `suitable_for_hair_type__fine` = Fine, 1; `suitable_for_hair_type__normal` = Normal, 1 |
| `suitable_for_skin_type` | Suitable for skin type | StoreRouter enrichment | 15% | 4 | `suitable_for_skin_type__sensitive` = Sensitive, 2; `suitable_for_skin_type__all_skin_types` = All Skin Types, 1; `suitable_for_skin_type__dry` = Dry, 1; `suitable_for_skin_type__normal` = Normal, 1 |
| `treatment_type` | Treatment type | StoreRouter enrichment | 15% | 1 | `treatment_type__topical` = Topical, 2 |
| `application_area` | Application area | StoreRouter enrichment | 8% | 1 | `application_area__face` = Face, 1 |
| `category_path.depth_5` | Category at depth 5 | StoreRouter enrichment | 8% | 1 | `hairbrushes & combs` = Hairbrushes & Combs, 1 |
| `cosmetic_function` | Cosmetic function | StoreRouter enrichment | 8% | 1 | `cosmetic_function__cleansing` = Cleansing, 1 |
| `fabric` | Fabric | StoreRouter enrichment | 8% | 1 | `fabric__satin` = Satin, 1 |
| `fragrance_base_notes` | Base Notes | StoreRouter enrichment | 8% | 3 | `fragrance_base_notes__amber` = Amber, 1; `fragrance_base_notes__musk` = Musk, 1; `fragrance_base_notes__sandalwood` = Sandalwood, 1 |
| `fragrance_family` | Fragrance Family | StoreRouter enrichment | 8% | 2 | `fragrance_family__floral` = Floral, 1; `fragrance_family__fruity` = Fruity, 1 |
| `fragrance_heart_notes` | Heart Notes | StoreRouter enrichment | 8% | 3 | `fragrance_heart_notes__magnolia` = Magnolia, 1; `fragrance_heart_notes__muguet` = Muguet / Lily of the Valley, 1; `fragrance_heart_notes__peony` = Peony, 1 |
| `fragrance_notes` | Fragrance Notes | StoreRouter enrichment | 8% | 7 | `fragrance_notes__amber` = Amber, 1; `fragrance_notes__musk` = Musk, 1; `fragrance_notes__peach` = Peach, 1; `fragrance_notes__pear` = Pear, 1; `fragrance_notes__peony` = Peony, 1 |
| `fragrance_top_notes` | Top Notes | StoreRouter enrichment | 8% | 3 | `fragrance_top_notes__peach` = Peach, 1; `fragrance_top_notes__pear` = Pear, 1; `fragrance_top_notes__raspberry` = Raspberry, 1 |
| `hair_care_finish` | Hair care finish | StoreRouter enrichment | 8% | 1 | `hair_care_finish__glossy` = Glossy, 1 |
| `hair_styling_tool_features` | Hair styling tool features | StoreRouter enrichment | 8% | 2 | `hair_styling_tool_features__ionic_function` = Ionic Function, 1; `hair_styling_tool_features__travel_size` = Travel Size, 1 |
| `lip_gloss_effect` | Lip gloss effect | StoreRouter enrichment | 8% | 1 | `lip_gloss_effect__mirroring` = Mirroring, 1 |
| `mascara_effect` | Mascara effect | StoreRouter enrichment | 8% | 3 | `mascara_effect__curling` = Curling, 1; `mascara_effect__nourishing` = Nourishing, 1; `mascara_effect__volumizing` = Volumizing, 1 |
| `material` | Material | StoreRouter enrichment | 8% | 1 | `material__nylon` = Nylon, 1 |
| `power_source` | Power source | StoreRouter enrichment | 8% | 1 | `power_source__ac_powered` = Ac Powered, 1 |
| `scent` | Scent | StoreRouter enrichment | 8% | 2 | `scent__floral` = Floral, 1; `scent__fruity` = Fruity, 1 |
| `skin_tone` | Skin tone | StoreRouter enrichment | 8% | 2 | `skin_tone__light_skin` = Light Skin, 1; `skin_tone__medium_skin` = Medium Skin, 1 |
| `skin_undertone` | Skin undertone | StoreRouter enrichment | 8% | 2 | `skin_undertone__cool` = Cool, 1; `skin_undertone__neutral` = Neutral, 1 |
| `sustainability_features` | Sustainability Features | StoreRouter enrichment | 8% | 1 | `sustainability_features__vegan` = Vegan, 1 |
| `tan_type` | Tan type | StoreRouter enrichment | 8% | 1 | `tan_type__dark` = Dark, 1 |
| `brand_name` | Canonical brand name | Brand | 46% | 6 | `Color Wow` = Color Wow, 1; `Drybar` = Drybar, 1; `Essence` = Essence, 1; `Kitsch` = Kitsch, 1; `Loving Tan` = Loving Tan, 1 |
