# Etsy Marketplace Scraper (x402)

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

Searches Etsy public marketplace pages and returns structured listing data including title, price, shop info, and image for one or more search phrases.

## Facts

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

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 etsy-marketplace-scraper-x402-ba35d305 -d '<json body>'
```

Example prompt: Search Etsy for 'personalized wedding gifts' and 'custom anniversary gifts' in the US, sorted by score, up to 3 pages each, only show listings under $50 with free shipping, and give me the titles, prices, shop names, and URLs.

## When to prefer this

Choose this endpoint when you need structured product data from Etsy's public marketplace — titles, prices, shop info, and images — without managing browser automation or scraping infrastructure yourself. It is ideal for price research, gift discovery, competitor analysis, or feeding an agent with real Etsy listings. Prefer it over generic web scrapers when you specifically need Etsy marketplace data with built-in filtering (price range, sale, free shipping, sort order). The pay-per-call model with no charge for failed/empty runs makes it low-risk for exploratory searches.

## Known failure modes

- Empty result set (0 items) if search phrases return no matching listings — not charged
- Network or scrape failure if Etsy changes its page structure — not charged
- Invalid sort enum value returns a validation error
- maxPrice/minPrice conflict returns no results if range is impossible
- Country enum mismatch returns validation error for unsupported country codes
- Rate limiting or blocking by Etsy may cause incomplete page results

## How this service works

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

## Output

A JSON object with a count of returned listings and an array of items, each containing listing title, listing URL, listing ID, price, shop name, shop URL, shop ID, and image URL, plus the product name ('etsy').

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "sort": {
   "enum": [
    "score",
    "created",
    "price-asc",
    "price-desc",
    "highest-reviews"
   ],
   "type": "string",
   "default": "score",
   "description": "Order listings using a sort supported by the public market pages."
  },
  "country": {
   "enum": [
    "US",
    "GB",
    "CA",
    "AU",
    "NZ",
    "DE",
    "FR",
    "IT",
    "ES",
    "NL",
    "IE",
    "BE",
    "AT",
    "PT",
    "JP",
    "BR",
    "MX",
    "CH",
    "SE",
    "NO",
    "DK",
    "PL"
   ],
   "type": "string",
   "default": "US",
   "description": "Destination country filter. Prices remain in the currency returned by the page."
  },
  "queries": {
   "type": "array",
   "items": {
    "type": "string"
   },
   "description": "One or more shopper phrases; each phrase opens its public market page. Short phrases work best."
  },
  "maxPages": {
   "type": "integer",
   "default": 5,
   "maximum": 30,
   "minimum": 1,
   "description": "Number of market pages per phrase. These pages showed about eight listing cards each during testing."
  },
  "maxPrice": {
   "type": "number",
   "minimum": 0,
   "description": "Keep listings whose current price is at most this amount in the returned currency."
  },
  "minPrice": {
   "type": "number",
   "minimum": 0,
   "description": "Keep listings whose current price is at least this amount in the returned currency."
  },
  "includeAds": {
   "type": "boolean",
   "default": true,
   "description": "Include sponsored placements and report their visible page positions."
  },
  "maxResults": {
   "type": "integer",
   "default": 0,
   "minimum": 0,
   "description": "Stop after this many saved listings across all phrases. Set to 0 for no total cap."
  },
  "onSaleOnly": {
   "type": "boolean",
   "default": false,
   "description": "Keep listings with a visible reduced price."
  },
  "freeShippingOnly": {
   "type": "boolean",
   "default": false,
   "description": "Keep listings marked with free shipping on the market page."
  },
  "dedupeAcrossQueries": {
   "type": "boolean",
   "default": true,
   "description": "Save each listing once when it appears under multiple phrases. The first phrase is retained."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 1,
  "items": [
   {
    "image": null,
    "price": null,
    "title": null,
    "shopId": null,
    "shopUrl": null,
    "shopName": null,
    "listingId": null,
    "listingUrl": null
   }
  ],
  "product": "etsy"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/etsy-marketplace-scraper-x402-ba35d305/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)
