Etsy Scraper
Pricing
Pay per event
Etsy Scraper
Scrape Etsy product listings by keyword, category, or shop URL. Extract titles, prices, ratings, review counts, shop names, shipping info, and product images. Process thousands of listings in a single run. Export to JSON, CSV, or Excel for market research and competitive analysis.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Actor stats
0
Bookmarked
63
Total users
36
Monthly active users
10 days ago
Last modified
Categories
Share
Scrape Etsy product listings at scale. Extract product names, prices, shop names, ratings, images, availability, and more from Etsy search results — no API keys, no login, no manual copying required.
This actor searches Etsy through category pages and market URLs, bypassing DataDome anti-bot protection that blocks standard /search endpoints. It uses lightweight HTTP requests with Cheerio (no browser) and parses LD+JSON structured data embedded in every Etsy page, giving you clean, structured product data in seconds.
What does Etsy Scraper do?
Etsy Scraper extracts product listing data from Etsy search results. You provide a search query (like handmade leather wallet or vintage engagement ring), optionally select a category, and the scraper returns structured data for every matching product — ready to export in JSON, CSV, or Excel.
🔍 Search any Etsy query — from boho wedding decor to custom pet portrait
📦 Up to 5,000 products per run — paginate through dozens of result pages automatically
🏷️ Filter by price, shipping, and sale status — narrow results before scraping
⚡ Fast and lightweight — HTTP-only with Cheerio, no browser overhead
🛡️ Bypasses DataDome — uses category and market URL patterns that avoid anti-bot blocks
💰 Pay per result — $0.003 per product extracted, no monthly subscription
Who is Etsy Scraper for?
🛒 Handcraft sellers and Etsy shop owners You're running your own Etsy shop and need competitive intelligence to price and position your products.
- Monitor competitor pricing in your niche (jewelry, decor, apparel, etc.)
- Track which keywords and product titles competitors are ranking for
- Identify pricing sweet spots and gaps in the market
📊 Dropshippers and product sourcers You're building a store and looking for trending handmade or vintage products to resell.
- Find top-selling products by scraping with
sort: recently_listedorsort: most_relevant - Identify prolific shops to approach as suppliers
- Track which categories have the best sale-to-stock ratio
📈 Market researchers and competitive analysts You're studying Etsy as a marketplace — pricing trends, category demand, or niche saturation.
- Extract pricing distributions across entire categories
- Measure listing density and competition for specific search terms
- Build time-series datasets by scheduling daily runs
🤖 Data engineers and developers You need Etsy product data piped into your application, database, or analytics pipeline.
- Integrate via Apify API with Node.js, Python, or cURL
- Schedule automated daily or weekly runs without writing any scraping code
- Feed results into Google Sheets, Airtable, Notion, or any webhook endpoint
Why use Etsy Scraper?
🚫 No Etsy API limitations — Etsy's official API requires OAuth approval, has strict rate limits, and restricts access to search results. This scraper extracts the same data directly from public pages with no API key needed.
⚙️ No browser required — unlike Playwright-based scrapers, Etsy Scraper uses pure HTTP requests with Cheerio parsing. Lower compute costs, faster execution, and higher reliability.
🛡️ DataDome bypass built in — Etsy's /search endpoint is protected by DataDome bot detection. This scraper routes through /c/{category} and /market/{query} paths that return full product data without triggering blocks.
📋 LD+JSON extraction — product data is parsed from Google-structured LD+JSON embedded in the HTML, not fragile CSS selectors. Consistent, reliable output even when Etsy updates their page design.
🔄 Automatic retry and rotation — failed requests are retried up to 5 times with exponential backoff and fresh residential proxy sessions on each attempt.
🌐 256 MB footprint — HTTP-only actor with minimal memory use, keeping platform costs extremely low and runs fast.
💵 Transparent pay-per-result pricing — you pay only for products actually extracted, plus a tiny $0.005 startup fee. No upfront credits, no monthly lock-in.
What data can you extract from Etsy?
Each scraped product includes 17 fields covering listing identity, pricing, seller info, and shipping status:
| Field | Type | Description |
|---|---|---|
listingId | String | Unique Etsy listing identifier |
name | String | Product title as shown on Etsy |
url | String | Direct link to the product listing |
imageUrl | String | Main product image URL |
shop | String | Seller shop name |
shopId | String | Unique shop identifier |
price | String | Current listing price |
originalPrice | String | Pre-sale price (if discounted), else null |
currency | String | Price currency code (e.g., USD, EUR, AUD) |
onSale | Boolean | Whether the item is currently on sale |
freeShipping | Boolean | Whether free shipping is offered |
rating | Number | Star rating (1.0–5.0), null if unrated |
availability | String | Stock status (e.g., "In Stock") |
position | Number | Result position in search results |
query | String | The search query that produced this listing |
page | Number | Which results page this listing came from |
scrapedAt | String | ISO 8601 timestamp of extraction |
How much does it cost to scrape Etsy listings?
Etsy Scraper uses pay-per-event pricing — you pay only for what you scrape. No monthly subscription. All platform costs are included.
| Free | Starter ($29/mo) | Scale ($199/mo) | Business ($999/mo) | |
|---|---|---|---|---|
| Per run | $0.005 | $0.005 | $0.005 | $0.005 |
| Per product | $0.00345 | $0.003 | $0.00234 | $0.0018 |
| 1,000 products | $3.45 | $3.00 | $2.34 | $1.80 |
Higher-tier plans (PLATINUM, DIAMOND) receive additional volume discounts for enterprise-scale usage.
Real-world cost examples (Starter plan):
| Use case | Products | Duration | Cost |
|---|---|---|---|
| Quick niche check | 20 products | ~5 sec | ~$0.065 |
| Single category page | 64 products | ~15 sec | ~$0.197 |
| Competitor analysis | 200 products | ~45 sec | ~$0.605 |
| Market research snapshot | 500 products | ~2 min | ~$1.505 |
| Large-scale extraction | 1,000 products | ~4 min | ~$3.005 |
| Full category deep-dive | 5,000 products | ~20 min | ~$15.005 |
💡 The free tier includes $5 of monthly usage — enough to scrape ~1,400 products at no cost.
How to scrape Etsy products step by step
-
Go to Etsy Scraper on Apify Store and click "Try for free". Sign up for an Apify account if you don't have one — the free tier includes $5 of monthly usage.
-
Enter your search query in the "Search Query" field. Use the same terms you'd type into Etsy's search bar, for example:
handmade leather journal,vintage gold ring, orcustom pet portrait. -
Select a category (recommended). Choosing a category like "Jewelry & Accessories" or "Home & Living" enables full pagination with up to 64 results per page. Without a category, results are limited to approximately 16 products via Etsy's
/market/path. -
Set the maximum number of products you want. The default is 64 (one page). Increase up to 5,000 for large-scale extraction.
-
Apply optional filters — set a price range with
minPrice/maxPrice, restrict to free shipping only, or filter to on-sale items only. Choose a sort order: Most Relevant, Lowest Price, Highest Price, or Recently Listed. -
Configure proxy settings. Residential proxy is pre-selected and required. Etsy actively blocks datacenter IPs — do not change the proxy group unless you have your own residential proxy provider.
-
Click "Start" and wait for the run to complete. A typical 64-product run finishes in under 30 seconds.
-
Download your data from the Dataset tab in JSON, CSV, Excel, or other formats. You can also connect results directly to Google Sheets, Slack, Airtable, or any webhook endpoint.
Example input for a basic search:
{"searchQuery": "handmade necklace","category": "jewelry-and-accessories","maxItems": 100,"sort": "most_relevant"}
Example input for sale + free shipping filter:
{"searchQuery": "vintage leather bag","category": "bags-and-purses","maxItems": 200,"sort": "lowest_price","onSale": true,"freeShipping": true,"maxPrice": 80}
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
searchQuery | String | ✅ Yes | — | What to search for on Etsy (e.g., handmade necklace) |
category | String | No | All Categories | Etsy category to filter results. Options: jewelry-and-accessories, clothing-and-shoes, home-and-living, wedding-and-party, toys-and-entertainment, art-and-collectibles, craft-supplies-and-tools, vintage, gifts, electronics-and-accessories, bags-and-purses, bath-and-beauty |
maxItems | Integer | No | 64 | Maximum number of products to scrape (1–5,000) |
sort | String | No | most_relevant | Sort order: most_relevant, lowest_price, highest_price, recently_listed |
minPrice | Number | No | — | Minimum price filter in USD |
maxPrice | Number | No | — | Maximum price filter in USD |
freeShipping | Boolean | No | false | Only return products with free shipping |
onSale | Boolean | No | false | Only return products currently on sale |
proxyConfiguration | Object | No | Residential | Proxy settings. Residential proxy strongly recommended for Etsy |
Output example
Each product in the dataset looks like this:
{"listingId": "1284957302","name": "Handmade Gold Filled Necklace, Dainty Chain Necklace, Gift for Her","url": "https://www.etsy.com/listing/1284957302/handmade-gold-filled-necklace-dainty","imageUrl": "https://i.etsystatic.com/12345678/r/il/abc123/4567890123/il_300x300.4567890123_example.jpg","shop": "GoldenChainCo","shopId": "34521890","price": "24.99","originalPrice": null,"currency": "USD","onSale": false,"freeShipping": true,"rating": 4.8,"availability": "In Stock","position": 1,"query": "handmade necklace","page": 1,"scrapedAt": "2026-03-22T14:30:00.000Z"}
Sale item with original price:
{"listingId": "4428738695","name": "Orchid Pearl Necklace, Real Orchid Pendant, Handmade Botanical Jewellery","url": "https://www.etsy.com/listing/4428738695/orchid-pearl-necklace-real-orchid","imageUrl": "https://i.etsystatic.com/63062527/r/il/d7e81d/7578438711/il_fullxfull.7578438711_7a2q.jpg","shop": "ZivaJewelleryArt","shopId": "63062527","price": "49.64","originalPrice": "62.05","currency": "AUD","onSale": true,"freeShipping": false,"rating": 5,"availability": "In Stock","position": 3,"query": "handmade necklace","page": 1,"scrapedAt": "2026-03-23T00:50:47.547Z"}
Tips for best results
🏷️ Always specify a category — without a category, the scraper uses Etsy's /market/ URL which returns only ~16 results per page. With a category selected, you unlock full pagination with up to 64 products per page and can scrape thousands of listings.
🔑 Use specific search terms — vintage leather messenger bag returns far more relevant results than just bag. Etsy's search engine rewards specificity with better product matches.
💰 Combine price filters with sort order — to find the cheapest items in a niche, set sort: lowest_price and maxPrice: 50. This is the most effective setup for competitive pricing analysis.
📦 Filter free shipping for buyer-perspective research — many Etsy shoppers filter for free shipping. Use the freeShipping: true filter to see exactly what those buyers see — useful for optimizing your own listings.
🔄 Schedule daily runs for price monitoring — use Apify Schedules to run this scraper automatically. Export to Google Sheets and track price changes over time in any niche.
⚠️ Start small to validate your query — run 20–100 products first to confirm the search term returns what you expect. Then scale up to 500–5,000 once you're satisfied with the data quality.
🌐 Residential proxy is non-negotiable — Etsy blocks datacenter and shared proxy IPs. The actor is pre-configured with RESIDENTIAL proxy group. Do not change this unless you have a specific residential proxy provider configured.
📅 Use recently_listed sort for trend spotting — set sort to recently_listed to catch new products in a category as soon as they appear. Combine with a scheduled run to monitor emerging trends.
Integrations
Etsy Scraper works with Apify's full integration ecosystem. Here are concrete workflow patterns:
📊 Google Sheets price tracker — connect the dataset output to Google Sheets via Apify's native integration. Run the scraper on a daily schedule to build a rolling price history for any Etsy niche. Spot price trends without touching a spreadsheet.
💬 Slack alerts for new listings — combine sort: recently_listed with a Slack notification. Get automatically pinged when new products appear in your target category — useful for dropshippers and sourcing teams.
📧 Email reports to your team — use Apify's email integration to send a daily CSV export of competitor product data directly to stakeholders — no manual downloads.
🗄️ Database sync — push results to PostgreSQL, MySQL, MongoDB, or Airtable via Apify webhooks. Build a product intelligence database that updates on a schedule.
📁 Amazon S3 / Google Cloud Storage — archive datasets automatically to cloud storage for long-term trend analysis or compliance.
🔗 Zapier and Make — trigger downstream workflows in 5,000+ apps. Examples: automatically add new Etsy products to a Notion database, update a CRM with competitor listings, or push data to a Slack channel on schedule.
🐍 Python and Node.js — use the Apify SDK to call this actor programmatically and process results in your own pipeline (see API usage below).
Using the Apify API
You can call Etsy Scraper programmatically using the Apify API. Here are examples in Node.js, Python, and cURL.
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('automation-lab/etsy-scraper').call({searchQuery: 'handmade ceramic mug',category: 'home-and-living',maxItems: 100,sort: 'most_relevant',freeShipping: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Found ${items.length} products`);items.forEach((item) => {console.log(`${item.name} — $${item.price} by ${item.shop}`);});
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("automation-lab/etsy-scraper").call(run_input={"searchQuery": "vintage engagement ring","category": "jewelry-and-accessories","maxItems": 200,"sort": "lowest_price","minPrice": 50,"maxPrice": 500,})dataset = client.dataset(run["defaultDatasetId"]).list_items().itemsfor product in dataset:print(f"{product['name']} — ${product['price']} ({product['shop']})")
cURL
curl -X POST "https://api.apify.com/v2/acts/automation-lab~etsy-scraper/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"searchQuery": "custom wedding invitation","category": "wedding-and-party","maxItems": 50,"sort": "most_relevant"}'
Retrieve results after the run completes:
$curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_APIFY_TOKEN&format=json"
Use with AI agents via MCP
Etsy Scraper is available as a tool for AI assistants that support the Model Context Protocol (MCP).
Add the Apify MCP server to your AI client — this gives you access to all Apify actors, including this one:
Setup for Claude Code
$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/etsy-scraper"
Setup for Claude Desktop, Cursor, or VS Code
Add this to your MCP config file:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/etsy-scraper"}}}
Your AI assistant will use OAuth to authenticate with your Apify account on first use.
Example prompts
Once connected, try asking your AI assistant:
- "Use automation-lab/etsy-scraper to find the 50 most relevant handmade silver rings under $100 with free shipping and export results as a table."
- "Search Etsy for vintage denim jackets in the clothing category, sorted by lowest price, and summarize the price range and top shops."
- "Find the 20 most recently listed custom wedding invitations on Etsy and list each product name, shop, and price."
Learn more in the Apify MCP documentation.
Is it legal to scrape Etsy?
Etsy Scraper accesses only publicly available product listing data from Etsy search results — the same information any visitor sees when browsing etsy.com. No login, no authentication, and no private data access is involved.
Scraping publicly available web data is generally legal based on the 2022 US Ninth Circuit ruling in hiQ Labs v. LinkedIn, which established that scraping public data does not violate the Computer Fraud and Abuse Act (CFAA). The European Court of Justice has similarly held that publicly available data can be lawfully collected.
However, you should:
⚖️ Review Etsy's Terms of Service before scraping at scale — while public data extraction is broadly legal, Etsy's ToS may restrict automated access. Compliance with ToS is your responsibility.
🔒 Never collect personal data without lawful basis — this actor extracts only product and shop data, not buyer or payment information.
📏 Be respectful with volume — the scraper includes built-in delays between pages (1.5 seconds) and respects rate limits. Avoid running dozens of concurrent large-scale scrapes.
🏢 Consult legal counsel if you plan to use scraped data commercially at scale, especially across jurisdictions with varying data protection regulations.
For more details, see Apify's guide on web scraping legality.
FAQ
Why am I getting only ~16 results instead of 64+?
You likely didn't select a category. Without a category, the scraper uses Etsy's /market/ path which returns a limited number of results. Select a specific category (e.g., "Jewelry & Accessories") to unlock full pagination with up to 64 products per page and thousands of results across pages.
Can I scrape individual Etsy product detail pages?
No. This scraper extracts data from Etsy search result pages only. Individual listing pages (/listing/123456) use heavy JavaScript rendering and more aggressive DataDome protection that requires a browser-based approach. The search results provide comprehensive product data including price, rating, shop, and availability — sufficient for most research use cases.
Why do some products have null for rating?
Products that have not yet received any reviews don't display a rating on Etsy. The scraper returns null for these items rather than a misleading zero — this is the correct representation of an unrated listing.
The scraper returned "blocked" warnings. What should I do?
Ensure you're using residential proxies (the default configuration). If blocks persist, try reducing maxItems or waiting a few minutes before retrying. Etsy's anti-bot detection can be more aggressive during peak traffic hours. The scraper automatically retries each request up to 5 times with fresh proxy sessions — occasional blocks are handled transparently.
How is this different from the official Etsy API? The official Etsy API requires an approved OAuth application, enforces strict rate limits, and does not expose search result pages. This scraper extracts the same data any browser visitor sees from public search pages, with no API key required, no rate limit approvals, and no OAuth setup.
How often can I run this scraper? There's no run frequency limit from the scraper side. Use Apify Schedules to run hourly, daily, or weekly. For price monitoring, daily runs are typically sufficient and keep costs low. You can also trigger runs via API as part of a larger pipeline.
Other e-commerce scrapers
🛒 Amazon Scraper — Extract product data, prices, ratings, and seller info from Amazon search results
🏷️ eBay Scraper — Scrape eBay product listings, prices, bids, and seller information
🛒 Walmart Scraper — Scrape Walmart product data, prices, and availability
📋 Craigslist Scraper — Scrape Craigslist listings by keyword and city
🛍️ Shopify Store Scraper — Extract products, collections, and reviews from any Shopify-powered store
👗 Poshmark Scraper — Extract fashion and resale listings from Poshmark
💻 Newegg Scraper — Scrape electronics and tech products from Newegg
🔎 Google Shopping Scraper — Scrape Google Shopping results for cross-marketplace price comparison
🎯 Fiverr Scraper — Extract Fiverr gig listings, seller info, and pricing for service marketplace research