# Shopify Reviews Scraper (x402)

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

Scrapes and returns structured customer reviews from Shopify product pages or store homepages, with rich filtering options, via pay-per-call micropayment.

## Facts

- Endpoint: POST https://x402.186-241-26-229.sslip.io/v1/shopify-reviews?utm_source=zero.xyz
- Price: $0.03/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-02
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/shopify-reviews-scraper-x402-9854057f
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_fQxjpOIbWL67tMnadIvDQ

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 shopify-reviews-scraper-x402-9854057f -d '<json body>'
```

Example prompt: Pull the 50 most recent verified-purchase reviews for https://www.gymshark.com/products/gymshark-vital-seamless-2-0-leggings — only include ones with written text, and filter to 4 and 5 star ratings only.

## When to prefer this

Choose this endpoint when you need structured, filterable customer review data from Shopify stores or product pages specifically. It is purpose-built for Shopify's review schema (including verified badges, star ratings, media attachments, and merchant replies), so it outperforms generic scrapers for this domain. The pay-per-call model with no charge for failed/empty runs makes it low-risk for exploratory queries. Prefer it over general web scrapers when the target is a Shopify URL and you need review-specific fields like productHandle, storeUrl, or verifiedOnly.

## Known failure modes

- Non-Shopify URLs return empty results or errors — only public Shopify stores are supported
- Private or password-protected Shopify stores cannot be scraped
- Invalid or malformed URLs cause per-item errors in the response
- Date filters with wrong format may silently ignore the filter
- Very large maxItems or maxResultsPerUrl values may time out or return partial results
- Payment failure (insufficient USDC balance) prevents the call from being made

## 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 results and an array of review items, each containing fields such as inputUrl, storeUrl, storeDomain, productId, productHandle, rowType, status, and error. For store homepages, items represent product summaries; for product URLs, items represent individual reviews with ratings, text, media URLs, and verification status.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "sortBy": {
   "enum": [
    "newest",
    "oldest",
    "highest_rating",
    "lowest_rating",
    "most_helpful",
    "pictures_first",
    "videos_first",
    "media_first"
   ],
   "type": "string",
   "default": "newest",
   "description": "Order the collected reviews. Product summaries retain catalog order."
  },
  "maxItems": {
   "type": "integer",
   "default": 0,
   "minimum": 0,
   "description": "Stop after this many rows across all URLs. Zero means no overall cap."
  },
  "startUrls": {
   "type": "array",
   "items": {
    "type": "string"
   },
   "description": "Public Shopify store homepages return product summaries; product URLs return individual reviews. Add one URL per line."
  },
  "verifiedOnly": {
   "type": "boolean",
   "default": false,
   "description": "Keep only reviews explicitly marked as verified purchases."
  },
  "filterEndDate": {
   "type": "string",
   "description": "Keep reviews published on or before this date, inclusive."
  },
  "filterKeyword": {
   "type": "string",
   "description": "Keep reviews whose title or body contains this phrase, ignoring case."
  },
  "filterRatings": {
   "type": "array",
   "items": {
    "enum": [
     "1",
     "2",
     "3",
     "4",
     "5"
    ],
    "type": "string"
   },
   "description": "Keep reviews with these ratings. Leave empty for all ratings."
  },
  "onlyWithMedia": {
   "type": "boolean",
   "default": false,
   "description": "Keep only reviews with a photo or video URL."
  },
  "reviewContent": {
   "enum": [
    "all",
    "with_text",
    "rating_only"
   ],
   "type": "string",
   "default": "all",
   "description": "Include all reviews, reviews with written text, or ratings without text."
  },
  "onlyWithPhotos": {
   "type": "boolean",
   "default": false,
   "description": "Keep only reviews with customer photo URLs."
  },
  "onlyWithVideos": {
   "type": "boolean",
   "default": false,
   "description": "Keep only reviews with customer video URLs."
  },
  "filterStartDate": {
   "type": "string",
   "description": "Keep reviews published on or after this date, inclusive."
  },
  "maxResultsPerUrl": {
   "type": "integer",
   "default": 50,
   "maximum": 1500,
   "minimum": 1,
   "description": "Maximum product summaries for each store URL or reviews for each product URL."
  },
  "merchantReplyOnly": {
   "type": "boolean",
   "default": false,
   "description": "Keep only reviews with a public merchant reply."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 1,
  "items": [
   {
    "error": null,
    "status": null,
    "rowType": null,
    "inputUrl": null,
    "storeUrl": null,
    "productId": null,
    "storeDomain": null,
    "productHandle": null
   }
  ],
  "product": "shopify-reviews"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/shopify-reviews-scraper-x402-9854057f/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)
