Etsy Scraper: Listings, Prices, Ads, Reviews avatar

Etsy Scraper: Listings, Prices, Ads, Reviews

Pricing

from $0.85 / 1,000 listings

Go to Apify Store
Etsy Scraper: Listings, Prices, Ads, Reviews

Etsy Scraper: Listings, Prices, Ads, Reviews

Scrape Etsy phrases, categories, shops, listing links or ids in 29 Etsy markets, no login. Get price, original price, discount, free shipping, shop rating, ad slot and organic rank, plus optional listing pages, reviews and shops. JSON, CSV or Excel via API or schedule; pay per listing.

Pricing

from $0.85 / 1,000 listings

Rating

0.0

(0)

Developer

Automation Craft

Automation Craft

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

4 days ago

Last modified

Share

Etsy Scraper: Listings, Prices, Ads, Reviews

Etsy scraper for search phrases, categories, shops, listing links and listing ids: every Etsy listing comes as a clean row with price, original price, discount, free shipping, the shop's rating and review count, shop id, its organic rank and its ad slot on the page, in 29 Etsy markets with 30 display currencies and 13 Etsy languages. On request each listing's own page adds the description, gallery and video, variations with option prices, stock, materials, who made it, favourites, listed date, the in carts, bought and viewed in 24 hours line, shipping cost and delivery estimate, and shop sales; buyer reviews and shop profiles come as rows of their own. No login and no API key. You pay per listing delivered; repeats, filtered listings and misses are free.

Use it for Etsy product and keyword research, to compare competitors' prices, to see which listings buy ad slots on a phrase and where the organic results rank, or to export a category, a shop or a set of listings to Excel.

Quick start

  1. Open the Actor's Input tab.
  2. Type Search phrases as a buyer types them (leather wallet, personalized necklace), paste Etsy links (a /market/ phrase page, a /c/ category page, a /listing/ or a /shop/ link), give Listing links or ids (1879178124), name Shops (CaitlynMinimalist) or give Shop ids (35055979).
  3. Pick the Country (Etsy market) (US by default), and optionally a Display currency and a Title language.
  4. Optionally set filters: price range, on sale, free shipping, minimum shop rating or shop reviews, digital or physical, words in the title, ads on or off.
  5. Set Maximum listings and turn on the add-ons you want: Listing details, Reviews, Every listing of a shop.
  6. Click Start. Download the results as JSON, CSV or Excel, or read them through the Apify API.

What you get

Listing rows (the Listing event)

One row per Etsy listing (type: listing), once per run, whichever phrase, category, shop or id found it first (or once per target with Each listing once per run off). The fill column is measured on 8,408 listing rows of the platform runs of 2026-10-29 (the matrix of this Actor and the matrix and cost runs of its test copy on the same code).

FieldWhat it isFill
listingIdEtsy's listing id100%
titletitle as Etsy shows it100%
urllisting link100%
priceprice a buyer pays now100%
currencycurrency of the prices100%
originalPricethe struck price beside a sale price56%
discountPercentdiscount, percent58%
onSaleon sale100%
freeShippingfree shipping100%
shopRatingthe shop's star rating (Etsy's card shows the shop's)50%
shopReviewCountthe shop's review count (rounded above 1,000 on the card)50%
shopIdthe shop's id100%
shopNamethe shop's name (cards that show it, every detailed row)4%
shopUrlshop link4%
isAdshown as an ad on the page100%
adSlotad slot on the page25%
organicRankrank among the organic results58%
pagePositionposition on the page, ads included88%
badgesEtsy's card badges20%
bestsellerBestseller badge100%
stockLeft"Only N left" on the card2%
imagemain image100%
titleMatchesSearchtitle holds the phrase's words71%

The row also says where it was found: source (search, category, shop, rss or listing), searchKey (the target: m:<phrase>, c:<category path>, s:<shop> or ids), searchPhrase (also for a phrase Etsy sends to a category page), categoryPath or searchShop, page, organicRank (the organic place: on a phrase page Etsy's own order of 40 organic results a page; on a category, the organic results of the pages read before it, null when a category walk starts past its page 1), shopRank (the place in the shop's own order), adSlot (the paid slot on that page), pagePosition (the place on the page as a shopper sees it, ads included), isAd, and titleMatchesSearch (whether the title holds every word of the phrase). A listing shown both as an ad and as an organic result is one row with both positions.

Listing details (the Listing details event, optional)

With Listing details on, each delivered listing's own page is read and merged into its row (detailStatus: ok; otherwise it says why not: not_found, blocked, exits_spent, not_read, allowance, charge_limit or stopped); the fill column is measured on 412 detailed rows of the same runs:

FieldWhat it isFill
descriptionfull description100%
imagesimage gallery100%
imageCountnumber of images100%
videoUrllisting video58%
variationsvariations with option prices: each option's text as Etsy shows it (value), its price when the text ends in one (priceText) and soldOut64%
quantityquantity Etsy offers100%
availabilityin stock or not100%
categoryPathcategory path100%
materialsmaterials79%
highlightsitem details lines95%
madeBy"Made by" line78%
handmadehandmade: true when the item details say "Made by" the shop100%
vintagevintage: true when the item details say "Handpicked by" the shop100%
digitalDownloaddigital download100%
personalizablepersonalizable100%
favoritesfavourites79%
listedOnlisted on date85%
listingRatingthe listing's own rating97%
listingReviewCountthe listing's own reviews82%
reviewTagsreview topic tags with counts62%
sampleReviewsreviews shown on the page82%
inCartsin carts now47%
boughtLast24hbought in 24 hours (Etsy shows one urgency line at a time: 13 of 634 listing page reads carried this one)2%
viewsLast24hviews in 24 hours19%
scarcityTextEtsy's urgency line88%
estimatedDeliverydelivery estimate60%
shippingCostshipping cost27%
priceWithShippingprice with shipping27%
shipsFromCountryships from100%
returnsPolicyreturns and exchanges90%
giftWrappinggift wrapping100%
productionPartnersproduction partners13%
itemAttributesattributes (colour, occasion, style)30%
relatedSearchesEtsy's related searches93%
faqsthe shop's FAQ29%
shopSalesshop's sales100%
shopReviewCountshop's reviews97%
shopLocationshop's location98%
shopTenureyears on Etsy98%
starSellerStar Seller100%
etsysPickEtsy's Pick100%
sellerBadgesthe shop's badges84%

Filters that only the listing page answers need Listing details: handmade, vintage, Star Seller, bestseller, Etsy's Pick and personalizable only, ships from countries, minimum favourites, listed after or before, category contains, and made by kinds (made, designed, handpicked or sourced by). Handmade only keeps the listings Etsy marks "Made by" the shop; a listing marked "Designed by" the shop (made with a production partner) is left out, and made by kinds made by plus designed by keeps both. Vintage only keeps the listings Etsy marks "Handpicked by" the shop. A listing a filter drops is free; a page that cannot be read is free and the row comes without details.

Review rows (the Review event, optional)

With Reviews on, each delivered listing's buyer reviews come as type: review rows (8 per Etsy call, 8 per listing by default, up to 2,400): reviewId, listingId, shopId, scope, rating, date, dateText, recommended, text, textTranslated, photo, buyerName, listingTitle, sellerResponse. Pick Etsy's own order (relevance, newest, highest, lowest), one or several star ratings (read one rating after the other under one cap) and a topic (Quality, Shipping & Packaging ...); Reviews with a photo only is filtered here and the rest is free. With Whole shop reviews and a shop you named, the shop's reviews across all its listings come as well (100 by default).

Shop rows and shop listings (the Shop page event, optional)

A shop you name (or give by its id: the run reads its name from the shop's reviews first, and a shop id without reviews gets a free shop_not_resolved row) gives its latest 10 listings from its RSS feed, charged as Listings. With Every listing of a shop on, the shop's own pages are the shop's rows instead, read through Apify's own unblocker: every listing in the shop's order (about 40 a page, shopRank), and on its first page a free type: shop row with shopId, shopName, url, headline, location, starSeller, rating, reviewCount, sales, admirers, onEtsySince, latestActivity, activeListings, sections (each with its id), announcement, announcementUpdatedOn and faqs. When no shop page can be read, the shop's latest 10 listings from its RSS feed stand in (its coverage row says so). Each shop page read is one Shop page event, also when its listings are filtered out or already delivered. Search inside the shop (shopSearchQuery) sends the shop's own search box, Shop section (shopSectionId) reads one section of the shop (newest first unless an order is set), and Shop listing order (shopSortOrder: featured, newest, price low to high or high to low) the shop's own order; with any of them the RSS feed's latest listings are never delivered. The unblocker is slow (30 to 60 seconds a page) and at busy hours often has no free browser: an attempt it could not answer is free, and after six failures in a row the run stops asking it; a shop whose page 1 could not be read gets its RSS feed's latest 10 listings instead.

A listing that several of your phrases, categories or shops find is delivered and charged once per run (with the rank, page and position of the target that found it first). Turn off Each listing once per run (dedupeAcrossSearches) for rank tracking: each target then delivers every listing it finds, a listing found by two phrases is two rows (each a Listing), and searchKey on every row names the target (m:<phrase>, c:<category path>, s:<shop>, or ids). Each run starts fresh: nothing is kept from one run to the next.

Example listing row

A real detailed row of a "leather wallet" run (arrays and the description shortened here, buyers' display names left out):

{
"type": "listing",
"listingId": "4501095565",
"url": "https://www.etsy.com/listing/4501095565/rfid-full-grain-leather-wallet",
"title": "Personalised Full Grain Leather RFID Wallet, Engraved Mens Bifold Wallet",
"shopId": "64259013",
"shopName": "ShipyardBelfast",
"shopUrl": "https://www.etsy.com/shop/ShipyardBelfast",
"price": 44.56,
"priceText": "$44.56",
"priceFrom": false,
"cardPrice": 44.56,
"currency": "USD",
"originalPrice": null,
"discountPercent": null,
"onSale": false,
"shopRating": 4.98,
"shopReviewCount": 80,
"shopReviewCountRounded": false,
"freeShipping": false,
"freeShippingText": null,
"isAd": false,
"adSlot": null,
"organicRank": 15,
"shopRank": null,
"page": 1,
"pagePosition": 26,
"digitalDownload": false,
"starSeller": true,
"bestseller": false,
"etsysPick": false,
"popularNow": false,
"stockLeft": null,
"badges": [],
"image": "https://i.etsystatic.com/64259013/r/il/ba9e2b/8018515648/il_800x800.8018515648_fe37.jpg",
"imageAlt": "May include: A brown leather wallet with the initials \"S.Y.\" embossed on the front, displayed on a black box. The wallet is open, revealing an interior pocket. The image also shows a sign that reads \"SHIPYARD - Local leathersmith and engraving-\".",
"source": "search",
"searchPhrase": "leather wallet",
"categoryPath": [
"Bags & Purses",
"Wallets & Money Clips",
"Wallets"
],
"searchShop": null,
"titleMatchesSearch": true,
"country": "US",
"detailStatus": "ok",
"scrapedAt": "2026-10-16T19:41:39.687Z",
"description": "Crafted from premium full grain leather, this bifold wallet is designed to age beautifully and last for years. Each wallet develops its own unique patina over t ...",
"priceMin": 44.56,
"priceMax": 44.56,
"availability": "InStock",
"quantity": 58,
"categoryUrl": "https://www.etsy.com/c/bags-and-purses/wallets-and-money-clips/wallets",
"listingRating": 5,
"listingReviewCount": 29,
"favorites": 204,
"listedOn": "2026-10-15",
"scarcityText": "In 19 carts",
"inCarts": 19,
"boughtLast24h": null,
"viewsLast24h": null,
"shipsFromCountry": "GB",
"shipsFromRegion": null,
"shipsFromText": "United Kingdom",
"shippingCost": 11.14,
"priceWithShipping": 55.7,
"freeShippingThreshold": null,
"estimatedDelivery": "Oct 20-28",
"returnsPolicy": "Returns & exchanges not accepted",
"returnsWindow": null,
"giftWrapping": false,
"materials": [
"Brass",
"Leather"
],
"itemAttributes": [
{
"name": "Primary fabric type",
"value": "Leather"
}
],
"madeBy": "ShipyardBelfast",
"madeByKind": "made by",
"handmade": true,
"vintage": false,
"vintageText": null,
"personalizable": true,
"highlights": [
"Made by ShipyardBelfast",
"Materials: Brass, Leather; Primary fabric type: Leather"
],
"productionPartners": [],
"variations": [
{
"label": "Primary color",
"options": [
{
"id": "6588354668",
"value": "Black pebble",
"priceText": null,
"soldOut": false
},
{
"id": "6588354664",
"value": "Dark Coffee",
"priceText": null,
"soldOut": false
}
]
},
{
"label": "Engraving options",
"options": [
{
"id": "6613527541",
"value": "Engraved ($48.04)",
"priceText": "$48.04",
"soldOut": false
},
{
"id": "6612692934",
"value": "Not Engraved ($44.56)",
"priceText": "$44.56",
"soldOut": false
}
]
}
],
"images": [
"https://i.etsystatic.com/64259013/r/il/ba9e2b/8018515648/il_fullxfull.8018515648_fe37.jpg",
"https://i.etsystatic.com/64259013/r/il/18883f/7994578680/il_fullxfull.7994578680_dl3y.jpg"
],
"imageCount": 18,
"videoUrl": null,
"videoDuration": null,
"reviewTags": [
"Great quality",
"Looks great"
],
"sampleReviews": [
{
"rating": 5,
"date": "2026-10-15",
"text": "Very soft good quality leather",
"author": "(left out here)"
},
{
"rating": 5,
"date": "2026-10-14",
"text": "Absolutley LOVE this wallet, it is beautiful and well made and the engraving looks great, thanks so much i cant wait to give this as a gift",
"author": "(left out here)"
}
],
"relatedSearches": [
"wallet",
"rfid wallet"
],
"shopSales": 416,
"shopSalesText": "416 sales",
"shopTenure": "5 months",
"shopLocation": null,
"shopOwnerName": null,
"gtin": null,
"sellerBadges": [
"Smooth shipping",
"Speedy replies",
"Rave reviews"
],
"faqs": []
}

Free rows

  • one search row per phrase, category or shop: pagesRead, listingsFound, listingsDelivered, adsFound, totalReported (Etsy's own total), relatedSearches and autocomplete (Etsy's related searches and its own suggestions for a phrase), redirectedTo (a phrase Etsy sends to a category page is read as that category), rssFallback (a shop whose pages could not be read), complete and stopReason (a category read to 250 pages or a shop read to 2,500 pages while Etsy still links onward stops with actor_page_bound and is not complete; a second name of a shop another target of the run finished, such as a renamed shop named by its old and its new name, stops with same_shop_as_another_target and adds no charge);
  • status rows: an input that cannot be used (the setting and position named, nothing fetched), a phrase Etsy has no page for (no_phrase_page, HTTP 404) or a category link without a page (no_category_page), a listing Etsy no longer shows (listing_not_found), a shop Etsy does not know (shop_not_found), a shop id whose name Etsy did not show (shop_not_resolved), a page no exit could read (lookup_failed), listings a detail filter could not be checked on because their page could not be read (details_not_read), targets not started because the run stopped (skipped);
  • the shop profile row (above) and one summary row at the end: counters, requests, stop reason and what was charged.

Every free row carries attempt (1, or 2 and on when the platform restarted the run). After a restart the rows already delivered are never delivered or charged again, the caps count them, and the rest of the run is delivered free, as far as the unpaid work allowance the run had earned before the restart covers (a restarted run with Listing details can therefore stop early, work_allowance in its status, or deliver later rows without their listing page, detailStatus: allowance; the rows it delivered stay, run the rest again). When Etsy did not answer some calls after their retries, the run's final status message says so: how many calls and why, what could not be read in full, and that it was not charged.

How much does it cost to scrape Etsy?

You pay per event, on the Store's discount tiers:

EventFree planBronzeSilverGold
Listing (per 1,000)$1.19$1.09$0.99$0.85
Listing details (per 1,000, only with Listing details)$6.80$6.40$5.80$5.00
Review (per 1,000, only with Reviews)$0.53$0.49$0.44$0.38
Shop page (per 1,000, only with Every listing of a shop)$22.50$20.50$18.50$16.00
Actor start (once per run at the default 256 MB)$0.02$0.02$0.02$0.02

Platinum and Diamond plans pay the Gold price. The Actor start event has no discount. The Store pricing card shows these same prices per 1,000 events: "$6.80 / 1,000" on the Listing details row means one listing's details cost 0.68 cents, and "$22.50 / 1,000" on the Shop page row means one shop page costs 2.25 cents (about 40 listings, each a Listing).

Examples at Gold: 1,000 listings of a phrase cost $0.85 plus the $0.02 start; the same 1,000 with their listing pages $0.85 + $5.00 + $0.02 = $5.87; a shop's latest 10 listings $0.0085 plus the start; every listing of a 200 listing shop through its pages 200 Listings ($0.17) plus 5 Shop pages ($0.08) plus the start. A listing is charged once per run, and only after its row is in your dataset. Repeats, filtered listings, dead ids, unknown shops, phrases without a page, unanswered shop page attempts and refused input are free (the run's start fee is charged on every run, by the platform). The run stops at your maximum cost per run.

Input

SettingWhat it does
searchTermsphrases, each read on Etsy's own phrase page (etsy.com/market/<phrase>): 40 organic results a page plus about 20 ad slots, up to Etsy's cap of 25 pages (1,000 organic results); a phrase with a slash is refused (Etsy's phrase pages have no form for one: write 1 12 for 1/12)
startUrlsEtsy links: /market/<phrase>, /c/<category path> (about 64 listings a page), /listing/<id>, /shop/<name>; a regional link (/uk/, /de/ ...) must match the country setting; links carrying Etsy's own filters or sort are refused free
listingIdslisting ids or links, looked up 100 at a time; a dead id gets a free row
shopNamesshop names or shop links
shopIdsshop ids (numbers); each shop's name is read from its reviews first, then the shop is read like a shop name
country, currency, languagethe Etsy market (29), the display currency (30, converted by Etsy itself), the title language (13; the English title stays in titleEnglish)
maxItems, maxItemsPerSearch, maxPagesPerSearch, startPage, maxItemsPerShoplimits in all, per phrase or category, pages read, the first page, per shop
includeAds, minPrice, maxPrice, onSaleOnly, freeShippingOnly, minRating, minReviews, digitalOnly, physicalOnly, titleIncludes, titleExcludes, onlyTitleMatchesfilters on the listing card, applied here and checked again on the listing page's values when Listing details are read; with a title language the title words are looked for in both the translated and the English title (a word excluded in either drops the listing); a dropped listing is free
includeDetails, includeDescription, includeImages and the detail filtersthe listing page add-on (see above)
includeReviews, maxReviewsPerListing, reviewsSort, reviewsRatings, reviewsTopic, reviewsWithPhotosOnly, shopReviews, maxReviewsPerShopthe reviews add-on
includeShopPages, includeShopProfile, shopSearchQuery, shopSectionId, shopSortOrder, includeShopNamesevery listing of a shop and its profile, the shop's own search, a section and the shop's order; shop names on search rows (one free call per new shop; a shop Etsy's call does not name keeps it empty)
includeRelatedSearchesEtsy's related searches and suggestions on each phrase's search row (on by default)
sortResultsByEtsy's own order, or each phrase's rows sorted by price (both ways), shop rating, shop reviews, discount; with Listing details also by favourites, newest listed, in carts, views in 24 hours or shop sales. A sorted run holds its rows until each target ends, so maxItems can be at most 2,000 with Listing details and 20,000 without
dedupeAcrossSearcheseach listing once per run (default), or once per target that finds it
customMapFunction, includeRawData, includePersonalDatayour own function per row, run in a sandbox with a quarter second a row (its value in custom), raw page values, names of private persons
maxConcurrency, maxRuntimeSeconds, proxyConfigurationphrases walked at once (1 to 4), a time limit, your own proxy addresses

Example: 100 listings on sale for "ceramic mug" in the UK market, prices in euros, with their listing pages, delivered cheapest first:

{
"searchTerms": ["ceramic mug"],
"country": "GB",
"currency": "EUR",
"onSaleOnly": true,
"sortResultsBy": "priceAsc",
"includeDetails": true,
"maxItems": 100
}

Phrases, relevance and ads

Etsy fills every phrase page, so a phrase with few matches returns loosely related listings. Every row carries titleMatchesSearch; turn on Only titles holding every search word to keep only listings whose title holds each word of the phrase (the rest free). Prices and sorting are applied here, to the delivered rows, because Etsy's robots.txt asks crawlers not to use its own price and sort parameters. Measured on the platform at the default 256 MB: 1,000 listings of one phrase in about 2 minutes.

Markets

Each page is read for the market you pick and checked against the market Etsy names on the page; a page answered for another market is asked again and never delivered. Prices come in the market's currency as Etsy shows them there, or in the display currency you set. With a display currency and Listing details, price stays in the display currency and the listing page's own figures (price range, option prices, shipping cost) come in the market's currency, named in detailsCurrency.

Integrations

Run it from the Apify API, schedule it, or connect it to Make, Zapier, n8n, Google Sheets or a webhook. With the API:

curl -X POST "https://api.apify.com/v2/acts/automation_craft~etsy-scraper/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"searchTerms": ["leather wallet"], "maxItems": 20}'
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_TOKEN>' });
const run = await client.actor('automation_craft/etsy-scraper').call({ listingIds: ['1879178124'], includeDetails: true });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
from apify_client import ApifyClient
client = ApifyClient("<YOUR_TOKEN>")
run = client.actor("automation_craft/etsy-scraper").call(run_input={"shopNames": ["CaitlynMinimalist"], "includeReviews": True, "shopReviews": True})
items = client.dataset(run["defaultDatasetId"]).list_items().items

Use with AI agents (MCP)

AI agents can run it through the Apify MCP server (https://mcp.apify.com) as automation_craft/etsy-scraper. The smallest useful input is {"searchTerms": ["<phrase>"], "maxItems": 20}; rows of type: listing hold the data, the search and status rows say what was read and what was missing.

What this Actor does NOT do

  • Log in. It reads the public pages any visitor sees; no Etsy account, no cookies of yours and no API key.
  • Etsy's site search links (/search?q=): robots.txt disallows them; put the words in Search phrases (read on Etsy's phrase page).
  • Etsy's own sort and price parameters: robots.txt disallows them, so sorting and price filters run on the delivered rows, and one phrase gives at most Etsy's 1,000 organic results.
  • The seller's 13 tags, lifetime views, the first creation date, a listing's shop section: Etsy serves them only under /api/, a path its robots.txt asks crawlers not to read, so this Actor does not read them (a listing page shows views in the last 24 hours, the listed or renewed date, review topic tags and the searches that led buyers to it, all delivered).
  • An exact in carts count, the last sale date, top rated, a shop wide sale, processing days as numbers, made to order: the pages this Actor reads do not carry them (Etsy's own "In 20+ carts" line is delivered as Etsy writes it, in scarcityText and inCarts).
  • Review sub scores, review videos or a count of review photos: Etsy's review answers carry no sub score, no review video was found on 137 listings, and review photos are listed only up to 20 (each review's own photo is delivered).
  • A memory between runs ("new listings only", price change tracking): each run starts fresh; schedule it and compare the runs in your own sheet.
  • Seller e-mail or phone, sold item lists or the lists of who favourited a listing (robots.txt disallows the last two).

FAQ

Does Etsy have an API?

Etsy offers the Open API v3 for apps registered on its developer site, with an API key. This Actor reads the public pages any visitor sees, with no key, and returns listings, reviews and shops as rows through the Apify API or a schedule.

How do I scrape Etsy listings with prices?

Type search phrases or paste Etsy links, pick the market, and start: every listing comes with price, original price, discount, currency, free shipping and the shop's rating and review count. Turn on Listing details for variations with option prices, shipping cost and the delivery estimate.

How do I track competitor prices on Etsy?

Name the competitors' shops (every listing with shop pages, or their latest 10 from the RSS feed) or the phrases you sell on, and run: each listing comes with its price, original price, discount and free shipping, and with Listing details the option prices and the shipping cost. Run it on a schedule and compare the runs in your own sheet.

How can I tell which Etsy search results are ads?

Every row from a phrase page carries isAd and adSlot (the paid slot on the page) next to isOrganic, organicRank and pagePosition, so ads and organic results are told apart, also when one listing is both on one page. Turn off Include ad slots to keep organic results only.

How do I export Etsy reviews to CSV?

Turn on Reviews (and Whole shop reviews for a shop you named), run, then open the run's Storage tab and download the dataset as CSV or Excel; the Reviews view keeps the review columns.

Why does this Actor run with limited permissions?

Least privilege: it reads and writes only its own run's storages (the dataset, and a small record in its key-value store that keeps a restarted run from delivering a row twice). It cannot see your other actors, datasets or settings.

Changelog

See the Changelog tab: 0.1, the first version.

More data tools by Automation Craft