Etsy Shop & Listing Scraper
Pricing
Pay per usage
Etsy Shop & Listing Scraper
Scrape Etsy listings, shops, and search results. Extract prices, ratings, reviews, images, tags, materials, and shipping info. Export to JSON, CSV, Excel.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Glass Ventures
Actor stats
0
Bookmarked
3
Total users
2
Monthly active users
a day ago
Last modified
Categories
Share
Scrape product listings from Etsy shops, search results, and individual listing pages. Extract prices, ratings, reviews, images, tags, materials, descriptions, and shipping info.
What does Etsy Shop & Listing Scraper do?
Etsy Shop & Listing Scraper is a powerful data extraction tool that collects detailed product information from Etsy, the world's largest marketplace for handmade, vintage, and unique goods. It handles shop pages, search results, and individual listing URLs automatically.
The actor uses efficient HTTP-based scraping (no browser needed) to extract structured data from Etsy's server-rendered HTML and JSON-LD metadata. It handles pagination, deduplication, and anti-bot protections with session rotation and proxy support.
Whether you're researching competitors, tracking prices, or building a product database, this actor delivers clean, structured data ready for analysis.
Use Cases
- Market researchers — Analyze pricing trends, popular materials, and product categories across Etsy's handmade marketplace
- E-commerce sellers — Monitor competitor shops, track pricing strategies, and identify bestselling items
- Data analysts — Build datasets of Etsy products with ratings, reviews, and engagement metrics for trend analysis
- Developers — Integrate Etsy product data into applications, dashboards, or recommendation engines via API
Features
- Scrape Etsy search results by keyword
- Scrape entire Etsy shops with all listings
- Extract individual listing details from URLs
- JSON-LD extraction for clean structured data
- Automatic page type detection (search, shop, listing)
- Handles pagination across search results and shop pages
- Deduplication to avoid scraping the same listing twice
- Proxy support with automatic session rotation
- Exports to JSON, CSV, Excel, or connect via API
How much will it cost?
| Results | Estimated Cost |
|---|---|
| 100 | ~$0.50 |
| 1,000 | ~$3.00 |
| 10,000 | ~$25.00 |
| Cost Component | Per 1,000 Results |
|---|---|
| Platform compute | ~$0.50 |
| Proxy (residential) | ~$2.50 |
| Total | ~$3.00 |
How to use
- Go to the Etsy Shop & Listing Scraper page on Apify Store
- Click "Start" or "Try for free"
- Enter Etsy URLs (shop pages, search URLs, or listing URLs) or search terms
- Set the maximum number of items to scrape
- Click "Start" and wait for the results
Input parameters
| Parameter | Type | Description | Default |
|---|---|---|---|
| startUrls | array | Etsy URLs to scrape (shops, listings, search pages) | - |
| searchTerms | array | Search queries to run on Etsy | - |
| maxItems | number | Max results to return (0 = unlimited) | 100 |
| maxConcurrency | number | Parallel requests (lower = less blocking) | 10 |
| debugMode | boolean | Enable verbose logging | false |
| proxyConfig | object | Proxy settings (residential recommended) | Apify Proxy |
Output
The actor produces a dataset with the following fields:
{"url": "https://www.etsy.com/listing/123456789/handmade-silver-ring","listingId": "123456789","title": "Handmade Silver Ring - Sterling Silver Band","price": 45.99,"currency": "USD","originalPrice": null,"seller": "SilverCraftShop","shopUrl": "https://www.etsy.com/shop/SilverCraftShop","rating": 4.8,"reviewCount": 1523,"images": ["https://i.etsystatic.com/12345/il_fullxfull.jpg"],"tags": ["silver ring", "handmade jewelry", "sterling silver"],"materials": ["Sterling silver", "925 silver"],"description": "Beautiful handmade sterling silver ring...","shippingInfo": "Free shipping","favoritesCount": 2847,"category": "Jewelry > Rings > Bands","isAd": false,"scrapedAt": "2026-04-23T10:30:00.000Z"}
| Field | Type | Description |
|---|---|---|
| url | string | Listing page URL |
| listingId | string | Etsy listing ID |
| title | string | Product title |
| price | number | Current price |
| currency | string | Currency code (USD, EUR, GBP, etc.) |
| originalPrice | number | Original price before discount |
| seller | string | Shop/seller name |
| shopUrl | string | Seller's shop URL |
| rating | number | Average star rating (1-5) |
| reviewCount | number | Total number of reviews |
| images | array | Product image URLs |
| tags | array | Listing tags/keywords |
| materials | array | Materials used in the product |
| description | string | Full product description |
| shippingInfo | string | Shipping details |
| favoritesCount | number | Number of users who favorited |
| category | string | Product category breadcrumb |
| isAd | boolean | Whether listing was a promoted result |
| scrapedAt | string | ISO 8601 scrape timestamp |
Integrations
Connect Etsy Shop & Listing Scraper with other tools:
- Apify API — REST API for programmatic access
- Webhooks — get notified when a run finishes
- Zapier / Make — connect to 5,000+ apps
- Google Sheets — export directly to spreadsheets
API Example (Node.js)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('YOUR_USERNAME/etsy-shop-scraper').call({startUrls: [{ url: 'https://www.etsy.com/search?q=handmade+jewelry' }],maxItems: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();
API Example (Python)
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('YOUR_USERNAME/etsy-shop-scraper').call(run_input={'startUrls': [{'url': 'https://www.etsy.com/search?q=handmade+jewelry'}],'maxItems': 100,})items = client.dataset(run['defaultDatasetId']).list_items().items
API Example (cURL)
curl "https://api.apify.com/v2/acts/YOUR_USERNAME~etsy-shop-scraper/runs" \-X POST \-H "Content-Type: application/json" \-H "Authorization: Bearer YOUR_TOKEN" \-d '{"startUrls": [{"url": "https://www.etsy.com/search?q=handmade+jewelry"}], "maxItems": 100}'
Tips and tricks
- Start with a small
maxItems(10-20) to test before running large scrapes - Use residential proxies if you encounter blocking — Etsy has moderate anti-bot protections
- Lower
maxConcurrencyto 3-5 if you experience rate limiting - Shop URLs and search URLs automatically paginate to collect all listings
- Individual listing URLs are scraped directly without pagination
FAQ
Q: Does this actor require login credentials? A: No. The actor scrapes publicly available Etsy listings without authentication.
Q: How fast is the scraping? A: Approximately 50-150 listings per minute depending on proxy type and concurrency settings.
Q: What should I do if I get blocked? A: Switch to residential proxies in the Proxy Configuration settings and reduce maxConcurrency to 3-5.
Q: Can I scrape an entire Etsy shop? A: Yes. Provide the shop URL (e.g., https://www.etsy.com/shop/ShopName) and the actor will paginate through all listings.
Q: What URL formats are supported? A: Shop pages (etsy.com/shop/Name), listing pages (etsy.com/listing/123456), and search pages (etsy.com/search?q=query).
Is it legal to scrape Etsy?
Web scraping of publicly available data is generally legal based on precedents like the LinkedIn v. HiQ Labs case. This actor only accesses publicly available data. Always review and respect the target site's Terms of Service and robots.txt. For more information, see Apify's blog on web scraping legality.
Limitations
- Only scrapes publicly visible listings (no private or draft listings)
- Some fields may be null if Etsy changes their page structure
- Rate limiting may slow scraping at high concurrency
- Etsy may serve different content based on geographic location and proxy IP
Changelog
- v0.1 (2026-04-23) — Initial release