Etsy Reviews Scraper avatar

Etsy Reviews Scraper

Pricing

from $5.00 / 1,000 etsy review scrapeds

Go to Apify Store
Etsy Reviews Scraper

Etsy Reviews Scraper

Scrape Etsy product reviews from listing URLs and shop pages: star rating, review text, reviewer, date, review photos, listing title and shop context, for sentiment analysis, product research and competitor tracking.

Pricing

from $5.00 / 1,000 etsy review scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

73

Total users

14

Monthly active users

18 hours ago

Last modified

Share

What is Etsy Reviews Scraper?

Etsy Reviews Scraper is an Apify Actor for people who need public Etsy review data from listing URLs or shop pages. It accepts Etsy product URLs or Etsy shop URLs, and each dataset record represents one real customer review. The row can include rating, review text, reviewer name, review date, review images when Etsy exposes them, listing metadata, and shop context. The outcome is a structured review dataset that works well for sentiment analysis, competitor research, and AI agent workflows, including use through Apify MCP.

Best fit and connected workflows

This Actor fits workflows that start with known Etsy listings or known Etsy shop pages and end with review-level analysis. Common routing patterns include:

  • Product feedback analysis for one or more specific Etsy listings.
  • Competitor research across similar products in a niche.
  • Review exports for spreadsheets, notebooks, or dashboards.
  • AI-agent pipelines that need one review per row with product context.
  • Sentiment workflows where review text and star rating are used together.

When you already have Etsy listing URLs, that is the most direct path. When you have only a shop page, the Actor can discover visible listings from that shop and then collect reviews from those listings.

Practical scenario

A marketplace analyst has a list of Etsy listing URLs for handmade candle products. They run the Actor with those URLs, a review cap per listing, and a total result cap. The returned rows include rating, reviewText, reviewDate, reviewerName, listingTitle, shopName, and listingUrl. From that, the analyst can compare recurring praise and complaint themes across competitors, then decide which product attributes deserve closer review in the next research pass.

Input fields

FieldTypePurposeNotes
productUrlsarray of stringsDirect Etsy listing URLs to scrape reviews fromMost direct and reliable path
shopUrlsarray of stringsEtsy shop pages used to discover listings before scrapingSlower than direct listing URLs
maxReviewsPerListingintegerCaps reviews collected from each listing1 to 500, default 25
maxResultsintegerCaps total review records saved in the run1 to 5000, default 25
sortBystringReview ordermost_recent or recommended
includeListingMetadatabooleanIncludes listing title, shop name, listing rating, and review countDefault: true
includeReviewImagesbooleanIncludes review image URLs when Etsy exposes themDefault: true
ratingFilterarray of stringsKeep only these star ratings, e.g. ["1","2"] for negative reviewsDefault: all ratings
textOnlybooleanSkip star-only reviews with no written textDefault: false

Focused input example

{
"productUrls": [
"https://www.etsy.com/listing/1071878058/charger-plate-pumpkin-set-pumpkin"
],
"maxReviewsPerListing": 10,
"maxResults": 10,
"sortBy": "most_recent",
"includeListingMetadata": true,
"includeReviewImages": true,
"ratingFilter": [],
"textOnly": false
}

To collect only negative feedback from competitor listings, set "ratingFilter": ["1", "2"] and "textOnly": true. Reviews that do not match are skipped, not charged, and do not count toward maxReviewsPerListing or maxResults.

Output fields

Each dataset row contains one Etsy review.

FieldTypePurpose
recordTypestringIdentifies the row as a review
reviewIdstring or nullReview identifier when Etsy exposes it
reviewUrlstring or nullLink to the review anchor, or to the listing when Etsy shows no review ID
ratingnumber or nullStar rating from 1 to 5
reviewTextstring or nullFull review body text
reviewDatestring or nullReview date as ISO date or displayed text
reviewerNamestring or nullPublic reviewer display name
reviewerProfileUrlstring or nullPublic reviewer profile URL when visible
reviewImagesarray or nullReview image URLs
listingIdstring or nullEtsy listing ID
listingTitlestring or nullProduct title from the listing page
listingUrlstring or nullCanonical Etsy listing URL
listingRatingnumber or nullAverage listing or shop rating context
listingReviewCountinteger or nullVisible review count context
shopNamestring or nullEtsy shop name
shopUrlstring or nullPublic Etsy shop URL
sourceUrlstringURL crawled to produce the row
scrapedAtstringISO timestamp when the row was saved
diagnosticStatusnullAlways null on review rows (kept for backward compatibility); diagnostics for the whole run are in OUTPUT and RUN_SUMMARY
diagnosticMessagenullAlways null on review rows (kept for backward compatibility)

Sample output record

A sample review row (reviewer name shortened). Fields Etsy did not show on that page are null.

{
"recordType": "review",
"reviewId": null,
"reviewUrl": "https://www.etsy.com/listing/1071878058/charger-plate-pumpkin-set-pumpkin?ref=reviews",
"rating": 5,
"reviewText": "They are nice, and the table look really nice for Thanksgiving.",
"reviewDate": "Dec 9, 2024",
"reviewerName": "C.",
"reviewerProfileUrl": null,
"reviewImages": [],
"listingId": "1071878058",
"listingTitle": "Charger Plate Pumpkin Set, Pumpkin Coasters & Plates Set, Easter Table Décor, Wooden Charger Plate, Wooden Pumpkin Décor, Easter Gift",
"listingUrl": "https://www.etsy.com/listing/1071878058/charger-plate-pumpkin-set-pumpkin?ref=reviews",
"listingRating": null,
"listingReviewCount": null,
"shopName": "BobsCozyRoom",
"shopUrl": null,
"sourceUrl": "https://www.etsy.com/listing/1071878058/charger-plate-pumpkin-set-pumpkin?ref=reviews",
"scrapedAt": "2026-10-12T13:34:05.669Z",
"diagnosticStatus": null,
"diagnosticMessage": null
}

How it works

The Actor scrapes Etsy product reviews from listing pages and shop pages. It opens each listing in a real browser, pages through the reviews section, and saves one row per review. The input supports direct product URLs, shop URLs for discovery, review sorting, star-rating and text filters, and optional listing metadata and review images.

The dataset is designed as one review per row. execution diagnostics are kept in OUTPUT and RUN_SUMMARY, while the dataset contains review records only. When Etsy's bot protection blocks the browser and no reviews come back, a fallback data route is tried before the run ends. Each review is saved before it is charged, and every run records its outcome (COMPLETE, PARTIAL, VALID_EMPTY, INVALID_INPUT or UPSTREAM_FAILED) in OUTPUT.

Pricing

This Actor uses Pay per event pricing plus Apify platform usage.

  • The Actor start event is charged once when the Actor begins.
  • The primary event is charged for each Etsy review scraped record saved to the dataset. Reviews skipped by ratingFilter or textOnly are not charged.
  • Apify platform usage, such as compute and storage, is separate from event charges.
  • For current pricing details, open the live Pricing tab on the Actor page.

Example: if a run saves twenty-five reviews, the cost includes one Actor start event plus twenty-five review-scraped events, along with normal Apify platform usage for the run.

Use with AI agents (MCP)

This Actor is usable through Apify MCP. It provides a tool that extracts public Etsy review rows from listing URLs or shop pages and returns structured data that agents can pass into downstream analysis, exports, or summarization steps.

Exact Actor identity: khadinakbar/etsy-reviews-scraper

Scrape reviews from these Etsy listing URLs and return one row per review with rating, text, reviewer, date, listing context, and shop context. Keep the output as structured JSON and include only public review data.

Output interpretation is straightforward: each dataset row is one review. recordType confirms the row type, sourceUrl shows what was crawled, and scrapedAt marks when the row was saved. reviewImages contains image URLs when Etsy exposes review photos. listingTitle, shopName, and listingUrl provide the product context that agents often need for comparison or enrichment.

For provenance, use the dataset items endpoint linked in the run output. For scope, use productUrls for direct listing review extraction and shopUrls when discovery from a shop page is the right starting point. For pagination and cost guidance, set maxReviewsPerListing for per-listing sampling and maxResults for the total run cap so the review count stays aligned with the intended PPE spend.

Apify API example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('khadinakbar/etsy-reviews-scraper').call({
productUrls: ['https://www.etsy.com/listing/1071878058/charger-plate-pumpkin-set-pumpkin'],
maxReviewsPerListing: 10,
maxResults: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Best results and outcome guidance

Use direct Etsy listing URLs when you already know the products you want to research. Use shopUrls when the starting point is an Etsy shop page and you want the Actor to discover listings first.

Helpful settings:

  • Use sortBy: "most_recent" to collect recent feedback first.
  • Use includeListingMetadata: true when you want each review row to carry product context.
  • Use includeReviewImages: true when image URLs add value for UGC or quality review analysis.
  • Use maxReviewsPerListing for per-product sampling and maxResults for the full run cap.

Continue the workflow

Design note

I found that the dataset contract is intentionally narrow: recordType, sourceUrl, and scrapedAt are required, while diagnostics are reserved for OUTPUT and RUN_SUMMARY. That makes the dataset clean for review analysis and keeps terminal run details separate.

FAQ

Can I start from Etsy listing URLs?

Yes. productUrls is the most direct input for review extraction from specific Etsy products.

Can I start from Etsy shop pages?

Yes. shopUrls lets the Actor discover listings from a shop page before scraping reviews.

Does the Actor return one row per review?

Yes. The dataset schema defines one real Etsy customer review per row.

Can I use the Actor for AI agent workflows?

Yes. The Actor is MCP-ready and returns structured review rows that fit retrieval, summarization, and sentiment workflows.

Which fields are most useful for competitor research?

rating, reviewText, reviewDate, listingTitle, listingRating, listingReviewCount, and shopName are the most common starting points.

How do I control run size?

Use maxReviewsPerListing for per-listing review caps and maxResults for the total review cap across the whole run.

Responsible use

Use only public Etsy review data that is visible on listing and shop pages. Respect Etsy's terms, applicable law, and privacy expectations when storing, analyzing, or redistributing the output. Keep downstream use aligned with review analysis, research, and automation tasks that rely on public product feedback.