Etsy Scraper avatar

Etsy Scraper

Pricing

$3.00 / 1,000 listings

Go to Apify Store
Etsy Scraper

Etsy Scraper

Get full Etsy listing data by URL: price, sale price and discount, favorites, tags, images, variations and shop reviews, in any currency. Also pulls a shop's newest listings and finds listings by keyword through web search (not Etsy's own ranking).

Pricing

$3.00 / 1,000 listings

Rating

0.0

(0)

Developer

Mina

Mina

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

What does Etsy Scraper – Listing Details, Prices & Shops do?

Etsy Scraper – Listing Details, Prices & Shops collects Etsy listings as structured data: title, price, sale price and discount, shop, bestseller badge, favorites, stock, category, tags and images, plus optional descriptions, materials, variations with their prices and the shop's newest reviews. Give it search keywords, Etsy search, category or market links, shop links or listing links, and it returns one clean row per listing.

Try it with the prefilled shop: click Start, and the shop's 10 newest listings arrive in a few seconds. Because it runs on the Apify platform, you also get API access, scheduled runs, integrations (Google Sheets, Make, Zapier, webhooks), run monitoring and automatic retries through Apify Proxy when Etsy is slow to answer.

Why scrape Etsy?

  • Product research: see which handmade and vintage products sell in a niche, at what prices, and how many shoppers favorite them.
  • Price monitoring: track a competitor's prices, sales and discounts every day with a scheduled run.
  • Shop analysis: list a shop's newest listings with their tags, categories and stock.
  • SEO and keyword ideas: collect the tags sellers use for a keyword.
  • Market and trend reports: export hundreds of listings to a spreadsheet or BI tool.

How to scrape Etsy listings

  1. Type words into Search keywords, such as linen apron, or paste Etsy links into Etsy links: a listing, a shop, or a search, category or market page.
  2. Set Max listings per input (10 to start with).
  3. Turn on Add listing details for descriptions and variations, or Add the shop's newest reviews for reviews.
  4. Optionally pick a Currency, such as EUR.
  5. Click Start, then download the results when the run finishes.

Input

Everything is set on the Input tab. In JSON, the input looks like this:

{
"searchQueries": ["linen apron"],
"startUrls": [
"https://www.etsy.com/shop/CaitlynMinimalist",
"https://www.etsy.com/listing/1824319193/reversible-linen-apron-no-tie-organic",
"https://www.etsy.com/c/jewelry/necklaces"
],
"maxListings": 50,
"skipUnavailable": true,
"includeDetails": true,
"includeReviews": true,
"maxReviewsPerListing": 3,
"currency": "EUR"
}
FieldWhat it does
searchQueriesWords to search for, one search per line. Each search returns listings whose web address contains a word of your search, ranked by a web search of etsy.com.
startUrlsEtsy links: a listing (/listing/1824319193/… or just the number), a shop (/shop/Linenia or linenia.etsy.com), or a search (/search?q=…), category (/c/…) or market (/market/…) page. Plain strings and {"url": "…"} objects both work, with or without https://.
maxListingsStops after this many listings for each link or keyword. Default: 100.
skipUnavailableLeaves out sold-out, expired and other listings that cannot be bought now, so they are not billed. Default: on.
includeDetailsAdds the full description, materials, shop section and variations (size, colour…) with each option's availability and price. Default: off.
includeReviewsAdds the newest reviews of each listing's shop (up to 6). Default: off.
maxReviewsPerListingHow many of those reviews to add, from 0 to 6. Default: 6.
currencyThe currency prices are shown in, such as USD, EUR, GBP, CAD, AUD or JPY. Default: USD.
proxyConfigurationOptional; leave it empty. The Actor connects directly and falls back to Apify Proxy by itself.

Output

Each listing becomes one row. Here is a real row from a keyword search with details, reviews and "currency": "EUR" (description, images, variations and reviews shortened):

{
"id": 753744881,
"url": "https://www.etsy.com/listing/753744881/wooden-golf-set",
"title": "Wooden Golf set",
"price": 200,
"originalPrice": null,
"currency": "EUR",
"discountPercent": null,
"hasVariationPricing": false,
"shopName": "WoodNack",
"shopId": 9634678,
"shopUrl": "https://www.etsy.com/shop/WoodNack",
"isBestseller": false,
"isTopRated": false,
"favorites": 152,
"quantityAvailable": 1,
"isAvailable": true,
"isSoldOut": false,
"isDigital": false,
"isMadeToOrder": true,
"isCustomizable": true,
"whenMade": "made_to_order",
"shipsFrom": "GR",
"category": "Golf",
"categoryPath": "toys and games > sports and outdoor games > golf",
"tags": ["golf", "ball", "outdoor", "game", "set", "play"],
"images": ["https://i.etsystatic.com/9634678/r/il/4ff779/6521121751/il_fullxfull.6521121751_bnra.jpg"],
"listedAt": "2026-07-08T13:43:31+00:00",
"updatedAt": "2026-08-22T06:44:25+00:00",
"description": "Handmade Wooden Golf Set\nA handmade wooden golf set for indoor or outdoor playing fun …",
"materials": ["Wood"],
"shopSection": "TOYS",
"variations": [],
"shopReviews": [
{
"rating": 5,
"text": "Product was as described and works well !",
"language": "en",
"date": "2026-10-16T17:21:00+00:00",
"itemId": 1718268394,
"itemTitle": "Golf set Obstacles-Bright Colours"
}
],
"source": "wooden golf set",
"sourceType": "keyword",
"position": 1,
"scrapedAt": "2026-10-24T12:55:16.547351+00:00"
}

A listing on sale looks like this: "price": 54.0, "originalPrice": 72.0, "discountPercent": 25.

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

Data fields

FieldDescription
idEtsy's listing number.
urlLink to the listing.
titleThe listing title.
priceThe price now, in currency. For a listing on sale, this is the sale price. null for a sold-out listing (kept only when Skip listings not for sale is off).
originalPriceThe price before the sale; null when there is no sale.
currencyCurrency of the prices (the one you chose, converted by Etsy).
discountPercentWhole percent off during a sale; null otherwise.
hasVariationPricingtrue when some variations cost more or less than price.
shopName, shopId, shopUrlThe shop selling the listing.
isBestsellerEtsy's Bestseller badge.
isTopRatedEtsy's top-rated flag for the listing.
favoritesHow many shoppers favorited the listing.
quantityAvailableItems in stock.
isAvailable, isSoldOutWhether it can be bought now.
isDigital, isMadeToOrder, isCustomizableDigital download, made to order, personalisable.
whenMadeEtsy's "when made" value, such as made_to_order or 2020,2026.
shipsFromCountry code the listing ships from.
category, categoryPathEtsy category and its path from the top.
tagsThe seller's tags.
imagesFull-size image links.
listedAt, updatedAtWhen the listing was last listed or renewed, and last edited (UTC, ISO 8601).
description, materials, shopSectionWith Add listing details.
variationsWith Add listing details: each variation's name and options (value, price, isAvailable). price is the price before any sale; it is null when the listing's price depends on the option (hasVariationPricing is true), because Etsy's open data does not give per-option prices.
shopReviewsWith Add the shop's newest reviews: rating (1–5), text, language, date, and the reviewed item's itemId and itemTitle.
source, sourceType, positionThe input the listing came from (keyword, shop or listing) and its rank among the rows saved for that input.
scrapedAtWhen the row was saved.

How much does it cost to scrape Etsy?

The Actor uses plain HTTP requests, without a browser and usually without a proxy, so runs are fast and light: about 250 listings from one keyword take under 2 minutes, and the prefilled shop takes about 5 seconds. You pay per listing saved; see the Pricing tab for the exact price. Inputs that return nothing are never billed.

Tips and advanced options

  • Search keywords vs. Etsy links: a keyword and an Etsy search link give the same results. Filters in a search link (price range, sort order, free shipping) are not applied.
  • Shops: a shop gives its newest listings, 10 per shop section, so a large shop returns its newest few dozen listings rather than its whole catalogue. For a specific listing, paste its link.
  • Keywords return up to about 250 listings each. Use several narrower keywords for more.
  • Duplicates are removed: a listing found by two inputs is saved once.
  • Leave Add listing details off when you only need prices; it adds one request per listing.
  • Turn Skip listings not for sale off to also get sold-out and expired listings (about 1 in 10 keyword results); they are billed like any other row.

Why does keyword search work this way?

Etsy protects its own search, category, market and shop pages with a bot wall (DataDome) that refuses cloud servers, even when a real browser loads the page. The listing data itself is open, so the Actor finds the listings for your words through a web search of etsy.com (Yahoo Search) and then reads every listing straight from Etsy. This means:

  • Results are ranked by the web search's relevance, not Etsy's own ranking. A listing is kept only when a word of its web address (Etsy builds it from the title) starts with the same 5 letters as a word of your search, or one is the start of the other, which drops off-topic results.
  • Etsy's ad flag, free-shipping badge, shop star rating, shop review count and sales count are shown only on the blocked pages, so they are not in the data.

FAQ, disclaimers, and support

Is it legal to scrape Etsy? This Actor reads only public listing data that anyone can see without logging in. Check Etsy's terms and the laws that apply to you before using the data, especially for commercial use. Etsy's robots.txt restricts automated access to some pages.

Personal data: the reviews leave out buyers' names and photos. Shop names are business names. If you collect personal data, make sure you have a lawful reason to process it under GDPR and similar laws.

What happens with links that give nothing? Removed or sold-out listings, unknown shops, links that are not Etsy links and searches with no matching listings are not billed. They are listed with the reason in the FAILED_INPUTS record of the run's key-value store, and the run's status message sums them up.

Something missing or broken? Open an issue on the Issues tab; we read every one. Need a custom Etsy dataset or a different output format? Get in touch through the same tab.