Etsy Scraper — Products, Prices, Variations & Shop Data avatar

Etsy Scraper — Products, Prices, Variations & Shop Data

Pricing

from $1.50 / 1,000 listing (card)s

Go to Apify Store
Etsy Scraper — Products, Prices, Variations & Shop Data

Etsy Scraper — Products, Prices, Variations & Shop Data

Scrape Etsy listings, shops & full product pages: prices, ratings, reviews, favorites, variations, materials, all photos, category & shop metrics. Reliable, no API key, pay per result.

Pricing

from $1.50 / 1,000 listing (card)s

Rating

0.0

(0)

Developer

Ruslan Zotkin

Ruslan Zotkin

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Etsy Scraper — Products, Prices, Variations & Shop Metrics

Extract clean, structured data from Etsy at scale — search results, categories, shops, and full product pages. Get prices, ratings, reviews, favorites, variations, materials, all photos, category, and shop metrics without an API key, login, or manual copying.

Pay only for the results you get — no monthly subscription.

🏅 Built for reliability. Most Etsy scrapers fall back to lightweight HTTP requests for product pages and get blocked or return half-empty rows. This actor opens each listing in a real browser session that fully clears Etsy's anti-bot protection, so you get complete data on every listing — not "occasionally blocked".


⚡ Two modes — pick what you pay for

ModeTurn onWhat you getBest for
Card (fast)defaultCore fields from search/category results — title, price, rating, shop, image, sale statusPrice monitoring, market research, large datasets
Full detailsScrape full details = trueEverything in Card plus description, variations, materials, all photos, favorites, category breadcrumb, shop sales & age, Star SellerDeep product/competitor analysis, sourcing, sentiment

You choose per run with a single checkbox. The two modes are billed as two separate events (see Pricing).

  • Etsy shop scraper — pass a shop URL in shopUrls (with full details) to export a seller's entire catalog.
  • Etsy product details scraper — full per-listing data: variations, materials, all photos, favorites, category breadcrumb, shop metrics.
  • Etsy price & favorites monitor — schedule it to track prices and favorites (a real demand signal) over time.
  • Scrape Etsy without the API — no OAuth approval, no API key, no rate-limit waitlist.

🎯 Why choose this scraper

  • Reliable on product pages — real-browser anti-bot bypass, not flaky HTTP. Complete rows, every time.
  • Clean, typed data — prices are real numbers (485, not "485"), ready for analysis with no post-processing.
  • Most complete detail — variations, materials, all images, favorites count, category path, shop sales & years on Etsy, Star Seller badge.
  • No API key, no login, no OAuth — extracts the same public data any visitor sees.
  • Region & currency control — pin the marketplace so prices don't drift (US, UK, DE, FR, and more).
  • Cost control — hard Max items cap and a per-run charge limit, so a run can never surprise you.

📦 What data you get

Card-level (every mode)

FieldTypeDescription
listingIdstringUnique Etsy listing ID
titlestringProduct title
urlstringListing URL
pricenumberCurrent price (in the selected currency)
currencystringISO currency code (USD, EUR, GBP…)
originalPricenumber|nullPre-sale price, if discounted
isOnSalebooleanWhether the item is discounted
freeShippingbooleanFree-shipping badge
isAdbooleanPromoted (ad) listing
imagestringMain product image URL
shopIdstring|nullUnique shop ID
sourcestringcard or detail
scrapedAtstringISO 8601 timestamp

ℹ️ Shop name and URL aren't shown on Etsy's search cards (only the shop ID is). Enable Full details to get shopName, shopUrl, and shop metrics. availability is also populated in detail mode.

Detail-level (Scrape full details = true)

FieldTypeDescription
descriptionstringFull product description
variationsarrayOptions & values (e.g. Size, Color)
materialsarrayListed materials
imagesarrayAll product photos (not just the first)
priceMaxnumber|nullTop of the price range when variations differ in price
ratingnumber|nullAverage star rating
reviewCountnumber|nullNumber of reviews
favoritesnumber|nullHow many shoppers favorited the listing (demand signal)
categorystring|nullCategory breadcrumb, e.g. Jewelry < Rings < Engagement Rings
shopSalesnumber|nullTotal sales of the shop
yearsOnEtsynumber|nullHow long the shop has been on Etsy
starSellerbooleanShop's Star Seller badge
shopUrlstring|nullShop page URL

🛠️ Input parameters

FieldTypeRequiredDefaultDescription
searchstring[]No*Keywords to search on Etsy, e.g. handmade ring
startUrlsURL[]No*Etsy search/category URLs. With details on, also shop and listing URLs
shopUrlsstring[]No*Scrape all products of a shop (requires full details)
scrapeDetailsbooleanNofalseOpen each listing page for full detail fields
maxItemsintegerNo100Max listings to return — caps your cost
regionenumNoUSMarketplace localization: US, GB, CA, AU, DE, FR, IT, ES, NL, IE
customCountrystringNoAdvanced: any ISO-2 country code (e.g. SE, PL, JP)
detailConcurrencyintegerNo3Parallel listing pages in detail mode (1–6). Higher = faster, needs more run memory

* Provide at least one of search, startUrls, or shopUrls.

{
"search": ["handmade ring"],
"maxItems": 200,
"region": "US"
}

Example — full details

{
"search": ["vintage engagement ring"],
"scrapeDetails": true,
"maxItems": 100,
"region": "US"
}

Example — all products of a shop, with details

{
"shopUrls": ["https://www.etsy.com/shop/MoodyRoses"],
"scrapeDetails": true,
"maxItems": 500
}

📤 Example output (full details)

{
"listingId": "1887646984",
"title": "PERIDOT GEMSTONE RING, Unique Artisan design handmade with solid 14k yellow gold",
"url": "https://www.etsy.com/listing/1887646984",
"price": 485,
"priceMax": null,
"currency": "USD",
"originalPrice": null,
"isOnSale": false,
"availability": "InStock",
"rating": 5,
"reviewCount": 42,
"favorites": 66,
"description": "Handcrafted peridot ring in solid 14k gold...",
"variations": [{ "name": "Ring Size", "options": ["5", "6", "7", "8"] }],
"materials": ["14k gold", "peridot"],
"images": [
"https://i.etsystatic.com/.../il_794xN.1.jpg",
"https://i.etsystatic.com/.../il_794xN.2.jpg"
],
"category": "Jewelry < Rings < Wedding & Engagement < Engagement Rings",
"shopName": "ArtisanStudioJewelry",
"shopUrl": "https://www.etsy.com/shop/ArtisanStudioJewelry",
"shopSales": 74,
"yearsOnEtsy": 10,
"starSeller": true,
"source": "detail",
"scrapedAt": "2026-06-10T12:00:00.000Z"
}

💵 Pricing

Transparent pay-per-event — you pay only for what you extract, all platform and proxy costs included. No monthly subscription, no hidden usage charges.

EventPrice
Run startFree
Card listing (listing-scraped)$1.50 / 1,000
Full detail listing (listing-detail-scraped)$3.50 / 1,000

Real-world examples:

Use caseModeItemsApprox. cost
Quick niche checkCard100$0.15
Category snapshotCard1,000$1.50
Competitor deep-diveDetail200$0.70
Full product datasetDetail1,000$3.50

The Apify free tier includes $5/month of usage — enough to test thoroughly before scaling.


💡 Use cases

  • Price monitoring & repricing — track competitor prices and discounts on a schedule.
  • Market & niche research — measure listing density, price distributions, and demand (favorites, sales) across a category.
  • Dropshipping & sourcing — find trending, high-favorite, high-sales products and reliable shops.
  • Competitor intelligence — analyze top shops' catalogs, variations, materials, and positioning.
  • SEO & listing optimization — study titles, categories, and attributes of top-ranking results.
  • Datasets for AI / analytics — pipe clean structured product data into your warehouse or model.

🌍 Regions & localization

Prices, shipping, and availability are localized to the buyer country you choose, so values don't "drift" between runs. Validated: US, GB, DE, FR. Others (CA, AU, IT, ES, NL, IE) use the same mechanism. Need a country not listed? Use Custom country code with any ISO-2 code.


🔌 Integrations

Works with the full Apify ecosystem:

  • Google Sheets / Airtable — auto-export for rolling price history.
  • Slack / email — alerts on new listings or price drops.
  • Webhooks → PostgreSQL / MySQL / MongoDB — build a product intelligence database.
  • Zapier & Make — trigger downstream workflows in thousands of apps.
  • Apify API (Node.js, Python, cURL) — call programmatically and pipe into your own code.

API example (Node.js)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('ruslanzotkin/etsy-scraper').call({
search: ['handmade ceramic mug'],
scrapeDetails: true,
maxItems: 100,
region: 'US',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} listings`);

Use with AI assistants (MCP)

Query Etsy data straight from Claude, Cursor, or any MCP-compatible AI — no manual runs. Add the Apify MCP server pointed at this actor:

{
"mcpServers": {
"etsy": {
"url": "https://mcp.apify.com?tools=ruslanzotkin/etsy-scraper"
}
}
}

Then ask in plain English: "Find handmade rings under $50 on Etsy with their ratings and shops."


❓ FAQ

Do I need an Etsy account or API key? No. The scraper works without any login, API key, or OAuth.

What's the difference between Card and Full details? Card mode reads search/category result pages — fast and cheap, with core fields. Full details opens each product page for the complete field set (variations, materials, all photos, favorites, category, shop metrics). Card is billed per listing-scraped, details per listing-detail-scraped.

Is it reliable on product detail pages? Yes — this is the main differentiator. Detail pages are fetched through a real browser session that fully passes Etsy's DataDome anti-bot, so you get complete rows rather than the partial/blocked results common with HTTP-only scrapers.

Why is a field sometimes null? A listing genuinely may not have that data (e.g. an unrated item has rating: null, a shop page may not display "years on Etsy"). We return null rather than a misleading value.

Can I scrape a specific shop? Yes. Provide the shop URL in shopUrls with scrapeDetails: true to enumerate and extract its listings.

Will prices be in my currency? Set region (or customCountry) to pin the marketplace. All prices in the run will be in that marketplace's currency.

Is scraping Etsy legal? This actor extracts only publicly available product and shop data — the same anyone sees while browsing. It does not access private accounts or buyer personal data. Scraping public data is broadly lawful (see hiQ v. LinkedIn), but you are responsible for complying with Etsy's Terms and applicable laws (GDPR/CCPA) when using the data.


⚠️ Limitations

  • Per-listing sales counts aren't exposed by EtsyshopSales is the shop's total, which is what Etsy publishes (no scraper can give true per-listing sales).
  • We deliberately do not collect buyer personal data (names, IDs) — by design, for privacy and compliance.
  • Etsy occasionally changes page structure; if you spot a missing field, open an issue and it'll be fixed quickly.

🛟 Support

Found a bug or need a custom field? Open an issue in the Issues tab — please include the run ID so it can be reproduced and fixed fast.