Etsy Product Scraper avatar

Etsy Product Scraper

Pricing

from $10.40 / 1,000 product scrapeds

Go to Apify Store
Etsy Product Scraper

Etsy Product Scraper

Scrape Etsy products from search, shop pages, or direct URLs. Get title, price, ratings, reviews, sales, shop info, images, tags. Supports sorting/price filters. JSON-LD + CSS fallback. Residential proxy included.

Pricing

from $10.40 / 1,000 product scrapeds

Rating

0.0

(0)

Developer

junipr

junipr

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

What does Etsy Product Scraper do?

Etsy Product Scraper extracts detailed product listing data from Etsy.com. It supports three scraping modes: keyword search, shop page scraping, and direct listing URL extraction. For each product, the actor collects structured data including title, price, original price, discount percentage, shop name, star ratings, review counts, sales counts, all product images, tags, materials, and shipping details.

The scraper handles Etsy's anti-bot protections using rotating residential proxies, randomized user agents, and persistent session pooling. It parses data from both HTML elements and JSON-LD structured data embedded in pages for maximum extraction reliability. Results are delivered as clean JSON, ready for analysis, monitoring, or integration into downstream workflows.

Features

  • Three scraping modes — search by keyword, scrape an entire Etsy shop, or extract specific listing URLs
  • Rich product data — title, price, original price, discount, currency, shop name, shop URL, rating, review count, sales count, images, tags, and materials
  • Sort and filter — sort by relevance, newest, price, or most favorited; filter by price range and free shipping
  • Badge detection — identifies bestseller, personalizable, promoted/ad, and free shipping badges
  • JSON-LD extraction — pulls structured schema.org Product data embedded in pages for reliable parsing
  • Anti-bot handling — rotating residential proxies, randomized user agents, session pooling, and automatic retry on 403/429 blocks
  • Configurable pacing — adjustable request delay (min 1000ms) and concurrency (max 5) to minimize blocking risk
  • Pay-per-result pricing — only pay for products successfully scraped

Input Configuration

{
"searchQuery": "handmade jewelry",
"shopUrl": "",
"urls": [],
"maxResults": 50,
"maxPages": 3,
"sortBy": "relevance",
"minPrice": 0,
"maxPrice": 0,
"freeShipping": false,
"requestDelay": 2000,
"maxConcurrency": 3,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}
ParameterTypeDefaultDescription
searchQuerystring"handmade jewelry"Search term for finding products on Etsy
shopUrlstring""Direct Etsy shop URL to scrape all listings from
urlsstring[][]Array of direct Etsy listing URLs to scrape
maxResultsinteger50Maximum number of products to extract (1-1000)
maxPagesinteger3Maximum search/shop pages to crawl (1-50)
sortBystring"relevance"Sort order: relevance, date_desc, price_asc, price_desc, most_favored
minPriceinteger0Minimum price filter in USD
maxPriceinteger0Maximum price filter (0 = no max)
freeShippingbooleanfalseOnly return free shipping products
requestDelayinteger2000Delay between requests in ms (min 1000)
maxConcurrencyinteger3Parallel requests (1-5)
proxyConfigurationobjectApify RESIDENTIALProxy settings

Output Format

Each product is saved as a dataset item with the following structure:

{
"title": "Personalized Name Necklace, Custom Gold Name Necklace",
"url": "https://www.etsy.com/listing/1234567890/personalized-name-necklace",
"listingId": "1234567890",
"price": 24.99,
"currency": "USD",
"originalPrice": 49.99,
"discount": "50% off",
"shopName": "ArtisanJewels",
"shopUrl": "https://www.etsy.com/shop/ArtisanJewels",
"rating": 4.8,
"reviewCount": 12543,
"salesCount": 85000,
"imageUrl": "https://i.etsystatic.com/...",
"images": ["https://i.etsystatic.com/...", "https://i.etsystatic.com/..."],
"tags": ["personalized necklace", "gold necklace", "name necklace"],
"materials": ["gold", "stainless steel"],
"freeShipping": true,
"isAd": false,
"isBestseller": true,
"isPersonalizable": true,
"scrapedAt": "2026-03-11T12:00:00.000Z"
}

Usage Examples / Use Cases

  • Market research — analyze pricing trends, bestseller patterns, and popular materials across Etsy categories
  • Competitor monitoring — track a competing shop's product catalog, pricing changes, and new listings over time
  • Product sourcing — discover trending handmade and vintage products for resale or inspiration
  • Price comparison — aggregate prices across multiple shops to find the best deals in a niche
  • Review analysis — collect rating and review data to identify top-performing sellers and product categories
  • Inventory tracking — monitor specific listing URLs for availability and price changes with scheduled runs

Proxy Requirements

This actor requires residential proxies because Etsy actively blocks datacenter IP addresses with 403 responses.

  • Paid Apify plan users ($49+/month): Works automatically with the default residential proxy configuration. No setup needed.
  • Free plan users: Provide your own residential proxy URL in the Proxy Configuration input field. The actor will not work with datacenter proxies.
  • Without a residential proxy, the actor detects consecutive 403/429 responses and exits with a clear error message explaining how to resolve the issue.

The actor defaults to the RESIDENTIAL proxy group. If 5 consecutive requests return 403/429, it stops gracefully with an actionable message rather than silently producing empty results.

Pricing

This actor uses Pay-Per-Event (PPE) pricing: $10.40 per 1,000 products scraped ($0.0104 per event).

Pricing includes all platform compute costs — no hidden fees.

FAQ

How many products can I scrape per run?

You can extract up to 1,000 products per run by setting maxResults to 1000. For larger datasets, run the actor multiple times with different search queries or pagination offsets. Each Etsy search page typically contains 48-64 product listings.

Why am I getting empty results or 403 errors?

Etsy blocks datacenter IP addresses. You need a residential proxy to use this actor. If you are on the Apify free plan, provide your own residential proxy URL in the Proxy Configuration input. Paid Apify plans ($49+/month) include automatic residential proxy access.

Can I scrape a specific Etsy shop?

Yes. Set the shopUrl field to the full shop URL (e.g., https://www.etsy.com/shop/ArtisanJewels) and leave searchQuery empty. The actor crawls through the shop's listing pages and extracts all products up to your maxResults limit.

What is the difference between search mode and direct URL mode?

Search mode finds products by keyword and supports sorting and filtering. Direct URL mode (urls field) scrapes specific listing pages, which returns richer data including sales counts, full image galleries, tags, and materials that may not be visible on search result cards.

How do I reduce the risk of getting blocked?

Keep requestDelay at 2000ms or higher and maxConcurrency at 3 or lower. The actor rotates user agents and uses session pooling automatically. For large scraping jobs, consider splitting across multiple runs with different search terms.