Etsy Reviews Scraper: Listings, Shops, Photos, Seller Replies avatar

Etsy Reviews Scraper: Listings, Shops, Photos, Seller Replies

Pricing

from $1.59 / 1,000 reviews

Go to Apify Store
Etsy Reviews Scraper: Listings, Shops, Photos, Seller Replies

Etsy Reviews Scraper: Listings, Shops, Photos, Seller Replies

Scrape Etsy reviews for listings and whole shops: stars, text, buyer name, date, photos, the item bought and the seller's reply, with listing and shop rating and review count on every row. Sort by newest, suggested or rating; filter by stars. No login.

Pricing

from $1.59 / 1,000 reviews

Rating

0.0

(0)

Developer

The Mine Works

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

7 days ago

Last modified

Share

360 Etsy reviews from 3 listings and 2 shops in 72 seconds

From The Mine Works, makers of Threads Scraper and B2B Leads Finder, with over 140,000 runs across 170+ public actors.

Why choose this actor?

  • Reviews of one item or of a whole shop, in the same run. Give listing links for the reviews of a single item, shop links or names for every review the shop has received, or both. Our proof run returned 360 reviews from 3 listings and 2 shops in 72 seconds, and every one of its 59 requests was answered on the first try. No Etsy account, no API key, no cookies of yours.
  • The item bought and the seller's reply sit on the review's row. Each row carries stars, text, buyer name, date, photos and videos, the title and link of the item bought, and the seller's public reply when there is one, plus the listing's and the shop's average rating and review count, so a spreadsheet needs no lookup.
  • You pay only for reviews you receive. One charge per review row saved to your dataset, plus a flat start fee per run. Listings that are gone, shop names that do not exist, listings with no reviews, repeats and reviews an earlier run already gave you (when you switch that on) are never charged.

Run it on Apify

Part of The Mine Works Marketing, SEO and reviews family: Facebook Ad Library Scraper, Google Ads Transparency Scraper, Similarweb Scraper, Google News Scraper, Trustpilot Reviews Scraper, Google Trends Scraper.

Try it in one minute

Paste this input and press Start. It returns the 20 newest reviews of a name necklace that has over 22,000 reviews, in a few seconds:

{
"listings": ["https://www.etsy.com/listing/1413455244/custom-name-necklace-18k-gold-plated"],
"maxReviews": 20,
"sort": "most_recent"
}

You can point it at reviews in four ways, and mix them:

  • Listing link in listings: https://www.etsy.com/listing/1413455244/custom-name-necklace-18k-gold-plated, with or without a country part such as /uk/ and with any extra parameters.
  • Listing id in listings: 1413455244, the number after /listing/ in the link.
  • Shop link in shops: https://www.etsy.com/shop/CaitlynMinimalist or https://caitlynminimalist.etsy.com.
  • Shop name in shops: CaitlynMinimalist, as it appears in the shop's link.

Apify's free plan includes $5 of credit every month, which covers about 1,600 results at this actor's price.

Copy to your AI assistant

themineworks/etsy-reviews-scraper on Apify. Returns Etsy reviews of listings and of whole shops, one row per review with stars, text, buyer name, date, photos, videos, the item bought and the seller's reply, plus the listing's and the shop's average rating and review count. Call ApifyClient("TOKEN").actor("themineworks/etsy-reviews-scraper").call(run_input={"listings": ["https://www.etsy.com/listing/1413455244"], "shops": ["CaitlynMinimalist"], "maxReviews": 200, "sort": "most_recent"}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: listings (listing links or ids) or shops (shop links or names), at least one. Optional: maxReviews (default 100, 20 to 10,000, per listing or shop), sort (most_recent, suggested, highest_rating or lowest_rating; default most_recent), stars (list of "1" to "5"; default all), onlyNewReviews (default false). Skip rows that have "_type": "info". Full spec: GET https://api.apify.com/v2/acts/themineworks~etsy-reviews-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral

Key features

  • 29 fields per review: review id, stars, text, buyer name, date, photos, videos, item bought and its listing id, variation when Etsy shows it, seller reply and who replied, whether the buyer recommends the item, then the listing's title, link, rating and review count, and the shop's id, name, link, rating and review count.
  • Listing reviews and shop reviews. A listing gives the reviews of that one item; a shop gives the reviews of everything it sold, each row naming the item. Shops with hundreds of thousands of reviews work the same way: CaitlynMinimalist showed 751,787 in our run.
  • Up to 10,000 reviews per listing or shop. Etsy hands out 8 reviews a call; the actor keeps asking until your cap or the last page.
  • Four sort orders: most recent, suggested (Etsy's default), highest rating and lowest rating.
  • Star filter: pick one or more of 1 to 5 stars. Each level is read as its own list, up to your cap each, so "1 and 2 stars, 200 each" gives up to 400 complaints per listing or shop.
  • Only new reviews on repeat runs: switch it on for a schedule and each run returns, and charges, only reviews no earlier run in your account delivered.

How to use it

Basic: the newest reviews of one listing

{
"listings": ["https://www.etsy.com/listing/992281232/double-hoop-huggie-earrings-by-caitlyn"],
"maxReviews": 300
}

You get up to 300 rows, newest first, each with the listing's rating and review count and the shop's name, rating and review count copied on.

Listings and shops together

{
"listings": [
"https://www.etsy.com/listing/1413455244/custom-name-necklace-18k-gold-plated",
"4324466586",
"https://www.etsy.com/uk/listing/965054556"
],
"shops": ["https://www.etsy.com/shop/CaitlynMinimalist", "AnyaShopStudio"],
"maxReviews": 100,
"sort": "most_recent"
}

This is the input of our proof run: 360 reviews in 72 seconds. The two smaller listings stopped at their last review (45 and 15), the others at 100. Each listing and shop has its own line in the run summary (status, shop found, calls, why it stopped).

Shop health check on a schedule

{
"shops": ["YourShopName"],
"maxReviews": 100,
"sort": "most_recent",
"onlyNewReviews": true
}

Schedule it daily or weekly (Console, Schedules, Add schedule). Each run returns only reviews no earlier run delivered, so you can push new reviews to a sheet or a chat channel and answer them while the buyer still remembers the order. In our two run test the second run found nothing new on the first page, stopped there and charged no reviews.

Competitor complaints: what buyers dislike

{
"shops": ["CaitlynMinimalist"],
"maxReviews": 200,
"sort": "most_recent",
"stars": ["1", "2"]
}

Up to 200 one star and 200 two star reviews of a competitor shop, newest first. purchased_item shows which products draw the complaints and text says why (shipping, sizing, tarnish, personalisation errors).

Product research before you make an item

{
"listings": ["1526698881", "1153406329", "992281232"],
"maxReviews": 500,
"sort": "suggested"
}

Suggested is the order Etsy shows shoppers by default. Read what buyers praise and what they wish were different on the best sellers in your niche before you design your own version; photos show how the item looks in buyers' hands.

Seller reply audit

Run any shop or listing and filter the rows on seller_response. Filled rows show how the seller answers (tone, speed of fixes, refunds offered), empty ones on low stars show reviews nobody answered. In our proof run one seller had replied to 29 of the 45 reviews of its listing; none of the other 315 rows in that run carried a reply.

Input parameters

ParameterTypeDefaultWhat it does
listingsarray of stringsone example listingEtsy listing links or listing ids, one per line. Give listings, shops or both.
shopsarray of stringsemptyEtsy shop links or shop names, one per line. Each returns the reviews of everything the shop sold.
maxReviewsinteger100Reviews to collect per listing and per shop, 20 to 10,000. With a star filter it applies to each star level.
sortstringmost_recentmost_recent, suggested (Etsy's default), highest_rating or lowest_rating.
starsarray of stringsempty (every rating)Star levels to read, any of "1" to "5"; each is read as its own list.
onlyNewReviewsbooleanfalseSkip reviews an earlier run of yours already delivered, for schedules. Use with most_recent.

Up to 500 listings and shops in one run; repeats are read once.

What data do you get?

One row per review. The fields come in five groups.

The review: review_id, rating (1 to 5), text, reviewed_at (ISO date, for example 2026-10-03), recommended (when Etsy asked the buyer), photos and videos (lists of links, empty when none).

The buyer: reviewer_name, the display name Etsy shows on the review. Nothing else about the buyer is collected.

What was bought and the reply: purchased_item (the item title Etsy shows with the review), variation (only when Etsy shows it with the review; none of our 600 test reviews had one), seller_response and seller_response_by (the seller's public reply and the name it was posted under).

The listing and the shop, on every row: listing_id, listing_title, listing_url, shop_id, shop_name, shop_url, shop_rating, shop_review_count, and on rows from a listing also listing_rating and listing_review_count. On rows from a shop, the listing fields describe the item that review was left on.

Run context: source_type (listing or shop), sort, star_filter, page, position, input, scraped_at.

Empty values are left out of the row rather than sent as null, so a review without text simply has no text field.

Stable fields for automations

These fields were present in every one of the 600 rows of our two proof runs, and their names will not change:

FieldWhat it holds
review_idEtsy's id for the review (the order line it was left on), stable across runs; use it to dedupe
source_typelisting or shop: which of your inputs the row came from
listing_idListing id of the item reviewed
listing_titleTitle of the item reviewed
listing_urlLink to the listing
shop_idEtsy shop id
shop_nameShop name as in its Etsy link
shop_ratingShop's average rating
shop_review_countReviews the shop has in total
ratingStars, 1 to 5
reviewed_atDate the review was posted, YYYY-MM-DD
photosList of photo links, empty list when none
purchased_itemTitle of the item bought
positionPlace of the review in Etsy's list for your sort and star level
scraped_atWhen the row was read, ISO 8601 UTC

Output examples

Real rows from our proof run of 5 October 2026, trimmed for length (long text shortened with "...", buyer names masked).

A listing review with the seller's reply:

{
"review_id": "5042417174",
"source_type": "listing",
"listing_id": "4324466586",
"listing_title": "Personalised Map Necklace, Custom Coordinates Pendant, Where We Met Necklace, Long Distance Relationship Gift",
"listing_url": "https://www.etsy.com/listing/4324466586",
"shop_id": "12416984",
"shop_name": "MishiuFerris",
"shop_url": "https://www.etsy.com/shop/MishiuFerris",
"rating": 5,
"text": "Very meaningful piece for a good price.",
"reviewer_name": "L***",
"reviewed_at": "2026-05-19",
"photos": [],
"videos": [],
"seller_response": "We couldn't be happier! Thank you so much, Simon & Jon",
"seller_response_by": "Mishiu Ferris",
"recommended": true,
"listing_rating": 4.85,
"listing_review_count": 45,
"shop_rating": 4.76,
"shop_review_count": 1311,
"sort": "most_recent"
}

A listing review with a buyer photo:

{
"review_id": "5227935521",
"source_type": "listing",
"listing_id": "1413455244",
"listing_title": "Custom Name Necklace, 18K Gold Plated Name Necklace, Personalized Name Necklace, Cursive Name Jewelry, Birthday Gift, Christmas Gift for Her",
"shop_name": "AnyaShopStudio",
"rating": 5,
"text": "My necklace came out amazing! I already have a name necklace and an initial necklace but I needed one with my nickname!...",
"reviewer_name": "G******",
"reviewed_at": "2026-10-03",
"photos": ["https://i.etsystatic.com/iap/cc72a7/8619090876/iap_300x300.8619090876_l3hempo7.jpg?version=0"],
"recommended": true,
"listing_rating": 4.86,
"listing_review_count": 22993,
"shop_rating": 4.86,
"shop_review_count": 59467,
"page": 1,
"position": 7
}

A shop review, naming the item bought:

{
"review_id": "5233732701",
"source_type": "shop",
"listing_id": "1884833351",
"listing_title": "Peridot Ring Set by Caitlyn Minimalist • Set of 3: Vintage Peridot & Diamond Stacking Rings in Gold • Dainty Jewelry • Gift for Wife • RR157",
"listing_url": "https://www.etsy.com/listing/1884833351",
"shop_id": "10204022",
"shop_name": "CaitlynMinimalist",
"rating": 5,
"text": "SO pretty. High quality for dainty pieces that I was searching for.",
"reviewer_name": "M******",
"reviewed_at": "2026-10-05",
"photos": [],
"purchased_item": "Peridot Ring Set by Caitlyn Minimalist • Set of 3: Vintage Peridot & Diamond Stacking Rings in Gold • Dainty Jewelry • Gift for Wife • RR157",
"shop_rating": 4.82,
"shop_review_count": 751787,
"sort": "most_recent",
"page": 1,
"position": 1
}

Pricing

Pay per event: you pay for each review delivered to your dataset, plus a flat $0.005 per run, whatever memory you choose. Prices per review by Apify plan:

EventFree planBronze (Starter)Silver (Scale)Gold and above (Business)
Review delivered (review-scraped), per 1,000$2.99$2.49$1.99$1.59
Run start (run-start), once per run$0.005$0.005$0.005$0.005

What is never charged:

  • Listings that are removed, sold out or never existed, and shop names Etsy has no open shop for.
  • Listings and shops with no reviews.
  • Calls Etsy refused, even after retries.
  • A review seen twice in one run: the second copy is skipped.
  • Reviews an earlier run already delivered, when Only new reviews is on.
  • The information row at the end of the dataset (it has "_type": "info").

Proxy traffic goes through Apify's datacenter proxy, which is included in the price; there is no separate proxy fee and no residential proxy is needed.

FAQ

What does this actor read? Etsy's public reviews, logged out, the same ones any shopper sees under "Reviews" on a listing or a shop. It does not use an Etsy account, an Etsy API key or your cookies.

What is the difference between listing reviews and shop reviews? A listing's reviews are about that one item. A shop's reviews cover everything the shop has sold, and each row names the item in purchased_item and listing_id. Use listings for product research and shops for seller research.

How many reviews can I get? Up to 10,000 per listing or shop per run, limited by how many reviews it has. Etsy hands out 8 reviews per call, so 1,000 reviews take 125 calls. Our scale test read 1,000 reviews of a listing (back to December 2023) and 1,000 of a shop in 291 seconds, 258 requests with one network error retried.

How fresh is the data? Live. Every run reads Etsy at that moment. With Most recent sort, the first rows of a busy shop are reviews from the same day or the day before.

Do I need an Etsy account, cookies or a proxy of my own? No. Nothing to log in to and nothing to configure. The actor opens a normal visitor session on Etsy the way a browser does and uses Apify's datacenter proxy, which the run includes.

What is review_id? Etsy ties each review to the order line it was left on and uses that line's id for the review. It stays the same across runs, so it is the right key to dedupe on.

What happens with a removed listing or a wrong shop name? It gets status not_found in the run summary (the OUTPUT record), with the reason, and costs nothing. The other listings and shops in the run go on as normal.

Why is a buyer name missing on some rows? Etsy sometimes shows a review without a name. The row is still delivered with everything else; reviewer_name is simply absent (1 of our 600 test rows).

Can I run it on a schedule and get only new reviews? Yes. Turn on onlyNewReviews, keep sort on most_recent, and add a schedule in Console (Schedules, Add schedule, daily or weekly). Each run delivers and charges only reviews no earlier run in your account delivered, and stops as soon as it reaches ones it has seen.

What formats can I export? JSON, CSV, Excel, XML, RSS and HTML from the dataset tab, or through the API. In CSV and Excel a list such as photos is spread over numbered columns (photos/0, photos/1).

Can I use it from Claude, ChatGPT or Cursor (MCP)? Yes, through Apify's MCP server.

  • Connector URL: https://mcp.apify.com/?tools=themineworks/etsy-reviews-scraper
  • Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
  • ChatGPT: developer mode, add an MCP connector with the URL, sign in with Apify.
  • Cursor or VS Code: add it as an HTTP MCP server with that URL.
  • Claude Code: claude mcp add -t http etsy-reviews-scraper "https://mcp.apify.com/?tools=themineworks/etsy-reviews-scraper"

I want to find the listings first. Use our Etsy Listings Scraper to search Etsy by keyword, then paste the listing ids or shop names it returns into this actor.

Is it legal to scrape Etsy reviews? The actor reads only public reviews and returns what any visitor can see; the only personal detail is the display name Etsy itself shows on each review. You are responsible for how you use the data, including Etsy's terms and data protection law such as GDPR and CCPA.

Integrations

  • Google Sheets: add the Google Sheets integration to the actor or a schedule, and new reviews land in a sheet after each run.
  • Make, Zapier and n8n: use the Apify app to start a run and read the dataset, for example to post every new one star review of your shop to Slack.
  • Webhooks: call your own endpoint when a run finishes.
  • API: start runs and read results from any language; the Python and JavaScript clients are a few lines each.
  • MCP clients: Claude, ChatGPT, Cursor, VS Code and Claude Code, as in the FAQ above.

More from The Mine Works

Marketing, SEO and reviews

Social media and video

Leads and business directories

LinkedIn

Real estate

Science, health and government data

Jobs and hiring

Company and business data

E-commerce and marketplaces

Food and local services

Developer and AI tools

More tools

Support

Found a listing or shop that does not come through, or a field you need? Open an issue on the Issues tab and include the link; we answer there. For a new site or source, email dmineworks@gmail.com.

Etsy Reviews Scraper turns any list of Etsy listings and shops into a clean table of reviews, with the item, the seller's reply and both ratings on every row, and a charge only for the reviews you get.