     [Blog](https://scrapfly.io/blog)   /  [ecommerce](https://scrapfly.io/blog/tag/ecommerce)   /  [How to Scrape Etsy.com Product, Shop and Search Data](https://scrapfly.io/blog/posts/how-to-scrape-etsy-com-product-review-data)   # How to Scrape Etsy.com Product, Shop and Search Data

 by [Mazen Ramadan](https://scrapfly.io/blog/author/mazen) Apr 28, 2026 12 min read [\#ecommerce](https://scrapfly.io/blog/tag/ecommerce) [\#project](https://scrapfly.io/blog/tag/project) [\#python](https://scrapfly.io/blog/tag/python) [\#scrapeguide](https://scrapfly.io/blog/tag/scrapeguide) 

 [  ](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fscrapfly.io%2Fblog%2Fposts%2Fhow-to-scrape-etsy-com-product-review-data "Share on LinkedIn")    

 

 

   

[Etsy.com](https://www.etsy.com/) is a global online marketplace where users can buy and sell handmade and vintage items. It's a valuable data target though it can be challenging to scrape due to its high level of protection.

In this article about web scraping Etsy, we'll scrape items and review data from product, shop and search pages. Moreover, we'll explore to avoid Etsy scraping blocking. Let's get started!

## Key Takeaways

Master etsy scraper development with Python to extract product data, reviews, and shop information while bypassing anti-scraping measures for comprehensive e-commerce analysis.

- Reverse engineer Etsy's hidden JSON data embedded in script tags for product details and variants
- Extract structured review data including ratings, comments, and reviewer information from product pages
- Handle Etsy's anti-scraping measures with realistic headers, user agents, and request spacing
- Parse dynamic search results and pagination to collect comprehensive product listings
- Implement error handling and retry logic for rate limiting and temporary blocking scenarios
- Use ScrapFly SDK for automated Etsy scraping with built-in anti-blocking protection

[**View Source Code**github.com/scrapfly/scrapfly-scrapers/tree/main/etsy-scraper](https://github.com/scrapfly/scrapfly-scrapers/tree/main/etsy-scraper)

**Get web scraping tips in your inbox**Trusted by 100K+ developers and 30K+ enterprises. Unsubscribe anytime.







## Why Scrape Etsy.com?

If you are a buyer looking to buy certain items, manually exploring thousands of ad listings to figure out the best deal can be tedious and time-consuming. With etsy.com scraping, we can retrieve thousands of listings and compare them in no time, allowing for better decision-making.

Web scraping etsy.com also allows businesses and sellers to understand and analyze market trends to get insights into consumer behavior.

Furthermore, scraping sellers' and shops' data from Etsy allows business owners to analyze their competitors' and market peers' items, stocks and prices. Leading to taking strategic moves and gaining a competitive edge.



## Project Setup

To scrape etsy.com, we'll use a few Python libraries.

- `scrapfly-sdk` for bypassing etsy.com web scraping blocking using [ScrapFly](https://scrapfly.io/)'s web scraping API.
- `asyncio` for running our code in an asynchronous fashion, increasing [our web scraping speed](https://scrapfly.io/blog/posts/web-scraping-speed#async-requests).

As `asyncio` comes included with Python, so we only have to install `scrapfly-sdk` using the following pip command:

shell```shell
pip install scrapfly-sdk
```





## How to Scrape Etsy Listings

Let's start by scraping Etsy.com listing pages. Go to any [listing page](https://www.etsy.com/listing/949905096) on the website and you will get a page similar to this:



Item listing page on Etsy.comTo scrape listing pages' data, we'll extract all the data directly in JSON rather than parsing each data point from the HTML.

To view the hidden listing data, open the browser developer tools (by pressing the `F12` key) to view the page HTML. Then, scroll down till you find the `script` tag with the `application/ld+json` type. The data inside this tag looks like this:



Hidden data on product listing pageThis data is the same on the web page but before getting rendered into the HTML, usually known as [hidden web data](https://scrapfly.io/blog/posts/how-to-scrape-hidden-web-data). To scrape etsy.com listing pages, we'll select this `script` tag and extract the inside data as JSON directly:



'); const s = document.createElement("script"); s.src = [ "https://gist.github.com/", "scrapfly-dev/", "73969723c2fa37536297e75e7c883103", ".js" ].join(""); document.write('Here, we initialize an httpx client with basic browser headers and define two functions:

- `parse_product_page()` for parsing the HTML and selecting the JSON data inside the script tag.
- `scrape_product()` for scraping the product pages by adding the page URLs to a scraping list and scraping them concurrently.

Here is a sample output of the result we got:

Example outputjson```json
[
  {
    "@type": "Product",
    "@context": "https://schema.org",
    "url": "https://www.etsy.com/listing/949905096/oakywood-dual-laptop-stand-wood-vertical",
    "name": "Oakywood Dual Laptop Stand Wood, Vertical Stand for Desk, Adjustable Macbook Double Dock, Desk Organizer, Gift for Him, Work from Home",
    "sku": "949905096",
    "gtin": "n/a",
    "description": "The Dual Laptop Dock is an innovative solution for your desk organization. The stand allows you to simultaneously store two devices: laptops or tablets up to 24mm (0.95 inch) thick. Streamline your work by securely storing your gadgets, organizing your desk space, and smoothly switching between the two devices.\n\nWant it PERSONALIZED? Add this - https://www.etsy.com/listing/662276951\n\nF E A T U R E S:\n• supports two devices up to 24mm (0.94 inch) thick and offers adjustable width for a secure fit\n• hand-polished solid oak or walnut wood\n• solid aluminum base - stable & safe\n• one-hand operation - micro-suction tape technology\n• soft wool felt and flock on the inside protects your devices\n• unique geometric design\n\nMake your desk organized and comfortable - choose a multifunctional dual vertical stand, which allows you to store all of your favorite devices! Handcrafted in solid walnut or oak wood, polished by true woodworking enthusiasts.\n\n1 PRODUCT = 1 TREE\nYes! It&#39;s that simple! You buy 1 product from us, and we plant 1 tree! You can do something good for the environment while buying products for yourself. Isn’t that great?!\n\nADDITIONAL INFORMATION:\n• Length x Width: 18 x 11.3 cm (7&quot; x 4.45&quot;)\n• Height: 4 cm (1.6&quot;)\n• Wood is a natural material, thus each individual product may slightly vary in color\n• Handcrafted in Poland, EU\n\nASK US!\nIf you have any other questions about this phone case, please click the &quot;Ask a Question&quot; button next to the price and we’ll get right back to you!\nThank you for shopping at Oakywood!",
    "image": [
      {
        "@type": "ImageObject",
        "@context": "https://schema.org",
        "author": "Oakywood",
        "contentURL": "https://i.etsystatic.com/13285848/r/il/ea7b26/4369079578/il_fullxfull.4369079578_p74k.jpg",
        "description": null,
        "thumbnail": "https://i.etsystatic.com/13285848/c/1452/1154/149/0/il/ea7b26/4369079578/il_340x270.4369079578_p74k.jpg"
      },
      ....
    ],
    "category": "Electronics & Accessories < Docking & Stands < Stands",
    "brand": {
      "@type": "Brand",
      "@context": "https://schema.org",
      "name": "Oakywood"
    },
    "logo": "https://i.etsystatic.com/isla/7cfa3d/58081234/isla_fullxfull.58081234_fqvaz995.jpg?version=0",
    "aggregateRating": {
      "@type": "AggregateRating",
      "ratingValue": "4.9",
      "reviewCount": 7695
    },
    "offers": {
      "@type": "AggregateOffer",
      "offerCount": 2959,
      "lowPrice": "70.00",
      "highPrice": "80.00",
      "priceCurrency": "USD",
      "availability": "https://schema.org/InStock"
    },
    "review": [
      {
        "@type": "Review",
        "reviewRating": {
          "@type": "Rating",
          "ratingValue": 5,
          "bestRating": 5
        },
        "datePublished": "2023-11-30",
        "reviewBody": "Absolutely beautiful laptop stand for my setup. I use it for my work laptop and my MacBook. It cleaned up my desk, which is mounted in my dining room, and added a refined look. The walnut almost perfectly matches the wood of my desk (differences in finishes aside; I can&#39;t expect the seller to use tung oil). The included woolen strips help to make each slot perfect for my laptops, both my chunky government one and my thin MBP. The stand hasn&#39;t moved, so whatever they put on the bottom to keep it in place is great. Highly recommend this.",
        "author": {
          "@type": "Person",
          "name": "JC Palmer"
        }
      },
      ....
    ],
    "material": "Solid Wood/Stainless Steel/Walnut Wood"
  },
]
```



Pretty straightforward! Our Etsy scraper got all the product data and a few reviews with just a few lines of code. Next, we'll scrape shop data!



## How to Scrape Etsy Shops

Shop pages on etsy.com include data about the products sold by a shop alongside the shop reviews. Similar to product listing pages, shop page data are also found under `script` tags:



Hidden data on shop pageJust like in the previous section, we'll scrape etsy.com shop pages by extracting the data directly from the above script tag:



'); const s = document.createElement("script"); s.src = \[ "https://gist.github.com/", "scrapfly-dev/", "b6f92473a40078f626c3208f0f2ea80d", ".js" \].join(""); document.write('The above code is the same as the Etsy scraper we wrote earlier. We have only changed the naming and the XPath selector.

Here is a sample output of the result we got:

Sample outputjson```json
[
  {
    "@context": "https://schema.org",
    "@type": "ItemList",
    "itemListElement": [
      {
        "@context": "https://schema.org",
        "@type": "Product",
        "image": "https://i.etsystatic.com/18986650/r/il/42281b/3427680022/il_fullxfull.3427680022_busp.jpg",
        "name": "Custom Recipe Journal Anniversary gift Christmas gift, Recipe book  For Mom, Leather Bound Cook book, Cookbook Wooden Cover Notebook",
        "url": "https://www.etsy.com/listing/1096283182/custom-recipe-journal-anniversary-gift",
        "brand": {
          "@type": "Brand",
          "name": "JoshuaHouseCrafts"
        },
        "offers": {
          "@type": "Offer",
          "price": "90.69",
          "priceCurrency": "USD"
        },
        "position": 1
      },
      ....
    ],
    "numberOfItems": 36
  }
]
```



Cool! We are able to scrape product and shop pages from etsy.com. The last piece of our Etsy scraper is the search pages. Let's jump into it!



Scrapfly

#### Scale your web scraping effortlessly

Scrapfly handles proxies, browsers, and anti-bot bypass — so you can focus on data.

[Try Free →](https://scrapfly.io/register)## How to Scrape Etsy Search

In this section, we'll scrape item listing data from search pages. But first, let's look at what the search pages on etsy.com look like. Search for any product on the website and you will get a page similar to this:



Search page on Etsy.comUnlike the product and shop pages, hidden data on search pages don't provide all the search data. For example, here is hidden data on a search page. It contains 8 product listings, but the actual page contains 64 product listings:

Hidden data on a search pagejson```json
{
  "@context": "https://schema.org",
  "@type": "ItemList",
  "itemListElement": [
    {
      "@context": "https://schema.org",
      "@type": "Product",
      "image": "https://i.etsystatic.com/26507191/r/il/5e963e/3991311170/il_fullxfull.3991311170_1zyv.jpg",
      "name": "Wood Laptop Stand for Desk Wooden Computer Laptop Stand Portable Office Desk Accessories",
      "url": "https://www.etsy.com/listing/1575517454/wood-laptop-stand-for-desk-wooden",
      "brand": {
        "@type": "Brand",
        "name": "YiYoYo"
      },
      "offers": {
        "@type": "Offer",
        "price": "39.20",
        "priceCurrency": "USD"
      },
      "position": 1,
      "aggregateRating": {
        "@type": "AggregateRating",
        "ratingValue": "4.8875",
        "reviewCount": "501"
      }
    },
    ....
  ],
  "numberOfItems": 1447
}
```



So, to scrape Etsy.com search pages, we have to parse each listing data from the HTML. Let's start with that.



'); const s = document.createElement("script"); s.src = [ "https://gist.github.com/", "scrapfly-dev/", "694edd771381ea2b1cdf1a2ffcd32c88", ".js" ].join(""); document.write('Here, we define a `scrape_search()` function to crawl over the search pages by scraping the first search page and then iterating over the desired number of search pages.

The above etsy.com scraping code should scrape three search pages with a total number of 192 product listings. Here is what the scraped data should look like:

Sample outputjson```json
[
  {
    "productLink": "https://www.etsy.com/listing/1584493903",
    "productTitle": "Wood Monitor Stand. Wooden Monitor Stand. Laptop Stand. Monitor Riser. Desk Accessories. Speaker Stand. Desk Shelf.",
    "productImage": "https://i.etsystatic.com/46053372/c/1688/1688/654/0/il/b98b88/5716635451/il_300x300.5716635451_iyzl.jpg",
    "seller": "unfnshed",
    "listingType": "Free listing",
    "productRate": 4.9,
    "numberOfReviews": 87,
    "freeShipping": "Yes",
    "productPrice": 69.0,
    "priceCurrency": "$",
    "originalPrice": "No discount",
    "discount": "No discount"
  },
  {
    "productLink": "https://www.etsy.com/listing/1572117648",
    "productTitle": "Monitor Stand - Monitor Riser, Wood Monitor Stand, Solid Wood Stand, Desk Shelf, Laptop Stand, Speaker Stand, Desk Accessories, Wooden Stand",
    "productImage": "https://i.etsystatic.com/46053372/c/1688/1688/654/0/il/b98b88/5716635451/il_300x300.5716635451_iyzl.jpg",
    "seller": "KeelanScott",
    "listingType": "Free listing",
    "productRate": 4.9,
    "numberOfReviews": 310,
    "freeShipping": "Yes",
    "productPrice": 89.99,
    "priceCurrency": "$",
    "originalPrice": 149.99,
    "discount": "(40% off)"
  },
  {
    "productLink": "https://www.etsy.com/listing/1353251909",
    "productTitle": "Wood Monitor Stand, Monitor Stand with Drawers, Computer Monitor Riser, Computer Stand, Wood Laptop Stand, Adjustable Desk, Monitor Riser",
    "productImage": "https://i.etsystatic.com/46053372/c/1688/1688/654/0/il/b98b88/5716635451/il_300x300.5716635451_iyzl.jpg",
    "seller": "woodandscienceteam",
    "listingType": "Free listing",
    "productRate": 5.0,
    "numberOfReviews": 160,
    "freeShipping": "Yes",
    "productPrice": 69.0,
    "priceCurrency": "$",
    "originalPrice": 138.0,
    "discount": "(50% off)"
  },
  ....
]
```



Our scraping code is finally complete, which can scrape product, shop and search pages. However, our Etsy scraper will likely get blocked after sending additional requests to the website. Let's take a look at a solution!



## Avoid Esty.com Scraping Blocking

Etsy.com is a highly protected website that can detect and block bots such as web scrapers. For example, let's attempt to request a search page on etsy.com with a headless browser to minimize the chances of getting blocked:

python```python
from playwright.sync_api import sync_playwright

with sync_playwright() as playwight:
    # Lanuch a chrome browser
    browser = playwight.chromium.launch(headless=False)
    page = browser.new_page()
    # Go to leboncoin.fr
    page.goto("https://www.etsy.com/search?q=personalized+gifts")
    # Take a screenshot
    page.screenshot(path="screenshot.png")
```



Our request has been detected as a bot and we got required to a CAPTCHA challenge before proceeding to the web page:



Etsy.com web scraping blockingTo avoid etsy.com scraping blocking, we'll use ScrapFly.



For Scrapfly example, all we should do is replace our HTTP client with the ScrapFly client:

python```python
import httpx
from parsel import Selector

response = httpx.get("some etsy.com url")
selector = Selector(response.text)

# in ScrapFly SDK becomes
from scrapfly import ScrapeConfig, ScrapflyClient, ScrapeApiResponse

scrapfly_client = ScrapflyClient("Your ScrapFly API key")
result: ScrapeApiResponse = scrapfly_client.scrape(ScrapeConfig(
    # some homegate.ch URL
    "https://www.etsy.com/search?q=personalized+gifts",
    # we can select specific proxy country
    country="US",
    # and enable anti scraping protection bypass
    asp=True,
    # allows JavaScript rendering similar to headless browsers
    render_js=True
))
# get the HTML content
html = result.scrape_result['content']
# use the built-in parsel selector
selector = result.selector
```



For more, explore [web scraping API](https://scrapfly.io/web-scraping-api) and its documentation.



## FAQ

Is scraping etsy.com legal?All the data on etsy.com are publicly available and it's legal to scrape them as long as you don't affect the website performance by keeping your scraping rate reasonable. However, you should pay attention to the **GDPR** compliance in the EU, which stands against scraping personal data, such as scraping sellers' personal data on Etsy. Refer to our previous guide on [web scraping legality](https://scrapfly.io/is-web-scraping-legal) for more details.







Is there a public API for etsy.com?There are no public Etsy API endpoints available however it's Etsy.com is easy and legal to scrape. You can use the scraper code described in this tutorial to [create your own web scraping API](https://scrapfly.io/blog/posts/how-to-turn-web-scrapers-into-data-apis).







Are there alternatives for etsy.com?Yes, for more scrape guides about websites similar to Etsy, refer to our [\#scrapeguide](https://scrapfly.io/blog/tags/scrapeguide/) blog tag.







How can I handle pagination when scraping Etsy search results?Etsy paginates search results using URL query parameters. Increment the page offset in your request loop to collect all results. For rate limiting best practices during pagination, see [our guide on rate limiting async requests](https://scrapfly.io/blog/posts/how-to-rate-limit-asynchronous-python-requests).

[**View Source Code**github.com/scrapfly/scrapfly-scrapers/tree/main/etsy-scraper](https://github.com/scrapfly/scrapfly-scrapers/tree/main/etsy-scraper)









## Web Scraping Etsy.com - Summary

In this article, we explained how to scrape etsy.com, a popular website for hand-crafted and gift products.

We went through a step-by-step process on how to scrape product and review data from Etsy products, shop and search pages using Python. We have seen that etsy.com can detect and block web scrapers. And for that, we have used ScrapFly to avoid Etsy web scraping blocking.

Legal Disclaimer and PrecautionsThis tutorial covers popular web scraping techniques for education. Interacting with public servers requires diligence and respect:

- Do not scrape at rates that could damage the website.
- Do not scrape data that's not available publicly.
- Do not store PII of EU citizens protected by GDPR.
- Do not repurpose *entire* public datasets which can be illegal in some countries.

Scrapfly does not offer legal advice but these are good general rules to follow. For more you should consult a lawyer.



   Table of Contents- [Key Takeaways](#key-takeaways)
- [Why Scrape Etsy.com?](#why-scrape-etsy-com)
- [Project Setup](#project-setup)
- [How to Scrape Etsy Listings](#how-to-scrape-etsy-listings)
- [How to Scrape Etsy Shops](#how-to-scrape-etsy-shops)
- [How to Scrape Etsy Search](#how-to-scrape-etsy-search)
- [Avoid Esty.com Scraping Blocking](#avoid-esty-com-scraping-blocking)
- [FAQ](#faq)
- [Web Scraping Etsy.com - Summary](#web-scraping-etsy-com-summary)
 
    Join the Newsletter  Get monthly web scraping insights 

 

 Scale Your Web Scraping

Anti-bot bypass, browser rendering, and rotating proxies, all in one API. Start with 1,000 free credits.

  No credit card required  1,000 free API credits  Anti-bot bypass included 

 [Start Free](https://scrapfly.io/register) [View Docs](https://scrapfly.io/docs/onboarding) 

 Not ready? Get our newsletter instead. 

 

## Explore this Article with AI

 [ ChatGPT ](https://chat.openai.com/?q=Summarize%20this%20page%3A%20https%3A%2F%2Fscrapfly.io%2Fblog%2Fposts%2Fhow-to-scrape-etsy-com-product-review-data) [ Gemini ](https://www.google.com/search?udm=50&aep=11&q=Summarize%20this%20page%3A%20https%3A%2F%2Fscrapfly.io%2Fblog%2Fposts%2Fhow-to-scrape-etsy-com-product-review-data) [ Grok ](https://x.com/i/grok?text=Summarize%20this%20page%3A%20https%3A%2F%2Fscrapfly.io%2Fblog%2Fposts%2Fhow-to-scrape-etsy-com-product-review-data) [ Perplexity ](https://www.perplexity.ai/search/new?q=Summarize%20this%20page%3A%20https%3A%2F%2Fscrapfly.io%2Fblog%2Fposts%2Fhow-to-scrape-etsy-com-product-review-data) [ Claude ](https://claude.ai/new?q=Summarize%20this%20page%3A%20https%3A%2F%2Fscrapfly.io%2Fblog%2Fposts%2Fhow-to-scrape-etsy-com-product-review-data) 



 ## Related Articles

 [  

 python ecommerce 

### How to Scrape Vestiaire Collective for Fashion Product Data

In this fashion scrapeguide we'll be taking a look at Vestiaire Collective - one of the biggest 2nd hand luxury fashion ...

 

 ](https://scrapfly.io/blog/posts/how-to-scrape-vestiairecollective) [  

 python scrapeguide 

### How to Scrape Google Search Results in 2026

In this scrape guide we'll be taking a look at how to scrape Google Search - the biggest index of public web. We'll cov...

 

 ](https://scrapfly.io/blog/posts/how-to-scrape-google) [  

 python scrapeguide 

### How to Scrape Amazon.com Product Data and Reviews

This scrape guide covers the biggest e-commerce platform in US - Amazon.com. We'll take a look how to scrape product dat...

 

 ](https://scrapfly.io/blog/posts/how-to-scrape-amazon) 

  



   



 Scale your web scraping effortlessly, **1,000 free credits** [Start Free](https://scrapfly.io/register)