# Shop.app Product Review Scraper (x402)

> Shop.app Product Review Scraper (x402) is a paid API for AI agents from x402.186-241-26-229.sslip.io, paid per call via x402, $0.025/call, status unknown (last checked 2026-10-02).

Fetches and filters public product reviews from shop.app URLs or product IDs, returning structured review data with rich filtering options.

## Facts

- Endpoint: POST https://x402.186-241-26-229.sslip.io/v1/app?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/shop-app-product-review-scraper-x402-50f57fb1
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_en-Jcxmua3Yx-13M88Zpg

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 shop-app-product-review-scraper-x402-50f57fb1 -d '<json body>'
```

Example prompt: Pull the 50 most recent shop.app reviews for product URL https://shop.app/products/12345678 that have at least 3 stars, were posted between 2024-01-01 and 2024-06-30, and contain the word 'quality' — sort them newest first.

## When to prefer this

Use this endpoint when you need structured review data specifically from shop.app (Shopify storefronts) and want fine-grained filtering by date, star rating, keywords, helpful votes, review length, or merchant reply status without building your own scraper. It is cost-effective because failed or empty runs are not billed. Prefer this over general web scrapers when the target products are known shop.app URLs or Shopify product IDs.

## Known failure modes

- Invalid or non-public product URL returns empty result (not charged)
- Product ID not found on shop.app returns empty items array
- Date range with no matching reviews returns count 0 (not charged)
- Keyword filter too restrictive yields empty result (not charged)
- Rate limiting or upstream shop.app unavailability may cause errors
- Malformed product URL format causes request failure

## 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 matched reviews and an array of review items, each containing review ID, store name, product ID, product URL, product name, merchant name, total rating count for the product, and the product's average rating. Failed or empty result runs are not charged.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "dateTo": {
   "type": "string",
   "description": "Keep reviews submitted on or before this date (YYYY-MM-DD)."
  },
  "sortBy": {
   "enum": [
    "newest",
    "oldest",
    "highest",
    "lowest",
    "recommended"
   ],
   "type": "string",
   "default": "newest",
   "description": "Order returned by the public review endpoint."
  },
  "dateFrom": {
   "type": "string",
   "description": "Keep reviews submitted on or after this date (YYYY-MM-DD)."
  },
  "keywords": {
   "type": "array",
   "description": "Keep reviews whose title or body contains any listed keyword, ignoring case."
  },
  "maxItems": {
   "type": "integer",
   "default": 0,
   "minimum": 0,
   "description": "Hard cap on reviews across all products. Set 0 for no total cap."
  },
  "maxScore": {
   "type": "integer",
   "maximum": 5,
   "minimum": 1,
   "description": "Keep reviews with at most this many stars."
  },
  "minScore": {
   "type": "integer",
   "maximum": 5,
   "minimum": 1,
   "description": "Keep reviews with at least this many stars."
  },
  "minThumbsUp": {
   "type": "integer",
   "minimum": 0,
   "description": "Keep reviews with at least this many helpful votes."
  },
  "productUrls": {
   "type": "array",
   "description": "Public shop.app product URLs or numeric product IDs."
  },
  "minReviewLength": {
   "type": "integer",
   "minimum": 0,
   "description": "Minimum number of characters in the review body."
  },
  "merchantReplyFilter": {
   "enum": [
    "all",
    "with_reply",
    "without_reply"
   ],
   "type": "string",
   "default": "all",
   "description": "Keep all reviews, only reviews with a merchant reply, or only those without one."
  },
  "maxReviewsPerProduct": {
   "type": "integer",
   "default": 100,
   "minimum": 0,
   "description": "Maximum matching reviews per product. Set 0 to collect all reachable public reviews."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 1,
  "items": [
   {
    "id": null,
    "store": null,
    "productId": null,
    "productUrl": null,
    "productName": null,
    "merchantName": null,
    "productRatingCount": null,
    "productAverageRating": null
   }
  ],
  "product": "app"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/shop-app-product-review-scraper-x402-50f57fb1/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402.186-241-26-229.sslip.io](https://www.zero.xyz/host/x402.186-241-26-229.sslip.io/llms.txt)
