# Ulta Beauty Product Review Scraper

> Ulta Beauty Product Review Scraper is a paid API for AI agents from api.scrapeforagents.tech, paid per call via x402, $0.025/call, status unknown (last checked 2026-10-02).

Collects structured customer reviews from Ulta Beauty product pages, with controls for sort order, review source, and quantity limits.

## Facts

- Endpoint: POST https://api.scrapeforagents.tech/v1/ulta?utm_source=zero.xyz
- Price: $0.025/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-02
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/ulta-beauty-product-review-scraper-353497b8
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_TgVIh-GJPvlmMOuwlaLDU

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability ulta-beauty-product-review-scraper-353497b8 -d '<json body>'
```

Example prompt: Pull up to 50 of the most helpful native-only reviews for this Ulta product page — https://www.ulta.com/p/some-product — sorted by MostHelpful, so I can analyze what customers love or hate about it.

## When to prefer this

Choose this endpoint when you need structured, paginated review data from Ulta Beauty product pages specifically, including control over sort order and review source (native vs. syndicated). Prefer it over generic web scrapers when you want Ulta-specific schema fields like productPageId, ugcId, and legacyId without parsing raw HTML. It is pay-per-call and does not charge for failed or empty runs, making it cost-effective for exploratory or bulk review collection.

## Known failure modes

- Product URL not found or invalid — returns empty items array
- Ulta changes page structure, breaking scraper — may return partial or empty data
- Rate limiting by Ulta — may result in incomplete review collection
- nativeOnly flag filtering out all available reviews — returns zero items
- maxItems or maxReviewsPerProduct set too low — truncated results

## How this service works

Pay-per-call structured web data. Failed or empty runs are not charged.

## Output

Returns a JSON object with a count of collected reviews and an array of review items, each containing fields like reviewId, productSku, productUrl, productName, productPageId, ugcId, legacyId, and internalReviewId. Empty or failed runs are not billed.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "sort": {
   "enum": [
    "Newest",
    "MostHelpful",
    "LowestRating",
    "HighestRating",
    "Oldest",
    "MediaSort"
   ],
   "type": "string",
   "default": "Newest",
   "description": "Order in which reviews are collected."
  },
  "maxItems": {
   "type": "integer",
   "default": 0,
   "minimum": 0,
   "description": "Hard cap across all products. Set 0 for no total cap."
  },
  "nativeOnly": {
   "type": "boolean",
   "default": false,
   "description": "Return only native reviews submitted on Ulta; otherwise include syndicated reviews."
  },
  "productUrls": {
   "type": "array",
   "description": "Ulta product page URLs to collect reviews from. Use public /p/ product URLs."
  },
  "maxReviewsPerProduct": {
   "type": "integer",
   "default": 100,
   "minimum": 0,
   "description": "Maximum unique reviews per product. Set 0 to collect as many as the public review service exposes."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 1,
  "items": [
   {
    "ugcId": null,
    "legacyId": null,
    "reviewId": null,
    "productSku": null,
    "productUrl": null,
    "productName": null,
    "productPageId": null,
    "internalReviewId": null
   }
  ],
  "product": "ulta"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/ulta-beauty-product-review-scraper-353497b8/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.scrapeforagents.tech](https://www.zero.xyz/host/api.scrapeforagents.tech/llms.txt)
