Etsy Reviews Scraper avatar

Etsy Reviews Scraper

Pricing

from $2.99 / 1,000 results

Go to Apify Store
Etsy Reviews Scraper

Etsy Reviews Scraper

Scrape Etsy reviews with Etsy Reviews Scrape ๐Ÿš€ Extract star ratings, review text, dates & more for smarter product insights. ๐Ÿ“Š Perfect for market research, competitors, & SEO optimization. Fast, reliable, user-friendly. ๐Ÿ”โœจ

Pricing

from $2.99 / 1,000 results

Rating

0.0

(0)

Developer

ScraperForge

ScraperForge

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

5 days ago

Last modified

Share

Etsy Reviews Scraper โ€” Extract Etsy Shop Reviews, Ratings, Buyers & Seller Replies

Collect Etsy reviews at scale from any public Etsy shop. Paste shop URLs or plain shop names and get every review as a structured row: star rating, review text, review date, buyer identity, the exact product reviewed, review photos, the seller's reply, and the shop's overall rating and review count.

Built for sellers monitoring their own feedback, brands watching competitors, and analysts building review datasets for sentiment analysis.


What is Etsy Reviews Scraper?

Etsy Reviews Scraper is an Apify Actor that turns Etsy shop review pages into clean, structured data.

Etsy has no public API for reading arbitrary shop reviews, and the review feed on a shop page is paginated and rendered dynamically โ€” copying it by hand is impractical past the first page. This Actor paginates through a shop's review feed for you, extracts every review with its product context, and streams the results into a dataset you can export as CSV, Excel or JSON, or pull straight from the Apify API.

It runs without an Etsy account and always routes traffic through residential proxies, retrying each shop up to three times if Etsy blocks a request.


What data can you extract?

GroupFields
โญ Reviewproduct_rating, review (full text), date, receipt_id
๐Ÿ‘ค Buyerbuyer_real_name, buyer_login_name, buyer_user_id, buyer_image
๐Ÿ›๏ธ Productlisting_title, product_details.product_url, product_details.reviewer_image
๐Ÿช Shopproduct_details.seller_name, product_details.seller_url, product_details.shop_average_rating, product_details.shop_total_rating_count, reviews_count
๐Ÿ’ฌ Seller replyresponse
๐Ÿ“ท Photosappreciation_image, product_details.image

Why teams scrape Etsy reviews

For Etsy sellers

Your own reviews are scattered across pages and disappear from view as new ones arrive. Exporting them gives you a searchable archive โ€” every complaint, every compliment, tied to the exact listing that produced it. Sorting by product_rating shows which products quietly drag your shop average down.

For competitor and market research

Competitor reviews are the most honest product research available. They tell you what buyers actually complain about in a category โ€” sizing, shipping time, packaging, colour accuracy โ€” before you commit to producing anything. Group reviews by listing_title to see which of a rival's products carry the momentum.

For sentiment analysis and data teams

Review text with a numeric rating and a timestamp is exactly the shape sentiment models want. One run produces a labelled corpus you can feed into classification, topic modelling or an LLM pipeline, with no manual annotation.

For customer-service and quality teams

The response field shows whether a seller replied. Filtering for low ratings without a reply surfaces unhandled complaints โ€” on your own shop, that is a work queue; on a competitor's, it is a gap you can position against.


How to scrape Etsy reviews step by step

  1. Open the Etsy shop you want in your browser and copy the URL (https://www.etsy.com/shop/ShopName), or just note the shop name.
  2. Open this Actor and paste it into Shop URLs or names. Add more lines for more shops โ€” they all land in one dataset.
  3. Set Max reviews per shop. Start at 25โ€“50 to check the output, then raise it (up to 5,000).
  4. Click Start. Reviews stream into the Output tab as pages are collected.
  5. Export as CSV, Excel or JSON, or fetch the dataset through the Apify API.

โฌ‡๏ธ Input

Example input

{
"startUrls": [
"https://www.etsy.com/shop/HereafterLA",
"AnotherShopName"
],
"maxReviewsPerShop": 200
}

Input reference

FieldTypeDefaultDescription
startUrlsarrayโ€” (required)Etsy shop URLs (https://www.etsy.com/shop/ShopName) or plain shop names. Multiple shops are scraped in turn and combined into a single dataset.
maxReviewsPerShopinteger10Maximum reviews to fetch per shop, from 1 to 5,000. The Actor paginates until it hits this limit or runs out of reviews.
proxyConfigurationobjectโ€”Display only. This Actor always uses residential proxies with 3 retries per shop; changing this field does not alter runtime behaviour.

โฌ†๏ธ Output

Example output

{
"receipt_id": "3812456790",
"buyer_user_id": "184920371",
"buyer_real_name": "Marta K.",
"buyer_login_name": "martak2019",
"buyer_image": "https://i.etsystatic.com/iusa/โ€ฆ/avatar.jpg",
"listing_title": "Personalised Birth Flower Necklace, Sterling Silver",
"review": "Arrived faster than expected and the engraving is beautiful. Packaging was lovely too โ€” gifting this with confidence.",
"product_rating": 5,
"date": "2026-07-28",
"response": "Thank you so much Marta! Enjoy the necklace ๐Ÿ’›",
"appreciation_image": "https://i.etsystatic.com/iap/โ€ฆ/review-photo.jpg",
"reviews_count": 14286,
"product_details": {
"shop_average_rating": "4.9",
"shop_total_rating_count": "14286",
"product_url": "https://www.etsy.com/listing/1234567890/personalised-birth-flower-necklace",
"seller_name": "HereafterLA",
"seller_url": "https://www.etsy.com/shop/HereafterLA",
"reviewer_image": "https://i.etsystatic.com/il/โ€ฆ/il_fullxfull.jpg",
"image": ["https://i.etsystatic.com/il/โ€ฆ/il_570xN.jpg"]
}
}

Output fields

FieldTypeDescription
receipt_idstringEtsy receipt identifier for the reviewed order.
buyer_real_namestringBuyer's display name as shown on the review.
buyer_login_namestringBuyer's Etsy login name.
buyer_user_idstringBuyer's Etsy user ID.
buyer_imagestringBuyer avatar URL (a default avatar is used when none is set).
listing_titlestringTitle of the product that was reviewed.
reviewstringFull review text.
product_ratingnumberStar rating given, 1โ€“5.
datestringReview date.
responsestringThe seller's public reply, when there is one.
appreciation_imagestringPhoto attached by the buyer to the review.
reviews_countnumberTotal reviews on the shop.
product_detailsobjectshop_average_rating, shop_total_rating_count, product_url, seller_name, seller_url, reviewer_image, image[].

Usage recipes

Audit your own shop

{
"startUrls": ["https://www.etsy.com/shop/YourShopName"],
"maxReviewsPerShop": 5000
}

Export, then sort ascending by product_rating and read the 1โ€“3 star reviews first. Group by listing_title to find the specific listing responsible.

Compare three competitors in one run

{
"startUrls": ["CompetitorOne", "CompetitorTwo", "CompetitorThree"],
"maxReviewsPerShop": 500
}

Every row carries product_details.seller_name, so a single pivot compares average rating and complaint themes across all three.

Find unanswered complaints

Run any shop, then filter for rows where product_rating is 3 or lower and response is empty. On your own shop that is a to-do list; on a competitor's it is a positioning opportunity.

Build a sentiment dataset

{
"startUrls": ["ShopA", "ShopB", "ShopC", "ShopD"],
"maxReviewsPerShop": 2000
}

review plus product_rating gives you pre-labelled training data โ€” text and score, no manual annotation required.

Collect user-generated photos

Filter for rows where appreciation_image is not empty. Buyer-submitted review photos are the strongest social proof in a category (and a good indicator of what real-world product quality looks like).


How does this compare to Etsy's official API?

Etsy's Open API v3 is built for sellers managing their own shop โ€” it requires an API key, an OAuth flow, and in practice gives you access to your own listings and receipts. It is not a general-purpose route to reading any shop's public reviews at scale, and app registration is subject to approval.

This Actor takes the opposite approach: it reads the publicly visible review feed that any visitor can see, with no key, no OAuth and no approval process, and works identically on your own shop and on a competitor's. If you need to write to your own shop or read private order data, use Etsy's official API. If you need public review data โ€” especially across shops you do not own โ€” this Actor is the practical option.


Integrate and automate

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_API_TOKEN>")
run = client.actor("scraperforge/etsy-reviews-scraper").call(run_input={
"startUrls": ["https://www.etsy.com/shop/HereafterLA"],
"maxReviewsPerShop": 500,
})
for review in client.dataset(run["defaultDatasetId"]).iterate_items():
print(review["product_rating"], "|", review["listing_title"], "|", review["review"][:80])

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_API_TOKEN>' });
const run = await client.actor('scraperforge/etsy-reviews-scraper').call({
startUrls: ['https://www.etsy.com/shop/HereafterLA'],
maxReviewsPerShop: 500,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

REST API

curl -X POST "https://api.apify.com/v2/acts/scraperforge~etsy-reviews-scraper/runs?token=<YOUR_APIFY_API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"startUrls":["https://www.etsy.com/shop/HereafterLA"],"maxReviewsPerShop":500}'

n8n, Make, Zapier and AI agents

The Actor is callable from n8n, Make, Zapier and any MCP-capable AI agent through Apify's standard integrations โ€” useful for "alert me when a new 1-star review appears" workflows.

Schedules and webhooks

Attach an Apify Schedule to re-run weekly and deduplicate on receipt_id to capture only new reviews. Add a webhook to POST each finished run to your own endpoint, or push results straight into Google Sheets, Airtable, Slack or Google Drive.


Pricing and what you are charged for

This Actor uses Apify's pay-per-event model: a small Actor-start charge plus a charge per review row delivered to your dataset. You pay for reviews you actually receive, not for run time โ€” a shop with few reviews costs proportionally little.

Current rates are on the Pricing tab of this Actor's page, and Apify shows an estimated cost before and during every run. Free Apify accounts include monthly platform credit that is enough to trial it.

Cost control: maxReviewsPerShop is the lever. Start low, confirm the shops resolve correctly, then scale.


Limits, reliability and blocking

  • Public shops only. Etsy shops that are closed, suspended or region-restricted cannot be read.
  • maxReviewsPerShop is per shop, so four shops at 500 each can return up to 2,000 rows.
  • Maximum 5,000 reviews per shop in a single run.
  • Residential proxies are always used, with up to 3 retries per shop. The proxy field in the input is informational only.
  • Etsy paginates review feeds, and very large shops may not expose their entire history โ€” you get as deep as the site allows.
  • Image URLs point at Etsy's CDN and can change over time; download them promptly if you need the files.
  • Not every review has text, a photo or a seller reply โ€” those fields come back empty rather than guessed.
  • Default run options are 4 GB memory and a 1-hour timeout; raise the timeout for multi-shop runs at high limits.

This Actor collects only publicly published reviews โ€” the same content any visitor sees on a shop page without logging in. It does not log in, access private order data, or bypass any protection.

Reviews are written by real people, and buyer names, avatars and photos are personal data under GDPR, the UK GDPR, CCPA/CPRA and comparable regimes. If you store or process this data, make sure you have a lawful basis, keep it secure, honour deletion requests, and do not use buyer identities for unsolicited marketing. Review text and photos remain the property of their authors โ€” quote responsibly and attribute where you republish. You are responsible for ensuring your use complies with Etsy's terms and applicable law.


โ“ Frequently asked questions

Do I need an Etsy account or API key?

No. The Actor reads public shop review pages without any credentials.

Can I paste just the shop name instead of a URL?

Yes. HereafterLA and https://www.etsy.com/shop/HereafterLA both work, and you can mix formats in the same list.

How many reviews can I collect from one shop?

Up to 5,000 per shop per run, subject to how many the shop actually has and how deep Etsy paginates.

Does it return review photos?

Yes โ€” appreciation_image holds the buyer's attached photo, and product_details.image holds listing imagery. Both are URLs, not files.

Can I see the seller's reply to a review?

Yes, in the response field. It is empty when the seller has not replied โ€” which is exactly what makes "low rating + no reply" such a useful filter.

Can I scrape reviews for a single product rather than a whole shop?

The Actor works at shop level, but every row includes listing_title and product_details.product_url, so filtering the export down to one product takes one step.

Why did I get fewer reviews than I asked for?

The shop had fewer reviews available than your limit, or Etsy stopped paginating. Both are normal; the run still finishes successfully.

Do I need to configure proxies?

No. Residential proxies are always used and cannot be turned off โ€” that is what keeps success rates high on Etsy.

Which export format should I use?

CSV or Excel for spreadsheet analysis (Apify flattens product_details for you), JSON when you want the nested product and shop structure intact.

Can I run this automatically every week?

Yes. Save your input as a Task, attach a Schedule, and deduplicate on receipt_id between runs to isolate new reviews.


Browse the full collection on the ScraperForge profile.


๐Ÿ’ฌ Feedback

Found a bug, need an extra field, or want a variant tailored to your workflow? Open an issue on the Issues tab of this Actor โ€” feature requests that make it better for everyone are welcome.