Playground Sign in Start free

Scraping Etsy Products

1

Overview

Etsy is a popular marketplace for handmade, vintage, and unique products. Scraping Etsy listings provides valuable insights for sellers, market researchers, and buyers analyzing pricing trends and competitive positioning.

What You'll Extract

Product title & description
Price & discounts
Product images
Ratings & reviews
Shop information
Shipping details
Use Cases

Price monitoring, trend analysis, competitive research, product sourcing, market gap identification, and seller performance tracking.

2

Analyze the HTML Structure

Etsy product pages use semantic HTML with data attributes. Here are the key selectors:

Data PointCSS SelectorType
Product Titleh1[data-buy-box-listing-title]text
Pricep[data-buy-box-region-price]text
Main Imageimg[data-listing-main-image]image
Ratinginput[name='rating']attr (value)
Review Counta[href*='reviews'] spantext
Shop Namea[href*='/shop/']text
Shippingdiv[data-delivery-cost]text

Etsy's selectors may change over time. Always test with real product pages before production use.

3

Build Extract Rules

JSON - Extract Rules
{
  "title": { "selector": "h1[data-buy-box-listing-title]", "type": "text" },
  "price": { "selector": "p[data-buy-box-region-price]", "type": "text" },
  "main_image": { "selector": "img[data-listing-main-image]", "type": "image" },
  "all_images": {
    "selector": "ul[data-carousel-thumbnail-images] img",
    "type": "image",
    "multiple": true
  },
  "rating": {
    "selector": "input[name='rating']",
    "type": "attr",
    "attribute": "value"
  },
  "review_count": { "selector": "a[href*='reviews'] span", "type": "text" },
  "shop_name": { "selector": "a[href*='/shop/'] span", "type": "text" },
  "shop_url": { "selector": "a[href*='/shop/']", "type": "link" },
  "description": { "selector": "div[data-product-details-description]", "type": "text" }
}
4

Make the API Request

Etsy requires JavaScript rendering for full content. Use js=true:

curl -X POST "https://api.ujeebu.com/scrape" \
  -H "ApiKey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com"
}'
5

Scraping Search Results

To scrape multiple listings from search results:

JSON - Search Results Extract Rules
{
  "products": {
    "selector": "div[data-search-results] li[data-listing-id]",
    "type": "obj",
    "multiple": true,
    "children": {
      "listing_id": { "selector": "", "type": "attr", "attribute": "data-listing-id" },
      "title": { "selector": "h3", "type": "text" },
      "price": { "selector": "span.currency-value", "type": "text" },
      "shop": { "selector": "span.shop-name", "type": "text" },
      "url": { "selector": "a.listing-link", "type": "link" },
      "image": { "selector": "img", "type": "image" }
    }
  }
}
6

Best Practices

01

Enable JavaScript

Always use js=true for Etsy pages. They rely heavily on client-side rendering.

Essential
02

Use wait_for

Wait for key elements like wait_for=h1 to ensure content is fully loaded.

Recommended
03

Rotating Proxies

Use proxy_type: "rotating" for bulk scraping to avoid blocks.

Production
04

Rate Limiting

Add 2-3 second delays between requests. Respect Etsy's servers.

Important

Ready to Start Scraping?

Try the API in our interactive playground or explore the documentation.