Etsy Reviews Scraper
Pricing
from $5.00 / 1,000 etsy review scrapeds
Etsy Reviews Scraper
Scrape Etsy product reviews from listing URLs and shop pages. Extract rating, review text, reviewer, date, images, listing metadata, and shop context for sentiment analysis, competitor research, and AI agents. MCP/API-ready.
Pricing
from $5.00 / 1,000 etsy review scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
31
Total users
13
Monthly active users
3 days ago
Last modified
Categories
Share
Etsy Reviews Scraper: Product Feedback
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
| Field | Type | Purpose | Notes |
|---|---|---|---|
productUrls | array of strings | Direct Etsy listing URLs to scrape reviews from | Most direct and reliable path |
shopUrls | array of strings | Etsy shop pages used to discover listings before scraping | Slower than direct listing URLs |
maxReviewsPerListing | integer | Caps reviews collected from each listing | 1 to 500, default 25 |
maxResults | integer | Caps total review records saved in the run | 1 to 5000, default 25 |
sortBy | string | Review order | most_recent or recommended |
includeListingMetadata | boolean | Includes listing title, shop name, listing rating, and review count | Default: true |
includeReviewImages | boolean | Includes review image URLs when Etsy exposes them | Default: true |
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}
Output fields
Each dataset row contains one Etsy review.
| Field | Type | Purpose |
|---|---|---|
recordType | string | Identifies the row as a review |
reviewId | string or null | Review identifier when Etsy exposes it |
reviewUrl | string or null | suitable-effort URL back to the review or listing anchor |
rating | number or null | Star rating from 1 to 5 |
reviewText | string or null | Full review body text |
reviewDate | string or null | Review date as ISO date or displayed text |
reviewerName | string or null | Public reviewer display name |
reviewerProfileUrl | string or null | Public reviewer profile URL when visible |
reviewImages | array or null | Review image URLs |
listingId | string or null | Etsy listing ID |
listingTitle | string or null | Product title from the listing page |
listingUrl | string or null | Canonical Etsy listing URL |
listingRating | number or null | Average listing or shop rating context |
listingReviewCount | integer or null | Visible review count context |
shopName | string or null | Etsy shop name |
shopUrl | string or null | Public Etsy shop URL |
sourceUrl | string | URL crawled to produce the row |
scrapedAt | string | ISO timestamp when the row was saved |
diagnosticStatus | string or null | Reserved compatibility field |
diagnosticMessage | string or null | Reserved compatibility field |
Illustrative output record
{"recordType": "review","reviewId": "1234567890","reviewUrl": "https://www.etsy.com/listing/1071878058/charger-plate-pumpkin-set-pumpkin#review-1234567890","rating": 5,"reviewText": "Beautiful quality and shipped quickly.","reviewDate": "2026-05-21","reviewerName": "Avery","reviewerProfileUrl": "https://www.etsy.com/people/example","reviewImages": ["https://i.etsystatic.com/example.jpg"],"listingId": "1071878058","listingTitle": "Charger Plate Pumpkin Set","listingUrl": "https://www.etsy.com/listing/1071878058/charger-plate-pumpkin-set-pumpkin","listingRating": 4.8,"listingReviewCount": 327,"shopName": "GlassMystique","shopUrl": "https://www.etsy.com/shop/GlassMystique","sourceUrl": "https://www.etsy.com/listing/1071878058/charger-plate-pumpkin-set-pumpkin","scrapedAt": "2026-06-12T12:00:00.000Z","diagnosticStatus": null,"diagnosticMessage": null}
How it works
The Actor scrapes Etsy product reviews from listing pages and shop pages. The live contract indicates a Playwright-based implementation template and a memory range from 1024 MB to 4096 MB, with 2048 MB as the default. The input schema supports direct product URLs, shop URLs for discovery, review sorting, 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. The live contract also includes a tested provider fallback for DataDome-protected runs, strict PPE charge reconciliation, and terminal outcomes recorded for automation.
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 scrapedrecord saved to the dataset. - 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: truewhen you want each review row to carry product context. - Use
includeReviewImages: truewhen image URLs add value for UGC or quality review analysis. - Use
maxReviewsPerListingfor per-product sampling andmaxResultsfor the full run cap.
Continue the workflow
- Then use Etsy Shop Details Scraper - Seller Profiles & Ratings to extend Etsy Reviews Scraper: Product Feedback research with a complementary enrichment contract.
- Then use Flipkart Listings Scraper to extend Etsy Reviews Scraper: Product Feedback with a neighboring commerce research source when the brief calls for Flipkart data.
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.