Etsy Scraper avatar

Etsy Scraper

Pricing

Pay per event

Go to Apify Store
Etsy Scraper

Etsy Scraper

Scrape Etsy product listings by search query or shop URL. Get titles, prices, images, sellers, ratings, review counts, tags, and shipping info.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Daniel Wilson

Daniel Wilson

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Etsy Scraper — Product & Shop Listings

Extract product listings from Etsy search results and shop pages at scale. Get structured data — titles, prices, ratings, reviews, seller info, tags, images, and more — delivered as a clean JSON dataset you can download as CSV, Excel, JSON, or HTML.

Powered by Crawlee and BeautifulSoup for fast, efficient static HTML parsing. Runs on Apify — no infra to manage, built-in proxy rotation, scheduling, and webhook integrations.

Why use Etsy Scraper?

  • Market research — Track pricing trends, popular products, and bestseller badges across categories
  • Competitor monitoring — Watch specific shops for new listings, price changes, and inventory
  • Product catalog building — Build a searchable database of Etsy products with structured metadata
  • Price comparison — Compare prices across sellers for identical or similar products
  • SEO & keyword analysis — Extract listing tags to understand how top sellers optimize their products
  • Data enrichment — Augment your own datasets with real-time Etsy product information

How to use Etsy Scraper

  1. Set up locally — Clone this repo and install dependencies: pip install -r requirements.txt
  2. Run a search — Create a test input file with search_query set to what you want to find, then run apify run --input-file=test-input.json
  3. Scrape a shop — Provide a shop_url like https://www.etsy.com/shop/ShopName instead of a search query
  4. Adjust the limits — Set max_results to cap output (default 25, max 200). First 10 results are free per run; subsequent results use PPE billing at $0.004/result
  5. Sort the results — Choose from relevance, newest, price ascending/descending, or best selling
  6. Filter by price — Set min_price and max_price to narrow results
  7. Deploy to Apify — Run apify login, then apify push to deploy. Schedule runs, set up webhooks, and integrate with Zapier, Make, or Google Drive

What data does it extract?

Each scraped product listing includes:

FieldTypeDescription
titlestringProduct listing title
urlstringFull Etsy listing URL
pricestringCurrent price (e.g. "$24.99")
original_pricestring or nullOriginal price if on sale
currencystringCurrency code (USD, EUR, GBP, etc.)
image_urlstringMain product image URL
sellerstringShop name
seller_urlstringFull shop URL
ratingnumber or nullAverage rating (0.0–5.0)
reviews_countnumber or nullNumber of reviews
tagsarray of stringsListing tags/keywords
is_bestsellerbooleanWhether the listing has a bestseller badge
free_shippingbooleanWhether the listing offers free shipping

Example output

{
"title": "Handmade Sterling Silver Ring with Moonstone",
"url": "https://www.etsy.com/listing/1234567890",
"price": "$48.00",
"original_price": null,
"currency": "USD",
"image_url": "https://i.etsystatic.com/xxx/il/xxx.jpeg",
"seller": "MoonstoneJewelryCo",
"seller_url": "https://www.etsy.com/shop/MoonstoneJewelryCo",
"rating": 4.8,
"reviews_count": 234,
"tags": ["moonstone ring", "sterling silver", "handmade jewelry", "birthstone"],
"is_bestseller": true,
"free_shipping": true
}

Input parameters

ParameterTypeRequiredDefaultDescription
search_querystringNo*Etsy search query (e.g. "handmade jewelry")
shop_urlstringNo*Full Etsy shop URL (e.g. https://www.etsy.com/shop/ShopName)
max_resultsintegerNo25Max results to return (1–200)
sortstringNorelevanceSort order: relevance, newest, price_asc, price_desc, bestselling
min_pricenumberNoMinimum price filter
max_pricenumberNoMaximum price filter
proxyConfigurationobjectNodisabledApify proxy configuration for anti-bot protection

*Either search_query or shop_url is required.

Pricing / How much does it cost to scrape Etsy?

This Actor uses pay-per-event (PPE) billing on the Apify platform. You get 10 free results per run — ideal for testing and small-scale scraping. Beyond that, each result costs $0.004. The Actor start event costs $0.00005.

Example cost estimate: A run with 50 results costs 40 × $0.004 = $0.16 (after the 10 free results). With 200 max results: 190 × $0.004 = $0.76 per run.

Running locally on your machine costs nothing beyond your own bandwidth.

Tips / Advanced options

  • Proxy for large scrapes — If you're scraping many pages, enable Apify proxy to avoid rate limiting. Configure it in the input under proxyConfiguration or via the Apify Console.
  • Limited by results, not pages — The max_results limit counts individual products, not page views. Each search page contains ~48 products, so a run with max_results: 50 typically only needs 2 page requests.
  • Search vs shop mode — Only one of search_query or shop_url should be provided. If both are present, search takes priority.
  • Price filters work with searchmin_price and max_price only apply to search queries, not shop URLs.
  • Running locally — Use apify run --input-file=test-input.json to test. Data lands in the local storage/ directory.
  • Deploying to the cloud — Run apify push to deploy. Your Actor will appear at console.apify.com under My Actors.

FAQ, disclaimers, and support

Is scraping Etsy legal? Web scraping publicly available data is generally legal, but you should review Etsy's Terms of Service and robots.txt before scraping at scale. This Actor respects robots.txt by default and is designed for responsible data collection.

Does this scrape individual product detail pages? No — this scraper extracts data from search result cards and shop listing pages, which contain all the fields listed in the output schema. Individual product pages provide additional data (descriptions, variations, shipping details) but are not covered in this version.

What if a field comes back null? Some fields like rating, reviews_count, and original_price may be null for listings that don't have reviews, aren't on sale, or whose cards use a different HTML structure. The scraper uses multiple selector fallbacks to maximize coverage.

Rate limits and blocking — Etsy may rate-limit aggressive scraping. For production use at scale, enable Apify proxy and keep max_results reasonable. The scraper uses retry-on-blocked behavior by default.

Found a bug or need a custom solution? Open an issue in this repository or contact us for custom Actor development. We can extend this scraper to handle individual listing pages, more detailed shop data, or integrate with your specific workflow.

Data accuracy — This scraper extracts data as it appears on Etsy's public pages at the time of scraping. Etsy may change its HTML structure, which could affect parsing. We maintain multiple fallback selectors to stay resilient, but no guarantee of 100% uptime is made.